moving pfil consumers to sys/netpfil

Luigi Rizzo rizzo at iet.unipi.it
Thu Sep 13 20:37:43 UTC 2012


On Thu, Sep 13, 2012 at 11:31:25PM +0400, Gleb Smirnoff wrote:
> On Thu, Sep 13, 2012 at 07:41:05PM +0200, Luigi Rizzo wrote:
> L> Second:
> L>    What i contest is the fact that you classify ipfw as a "pfil client",
> L>    when pfil is just a tiny adaptation layer to access ipfw.
> L>    I mentioned the three alternative APIs (netmap, netfilter, ndis)
> L>    to witness the fact that pfil is irrelevant to ipfw's operation.
> 
> In FreeBSD ipfw is a pfil client. Dot.
> 
> In Linux it is netfilter client, and if they want to they may or may not
> put it under netfilter/ipfw. We don't care. Same for Windows and ndis.

This is the second time a "we don't care" statement appears in
this discussion and I find them extremely non constructive.
I do not know who you consider as "we", but as one who maintains
the code under multiple platforms i do have an interest in avoiding
gratuitous changes that introduce differences between the various
versions.

> ipfw isn't netinet specific, it also supports netinet6 and also supports
> layer2 pfil hooks.
> 
> Putting all pfil clients into one place puts things in order. It simplifies
> kernel overview for newcomer, it makes things easier for those who want
> to hack on the pfil itself.
> 
> L> Third:
> L>    any code relocation comes with some pain -- specifically, netinet/
> L>    is hardwired in many #include paths in the ipfw sources
> L> 
> L> 	> grep netinet/ipfw sys/netinet/ipfw/* | grep include | wc
> L> 	      35      70    1791
> 
> Numbers from your grep are impressive, but they are absolutely irrelevant.
> Actual diff for movement isn't that big. For example:
> 
> - sys/net has zero diff, no files modified
> - sys/netinet/* has zero diff, just ipfw directory removed, no files modified
> - sbin/ipfw has zero diff

please remain in context.
We were talking about the files in netinet/ipfw, which have
	#include <netinet/ipfw/something>
in them, so when moved to the new location these 35 lines
need to be changed to 
	#include <netpfil/ipfw/something>
Which is completely trivial, but introduces a difference between
the files in HEAD and those in stable/9 (and in the other versions
"we don't care" about) .

Now if your plan involves removing the netinet/ prefix and adding
	... compile-with "${NORMAL_C} -I$S/netpfil"
to the lines in HEAD:sys/conf/files, and
	... compile-with "${NORMAL_C} -I$S/netinet"
for those in stable/9, i can lift this objection.

I still think that a subsystem should not be classified by looking
at one of the APIs it uses, but rather based on overall functionality.
Hence in my opinion ipfw does not belong under netpfil/ more than
it belongs under netinet/ , and lacking a better place i consider
the relocation a gratuitous one.

> This is actual diff that is already universe-tested.

(attachment probably stripped by the mailing list ?)

cheers
luigi


More information about the freebsd-net mailing list