Packing netgraph structs

Harti Brandt harti at freebsd.org
Thu Jul 1 08:43:25 PDT 2004


On Thu, 1 Jul 2004, Anil Madhavapeddy wrote:

AM>On 1 Jul 2004, at 13:48, Roman Kurakin wrote:
AM>> 
AM>> If this is a problem why can't you make some wrapper that will pack/unpack
AM>> written on C,
AM>> which will be a lib for you?
AM>
AM>Because I want to minimise the size of the foreign bindings - this would
AM>require C code for every single Netgraph struct.  If they were packed, I
AM>could just do it all in OCaml.
AM>
AM>Isn't this a problem for other language bindings as well, or is everyone
AM>doing Netgraph userland hacking in C at the moment?

Packing structs is a evil thing to do because this requires non-standard 
compiler support. Traditionally this was done with carefully designing the 
struct and inserting explicit spare fields where the compiler would pad.
Unfortunately with decreasing $/bit for memory this knowledge has been 
lost and in any case it helps only for a concrete compiler/platform 
combination. So why can't you just guess the padding and handle it 
explicitely? Have a look at ng_parse.c.

harti


More information about the freebsd-net mailing list