• Home
  • Raw
  • Download

Lines Matching refs:skb

50 int ip6_rcv_finish(struct sk_buff *skb)  in ip6_rcv_finish()  argument
52 if (sysctl_ip_early_demux && !skb_dst(skb) && skb->sk == NULL) { in ip6_rcv_finish()
55 ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]); in ip6_rcv_finish()
57 ipprot->early_demux(skb); in ip6_rcv_finish()
59 if (!skb_dst(skb)) in ip6_rcv_finish()
60 ip6_route_input(skb); in ip6_rcv_finish()
62 return dst_input(skb); in ip6_rcv_finish()
65 int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device… in ipv6_rcv() argument
70 struct net *net = dev_net(skb->dev); in ipv6_rcv()
72 if (skb->pkt_type == PACKET_OTHERHOST) { in ipv6_rcv()
73 kfree_skb(skb); in ipv6_rcv()
79 idev = __in6_dev_get(skb->dev); in ipv6_rcv()
81 IP6_UPD_PO_STATS_BH(net, idev, IPSTATS_MIB_IN, skb->len); in ipv6_rcv()
83 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL || in ipv6_rcv()
89 memset(IP6CB(skb), 0, sizeof(struct inet6_skb_parm)); in ipv6_rcv()
102 IP6CB(skb)->iif = skb_dst(skb) ? ip6_dst_idev(skb_dst(skb))->dev->ifindex : dev->ifindex; in ipv6_rcv()
104 if (unlikely(!pskb_may_pull(skb, sizeof(*hdr)))) in ipv6_rcv()
107 hdr = ipv6_hdr(skb); in ipv6_rcv()
115 max_t(unsigned short, 1, skb_shinfo(skb)->gso_segs)); in ipv6_rcv()
131 if (!(skb->pkt_type == PACKET_LOOPBACK || in ipv6_rcv()
154 skb->transport_header = skb->network_header + sizeof(*hdr); in ipv6_rcv()
155 IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr); in ipv6_rcv()
161 if (pkt_len + sizeof(struct ipv6hdr) > skb->len) { in ipv6_rcv()
166 if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr))) { in ipv6_rcv()
170 hdr = ipv6_hdr(skb); in ipv6_rcv()
174 if (ipv6_parse_hopopts(skb) < 0) { in ipv6_rcv()
184 skb_orphan(skb); in ipv6_rcv()
186 return NF_HOOK(NFPROTO_IPV6, NF_INET_PRE_ROUTING, skb, dev, NULL, in ipv6_rcv()
192 kfree_skb(skb); in ipv6_rcv()
201 static int ip6_input_finish(struct sk_buff *skb) in ip6_input_finish() argument
203 struct net *net = dev_net(skb_dst(skb)->dev); in ip6_input_finish()
216 idev = ip6_dst_idev(skb_dst(skb)); in ip6_input_finish()
217 if (!pskb_pull(skb, skb_transport_offset(skb))) in ip6_input_finish()
219 nhoff = IP6CB(skb)->nhoff; in ip6_input_finish()
220 nexthdr = skb_network_header(skb)[nhoff]; in ip6_input_finish()
222 raw = raw6_local_deliver(skb, nexthdr); in ip6_input_finish()
232 nf_reset(skb); in ip6_input_finish()
234 skb_postpull_rcsum(skb, skb_network_header(skb), in ip6_input_finish()
235 skb_network_header_len(skb)); in ip6_input_finish()
236 hdr = ipv6_hdr(skb); in ip6_input_finish()
238 !ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, in ip6_input_finish()
240 !ipv6_is_mld(skb, nexthdr, skb_network_header_len(skb))) in ip6_input_finish()
244 !xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) in ip6_input_finish()
247 ret = ipprot->handler(skb); in ip6_input_finish()
254 if (xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) { in ip6_input_finish()
257 icmpv6_send(skb, ICMPV6_PARAMPROB, in ip6_input_finish()
260 kfree_skb(skb); in ip6_input_finish()
263 consume_skb(skb); in ip6_input_finish()
272 kfree_skb(skb); in ip6_input_finish()
277 int ip6_input(struct sk_buff *skb) in ip6_input() argument
279 return NF_HOOK(NFPROTO_IPV6, NF_INET_LOCAL_IN, skb, skb->dev, NULL, in ip6_input()
283 int ip6_mc_input(struct sk_buff *skb) in ip6_mc_input() argument
288 IP6_UPD_PO_STATS_BH(dev_net(skb_dst(skb)->dev), in ip6_mc_input()
289 ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_INMCAST, in ip6_mc_input()
290 skb->len); in ip6_mc_input()
292 hdr = ipv6_hdr(skb); in ip6_mc_input()
293 deliver = ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL); in ip6_mc_input()
299 if (dev_net(skb->dev)->ipv6.devconf_all->mc_forwarding && in ip6_mc_input()
302 likely(!(IP6CB(skb)->flags & IP6SKB_FORWARDED))) { in ip6_mc_input()
308 struct inet6_skb_parm *opt = IP6CB(skb); in ip6_mc_input()
327 offset = ipv6_skip_exthdr(skb, sizeof(*hdr), in ip6_mc_input()
332 if (ipv6_is_mld(skb, nexthdr, offset)) in ip6_mc_input()
341 skb2 = skb_clone(skb, GFP_ATOMIC); in ip6_mc_input()
343 skb2 = skb; in ip6_mc_input()
344 skb = NULL; in ip6_mc_input()
354 ip6_input(skb); in ip6_mc_input()
357 kfree_skb(skb); in ip6_mc_input()