summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2012-09-03 14:29:28 +0000
committerglebius <glebius@FreeBSD.org>2012-09-03 14:29:28 +0000
commit9b72c7eaa7db5c310d21f10fa2627ce72fd9ac29 (patch)
treed472303af619afc2d68c7ab0cda3c079928a1a16 /sys/netinet
parent814cd9213c55954ea92be3aba69a491e34254300 (diff)
downloadFreeBSD-src-9b72c7eaa7db5c310d21f10fa2627ce72fd9ac29.zip
FreeBSD-src-9b72c7eaa7db5c310d21f10fa2627ce72fd9ac29.tar.gz
Provide a sysctl switch that allows to install ARP entries
with multicast bit set. FreeBSD refuses to install such entries since 9.0, and this broke installations running Microsoft NLB, which are violating standards. Tested by: Tarasov Oleg <oleg_tarasov sg-tea.com>
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/if_ether.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index 8e2daeb..52d7db2 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -496,6 +496,7 @@ arpintr(struct mbuf *m)
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,
@@ -506,7 +507,8 @@ SYSCTL_INT(_net_link_ether_inet, OID_AUTO, log_arp_movements, CTLFLAG_RW,
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)
@@ -551,8 +553,8 @@ in_arpinput(struct mbuf *m)
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;
}
OpenPOWER on IntegriCloud