diff options
Diffstat (limited to 'kernel/include/linux/netfilter_ipv4/ip_set_nethash.h')
-rw-r--r-- | kernel/include/linux/netfilter_ipv4/ip_set_nethash.h | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/kernel/include/linux/netfilter_ipv4/ip_set_nethash.h b/kernel/include/linux/netfilter_ipv4/ip_set_nethash.h index 172ef02..eecd68b 100644 --- a/kernel/include/linux/netfilter_ipv4/ip_set_nethash.h +++ b/kernel/include/linux/netfilter_ipv4/ip_set_nethash.h @@ -4,7 +4,6 @@ #include <linux/netfilter_ipv4/ip_set.h> #define SETTYPE_NAME "nethash" -#define MAX_RANGE 0x0000FFFF struct ip_set_nethash { ip_set_ip_t *members; /* the nethash proper */ @@ -12,8 +11,9 @@ struct ip_set_nethash { uint32_t hashsize; /* hash size */ uint16_t probes; /* max number of probes */ uint16_t resize; /* resize factor in percent */ - unsigned char cidr[30]; /* CIDR sizes */ - void *initval[0]; /* initvals for jhash_1word */ + uint8_t cidr[30]; /* CIDR sizes */ + uint16_t nets[30]; /* nr of nets by CIDR sizes */ + uint32_t initval[0]; /* initvals for jhash_1word */ }; struct ip_set_req_nethash_create { @@ -24,32 +24,7 @@ struct ip_set_req_nethash_create { struct ip_set_req_nethash { ip_set_ip_t ip; - unsigned char cidr; + uint8_t cidr; }; -static unsigned char shifts[] = {255, 253, 249, 241, 225, 193, 129, 1}; - -static inline ip_set_ip_t -pack(ip_set_ip_t ip, unsigned char cidr) -{ - ip_set_ip_t addr, *paddr = &addr; - unsigned char n, t, *a; - - addr = htonl(ip & (0xFFFFFFFF << (32 - (cidr)))); -#ifdef __KERNEL__ - DP("ip:%u.%u.%u.%u/%u", NIPQUAD(addr), cidr); -#endif - n = cidr / 8; - t = cidr % 8; - a = &((unsigned char *)paddr)[n]; - *a = *a /(1 << (8 - t)) + shifts[t]; -#ifdef __KERNEL__ - DP("n: %u, t: %u, a: %u", n, t, *a); - DP("ip:%u.%u.%u.%u/%u, %u.%u.%u.%u", - HIPQUAD(ip), cidr, NIPQUAD(addr)); -#endif - - return ntohl(addr); -} - #endif /* __IP_SET_NETHASH_H */ |