arp.c (29a26a56803855a79dbd028cd61abee56237d6e5) arp.c (0c4b51f0054ce85c0ec578ab818f0631834573eb)
1/* linux/net/ipv4/arp.c
2 *
3 * Copyright (C) 1994 by Florian La Roche
4 *
5 * This module implements the Address Resolution Protocol ARP (RFC 826),
6 * which is used to convert IP addresses (or in the future maybe other
7 * high-level addresses) into a low-level hardware address (like an Ethernet
8 * address).

--- 607 unchanged lines hidden (view full) ---

616 return skb;
617
618out:
619 kfree_skb(skb);
620 return NULL;
621}
622EXPORT_SYMBOL(arp_create);
623
1/* linux/net/ipv4/arp.c
2 *
3 * Copyright (C) 1994 by Florian La Roche
4 *
5 * This module implements the Address Resolution Protocol ARP (RFC 826),
6 * which is used to convert IP addresses (or in the future maybe other
7 * high-level addresses) into a low-level hardware address (like an Ethernet
8 * address).

--- 607 unchanged lines hidden (view full) ---

616 return skb;
617
618out:
619 kfree_skb(skb);
620 return NULL;
621}
622EXPORT_SYMBOL(arp_create);
623
624static int arp_xmit_finish(struct sock *sk, struct sk_buff *skb)
624static int arp_xmit_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
625{
626 return dev_queue_xmit(skb);
627}
628
629/*
630 * Send an arp packet.
631 */
632void arp_xmit(struct sk_buff *skb)

--- 4 unchanged lines hidden (view full) ---

637 arp_xmit_finish);
638}
639EXPORT_SYMBOL(arp_xmit);
640
641/*
642 * Process an arp request.
643 */
644
625{
626 return dev_queue_xmit(skb);
627}
628
629/*
630 * Send an arp packet.
631 */
632void arp_xmit(struct sk_buff *skb)

--- 4 unchanged lines hidden (view full) ---

637 arp_xmit_finish);
638}
639EXPORT_SYMBOL(arp_xmit);
640
641/*
642 * Process an arp request.
643 */
644
645static int arp_process(struct sock *sk, struct sk_buff *skb)
645static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
646{
647 struct net_device *dev = skb->dev;
648 struct in_device *in_dev = __in_dev_get_rcu(dev);
649 struct arphdr *arp;
650 unsigned char *arp_ptr;
651 struct rtable *rt;
652 unsigned char *sha;
653 __be32 sip, tip;
654 u16 dev_type = dev->type;
655 int addr_type;
656 struct neighbour *n;
646{
647 struct net_device *dev = skb->dev;
648 struct in_device *in_dev = __in_dev_get_rcu(dev);
649 struct arphdr *arp;
650 unsigned char *arp_ptr;
651 struct rtable *rt;
652 unsigned char *sha;
653 __be32 sip, tip;
654 u16 dev_type = dev->type;
655 int addr_type;
656 struct neighbour *n;
657 struct net *net = dev_net(dev);
658 bool is_garp = false;
659
660 /* arp_rcv below verifies the ARP header and verifies the device
661 * is ARP'able.
662 */
663
664 if (!in_dev)
665 goto out;

--- 194 unchanged lines hidden (view full) ---

860
861out:
862 consume_skb(skb);
863 return 0;
864}
865
866static void parp_redo(struct sk_buff *skb)
867{
657 bool is_garp = false;
658
659 /* arp_rcv below verifies the ARP header and verifies the device
660 * is ARP'able.
661 */
662
663 if (!in_dev)
664 goto out;

--- 194 unchanged lines hidden (view full) ---

859
860out:
861 consume_skb(skb);
862 return 0;
863}
864
865static void parp_redo(struct sk_buff *skb)
866{
868 arp_process(NULL, skb);
867 arp_process(dev_net(skb->dev), NULL, skb);
869}
870
871
872/*
873 * Receive an arp request from the device layer.
874 */
875
876static int arp_rcv(struct sk_buff *skb, struct net_device *dev,

--- 520 unchanged lines hidden ---
868}
869
870
871/*
872 * Receive an arp request from the device layer.
873 */
874
875static int arp_rcv(struct sk_buff *skb, struct net_device *dev,

--- 520 unchanged lines hidden ---