Ah!


Yep this seems to be fixing my problem here. I actually reimplemented
Julian's patch on a test system here, but luckily did not get confused by
the order of the test (the first test should be if(do_bridge || ...) rather
than if (!do_bridge)).

To Julian's defence, the use of a #ifdef BRIDGE in one place and $ifndef
BRIDGE in the other place was confusing though.


Patrick.




> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of Julian Elischer
> Sent: February 5, 2001 15:08
> To: Luigi Rizzo
> Cc: Patrick Bihan-Faou; [EMAIL PROTECTED]; [EMAIL PROTECTED];
> [EMAIL PROTECTED]
> Subject: Re: BRIDGE breaks ARP? (more info)
>
>
> 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 [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to