These are a few guidelines for people planning to contribute to the library. It's not meant as a "don't do that or your code won't go in" document, but more as a good hint what we're aiming at. The most important issue is that we want to make the filter as portable as possible. This means that you shouldn't e.g. use gcc specific extensions. Another important issue is that we don't want to rely on "packed" for our basic structures. Therefore you never know about the layout in memory and you also shouldn't use sizeof() on that generated structures. Another consequence of this is that you shouldn't cast a plain memory area to such a generated structure, but rather use the Foo(const U8 *ptr) constructur of it. For more information about the structures and how to enable certain features please check the script's documentation (src/generator/generate.pl)