svn commit: r246245 - head/sys/netgraph
Marko Zec
zec at fer.hr
Mon Feb 4 09:58:54 UTC 2013
On Monday 04 February 2013 10:42:31 Andriy Gapon wrote:
> on 04/02/2013 10:27 Marko Zec said the following:
> > On Monday 04 February 2013 08:41:32 Andriy Gapon wrote:
> >> + /* Only ethernet interfaces are of interest. */
> >> + if (ifp->if_type != IFT_ETHER)
> >> + return;
> >
> > And what about IFT_FDDI, IFT_XETHER, IFT_ISO88025, IFT_L2VLAN,
> > IFT_BRIDGE, IFT_ARCNET, IFT_IEEE8023ADLAG, IFT_IEEE80211?
>
> Oh, I didn't realize that many drivers changed if_type after if_alloc.
> Honestly, the networking code is not my strong skill, I ventured here
> only because nobody else did...
>
> So what do you suggest? if_alloctype or a different approach?
> I'd like to prevent if_l2com being mis-interpreted as struct arpcom.
We already have this in vnet_ng_ether_init():
865 TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
866 if (ifp->if_type == IFT_ETHER
867 || ifp->if_type == IFT_L2VLAN)
868 ng_ether_attach(ifp);
869 }
So at least in ng_ether_ifnet_arrival_event() we should do a check
consistent to the above code. OTOH we don't check for interface types on
entry into ng_ether_attach(), and perhaps a better strategy would be to
move your ifp->if_type check there. Perhaps the check could be #defined as
a macro to ensure consistency between vnet_ng_ether_init() and
ng_ether_attach()?
Marko
More information about the svn-src-all
mailing list