Lines Matching defs:srh

189 	struct ipv6_sr_hdr *srh;
218 struct ipv6_sr_hdr *srh;
220 srh = seg6_get_srh(skb, IP6_FH_F_SKIP_RH);
221 if (!srh)
229 return srh;
234 struct ipv6_sr_hdr *srh;
237 srh = seg6_get_srh(skb, 0);
238 if (srh && srh->segments_left > 0)
242 if (srh && !seg6_hmac_validate_skb(skb))
262 static void advance_nextseg(struct ipv6_sr_hdr *srh, struct in6_addr *daddr)
266 srh->segments_left--;
267 addr = srh->segments + srh->segments_left;
389 struct ipv6_sr_hdr *srh;
391 srh = get_and_validate_srh(skb);
392 if (!srh)
395 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
429 struct ipv6_sr_hdr *srh;
431 srh = get_and_validate_srh(skb);
432 if (!srh)
435 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
502 static enum seg6_local_pktinfo seg6_get_srh_pktinfo(struct ipv6_sr_hdr *srh)
506 if (!srh)
509 sgl = srh->segments_left;
627 struct ipv6_sr_hdr *srh;
635 !pskb_may_pull(skb, srhoff + sizeof(*srh))))
638 srh = (struct ipv6_sr_hdr *)(skb->data + srhoff);
639 srhlen = ipv6_optlen(srh);
645 /* skb_ensure_writable() may change skb pointers; evaluate srh again */
646 srh = (struct ipv6_sr_hdr *)(skb->data + srhoff);
647 srh_nexthdr = srh->nexthdr;
744 struct ipv6_sr_hdr *srh;
748 srh = seg6_get_srh(skb, 0);
749 srhoff = srh ? ((unsigned char *)srh - skb->data) : 0;
750 pinfo = seg6_get_srh_pktinfo(srh);
752 if (srh && !seg6_hmac_validate_skb(skb))
768 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
771 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
828 struct ipv6_sr_hdr *srh;
830 srh = get_and_validate_srh(skb);
831 if (!srh)
834 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
1330 struct ipv6_sr_hdr *srh;
1333 srh = get_and_validate_srh(skb);
1334 if (!srh)
1337 err = seg6_do_srh_inline(skb, slwt->srh);
1356 struct ipv6_sr_hdr *srh;
1359 srh = get_and_validate_srh(skb);
1360 if (!srh)
1363 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
1368 err = seg6_do_srh_encap(skb, slwt->srh, IPPROTO_IPV6);
1389 struct ipv6_sr_hdr *srh = srh_state->srh;
1391 if (unlikely(srh == NULL))
1398 srh->hdrlen = (u8)(srh_state->hdrlen >> 3);
1399 if (!seg6_validate_srh(srh, (srh->hdrlen + 1) << 3, true))
1413 struct ipv6_sr_hdr *srh;
1416 srh = get_and_validate_srh(skb);
1417 if (!srh) {
1421 advance_nextseg(srh, &ipv6_hdr(skb)->daddr);
1427 srh_state->srh = srh;
1428 srh_state->hdrlen = srh->hdrlen << 3;
1447 if (srh_state->srh && !seg6_bpf_has_valid_srh(skb))
1655 struct ipv6_sr_hdr *srh;
1658 srh = nla_data(attrs[SEG6_LOCAL_SRH]);
1662 if (len < sizeof(*srh) + sizeof(struct in6_addr))
1665 if (!seg6_validate_srh(srh, len, false))
1668 slwt->srh = kmemdup(srh, len, GFP_KERNEL);
1669 if (!slwt->srh)
1679 struct ipv6_sr_hdr *srh;
1683 srh = slwt->srh;
1684 len = (srh->hdrlen + 1) << 3;
1690 memcpy(nla_data(nla), srh, len);
1697 int len = (a->srh->hdrlen + 1) << 3;
1699 if (len != ((b->srh->hdrlen + 1) << 3))
1702 return memcmp(a->srh, b->srh, len);
1707 kfree(slwt->srh);
2592 nlsize += nla_total_size((slwt->srh->hdrlen + 1) << 3);