Date: Mon, 13 Nov 2000 10:15:52 -0600 (CST) From: Guy Helmer <ghelmer@cs.iastate.edu> To: Mikel <mikel@upan.org> Cc: net@FreeBSD.ORG Subject: Re: "arp: XX is on xx0 but got reply from YY on yy0" message Message-ID: <Pine.HPX.4.05.10011131002180.28204-100000@popeye.cs.iastate.edu> In-Reply-To: <3A0C1163.82FDA989@upan.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 10 Nov 2000, Mikel wrote: > could you maybe send a copy (or a mock copy) of your rc.conf files? The relevant lines from rc.conf would look like: network_interfaces="lo0 dc0 aue0" ifconfig_dc0="up" ifconfig_aue0="inet 10.0.0.1 netmask 255.255.255.0" > Guy Helmer wrote: > > > I'm working with a situation where a machine will have two interfaces on > > the same Ethernet segment. One interface does not have an IP address and > > is in promiscuous mode to listen to the segment; the other interface has > > an IP address and is running normally. The kernel logs a lot of "arp: XX > > is on xx0 but got reply from YY on yy0" messages. > > > > Questions also appear on the FreeBSD lists asking about this message when > > people have multiple interfaces in different IP subnets on the same wire. > > > > >From reading the source in for in_arpinput() in > > /sys/netinet/if_ether.c, it appears that the kernel just logs this message > > and harmlessly tosses the packet. If this *is* harmless, would it be OK > > to make the log message conditional on a sysctl toggle? > > > > Guy I'm proposing a sysctl, such as net.link.ether.inet.disablearpwarning, that would turn off the arp warning messages if the variable were set to a non-zero value. Untested patch: Index: if_ether.c =================================================================== RCS file: /home/ncvs/src/sys/netinet/if_ether.c,v retrieving revision 1.72 diff -u -r1.72 if_ether.c --- if_ether.c 2000/07/13 19:31:01 1.72 +++ if_ether.c 2000/11/13 16:11:51 @@ -102,6 +102,7 @@ static int arp_maxtries = 5; static int useloopback = 1; /* use loopback interface for local traffic */ static int arp_proxyall = 0; +static int disable_arp_warning = 0; SYSCTL_INT(_net_link_ether_inet, OID_AUTO, maxtries, CTLFLAG_RW, &arp_maxtries, 0, ""); @@ -109,6 +110,8 @@ &useloopback, 0, ""); SYSCTL_INT(_net_link_ether_inet, OID_AUTO, proxyall, CTLFLAG_RW, &arp_proxyall, 0, ""); +SYSCTL_INT(_net_link_ether_inet, OID_AUTO, disablearpwarning, CTLFLAG_RW, + &disable_arp_warning, 0, ""); static void arp_rtrequest __P((int, struct rtentry *, struct sockaddr *)); static void arprequest __P((struct arpcom *, @@ -557,11 +560,12 @@ if (la && (rt = la->la_rt) && (sdl = SDL(rt->rt_gateway))) { #ifndef BRIDGE /* the following is not an error when doing bridging */ if (rt->rt_ifp != &ac->ac_if) { - log(LOG_ERR, "arp: %s is on %s%d but got reply from %6D on %s%d\n", - inet_ntoa(isaddr), - rt->rt_ifp->if_name, rt->rt_ifp->if_unit, - ea->arp_sha, ":", - ac->ac_if.if_name, ac->ac_if.if_unit); + if (!disable_arp_warning) + log(LOG_ERR, "arp: %s is on %s%d but got reply from %6D on %s%d\n", + inet_ntoa(isaddr), + rt->rt_ifp->if_name, rt->rt_ifp->if_unit, + ea->arp_sha, ":", + ac->ac_if.if_name, ac->ac_if.if_unit); goto reply; } #endif Guy Helmer, Ph.D. Candidate, Iowa State University Dept. of Computer Science Research Assistant, Dept. of Computer Science --- ghelmer@cs.iastate.edu http://www.cs.iastate.edu/~ghelmer To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.HPX.4.05.10011131002180.28204-100000>