Consolidate some code in arp_req_set/delete_publc
Subsystems (3)
PATCH 3/3 Consolidate some code in arp_req_set/delete_publc
The PROXY_ARP is set on devconfigs in a similar way in both calls.
Signed-off-by Pavel Emelyanov <[email protected]>
---
net/ipv4/arp.c +19 -22
@@ -953,6 +953,19 @@ out_of_mem:* Set (create) an ARP cache entry. */ +static int arp_req_set_proxy (struct net_device *dev,int on) +{ +if (dev ==NULL ) { +IPV4_DEVCONF_ALL (PROXY_ARP ) = on; +return 0 ; + } +if (__in_dev_get_rtnl (dev)) { +IN_DEV_CONF_SET (__in_dev_get_rtnl (dev),PROXY_ARP , on); +return 0 ; + } +return -ENXIO ; +} +static int arp_req_set_public (struct arpreq *r,struct net_device *dev) {__be32 ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr;
@@ -971,15 +984,8 @@ static int arp_req_set_public(struct arpreq *r, struct net_device *dev)return -ENOBUFS ;return 0 ; } -if (dev ==NULL ) { -IPV4_DEVCONF_ALL (PROXY_ARP ) =1 ; -return 0 ; - } -if (__in_dev_get_rtnl (dev)) { -IN_DEV_CONF_SET (__in_dev_get_rtnl (dev),PROXY_ARP ,1 ); -return 0 ; - } -return -ENXIO ; + +return arp_req_set_proxy (dev,1 ); }static int arp_req_set (struct arpreq *r,struct net_device * dev)
@@ -1083,19 +1089,10 @@ static int arp_req_delete_public(struct arpreq *r, struct net_device *dev)if (mask ==htonl (0xFFFFFFFF ))return pneigh_delete (&arp_tbl, &ip, dev); -if (mask ==0 ) { -if (dev ==NULL ) { -IPV4_DEVCONF_ALL (PROXY_ARP ) =0 ; -return 0 ; - } -if (__in_dev_get_rtnl (dev)) { -IN_DEV_CONF_SET (__in_dev_get_rtnl (dev), -PROXY_ARP ,0 ); -return 0 ; - } -return -ENXIO ; - } -return -EINVAL ; +if (mask) +return -EINVAL ; + +return arp_req_set_proxy (dev,0 ); }static int arp_req_delete (struct arpreq *r,struct net_device * dev)
Signature · 1 line
1.5.3.4
David Miller
maintainerFrom: Pavel Emelyanov <[email protected]>
Date: Wed, 05 Dec 2007 20:18:44 +0300
Quoted 4 lines
The
PROXY_ARPis set on devconfigs in a similar way in both calls.Signed-off-by Pavel Emelyanov <[email protected]>
Also applied, thanks a lot.