On 2013/01/17 00:56, Claudio Jeker wrote:
> On Thu, Jan 17, 2013 at 12:40:32AM +0100, Marco Pfatschbacher wrote:
> > On Wed, Jan 16, 2013 at 10:56:25PM +0000, Stuart Henderson wrote:
> > > Daemons which send LLDP advertisements (e.g. ladvd and lldpd) need to
> > > send frames on trunk member ports in order that the individual port can
> > > be identified to the switch; currently there is a blanket restriction
> > > on sending via these ports, the following diff changes this to permit
> > > AF_UNSPEC and pseudo_AF_HDRCMPLT as suggested by Sten Spans (ladvd
> > > author).
> > > 
> > > Comments? OK?
> > 
> > Hmm, that feels a bit too unrestrictive.
> > I remember a cisco that was utterly confused when it received
> > STP on its trunkports. 
> > I wonder if there's sth in the standard about extra traffic
> > on the trunkports.
> > 
> > OTOH, if reyk@ only added the check as an extra safety net,
> > I'm fine with this.
> > 
> 
> We could also check for the PACKET_TAG_DLT on the mbuf so we limit sending
> on the trunk ports to bpf only. IMO bpf is one of those tools that give
> you enough rope to do cool shit but also to hang yourself so that should
> be OK.

Ah yes, that probably makes more sense:

Index: if_ethersubr.c
===================================================================
RCS file: /cvs/src/sys/net/if_ethersubr.c,v
retrieving revision 1.152
diff -u -p -r1.152 if_ethersubr.c
--- if_ethersubr.c      5 Oct 2012 17:17:04 -0000       1.152
+++ if_ethersubr.c      17 Jan 2013 00:16:11 -0000
@@ -227,7 +227,9 @@ ether_output(ifp0, m0, dst, rt0)
 #endif
 
 #if NTRUNK > 0
-       if (ifp->if_type == IFT_IEEE8023ADLAG)
+       /* restrict transmission on trunk members to bpf only */
+       if (ifp->if_type == IFT_IEEE8023ADLAG &&
+           (m_tag_find(m, PACKET_TAG_DLT, NULL) == NULL))
                senderr(EBUSY);
 #endif

Reply via email to