From 6a0ae483145159b0c903690c0313dbc03745c412 Mon Sep 17 00:00:00 2001 From: "/C=EU/ST=EU/CN=Jozsef Kadlecsik/emailAddress=kadlec@blackhole.kfki.hu" Date: Sat, 19 Jul 2008 20:48:19 +0000 Subject: Compatibility cleanup release: kernels >= 2.6.16 and 2.4.36.x are supported. --- kernel/include/linux/netfilter_ipv4/ip_set.h | 1 + .../include/linux/netfilter_ipv4/ip_set_compat.h | 70 ++++++++++++++++++++++ kernel/include/linux/netfilter_ipv4/ip_set_ipmap.h | 4 +- .../include/linux/netfilter_ipv4/ip_set_malloc.h | 12 +++- 4 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 kernel/include/linux/netfilter_ipv4/ip_set_compat.h (limited to 'kernel/include') diff --git a/kernel/include/linux/netfilter_ipv4/ip_set.h b/kernel/include/linux/netfilter_ipv4/ip_set.h index 92a746e..b8c7202 100644 --- a/kernel/include/linux/netfilter_ipv4/ip_set.h +++ b/kernel/include/linux/netfilter_ipv4/ip_set.h @@ -297,6 +297,7 @@ static inline int bitmap_bytes(ip_set_ip_t a, ip_set_ip_t b) } #ifdef __KERNEL__ +#include #define ip_set_printk(format, args...) \ do { \ diff --git a/kernel/include/linux/netfilter_ipv4/ip_set_compat.h b/kernel/include/linux/netfilter_ipv4/ip_set_compat.h new file mode 100644 index 0000000..8803d4f --- /dev/null +++ b/kernel/include/linux/netfilter_ipv4/ip_set_compat.h @@ -0,0 +1,70 @@ +#ifndef _IP_SET_COMPAT_H +#define _IP_SET_COMPAT_H + +#ifdef __KERNEL__ +#include + +/* Arrgh */ +#ifdef MODULE +#define __MOD_INC(foo) __MOD_INC_USE_COUNT(foo) +#define __MOD_DEC(foo) __MOD_DEC_USE_COUNT(foo) +#else +#define __MOD_INC(foo) +#define __MOD_DEC(foo) +#endif + +/* Backward compatibility */ +#ifndef __nocast +#define __nocast +#endif +#ifndef __bitwise__ +#define __bitwise__ +#endif + +/* Compatibility glue code */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) +#include +#define DEFINE_RWLOCK(x) rwlock_t x = RW_LOCK_UNLOCKED +#define try_module_get(x) (__MOD_INC(x), 1) +#define module_put(x) __MOD_DEC(x) +#define __clear_bit(nr, addr) clear_bit(nr, addr) +#define __set_bit(nr, addr) set_bit(nr, addr) +#define __test_and_set_bit(nr, addr) test_and_set_bit(nr, addr) +#define __test_and_clear_bit(nr, addr) test_and_clear_bit(nr, addr) + +typedef unsigned __bitwise__ gfp_t; + +static inline void *kzalloc(size_t size, gfp_t flags) +{ + void *data = kmalloc(size, flags); + + if (data) + memset(data, 0, size); + + return data; +} +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) +#define __KMEM_CACHE_T__ kmem_cache_t +#else +#define __KMEM_CACHE_T__ struct kmem_cache +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) +#define ip_hdr(skb) ((skb)->nh.iph) +#define skb_mac_header(skb) ((skb)->mac.raw) +#define eth_hdr(skb) ((struct ethhdr *)skb_mac_header(skb)) +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) +#define KMEM_CACHE_CREATE(name, size) \ + kmem_cache_create(name, size, 0, 0, NULL, NULL) +#else +#define KMEM_CACHE_CREATE(name, size) \ + kmem_cache_create(name, size, 0, 0, NULL) +#endif + + +#endif /* __KERNEL__ */ +#endif /* _IP_SET_COMPAT_H */ diff --git a/kernel/include/linux/netfilter_ipv4/ip_set_ipmap.h b/kernel/include/linux/netfilter_ipv4/ip_set_ipmap.h index 2435102..e3390be 100644 --- a/kernel/include/linux/netfilter_ipv4/ip_set_ipmap.h +++ b/kernel/include/linux/netfilter_ipv4/ip_set_ipmap.h @@ -25,7 +25,7 @@ struct ip_set_req_ipmap { ip_set_ip_t ip; }; -unsigned int +static unsigned int mask_to_bits(ip_set_ip_t mask) { unsigned int bits = 32; @@ -41,7 +41,7 @@ mask_to_bits(ip_set_ip_t mask) return bits; } -ip_set_ip_t +static ip_set_ip_t range_to_mask(ip_set_ip_t from, ip_set_ip_t to, unsigned int *bits) { ip_set_ip_t mask = 0xFFFFFFFE; diff --git a/kernel/include/linux/netfilter_ipv4/ip_set_malloc.h b/kernel/include/linux/netfilter_ipv4/ip_set_malloc.h index 30701f4..d22bed7 100644 --- a/kernel/include/linux/netfilter_ipv4/ip_set_malloc.h +++ b/kernel/include/linux/netfilter_ipv4/ip_set_malloc.h @@ -5,10 +5,17 @@ static size_t max_malloc_size = 0, max_page_size = 0; -static inline bool init_max_page_size(void) +static inline int init_max_page_size(void) { +/* Compatibility glues to support 2.4.36 */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) +#define __GFP_NOWARN 0 + + /* Guaranteed: slab.c */ + max_malloc_size = max_page_size = 131072; +#else size_t page_size = 0; - + #define CACHE(x) if (max_page_size == 0 || x < max_page_size) \ page_size = x; #include @@ -21,6 +28,7 @@ static inline bool init_max_page_size(void) return 1; } +#endif return 0; } -- cgit v1.2.3