So, I should have marked this as v3, I'm losing track of how much junk I've sent out already it seems, sorry folks. And I forgot to update the commit messages to reflect what I actually did... there's no preprocessor macro involved any more, and it's just a single switch statement rather than two. If anyone wants a re-roll, just shout. Thanks, Oliver On Tuesday 03 September 2013 13:03:23 Oliver wrote: > From: Oliver Smith <oliver@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> > > Following on from my previous patch, I noticed that the existing way > of managing the extensions could actually be trivially reworked by > simply checking each flag bit in series and setting up the size and > offsets incrementally. This makes adding new extensions as simple as > throwing a new case into the switch, no set file changes needed. It > also avoids having to do any unpleasant upheaveal of timeout. > > This patch is intended to apply directly against the current HEAD of > master in the ipset repo. > > One caveat to note is that since we now define each extension > independently, it is important to ensure a proper alignment value so > that each subsequent struct ends up on a "nice" boundary in memory. > Since both timeout and counter should align on their own nicely, I > didn't bother adding alignment statements to them. Anyone writing a > new extension should ensure they're a good codizen and align appropriately. > > On that note, there is the option of simply aligning everything to the GCC > value __BIGGEST_ALIGNMENT__, on my 64-bit box that comes out at 16 bytes, > perhaps that's overkill - although there are instructions that can do a 16 > byte load. Perhaps I'm just going overboard though... in6_addr doesn't even > align to 64 bits, so maybe nobody cares but me. <breaks out the violin> > > Cheers! > > Oliver Smith (2): > netfilter: ipset: rework hash ext. handling to be more manageable. > netfilter: ipset: rework bitmap ext. handling to be more manageable. > > kernel/include/linux/netfilter/ipset/ip_set.h | 4 + > kernel/include/uapi/linux/netfilter/ipset/ip_set.h | 8 +- > kernel/net/netfilter/ipset/ip_set_bitmap_gen.h | 34 +++++++ > kernel/net/netfilter/ipset/ip_set_bitmap_ip.c | 87 ++---------------- > kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.c | 96 > ++----------------- kernel/net/netfilter/ipset/ip_set_bitmap_port.c | > 76 +-------------- kernel/net/netfilter/ipset/ip_set_hash_gen.h | 102 > ++++++--------------- kernel/net/netfilter/ipset/ip_set_hash_ip.c | > 36 +------- kernel/net/netfilter/ipset/ip_set_hash_ipport.c | 54 > +---------- kernel/net/netfilter/ipset/ip_set_hash_ipportip.c | 58 > +----------- kernel/net/netfilter/ipset/ip_set_hash_ipportnet.c | 66 > +------------ kernel/net/netfilter/ipset/ip_set_hash_net.c | 54 > +---------- kernel/net/netfilter/ipset/ip_set_hash_netiface.c | 67 > +------------- kernel/net/netfilter/ipset/ip_set_hash_netport.c | 60 > +----------- 14 files changed, 106 insertions(+), 696 deletions(-) What are you doing down here? I don't usually top post, but since it's in reply to my own... -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html