[IPV4] ARP: Alloc acceptance of unsolicited ARP via netdevice sysctl.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Neil Horman 2006-03-20 22:39:47 -08:00 committed by David S. Miller
parent 59f1741e54
commit abd596a4b6
4 changed files with 20 additions and 10 deletions

View file

@ -25,6 +25,7 @@ struct ipv4_devconf
int arp_filter; int arp_filter;
int arp_announce; int arp_announce;
int arp_ignore; int arp_ignore;
int arp_accept;
int medium_id; int medium_id;
int no_xfrm; int no_xfrm;
int no_policy; int no_policy;

View file

@ -456,6 +456,7 @@ enum
NET_IPV4_CONF_ARP_ANNOUNCE=18, NET_IPV4_CONF_ARP_ANNOUNCE=18,
NET_IPV4_CONF_ARP_IGNORE=19, NET_IPV4_CONF_ARP_IGNORE=19,
NET_IPV4_CONF_PROMOTE_SECONDARIES=20, NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
NET_IPV4_CONF_ARP_ACCEPT=21,
__NET_IPV4_CONF_MAX __NET_IPV4_CONF_MAX
}; };

View file

@ -879,7 +879,7 @@ static int arp_process(struct sk_buff *skb)
n = __neigh_lookup(&arp_tbl, &sip, dev, 0); n = __neigh_lookup(&arp_tbl, &sip, dev, 0);
#ifdef CONFIG_IP_ACCEPT_UNSOLICITED_ARP if (ipv4_devconf.arp_accept) {
/* Unsolicited ARP is not accepted by default. /* Unsolicited ARP is not accepted by default.
It is possible, that this option should be enabled for some It is possible, that this option should be enabled for some
devices (strip is candidate) devices (strip is candidate)
@ -888,7 +888,7 @@ static int arp_process(struct sk_buff *skb)
arp->ar_op == htons(ARPOP_REPLY) && arp->ar_op == htons(ARPOP_REPLY) &&
inet_addr_type(sip) == RTN_UNICAST) inet_addr_type(sip) == RTN_UNICAST)
n = __neigh_lookup(&arp_tbl, &sip, dev, -1); n = __neigh_lookup(&arp_tbl, &sip, dev, -1);
#endif }
if (n) { if (n) {
int state = NUD_REACHABLE; int state = NUD_REACHABLE;

View file

@ -1393,6 +1393,14 @@ static struct devinet_sysctl_table {
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = &proc_dointvec,
}, },
{
.ctl_name = NET_IPV4_CONF_ARP_ACCEPT,
.procname = "arp_accept",
.data = &ipv4_devconf.arp_accept,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec,
},
{ {
.ctl_name = NET_IPV4_CONF_NOXFRM, .ctl_name = NET_IPV4_CONF_NOXFRM,
.procname = "disable_xfrm", .procname = "disable_xfrm",