arp.c (444fc8fc3a1f926fa224655b8950bd853368c1a3) | arp.c (e5ed639913eea3e4783a550291775ab78dd84966) |
---|---|
1/* linux/net/inet/arp.c 2 * 3 * Version: $Id: arp.c,v 1.99 2001/08/30 22:55:42 davem Exp $ 4 * 5 * Copyright (C) 1994 by Florian La Roche 6 * 7 * This module implements the Address Resolution Protocol ARP (RFC 826), 8 * which is used to convert IP addresses (or in the future maybe other --- 227 unchanged lines hidden (view full) --- 236 u32 addr = *(u32*)neigh->primary_key; 237 struct net_device *dev = neigh->dev; 238 struct in_device *in_dev; 239 struct neigh_parms *parms; 240 241 neigh->type = inet_addr_type(addr); 242 243 rcu_read_lock(); | 1/* linux/net/inet/arp.c 2 * 3 * Version: $Id: arp.c,v 1.99 2001/08/30 22:55:42 davem Exp $ 4 * 5 * Copyright (C) 1994 by Florian La Roche 6 * 7 * This module implements the Address Resolution Protocol ARP (RFC 826), 8 * which is used to convert IP addresses (or in the future maybe other --- 227 unchanged lines hidden (view full) --- 236 u32 addr = *(u32*)neigh->primary_key; 237 struct net_device *dev = neigh->dev; 238 struct in_device *in_dev; 239 struct neigh_parms *parms; 240 241 neigh->type = inet_addr_type(addr); 242 243 rcu_read_lock(); |
244 in_dev = rcu_dereference(__in_dev_get(dev)); | 244 in_dev = __in_dev_get_rcu(dev); |
245 if (in_dev == NULL) { 246 rcu_read_unlock(); 247 return -EINVAL; 248 } 249 250 parms = in_dev->arp_parms; 251 __neigh_parms_put(neigh->parms); 252 neigh->parms = neigh_parms_clone(parms); --- 731 unchanged lines hidden (view full) --- 984 if (pneigh_lookup(&arp_tbl, &ip, dev, 1) == NULL) 985 return -ENOBUFS; 986 return 0; 987 } 988 if (dev == NULL) { 989 ipv4_devconf.proxy_arp = 1; 990 return 0; 991 } | 245 if (in_dev == NULL) { 246 rcu_read_unlock(); 247 return -EINVAL; 248 } 249 250 parms = in_dev->arp_parms; 251 __neigh_parms_put(neigh->parms); 252 neigh->parms = neigh_parms_clone(parms); --- 731 unchanged lines hidden (view full) --- 984 if (pneigh_lookup(&arp_tbl, &ip, dev, 1) == NULL) 985 return -ENOBUFS; 986 return 0; 987 } 988 if (dev == NULL) { 989 ipv4_devconf.proxy_arp = 1; 990 return 0; 991 } |
992 if (__in_dev_get(dev)) { 993 __in_dev_get(dev)->cnf.proxy_arp = 1; | 992 if (__in_dev_get_rtnl(dev)) { 993 __in_dev_get_rtnl(dev)->cnf.proxy_arp = 1; |
994 return 0; 995 } 996 return -ENXIO; 997 } 998 999 if (r->arp_flags & ATF_PERM) 1000 r->arp_flags |= ATF_COM; 1001 if (dev == NULL) { --- 88 unchanged lines hidden (view full) --- 1090 ((struct sockaddr_in *)&r->arp_netmask)->sin_addr.s_addr; 1091 if (mask == 0xFFFFFFFF) 1092 return pneigh_delete(&arp_tbl, &ip, dev); 1093 if (mask == 0) { 1094 if (dev == NULL) { 1095 ipv4_devconf.proxy_arp = 0; 1096 return 0; 1097 } | 994 return 0; 995 } 996 return -ENXIO; 997 } 998 999 if (r->arp_flags & ATF_PERM) 1000 r->arp_flags |= ATF_COM; 1001 if (dev == NULL) { --- 88 unchanged lines hidden (view full) --- 1090 ((struct sockaddr_in *)&r->arp_netmask)->sin_addr.s_addr; 1091 if (mask == 0xFFFFFFFF) 1092 return pneigh_delete(&arp_tbl, &ip, dev); 1093 if (mask == 0) { 1094 if (dev == NULL) { 1095 ipv4_devconf.proxy_arp = 0; 1096 return 0; 1097 } |
1098 if (__in_dev_get(dev)) { 1099 __in_dev_get(dev)->cnf.proxy_arp = 0; | 1098 if (__in_dev_get_rtnl(dev)) { 1099 __in_dev_get_rtnl(dev)->cnf.proxy_arp = 0; |
1100 return 0; 1101 } 1102 return -ENXIO; 1103 } 1104 return -EINVAL; 1105 } 1106 1107 if (dev == NULL) { --- 319 unchanged lines hidden --- | 1100 return 0; 1101 } 1102 return -ENXIO; 1103 } 1104 return -EINVAL; 1105 } 1106 1107 if (dev == NULL) { --- 319 unchanged lines hidden --- |