On Sun, Jun 26, 2011 at 07:52:18PM +0200, Camiel Dobbelaar wrote:
> Mark ARP request broadcasts as such in the mbuf flags.  FreeBSD and NetBSD 
> both have this.
> 
> Without this, bridge_output() drops ARP request broadcasts on interfaces 
> without the discover flag:
> 
>                         if ((p->bif_flags & IFBIF_DISCOVER) == 0 &&
>                             (m->m_flags & (M_BCAST | M_MCAST)) == 0)
>                                 continue;

OK claudio@
 
> 
> Index: if_ether.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/if_ether.c,v
> retrieving revision 1.88
> diff -u -r1.88 if_ether.c
> --- if_ether.c        22 Jul 2010 00:41:55 -0000      1.88
> +++ if_ether.c        26 Jun 2011 17:30:29 -0000
> @@ -359,6 +359,7 @@
>       bcopy((caddr_t)tip, (caddr_t)ea->arp_tpa, sizeof(ea->arp_tpa));
>       sa.sa_family = pseudo_AF_HDRCMPLT;
>       sa.sa_len = sizeof(sa);
> +     m->m_flags |= M_BCAST;
>       (*ifp->if_output)(ifp, m, &sa, (struct rtentry *)0);
>  }
>  
> @@ -994,6 +995,7 @@
>          sizeof(ea->arp_tha));
>       sa.sa_family = pseudo_AF_HDRCMPLT;
>       sa.sa_len = sizeof(sa);
> +     m->m_flags |= M_BCAST;
>       ifp->if_output(ifp, m, &sa, (struct rtentry *)0);
>  }
> 

-- 
:wq Claudio

Reply via email to