[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