X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv4%2Fnetfilter%2Fipt_SET.c;h=62e0a92498e6e49b14f6e491436395b165fef8c1;hb=a2f44b27303a5353859d77a3e96a1d3f33f56ab7;hp=37e18ec072a80fdeaa36943a998ca0626506c610;hpb=134734d875a0a48d994ef20b9905209b4b8b6f75;p=linux-2.6.git diff --git a/net/ipv4/netfilter/ipt_SET.c b/net/ipv4/netfilter/ipt_SET.c index 37e18ec07..62e0a9249 100644 --- a/net/ipv4/netfilter/ipt_SET.c +++ b/net/ipv4/netfilter/ipt_SET.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -29,8 +30,15 @@ target(struct sk_buff **pskb, const struct net_device *in, const struct net_device *out, unsigned int hooknum, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17) + const struct xt_target *target, +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) const void *targinfo, void *userinfo) +#else + const void *targinfo) +#endif { const struct ipt_set_info_target *info = targinfo; @@ -48,18 +56,30 @@ target(struct sk_buff **pskb, static int checkentry(const char *tablename, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) + const void *e, +#else const struct ipt_entry *e, +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17) + const struct xt_target *target, +#endif void *targinfo, - unsigned int targinfosize, unsigned int hook_mask) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) + unsigned int targinfosize, +#endif + unsigned int hook_mask) { struct ipt_set_info_target *info = (struct ipt_set_info_target *) targinfo; ip_set_id_t index; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) if (targinfosize != IPT_ALIGN(sizeof(*info))) { DP("bad target info size %u", targinfosize); return 0; } +#endif if (info->add_set.index != IP_SET_INVALID_ID) { index = ip_set_get_byindex(info->add_set.index); @@ -87,15 +107,24 @@ checkentry(const char *tablename, return 1; } -static void destroy(void *targetinfo, unsigned int targetsize) +static void destroy( +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17) + const struct xt_target *target, +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) + void *targetinfo, unsigned int targetsize) +#else + void *targetinfo) +#endif { struct ipt_set_info_target *info = targetinfo; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) if (targetsize != IPT_ALIGN(sizeof(struct ipt_set_info_target))) { ip_set_printk("invalid targetsize %d", targetsize); return; } - +#endif if (info->add_set.index != IP_SET_INVALID_ID) ip_set_put(info->add_set.index); if (info->del_set.index != IP_SET_INVALID_ID) @@ -104,7 +133,13 @@ static void destroy(void *targetinfo, unsigned int targetsize) static struct ipt_target SET_target = { .name = "SET", +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21) + .family = AF_INET, +#endif .target = target, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17) + .targetsize = sizeof(struct ipt_set_info_target), +#endif .checkentry = checkentry, .destroy = destroy, .me = THIS_MODULE @@ -114,15 +149,20 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Jozsef Kadlecsik "); MODULE_DESCRIPTION("iptables IP set target module"); -static int __init init(void) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21) +#define ipt_register_target xt_register_target +#define ipt_unregister_target xt_unregister_target +#endif + +static int __init ipt_SET_init(void) { return ipt_register_target(&SET_target); } -static void __exit fini(void) +static void __exit ipt_SET_fini(void) { ipt_unregister_target(&SET_target); } -module_init(init); -module_exit(fini); +module_init(ipt_SET_init); +module_exit(ipt_SET_fini);