Minor nitpick: dynamic memory allocation is not used when processing packets, but is when adding/removing clients via netlink.