Date: Mon, 05 Feb 2001 12:07:34 -0800 From: Julian Elischer <julian@elischer.org> To: Luigi Rizzo <rizzo@aciri.org> Cc: Patrick Bihan-Faou <patrick@netzuno.com>, freebsd-net@FreeBSD.ORG, richw@webcom.com, julian@FreeBSD.ORG Subject: Re: BRIDGE breaks ARP? (more info) Message-ID: <3A7F0806.9B81D98@elischer.org> References: <200102052011.f15KBJb24985@iguana.aciri.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ok, mea culpa I figured it out.. Luigi.. does this fix it? (void)memcpy(&itaddr, ea->arp_tpa, sizeof (itaddr)); TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link) { #ifdef BRIDGE /* * For a bridge, we want to check the address irrespective * of the receive interface. (This will change slightly * when we have clusters of interfaces). */ #define BRIDGE_TEST (do_bridge) #else #define BRIDGE_TEST 0 /* cc will optiise the test away */ #endif if ((BRIDGE_TEST) || (ia->ia_ifp == &ac->ac_if)) { maybe_ia = ia; if ((itaddr.s_addr == ia->ia_addr.sin_addr.s_addr) || (isaddr.s_addr == ia->ia_addr.sin_addr.s_addr)) { break; } } } if (maybe_ia == 0) { m_freem(m); return; } myaddr = ia ? ia->ia_addr.sin_addr : maybe_ia->ia_addr.sin_addr; if (!bcmp((caddr_t)ea->arp_sha, (caddr_t)ac->ac_enaddr, sizeof (ea->arp_sha))) { m_freem(m); /* it's from me, ignore it. */ return; } 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?3A7F0806.9B81D98>