Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abd596a4 authored by Neil Horman's avatar Neil Horman Committed by David S. Miller
Browse files

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

parent 59f1741e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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
};

+10 −10
Original line number Diff line number Diff line
@@ -879,7 +879,7 @@ static int arp_process(struct sk_buff *skb)

	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.
		   It is possible, that this option should be enabled for some
		   devices (strip is candidate)
@@ -888,7 +888,7 @@ static int arp_process(struct sk_buff *skb)
		    arp->ar_op == htons(ARPOP_REPLY) &&
		    inet_addr_type(sip) == RTN_UNICAST)
			n = __neigh_lookup(&arp_tbl, &sip, dev, -1);
#endif
	}

	if (n) {
		int state = NUD_REACHABLE;
+8 −0
Original line number Diff line number Diff line
@@ -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",