From owner-freebsd-net Fri Oct 8 17: 0:14 1999 Delivered-To: freebsd-net@freebsd.org Received: from cs.rice.edu (cs.rice.edu [128.42.1.30]) by hub.freebsd.org (Postfix) with ESMTP id 91EE915445; Fri, 8 Oct 1999 17:00:08 -0700 (PDT) (envelope-from aron@cs.rice.edu) Received: (from aron@localhost) by cs.rice.edu (8.9.0/8.9.0) id TAA28762; Fri, 8 Oct 1999 19:00:07 -0500 (CDT) From: Mohit Aron Message-Id: <199910090000.TAA28762@cs.rice.edu> Subject: arp errors on machines with two interfaces To: freebsd-bugs@freebsd.org Date: Fri, 8 Oct 1999 19:00:06 -0500 (CDT) Cc: freebsd-net@freebsd.org, alc@cs.rice.edu (Alan Cox) X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Hi, whenever I have a FreeBSD machine containing two interfaces connected to switched 100Mbps Ethernet, I keep getting arp errors of the form: arp: 128.42.1.30 is on fxp0 but got reply from 08:00:20:87:90:92 on fxp1 Here's an output of 'uname -a' on my machine: FreeBSD idli.cs.rice.edu 3.3-RELEASE FreeBSD 3.3-RELEASE #7: Fri Oct 8 17:31:12 CDT 1999 aron@idli.cs.rice.edu:/usr/users/aron/FreeBSD-3.3-src/sys/compile/IDLI i386 I managed to find the source of these error reports. The steps below outline what happens. 1) The FreeBSD machine in question is idli.cs.rice.edu and has two network interfaces fxp0 and fxp1. The routing tables are set such that all packets to machine cs.rice.edu (128.42.1.30) are routed through interface fxp0. 2) Any communication between idli.cs.rice.edu and cs.rice.edu results in cs.rice.edu's address to be stored in the arp cache of idli.cs.rice.edu. Lets assume that this has happened. 3) Assume now that someone on cs.rice.edu does a login to a 3rd machine foo.cs.rice.edu. cs.rice.edu sends an arp broadcast on the network asking for foo.cs.rice.edu's ethernet address. This broadcast is received on both the interfaces of idli.cs.rice.edu. 4) Upon getting arp packets from cs.rice.edu, idli.cs.rice.edu gets a chance to refresh the address of cs.rice.edu in its arp cache (although idli.cs.rice.edu won't reply to the arp query). The processing for the arp packet received on interface fxp0 happens without any problem. 5) However, the processing for the arp packet received on interface fxp1 raises an arp error. This is because the routing table entry indicates that arp packets from cs.rice.edu should arrive on interface fxp0. This raises the arp errors that keep flooding the message log. The code in question is in sys/netinet/if_ether.c in the function in_arpinput(). Is there a better way to fix the problem other than simply turning the error report off ? - Mohit To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message