Lines Matching full:trace
83 static bool ioam6_validate_trace_hdr(struct ioam6_trace_hdr *trace) in ioam6_validate_trace_hdr() argument
87 if (!trace->type_be32 || !trace->remlen || in ioam6_validate_trace_hdr()
88 trace->remlen > IOAM6_TRACE_DATA_SIZE_MAX / 4 || in ioam6_validate_trace_hdr()
89 trace->type.bit12 | trace->type.bit13 | trace->type.bit14 | in ioam6_validate_trace_hdr()
90 trace->type.bit15 | trace->type.bit16 | trace->type.bit17 | in ioam6_validate_trace_hdr()
91 trace->type.bit18 | trace->type.bit19 | trace->type.bit20 | in ioam6_validate_trace_hdr()
92 trace->type.bit21 | trace->type.bit23) in ioam6_validate_trace_hdr()
95 trace->nodelen = 0; in ioam6_validate_trace_hdr()
96 fields = be32_to_cpu(trace->type_be32); in ioam6_validate_trace_hdr()
98 trace->nodelen += hweight32(fields & IOAM6_MASK_SHORT_FIELDS) in ioam6_validate_trace_hdr()
100 trace->nodelen += hweight32(fields & IOAM6_MASK_WIDE_FIELDS) in ioam6_validate_trace_hdr()
113 struct ioam6_trace_hdr *trace; in ioam6_build_state() local
159 NL_SET_ERR_MSG(extack, "missing trace"); in ioam6_build_state()
163 trace = nla_data(tb[IOAM6_IPTUNNEL_TRACE]); in ioam6_build_state()
164 if (!ioam6_validate_trace_hdr(trace)) { in ioam6_build_state()
166 "invalid trace validation"); in ioam6_build_state()
170 len_aligned = ALIGN(trace->remlen * 4, 8); in ioam6_build_state()
216 tuninfo->ioamh.opt_len = sizeof(tuninfo->ioamh) - 2 + sizeof(*trace) in ioam6_build_state()
217 + trace->remlen * 4; in ioam6_build_state()
219 memcpy(&tuninfo->traceh, trace, sizeof(*trace)); in ioam6_build_state()
221 if (len_aligned - trace->remlen * 4) { in ioam6_build_state()
222 tuninfo->traceh.data[trace->remlen * 4] = IPV6_TLV_PADN; in ioam6_build_state()
223 tuninfo->traceh.data[trace->remlen * 4 + 1] = 2; in ioam6_build_state()
241 struct ioam6_trace_hdr *trace; in ioam6_do_fill() local
244 trace = (struct ioam6_trace_hdr *)(skb_transport_header(skb) in ioam6_do_fill()
248 ns = ioam6_namespace(net, trace->namespace_id); in ioam6_do_fill()
250 ioam6_fill_trace_data(skb, ns, trace, false); in ioam6_do_fill()