Re: [PATCH 1/2] netfilter: ipset: Add hash:net,net module to kernel.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 19 Sep 2013, Oliver wrote:

> On Thursday 19 September 2013 11:30:50 Jozsef Kadlecsik wrote:
> > On Thu, 19 Sep 2013, Oliver wrote:
> > > > On Tue, 17 Sep 2013, Oliver wrote:
> > > <snip>
> > > 
> > > > > @@ -461,6 +462,9 @@ mtype_expire(struct ip_set *set, struct htype *h,
> > > > > u8
> > > > > nets_length, size_t dsize)>
> > > > > 
> > > > >  	struct mtype_elem *data;
> > > > >  	u32 i;
> > > > >  	int j;
> > > > > 
> > > > > +#if IPSET_NET_COUNT > 1
> > > > > +	u8 k;
> > > > > +#endif
> > > > 
> > > > Please get rid of all these #if .. [#else ...] #endif constructions,
> > > > except in mtype_test_cidrs. The compiler optimizes away the for loop
> > > > when
> > > > IPSET_NET_COUNT == 1.
> > > 
> > > Yep, there's a couple of other places where I don't currently see a way
> > > around it, but anywhere that it doesn't pose a logical problem to
> > > existing types, I've removed it.
> > 
> > Where do you think it's required, except in mtype_test_cidrs?
> 
> Well actually, I've come to the realisation that it's actually required 
> pretty much everywhere that I placed it because of the simple reason 
> that in the existing hash types, data->cidr is not a u8 array, but it is 
> in hash:net,net obviously.

Yes, you are quite right, I was blind.
 
> So now either we can convert all the existing hash types so that the 
> cidr member of their struct is a single-element array, or we keep the 
> preprocessor conditions, your choice.

I don't really like either of them... What about tweaking the CIDR macro,
into something like this:

#ifdef IP_SET_HASH_WITH_NETS
#if IPSET_NET_COUNT > 1
#define __CIDR(data, i)		((data)->cidr[i])
#else
#define __CIDR(data, i)		((data)->cidr)
#endif
#ifdef IP_SET_HASH_WITH_NETS_PACKED
/* When cidr is packed with nomatch, cidr - 1 is stored in the entry */
#define CIDR(data, i)		(__CIDR(data, i) + 1)
#else
#define CIDR(data, i)		__CIDR(data, i)
#endif
#endif

What do you think?

Best regards,
Jozsef
-
E-mail  : kadlec@xxxxxxxxxxxxxxxxx, kadlecsik.jozsef@xxxxxxxxxxxxx
PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address : Wigner Research Centre for Physics, Hungarian Academy of Sciences
          H-1525 Budapest 114, POB. 49, Hungary
--
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




[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux