Lines Matching refs:skb
58 static inline void mip6_param_prob(struct sk_buff *skb, u8 code, int pos) in mip6_param_prob() argument
60 icmpv6_send(skb, ICMPV6_PARAMPROB, code, pos); in mip6_param_prob()
86 static int mip6_mh_filter(struct sock *sk, struct sk_buff *skb) in mip6_mh_filter() argument
91 mh = skb_header_pointer(skb, skb_transport_offset(skb), in mip6_mh_filter()
96 if (((mh->ip6mh_hdrlen + 1) << 3) > skb->len) in mip6_mh_filter()
103 mip6_param_prob(skb, 0, offsetof(struct ip6_mh, ip6mh_hdrlen) + in mip6_mh_filter()
104 skb_network_header_len(skb)); in mip6_mh_filter()
111 mip6_param_prob(skb, 0, offsetof(struct ip6_mh, ip6mh_proto) + in mip6_mh_filter()
112 skb_network_header_len(skb)); in mip6_mh_filter()
131 static int mip6_destopt_input(struct xfrm_state *x, struct sk_buff *skb) in mip6_destopt_input() argument
133 const struct ipv6hdr *iph = ipv6_hdr(skb); in mip6_destopt_input()
134 struct ipv6_destopt_hdr *destopt = (struct ipv6_destopt_hdr *)skb->data; in mip6_destopt_input()
150 static int mip6_destopt_output(struct xfrm_state *x, struct sk_buff *skb) in mip6_destopt_output() argument
158 skb_push(skb, -skb_network_offset(skb)); in mip6_destopt_output()
159 iph = ipv6_hdr(skb); in mip6_destopt_output()
161 nexthdr = *skb_mac_header(skb); in mip6_destopt_output()
162 *skb_mac_header(skb) = IPPROTO_DSTOPTS; in mip6_destopt_output()
164 dstopt = (struct ipv6_destopt_hdr *)skb_transport_header(skb); in mip6_destopt_output()
210 static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb, in mip6_destopt_reject() argument
214 struct inet6_skb_parm *opt = (struct inet6_skb_parm *)skb->cb; in mip6_destopt_reject()
227 offset = ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO); in mip6_destopt_reject()
230 (skb_network_header(skb) + offset); in mip6_destopt_reject()
233 skb_get_timestamp(skb, &stamp); in mip6_destopt_reject()
235 if (!mip6_report_rl_allow(&stamp, &ipv6_hdr(skb)->daddr, in mip6_destopt_reject()
236 hao ? &hao->addr : &ipv6_hdr(skb)->saddr, in mip6_destopt_reject()
241 memcpy(&sel.daddr, (xfrm_address_t *)&ipv6_hdr(skb)->daddr, in mip6_destopt_reject()
244 memcpy(&sel.saddr, (xfrm_address_t *)&ipv6_hdr(skb)->saddr, in mip6_destopt_reject()
264 static int mip6_destopt_offset(struct xfrm_state *x, struct sk_buff *skb, in mip6_destopt_offset() argument
269 (struct ipv6_opt_hdr *)(ipv6_hdr(skb) + 1); in mip6_destopt_offset()
270 const unsigned char *nh = skb_network_header(skb); in mip6_destopt_offset()
271 unsigned int packet_len = skb_tail_pointer(skb) - in mip6_destopt_offset()
272 skb_network_header(skb); in mip6_destopt_offset()
275 *nexthdr = &ipv6_hdr(skb)->nexthdr; in mip6_destopt_offset()
291 if (ipv6_find_tlv(skb, offset, IPV6_TLV_HAO) >= 0) { in mip6_destopt_offset()
353 static int mip6_rthdr_input(struct xfrm_state *x, struct sk_buff *skb) in mip6_rthdr_input() argument
355 const struct ipv6hdr *iph = ipv6_hdr(skb); in mip6_rthdr_input()
356 struct rt2_hdr *rt2 = (struct rt2_hdr *)skb->data; in mip6_rthdr_input()
371 static int mip6_rthdr_output(struct xfrm_state *x, struct sk_buff *skb) in mip6_rthdr_output() argument
377 skb_push(skb, -skb_network_offset(skb)); in mip6_rthdr_output()
378 iph = ipv6_hdr(skb); in mip6_rthdr_output()
380 nexthdr = *skb_mac_header(skb); in mip6_rthdr_output()
381 *skb_mac_header(skb) = IPPROTO_ROUTING; in mip6_rthdr_output()
383 rt2 = (struct rt2_hdr *)skb_transport_header(skb); in mip6_rthdr_output()
400 static int mip6_rthdr_offset(struct xfrm_state *x, struct sk_buff *skb, in mip6_rthdr_offset() argument
405 (struct ipv6_opt_hdr *)(ipv6_hdr(skb) + 1); in mip6_rthdr_offset()
406 const unsigned char *nh = skb_network_header(skb); in mip6_rthdr_offset()
407 unsigned int packet_len = skb_tail_pointer(skb) - in mip6_rthdr_offset()
408 skb_network_header(skb); in mip6_rthdr_offset()
411 *nexthdr = &ipv6_hdr(skb)->nexthdr; in mip6_rthdr_offset()
428 if (ipv6_find_tlv(skb, offset, IPV6_TLV_HAO) >= 0) in mip6_rthdr_offset()