1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-10-19 02:29:40 +00:00

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>
This commit is contained in:
Gleb Smirnoff 2012-09-03 14:29:28 +00:00
parent 5610c8a7ac
commit 478df1d534
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=240073
2 changed files with 16 additions and 3 deletions

View File

@ -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;
}

View File

@ -120,6 +120,12 @@ of the
.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 @@ entry in the local ARP table.
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 ,