Lines Matching refs:srh
50 struct ipv6_sr_hdr *srh;
69 struct ipv6_sr_hdr *srh;
75 if (!pskb_may_pull(skb, srhoff + sizeof(*srh)))
78 srh = (struct ipv6_sr_hdr *)(skb->data + srhoff);
80 len = (srh->hdrlen + 1) << 3;
88 srh = (struct ipv6_sr_hdr *)(skb->data + srhoff);
90 if (!seg6_validate_srh(srh, len, true))
93 return srh;
98 struct ipv6_sr_hdr *srh;
100 srh = get_srh(skb);
101 if (!srh)
104 if (srh->segments_left == 0)
112 return srh;
117 struct ipv6_sr_hdr *srh;
120 srh = get_srh(skb);
121 if (srh && srh->segments_left > 0)
125 if (srh && !seg6_hmac_validate_skb(skb))
145 static void advance_nextseg(struct ipv6_sr_hdr *srh, struct in6_addr *daddr)
149 srh->segments_left--;
150 addr = srh->segments + srh->segments_left;
221 struct ipv6_sr_hdr *srh;
223 srh = get_and_validate_srh(skb);
224 if (!srh)
227 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
241 struct ipv6_sr_hdr *srh;
243 srh = get_and_validate_srh(skb);
244 if (!srh)
247 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
260 struct ipv6_sr_hdr *srh;
262 srh = get_and_validate_srh(skb);
263 if (!srh)
266 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
427 struct ipv6_sr_hdr *srh;
430 srh = get_and_validate_srh(skb);
431 if (!srh)
434 err = seg6_do_srh_inline(skb, slwt->srh);
453 struct ipv6_sr_hdr *srh;
456 srh = get_and_validate_srh(skb);
457 if (!srh)
460 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
465 err = seg6_do_srh_encap(skb, slwt->srh, IPPROTO_IPV6);
486 struct ipv6_sr_hdr *srh = srh_state->srh;
488 if (unlikely(srh == NULL))
495 srh->hdrlen = (u8)(srh_state->hdrlen >> 3);
496 if (!seg6_validate_srh(srh, (srh->hdrlen + 1) << 3, true))
510 struct ipv6_sr_hdr *srh;
513 srh = get_and_validate_srh(skb);
514 if (!srh) {
518 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
524 srh_state->srh = srh;
525 srh_state->hdrlen = srh->hdrlen << 3;
544 if (srh_state->srh && !seg6_bpf_has_valid_srh(skb))
661 struct ipv6_sr_hdr *srh;
664 srh = nla_data(attrs[SEG6_LOCAL_SRH]);
668 if (len < sizeof(*srh) + sizeof(struct in6_addr))
671 if (!seg6_validate_srh(srh, len, false))
674 slwt->srh = kmemdup(srh, len, GFP_KERNEL);
675 if (!slwt->srh)
685 struct ipv6_sr_hdr *srh;
689 srh = slwt->srh;
690 len = (srh->hdrlen + 1) << 3;
696 memcpy(nla_data(nla), srh, len);
703 int len = (a->srh->hdrlen + 1) << 3;
705 if (len != ((b->srh->hdrlen + 1) << 3))
708 return memcmp(a->srh, b->srh, len);
1013 kfree(slwt->srh);
1022 kfree(slwt->srh);
1065 nlsize += nla_total_size((slwt->srh->hdrlen + 1) << 3);