Now that the bridge also processes Ethernet frames as itself, two arp replies

will be sent if there is an address on the bridge. Exclude the bridge from the
special arp handling.

This has been tested with all combinations of addresses on the bridge and members.

Pointed out by:	Michal Mertl
This commit is contained in:
thompsa 2006-01-31 21:29:41 +00:00
parent d32360b922
commit f4270dbad6

@ -631,7 +631,8 @@ in_arpinput(m)
* XXX: This is really ugly!
*/
LIST_FOREACH(ia, INADDR_HASH(itaddr.s_addr), ia_hash) {
if ((bridged || (ia->ia_ifp == ifp)) &&
if (((bridged && ia->ia_ifp->if_type != IFT_BRIDGE) ||
(ia->ia_ifp == ifp)) &&
itaddr.s_addr == ia->ia_addr.sin_addr.s_addr)
goto match;
#ifdef DEV_CARP
@ -644,7 +645,8 @@ in_arpinput(m)
#endif
}
LIST_FOREACH(ia, INADDR_HASH(isaddr.s_addr), ia_hash)
if ((bridged || (ia->ia_ifp == ifp)) &&
if (((bridged && ia->ia_ifp->if_type != IFT_BRIDGE) ||
(ia->ia_ifp == ifp)) &&
isaddr.s_addr == ia->ia_addr.sin_addr.s_addr)
goto match;
/*