Lines Matching refs:skb

66  *					bonding can change the skb before
125 static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb);
126 static void arp_error_report(struct neighbour *neigh, struct sk_buff *skb);
127 static void parp_redo(struct sk_buff *skb);
294 static void arp_error_report(struct neighbour *neigh, struct sk_buff *skb)
296 dst_link_failure(skb);
297 kfree_skb_reason(skb, SKB_DROP_REASON_NEIGH_FAILED);
308 struct sk_buff *skb;
314 skb = arp_create(type, ptype, dest_ip, dev, src_ip,
316 if (!skb)
319 skb_dst_set(skb, dst_clone(dst));
320 arp_xmit(skb);
333 static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
352 if (skb && inet_addr_type_dev_table(dev_net(dev), dev,
353 ip_hdr(skb)->saddr) == RTN_LOCAL)
354 saddr = ip_hdr(skb)->saddr;
357 if (!skb)
359 saddr = ip_hdr(skb)->saddr;
390 if (skb && !(dev->priv_flags & IFF_XMIT_DST_RELEASE))
391 dst = skb_dst(skb);
551 struct sk_buff *skb;
561 skb = alloc_skb(arp_hdr_len(dev) + hlen + tlen, GFP_ATOMIC);
562 if (!skb)
565 skb_reserve(skb, hlen);
566 skb_reset_network_header(skb);
567 arp = skb_put(skb, arp_hdr_len(dev));
568 skb->dev = dev;
569 skb->protocol = htons(ETH_P_ARP);
578 if (dev_hard_header(skb, dev, ptype, dest_hw, src_hw, skb->len) < 0)
644 return skb;
647 kfree_skb(skb);
652 static int arp_xmit_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
654 return dev_queue_xmit(skb);
660 void arp_xmit(struct sk_buff *skb)
664 dev_net(skb->dev), NULL, skb, NULL, skb->dev,
699 static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
701 struct net_device *dev = skb->dev;
722 arp = arp_hdr(skb);
822 if (arp->ar_op == htons(ARPOP_REQUEST) && skb_metadata_dst(skb))
824 iptunnel_metadata_reply(skb_metadata_dst(skb),
838 ip_route_input_noref(skb, tip, sip, 0, dev) == 0) {
840 rt = skb_rtable(skb);
870 if (NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED ||
871 skb->pkt_type == PACKET_HOST ||
879 in_dev->arp_parms, skb);
931 skb->pkt_type != PACKET_HOST)
939 consume_skb(skb);
946 kfree_skb(skb);
950 static void parp_redo(struct sk_buff *skb)
952 arp_process(dev_net(skb->dev), NULL, skb);
964 static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
971 skb->pkt_type == PACKET_OTHERHOST ||
972 skb->pkt_type == PACKET_LOOPBACK)
975 skb = skb_share_check(skb, GFP_ATOMIC);
976 if (!skb)
980 if (!pskb_may_pull(skb, arp_hdr_len(dev)))
983 arp = arp_hdr(skb);
987 memset(NEIGH_CB(skb), 0, sizeof(struct neighbour_cb));
990 dev_net(dev), NULL, skb, dev, NULL,
994 consume_skb(skb);
997 kfree_skb(skb);