[was] addition to ipfw (read vlans from bridge)..
Yar Tikhiy
yar at comp.chem.msu.su
Mon Dec 25 20:38:19 PST 2006
On Mon, Dec 25, 2006 at 10:39:51PM +0100, Max Laier wrote:
> On Monday 25 December 2006 21:22, Julian Elischer wrote:
> > Yar Tikhiy wrote:
> > > On Fri, Dec 22, 2006 at 12:39:06PM -0800, Julian Elischer wrote:
> > >> Taking to heart comments by Andre and Max (Laier),
> > >> I have redone this patch in a different manner.
> > >>
> > >> The aim is to be able to see inside vlans when bridging.
> > >> Now, this is a 6.x patch to bridge.c because that is what we
> > >> are using, but I will make a similar patch to if_bridge.c
> > >> for 6 and 7 if this meets with approval.
> > >>
> > >>
> > >> Basically if it is a vlan packet, take off the whole vlan header
> > >> instead of just the ether header, but pass to ipfw, an ether header
> > >> with the real protocol field substituted in.
> > >> when finishing put back everything we removed before.
> > >>
> > >>
> > >> The only addition I'd do to this would be to add a sysctl
> > >> to turn it on if people thought it would be break POLA too much
> > >> to have it work by default.
> > >
> > > Excuse me, but I'd like to second Andre's opinion. We should stop
> > > fiddling with the mbuf contents in favour of teaching ipfw (or the
> > > interface code between bridge and ipfw) of 802.1q (or its
> > > generalisation.) Now that the 802.1q VLAN technology has been well
> > > integrated in the general Ethernet framework by IEEE, there is very
> > > litte sense left in such hacks. If ipfw is to stay L2-agnostic,
> > > then let's just pass the offset of the IP header into the mbuf to
> > > it. The 802.1q header is so nice and simple and easy to parse at
> > > any level. So this patch can be OK in 6.x for the only sake of
> > > preserving the pfil ABI, but it should die along with it. An
> > > extended interface is apparently called for in HEAD.
> >
> > You are the one who complained that it should not be done in ipfw,
> > and that we should do it the same way we currently handled the
> > removal and re-addition of the ethernet header. So that's what I did.
> > (in the bridge code), by teaching the ethernet header handling code
> > to handle vlan tags as well.
>
> I'm not sure if you are mistaking Yar for me here. As for my concerns -
> consider them withdrawn. I still don't like the idea that the code in
> net*inet*/ip_fw2.c gets to know about VLAN internals, but if everybody
> feels that it does belong there - fine. I hereby resign from this
> thread.
IMO ipfw should be taught of VLAN internals only if we are going to
implement L2 filtering in it. But if not, a simple offset of the IP
header computed at the link layer of the stack would do. That would
allow for different VLAN or whatever encapsulations as well.
--
Yar
More information about the freebsd-net
mailing list