[Midnightbsd-cvs] src [8258] trunk: provide a sysctl switch that allows to install ARP entries with multicast bit set.
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Sep 17 17:39:03 EDT 2016
Revision: 8258
http://svnweb.midnightbsd.org/src/?rev=8258
Author: laffer1
Date: 2016-09-17 17:39:03 -0400 (Sat, 17 Sep 2016)
Log Message:
-----------
provide a sysctl switch that allows to install ARP entries with multicast bit set.
Modified Paths:
--------------
trunk/sys/netinet/if_ether.c
trunk/usr.sbin/arp/arp.4
Modified: trunk/sys/netinet/if_ether.c
===================================================================
--- trunk/sys/netinet/if_ether.c 2016-09-17 21:38:29 UTC (rev 8257)
+++ trunk/sys/netinet/if_ether.c 2016-09-17 21:39:03 UTC (rev 8258)
@@ -481,6 +481,7 @@
static int log_arp_wrong_iface = 1;
static int log_arp_movements = 1;
static int log_arp_permanent_modify = 1;
+static int allow_multicast = 0;
SYSCTL_INT(_net_link_ether_inet, OID_AUTO, log_arp_wrong_iface, CTLFLAG_RW,
&log_arp_wrong_iface, 0,
@@ -491,8 +492,9 @@
SYSCTL_INT(_net_link_ether_inet, OID_AUTO, log_arp_permanent_modify, CTLFLAG_RW,
&log_arp_permanent_modify, 0,
"log arp replies from MACs different than the one in the permanent arp entry");
+SYSCTL_INT(_net_link_ether_inet, OID_AUTO, allow_multicast, CTLFLAG_RW,
+ &allow_multicast, 0, "accept multicast addresses");
-
static void
in_arpinput(struct mbuf *m)
{
@@ -536,8 +538,8 @@
return;
}
- if (ETHER_IS_MULTICAST(ar_sha(ah))) {
- log(LOG_NOTICE, "in_arp: %*D is multicast\n",
+ if (allow_multicast == 0 && ETHER_IS_MULTICAST(ar_sha(ah))) {
+ log(LOG_NOTICE, "arp: %*D is multicast\n",
ifp->if_addrlen, (u_char *)ar_sha(ah), ":");
return;
}
Modified: trunk/usr.sbin/arp/arp.4
===================================================================
--- trunk/usr.sbin/arp/arp.4 2016-09-17 21:38:29 UTC (rev 8257)
+++ trunk/usr.sbin/arp/arp.4 2016-09-17 21:39:03 UTC (rev 8258)
@@ -120,6 +120,12 @@
.Xr sysctl 3
MIB.
.Bl -tag -width "log_arp_permanent_modify"
+.It Va allow_multicast
+Should the kernel install ARP entries with multicast bit set in
+the hardware address.
+Installing such entries is RFC 1812 violation, but some prorietary
+load balancing techniques require routers on network to do so.
+Turned off by default.
.It Va log_arp_movements
Should the kernel log movements of IP addresses from one hardware
address to an other.
@@ -203,6 +209,11 @@
This error will only be logged if the sysctl
.Va net.link.ether.inet.log_arp_permanent_modify
is set to 1, which is the system's default behaviour.
+.It "arp: %x:%x:%x:%x:%x:%x is multicast"
+Kernel refused to install an entry with multicast hardware address.
+If you really want such addresses being installed, set the sysctl
+.Va net.link.ether.inet.allow_multicast
+to a positive value.
.El
.Sh SEE ALSO
.Xr inet 4 ,
More information about the Midnightbsd-cvs
mailing list