Lines Matching full:trace
55 struct ioam6_trace_hdr *trace) in nla_put_ioam6_trace() argument
61 len = sizeof(*trace); in nla_put_ioam6_trace()
68 memcpy(data, trace, len); in nla_put_ioam6_trace()
73 static bool ioam6_validate_trace_hdr(struct ioam6_trace_hdr *trace) in ioam6_validate_trace_hdr() argument
77 if (!trace->type_be32 || !trace->remlen || in ioam6_validate_trace_hdr()
78 trace->remlen > IOAM6_TRACE_DATA_SIZE_MAX / 4 || in ioam6_validate_trace_hdr()
79 trace->type.bit12 | trace->type.bit13 | trace->type.bit14 | in ioam6_validate_trace_hdr()
80 trace->type.bit15 | trace->type.bit16 | trace->type.bit17 | in ioam6_validate_trace_hdr()
81 trace->type.bit18 | trace->type.bit19 | trace->type.bit20 | in ioam6_validate_trace_hdr()
82 trace->type.bit21) in ioam6_validate_trace_hdr()
85 trace->nodelen = 0; in ioam6_validate_trace_hdr()
86 fields = be32_to_cpu(trace->type_be32); in ioam6_validate_trace_hdr()
88 trace->nodelen += hweight32(fields & IOAM6_MASK_SHORT_FIELDS) in ioam6_validate_trace_hdr()
90 trace->nodelen += hweight32(fields & IOAM6_MASK_WIDE_FIELDS) in ioam6_validate_trace_hdr()
103 struct ioam6_trace_hdr *trace; in ioam6_build_state() local
117 NL_SET_ERR_MSG(extack, "missing trace"); in ioam6_build_state()
121 trace = nla_data(tb[IOAM6_IPTUNNEL_TRACE]); in ioam6_build_state()
122 if (!ioam6_validate_trace_hdr(trace)) { in ioam6_build_state()
124 "invalid trace validation"); in ioam6_build_state()
128 len = sizeof(*tuninfo) + trace->remlen * 4; in ioam6_build_state()
140 tuninfo->ioamh.opt_len = sizeof(tuninfo->ioamh) - 2 + sizeof(*trace) in ioam6_build_state()
141 + trace->remlen * 4; in ioam6_build_state()
143 memcpy(&tuninfo->traceh, trace, sizeof(*trace)); in ioam6_build_state()
147 tuninfo->traceh.data[trace->remlen * 4] = IPV6_TLV_PAD1; in ioam6_build_state()
149 tuninfo->traceh.data[trace->remlen * 4] = IPV6_TLV_PADN; in ioam6_build_state()
150 tuninfo->traceh.data[trace->remlen * 4 + 1] = len - 2; in ioam6_build_state()
163 struct ioam6_trace_hdr *trace; in ioam6_do_inline() local
194 trace = (struct ioam6_trace_hdr *)(skb_transport_header(skb) in ioam6_do_inline()
198 ns = ioam6_namespace(dev_net(skb_dst(skb)->dev), trace->namespace_id); in ioam6_do_inline()
200 ioam6_fill_trace_data(skb, ns, trace); in ioam6_do_inline()
238 struct ioam6_trace_hdr *trace = ioam6_trace(lwtstate); in ioam6_fill_encap_info() local
240 if (nla_put_ioam6_trace(skb, IOAM6_IPTUNNEL_TRACE, trace)) in ioam6_fill_encap_info()
248 struct ioam6_trace_hdr *trace = ioam6_trace(lwtstate); in ioam6_encap_nlsize() local
250 return nla_total_size(sizeof(*trace)); in ioam6_encap_nlsize()