per-interface packet filters [summary]
Andre Oppermann
andre at freebsd.org
Tue Dec 14 06:23:03 PST 2004
Luigi Rizzo wrote:
>
> On Tue, Dec 14, 2004 at 01:47:35PM +0100, Andre Oppermann wrote:
> ...
> > > Implementationwise, the kernel side is evidently trivial as the
> > > original code already supports the idea of multiple chains. All
> > > you need is to extend the struct ifnet with a pointer to the chain,
> > > or use some other trick (e.g. going through ifindex) to quickly
> > > associate a chain to the input (and possibly output) interface.
> >
> > Nonononononononononononononononononononononono.
>
> andre you need to cool down a bit!
I'm not angry but frustrated. In the network area it's too much 'lets
quickly hack this in' instead of 'lets carefully design this in'.
> i said "use some other trick" exactly to avoid changing
> the struct ifnet. All i meant to say is that we want a unique
> key, possibly in a small namespace, to quickly locate the per-if
> private firewall info. How the key is used is not a business of
> the rest of the kernel. But of course if it is an index in a
> smallish array (such as ifindex) the thing is fast and clean.
Ok, I'm fine with *this* approach.
This can be done and handled inside ipfw_check_in|out() based on the
interface pointer information passed in from pfil_run_hooks().
Then inside IPFW it can be implemented with multiple rule chains
although I'm not convinced this would be the smartest approach.
Wouldn't it be even better to have per-interface and global rules
after each other? This way your problem with the general rule
synching can be solved.
--
Andre
More information about the freebsd-net
mailing list