mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
[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:
parent
59f1741e54
commit
abd596a4b6
4 changed files with 20 additions and 10 deletions
|
@ -25,6 +25,7 @@ struct ipv4_devconf
|
|||
int arp_filter;
|
||||
int arp_announce;
|
||||
int arp_ignore;
|
||||
int arp_accept;
|
||||
int medium_id;
|
||||
int no_xfrm;
|
||||
int no_policy;
|
||||
|
|
|
@ -456,6 +456,7 @@ enum
|
|||
NET_IPV4_CONF_ARP_ANNOUNCE=18,
|
||||
NET_IPV4_CONF_ARP_IGNORE=19,
|
||||
NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
|
||||
NET_IPV4_CONF_ARP_ACCEPT=21,
|
||||
__NET_IPV4_CONF_MAX
|
||||
};
|
||||
|
||||
|
|
|
@ -879,16 +879,16 @@ static int arp_process(struct sk_buff *skb)
|
|||
|
||||
n = __neigh_lookup(&arp_tbl, &sip, dev, 0);
|
||||
|
||||
#ifdef CONFIG_IP_ACCEPT_UNSOLICITED_ARP
|
||||
/* Unsolicited ARP is not accepted by default.
|
||||
It is possible, that this option should be enabled for some
|
||||
devices (strip is candidate)
|
||||
*/
|
||||
if (n == NULL &&
|
||||
arp->ar_op == htons(ARPOP_REPLY) &&
|
||||
inet_addr_type(sip) == RTN_UNICAST)
|
||||
n = __neigh_lookup(&arp_tbl, &sip, dev, -1);
|
||||
#endif
|
||||
if (ipv4_devconf.arp_accept) {
|
||||
/* Unsolicited ARP is not accepted by default.
|
||||
It is possible, that this option should be enabled for some
|
||||
devices (strip is candidate)
|
||||
*/
|
||||
if (n == NULL &&
|
||||
arp->ar_op == htons(ARPOP_REPLY) &&
|
||||
inet_addr_type(sip) == RTN_UNICAST)
|
||||
n = __neigh_lookup(&arp_tbl, &sip, dev, -1);
|
||||
}
|
||||
|
||||
if (n) {
|
||||
int state = NUD_REACHABLE;
|
||||
|
|
|
@ -1393,6 +1393,14 @@ static struct devinet_sysctl_table {
|
|||
.mode = 0644,
|
||||
.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,
|
||||
.procname = "disable_xfrm",
|
||||
|
|
Loading…
Reference in a new issue