HEADS UP on HEAD - PF ABI changes - Re: cvs commit: src/usr.sbin/pfctl parse.y pf.conf.5 pfctl_parser.c src/sys/net/pf pf.c pfvar.h

Max Laier max at love2party.net
Sun Apr 6 16:28:38 PDT 2008


On Sunday 06 April 2008 23:23:37 Matthew Dillon wrote:
> :dillon      2008/04/06 14:12:42 PDT
> :
> :DragonFly src repository
> :
> :  Modified files:
> :    usr.sbin/pfctl       parse.y pf.conf.5 pfctl_parser.c
> :    sys/net/pf           pf.c pfvar.h
> :  Log:
> :  Bring the 'probability' keyword into PF from NetBSD.  This feature
> : allows
>
>     Please note that this commit modifies the ABI structure passed
> between kernel and userland.  If you are using PF (packet filter), both
> the kernel and pfctl must be recompiled and pfctl needs the kernel's
> new pfvar.h, e.g.:
>
>     (build and install new kernel)
>     ...
>     (build and install new pfctl)
>
> 	cp /usr/src/sys/net/pf/pfvar.h /usr/include/net/pf/pfvar.h
> 	cd /usr/src/usr.sbin/pfctl
> 	make clean obj depend all install
>
>     A buildworld/kernel sequence also works of course, I'm simply
> describing how to avoid doing a full buildworld.

Wait ... you might want to consider to store the hash in the state instead 
of calculating it over and over again:

i.e.
		if (s) {
			m->m_pkthdr.fw_flags |= ALTQ_MBUF_STATE_HASHED;
-			m->m_pkthdr.altq_state_hash = pf_state_hash(s);
+			m->m_pkthdr.altq_state_hash = s->hash;
		}

and calculate the hash on state creation.

The hash operation is not exactly expensive, but still.  I think this 
would be space well spent.  Unless there is some padding in your pf state 
this will result in another ABI change.  OpenBSD recently separated the 
in-kernel state entry from the information used for pfsync and userland 
copys, this is a good idea.

-- 
/"\  Best regards,                      | mlaier at freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier at EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News





More information about the Commits mailing list