netfilter: ipset: make possible to hash some part of the data element only
Jozsef Kadlecsik [Thu, 21 Jul 2011 10:05:31 +0000 (12:05 +0200)]
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Patrick McHardy <kaber@trash.net>

include/linux/netfilter/ipset/ip_set_ahash.h

index c5b06aa..42b7d25 100644 (file)
@@ -211,12 +211,16 @@ ip_set_hash_destroy(struct ip_set *set)
        set->data = NULL;
 }
 
-#define HKEY(data, initval, htable_bits)                                \
-(jhash2((u32 *)(data), sizeof(struct type_pf_elem)/sizeof(u32), initval) \
-       & jhash_mask(htable_bits))
-
 #endif /* _IP_SET_AHASH_H */
 
+#ifndef HKEY_DATALEN
+#define HKEY_DATALEN   sizeof(struct type_pf_elem)
+#endif
+
+#define HKEY(data, initval, htable_bits)                       \
+(jhash2((u32 *)(data), HKEY_DATALEN/sizeof(u32), initval)      \
+       & jhash_mask(htable_bits))
+
 #define CONCAT(a, b, c)                a##b##c
 #define TOKEN(a, b, c)         CONCAT(a, b, c)
 
@@ -1054,6 +1058,8 @@ type_pf_gc_init(struct ip_set *set)
                 IPSET_GC_PERIOD(h->timeout));
 }
 
+#undef HKEY_DATALEN
+#undef HKEY
 #undef type_pf_data_equal
 #undef type_pf_data_isnull
 #undef type_pf_data_copy