PATCHES AGAIN...

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

 



Hi list!

I have a "few" patches against the following setup:

Kernel: 2.6.24.4
iptables: 7424 svn
ipset: 7424 svn
patch-o-matic-ng: 7424 svn
chaostables: 66 svn
gcc: 4.3.1 20080309

"Changelog:"
patch-o-matic: recognise the latest iptables svn
iptables: remove the compiling warnings ( { .name = NULL } )
pom-patches: repair incompatible type warnings
etc. .... :-D

WorksForMe TM :D

To Jan Engelhardt:

I have seen a v0.8 version of your chaostables, but it is not included in the svn.
Would you update the repository?

Swifty

--- ../iptables/ip6tables.c.orig	2008-03-10 13:08:02.000000000 +0100
+++ ../iptables/ip6tables.c	2008-03-10 14:09:13.000000000 +0100
@@ -100,36 +100,36 @@
 = { 'n', 's', 'd', 'p', 'j', 'v', 'x', 'i', 'o', '0', 'c'};
 
 static struct option original_opts[] = {
-	{ "append", 1, 0, 'A' },
-	{ "delete", 1, 0,  'D' },
-	{ "insert", 1, 0,  'I' },
-	{ "replace", 1, 0,  'R' },
-	{ "list", 2, 0,  'L' },
-	{ "flush", 2, 0,  'F' },
-	{ "zero", 2, 0,  'Z' },
-	{ "new-chain", 1, 0,  'N' },
-	{ "delete-chain", 2, 0,  'X' },
-	{ "rename-chain", 1, 0,  'E' },
-	{ "policy", 1, 0,  'P' },
-	{ "source", 1, 0, 's' },
-	{ "destination", 1, 0,  'd' },
-	{ "src", 1, 0,  's' }, /* synonym */
-	{ "dst", 1, 0,  'd' }, /* synonym */
-	{ "protocol", 1, 0,  'p' },
-	{ "in-interface", 1, 0, 'i' },
-	{ "jump", 1, 0, 'j' },
-	{ "table", 1, 0, 't' },
-	{ "match", 1, 0, 'm' },
-	{ "numeric", 0, 0, 'n' },
-	{ "out-interface", 1, 0, 'o' },
-	{ "verbose", 0, 0, 'v' },
-	{ "exact", 0, 0, 'x' },
-	{ "version", 0, 0, 'V' },
-	{ "help", 2, 0, 'h' },
-	{ "line-numbers", 0, 0, '0' },
-	{ "modprobe", 1, 0, 'M' },
-	{ "set-counters", 1, 0, 'c' },
-	{ 0 }
+	{ .name = "append", .has_arg = 1, .flag = 0, .val = 'A' },
+	{ .name = "delete", .has_arg = 1, .flag = 0, .val = 'D' },
+	{ .name = "insert", .has_arg = 1, .flag = 0, .val = 'I' },
+	{ .name = "replace", .has_arg = 1, .flag = 0, .val = 'R' },
+	{ .name = "list", .has_arg = 2, .flag = 0, .val = 'L' },
+	{ .name = "flush", .has_arg = 2, .flag = 0, .val = 'F' },
+	{ .name = "zero", .has_arg = 2, .flag = 0, .val = 'Z' },
+	{ .name = "new-chain", .has_arg = 1, .flag = 0, .val = 'N' },
+	{ .name = "delete-chain", .has_arg = 2, .flag = 0, .val = 'X' },
+	{ .name = "rename-chain", .has_arg = 1, .flag = 0, .val = 'E' },
+	{ .name = "policy", .has_arg = 1, .flag = 0, .val = 'P' },
+	{ .name = "source", .has_arg = 1, .flag = 0, .val = 's' },
+	{ .name = "destination", .has_arg = 1, .flag = 0, .val = 'd' },
+	{ .name = "src", .has_arg = 1, .flag = 0, .val = 's' }, /* synonym */
+	{ .name = "dst", .has_arg = 1, .flag = 0, .val = 'd' }, /* synonym */
+	{ .name = "protocol", .has_arg = 1, .flag = 0, .val = 'p' },
+	{ .name = "in-interface", .has_arg = 1, .flag = 0, .val = 'i' },
+	{ .name = "jump", .has_arg = 1, .flag = 0, .val = 'j' },
+	{ .name = "table", .has_arg = 1, .flag = 0, .val = 't' },
+	{ .name = "match", .has_arg = 1, .flag = 0, .val = 'm' },
+	{ .name = "numeric", .has_arg = 0, .flag = 0, .val = 'n' },
+	{ .name = "out-interface", .has_arg = 1, .flag = 0, .val = 'o' },
+	{ .name = "verbose", .has_arg = 0, .flag = 0, .val = 'v' },
+	{ .name = "exact", .has_arg = 0, .flag = 0, .val = 'x' },
+	{ .name = "version", .has_arg = 0, .flag = 0, .val = 'V' },
+	{ .name = "help", .has_arg = 2, .flag = 0, .val = 'h' },
+	{ .name = "line-numbers", .has_arg = 0, .flag = 0, .val = '0' },
+	{ .name = "modprobe", .has_arg = 1, .flag = 0, .val = 'M' },
+	{ .name = "set-counters", .has_arg = 1, .flag = 0, .val = 'c' },
+	{ .name = NULL }
 };
 
 /* we need this for ip6tables-restore. ip6tables-restore.c sets line to the
@@ -576,7 +576,7 @@
 
 	if (invert) {
 		unsigned int i;
-		for (i = 0; 1 << i != option; i++);
+		for (i = 0; (unsigned int)(1 << i) != option; i++);
 
 		if (!inverse_for_options[i])
 			exit_error(PARAMETER_PROBLEM,

--- ../iptables/ip6tables-restore.c.orig	2008-03-10 14:20:19.000000000 +0100
+++ ../iptables/ip6tables-restore.c	2008-03-10 14:25:44.000000000 +0100
@@ -29,14 +29,14 @@
 
 /* Keeping track of external matches and targets.  */
 static struct option options[] = {
-	{ "binary", 0, 0, 'b' },
-	{ "counters", 0, 0, 'c' },
-	{ "verbose", 0, 0, 'v' },
-	{ "test", 0, 0, 't' },
-	{ "help", 0, 0, 'h' },
-	{ "noflush", 0, 0, 'n'},
-	{ "modprobe", 1, 0, 'M'},
-	{ 0 }
+	{ .name = "binary", .has_arg = 0, .flag = 0, .val = 'b' },
+	{ .name = "counters", .has_arg = 0, .flag = 0, .val = 'c' },
+	{ .name = "verbose", .has_arg = 0, .flag = 0, .val = 'v' },
+	{ .name = "test", .has_arg = 0, .flag = 0, .val = 't' },
+	{ .name = "help", .has_arg = 0, .flag = 0, .val = 'h' },
+	{ .name = "noflush", .has_arg = 0, .flag = 0, .val = 'n'},
+	{ .name = "modprobe", .has_arg = 1, .flag = 0, .val = 'M'},
+	{ .name = NULL }
 };
 
 static void print_usage(const char *name, const char *version) __attribute__((noreturn));
@@ -96,7 +96,7 @@
  * returns true if argument added, false otherwise */
 static int add_argv(char *what) {
 	DEBUGP("add_argv: %s\n", what);
-	if (what && ((newargc + 1) < sizeof(newargv)/sizeof(char *))) {
+	if (what && (((unsigned int)(newargc + 1)) < sizeof(newargv)/sizeof(char *))) {
 		newargv[newargc] = strdup(what);
 		newargc++;
 		return 1;

--- ../iptables/ip6tables-save.c.orig	2008-03-10 14:10:27.000000000 +0100
+++ ../iptables/ip6tables-save.c	2008-03-10 14:14:11.000000000 +0100
@@ -24,11 +24,11 @@
 static int binary = 0, counters = 0;
 
 static struct option options[] = {
-	{ "binary", 0, 0, 'b' },
-	{ "counters", 0, 0, 'c' },
-	{ "dump", 0, 0, 'd' },
-	{ "table", 1, 0, 't' },
-	{ 0 }
+	{ .name = "binary", .has_arg = 0, .flag = 0, .val = 'b' },
+	{ .name = "counters", .has_arg = 0, .flag = 0, .val = 'c' },
+	{ .name = "dump", .has_arg = 0, .flag = 0, .val = 'd' },
+	{ .name = "table", .has_arg = 1, .flag = 0, .val = 't' },
+	{ .name = NULL }
 };
 
 

--- ../patch-o-matic-ng/patchlets/connlimit/linux-2.6/net/ipv4/netfilter/ipt_connlimit.c.orig	2007-07-11 23:44:10.000000000 +0200
+++ ../patch-o-matic-ng/patchlets/connlimit/linux-2.6/net/ipv4/netfilter/ipt_connlimit.c	2008-03-15 21:03:35.000000000 +0100
@@ -95,8 +95,12 @@
 #else
 		struct nf_conn *found_ct = NULL;
 		conn = list_entry(lh, struct ipt_connlimit_conn, list);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
+		found = nf_conntrack_find_get(&conn->tuple);
+#else
 		found = nf_conntrack_find_get(&conn->tuple, ct);
 #endif
+#endif
 
 		 if (found != NULL 
 #ifndef CONFIG_NF_CONNTRACK_SUPPORT
@@ -178,19 +182,15 @@
 	return matches;
 }
 
-static int
+static bool
 match(const struct sk_buff *skb,
       const struct net_device *in,
       const struct net_device *out,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
       const struct xt_match *match,
-#endif
       const void *matchinfo,
       int offset,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
       unsigned int protoff,
-#endif
-      int *hotdrop)
+      bool *hotdrop)
 {
 	const struct ipt_connlimit_info *info = matchinfo;
 	int connections, rv;
@@ -232,34 +232,16 @@
 	return rv;
 }
 
-static int checkentry(const char *tablename,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+static bool checkentry(const char *tablename,
 		 const void *ip_void,
-#else
-		 const struct ipt_ip *ip,
-#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
 		 const struct xt_match *match,
-#endif
 		 void *matchinfo,
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-		 unsigned int matchsize,
-#endif
 		 unsigned int hook_mask)
 {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
 	const struct ipt_ip *ip = ip_void;
-#endif
 
 	struct ipt_connlimit_info *info = matchinfo;
 	int i;
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-	/* verify size */
-	if (matchsize != IPT_ALIGN(sizeof(struct ipt_connlimit_info)))
-		return 0;
-#endif
-
 	/* refuse anything but tcp */
 	if (ip->proto != IPPROTO_TCP)
 		return 0;
@@ -274,14 +256,8 @@
 }
 
 static void destroy(
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
 		    const struct xt_match *match,
-#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-		    void *matchinfo, unsigned int matchsize)
-#else
 		    void *matchinfo)
-#endif
 {
 	struct ipt_connlimit_info *info = matchinfo;
 	struct ipt_connlimit_conn *conn;
@@ -300,19 +276,11 @@
 	kfree(info->data);
 }
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 static struct xt_match connlimit_match = {
-#else
-static struct ipt_match connlimit_match = { 
-#endif
 	.name		= "connlimit",
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	.family		= AF_INET,
-#endif
 	.match		= &match,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
 	.matchsize	= sizeof(struct ipt_connlimit_info),
-#endif
 	.checkentry	= &checkentry,
 	.destroy	= &destroy,
 	.me		= THIS_MODULE
@@ -320,20 +288,12 @@
 
 static int __init init(void)
 {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	return xt_register_match(&connlimit_match);
-#else
-	return ipt_register_match(&connlimit_match);
-#endif
 }
 
 static void __exit fini(void)
 {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	xt_unregister_match(&connlimit_match);
-#else
-	ipt_unregister_match(&connlimit_match);
-#endif
 }
 
 module_init(init);

--- ../patch-o-matic-ng/patchlets/ipp2p/linux-2.6/net/ipv4/netfilter/ipt_ipp2p.c.orig	2007-07-11 23:45:12.000000000 +0200
+++ ../patch-o-matic-ng/patchlets/ipp2p/linux-2.6/net/ipv4/netfilter/ipt_ipp2p.c	2008-03-15 20:34:21.000000000 +0100
@@ -2,7 +2,6 @@
 #include <linux/modversions.h>
 #endif
 #include <linux/module.h>
-#include <linux/version.h>
 #include <linux/netfilter_ipv4/ip_tables.h>
 #include <linux/netfilter_ipv4/ipt_ipp2p.h>
 #include <net/tcp.h>
@@ -724,33 +723,19 @@
 };
 
 
-static int
+static bool
 match(const struct sk_buff *skb,
       const struct net_device *in,
       const struct net_device *out,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
       const struct xt_match *match,
-#endif
       const void *matchinfo,
       int offset,
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-      const void *hdr,
-      u_int16_t datalen,
-#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
       unsigned int protoff,
-#endif
-
-      int *hotdrop)
+      bool *hotdrop)
 {
     const struct ipt_p2p_info *info = matchinfo;
     unsigned char  *haystack;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
     struct iphdr *ip = ip_hdr(skb);
-#else
-    struct iphdr *ip = skb->nh.iph;
-#endif
     int p2p_result = 0, i = 0;
 //    int head_len;
     int hlen = ntohs(ip->tot_len)-(ip->ihl*4);	/*hlen = packet-data length*/
@@ -824,20 +809,11 @@
 
 
 
-static int
+static bool
 checkentry(const char *tablename,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
             const void *ip,
-#else
-            const struct ipt_ip *ip,
-#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
             const struct xt_match *match,
-#endif
 	    void *matchinfo,
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-	    unsigned int matchsize,
-#endif
 	    unsigned int hook_mask)
 {
         /* Must specify -p tcp */
@@ -850,51 +826,25 @@
 									    
 
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 static struct xt_match ipp2p_match = {
-#else
-static struct ipt_match ipp2p_match = { 
-#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-	{ NULL, NULL }, 
-	"ipp2p", 
-	&match, 
-	&checkentry, 
-	NULL, 
-	THIS_MODULE
-#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 	.name		= "ipp2p",
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	.family		= AF_INET,
-#endif
 	.match		= &match,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
 	.matchsize	= sizeof(struct ipt_p2p_info),
-#endif
 	.checkentry	= &checkentry,
 	.me		= THIS_MODULE,
-#endif
 };
 
 
 static int __init init(void)
 {
     printk(KERN_INFO "IPP2P v%s loading\n", IPP2P_VERSION);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
     return xt_register_match(&ipp2p_match);
-#else
-    return ipt_register_match(&ipp2p_match);
-#endif
 }
 	
 static void __exit fini(void)
 {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
     xt_unregister_match(&ipp2p_match);
-#else
-    ipt_unregister_match(&ipp2p_match);
-#endif
     printk(KERN_INFO "IPP2P v%s unloaded\n", IPP2P_VERSION);    
 }
 	

--- ../patch-o-matic-ng/patchlets/ipv4options/linux-2.6/net/ipv4/netfilter/ipt_ipv4options.c.orig	2007-05-02 15:32:00.000000000 +0200
+++ ../patch-o-matic-ng/patchlets/ipv4options/linux-2.6/net/ipv4/netfilter/ipt_ipv4options.c	2007-09-13 13:08:45.000000000 +0200
@@ -18,6 +18,8 @@
 #include <linux/netfilter_ipv4/ip_tables.h>
 #include <linux/netfilter_ipv4/ipt_ipv4options.h>
 
+#include <linux/version.h>
+
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Fabrice Marie <fabrice@xxxxxxxxxxxxx>");
 
@@ -32,7 +34,11 @@
       int *hotdrop)
 {
 	const struct ipt_ipv4options_info *info = matchinfo;   /* match info for rule */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+	const struct iphdr *iph = ip_hdr(skb);
+#else
 	const struct iphdr *iph = skb->nh.iph;
+#endif
 	const struct ip_options *opt;
 
 	if (iph->ihl * 4 == sizeof(struct iphdr)) {
@@ -110,13 +116,17 @@
 	   const void *ip,
 	   const struct xt_match *match,
 	   void *matchinfo,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
 	   unsigned int matchsize,
+#endif
 	   unsigned int hook_mask)
 {
 	const struct ipt_ipv4options_info *info = matchinfo;   /* match info for rule */
 	/* Check the size */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
 	if (matchsize != IPT_ALIGN(sizeof(struct ipt_ipv4options_info)))
 		return 0;
+#endif
 	/* Now check the coherence of the data ... */
 	if (((info->options & IPT_IPV4OPTION_MATCH_ANY_OPT) == IPT_IPV4OPTION_MATCH_ANY_OPT) &&
 	    (((info->options & IPT_IPV4OPTION_DONT_MATCH_SRR) == IPT_IPV4OPTION_DONT_MATCH_SRR) ||
@@ -154,8 +164,15 @@
 	return 1;
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+static struct xt_match ipv4options_match = { 
+#else
 static struct ipt_match ipv4options_match = { 
+#endif    
 	.name = "ipv4options",
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+	.family = AF_INET,
+#endif    
 	.match = match,
 	.matchsize = sizeof(struct ipt_ipv4options_info),
 	.checkentry = checkentry,
@@ -164,12 +181,20 @@
 
 static int __init init(void)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+	return xt_register_match(&ipv4options_match);
+#else
 	return ipt_register_match(&ipv4options_match);
+#endif    
 }
 
 static void __exit fini(void)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+	xt_unregister_match(&ipv4options_match);
+#else
 	ipt_unregister_match(&ipv4options_match);
+#endif    
 }
 
 module_init(init);

--- ../patch-o-matic-ng/patchlets/IPV4OPTSSTRIP/linux-2.6/net/ipv4/netfilter/ipt_IPV4OPTSSTRIP.c.orig	2007-05-02 15:32:00.000000000 +0200
+++ ../patch-o-matic-ng/patchlets/IPV4OPTSSTRIP/linux-2.6/net/ipv4/netfilter/ipt_IPV4OPTSSTRIP.c	2007-09-13 21:19:41.000000000 +0200
@@ -5,6 +5,7 @@
  * This software is distributed under GNU GPL v2, 1991
  */
 
+#include <linux/version.h>
 #include <linux/module.h>
 #include <linux/skbuff.h>
 #include <net/ip.h>
@@ -21,8 +22,15 @@
        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
 {
 	struct iphdr *iph;
 	struct sk_buff *skb;
@@ -30,12 +38,21 @@
 	unsigned char *optiph;
 	int l;
 	
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19)
+	if (!skb_make_writable(pskb, (*pskb)->len))
+#else
 	if (!skb_ip_make_writable(pskb, (*pskb)->len))
+#endif
 		return NF_DROP;
  
 	skb = (*pskb);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+	iph = ip_hdr(*pskb);
+	optiph = skb->network_header;
+#else
 	iph = (*pskb)->nh.iph;
 	optiph = skb->nh.raw;
+#endif
 	l = ((struct ip_options *)(&(IPCB(skb)->opt)))->optlen;
 
 	/* if no options in packet then nothing to clear. */
@@ -54,9 +71,18 @@
 
 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,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
            unsigned int targinfosize,
+#endif
            unsigned int hook_mask)
 {
 	if (strcmp(tablename, "mangle")) {
@@ -66,21 +92,35 @@
 	/* nothing else to check because no parameters */
 	return 1;
 }
-
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+static struct xt_target xt_ipv4optsstrip_reg = { 
+#else
 static struct ipt_target ipt_ipv4optsstrip_reg = { 
+#endif
 	.name = "IPV4OPTSSTRIP",
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+	.family = AF_INET,
+#endif
 	.target = target,
 	.checkentry = checkentry,
 	.me = THIS_MODULE };
 
 static int __init init(void)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+	return xt_register_target(&xt_ipv4optsstrip_reg);
+#else
 	return ipt_register_target(&ipt_ipv4optsstrip_reg);
+#endif
 }
 
 static void __exit fini(void)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+	xt_unregister_target(&xt_ipv4optsstrip_reg);
+#else
 	ipt_unregister_target(&ipt_ipv4optsstrip_reg);
+#endif
 }
 
 module_init(init);

--- ../patch-o-matic-ng/patchlets/ROUTE/linux-2.6/net/ipv4/netfilter/ipt_ROUTE.c.orig	2007-09-13 21:56:03.000000000 +0200
+++ ../patch-o-matic-ng/patchlets/ROUTE/linux-2.6/net/ipv4/netfilter/ipt_ROUTE.c	2008-03-26 12:37:44.000000000 +0100
@@ -15,16 +15,9 @@
 #include <linux/ip.h>
 #include <linux/netfilter_ipv4/ip_tables.h>
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
 #define CONFIG_NF_CONNTRACK_SUPPORT
-#endif
 
-#ifdef CONFIG_NF_CONNTRACK_SUPPORT
 #include <net/netfilter/nf_conntrack.h>
-#else
-#include <linux/netfilter_ipv4/ip_conntrack.h>
-#endif
-
 #include <linux/netfilter_ipv4/ipt_ROUTE.h>
 #include <linux/netdevice.h>
 #include <linux/route.h>
@@ -34,6 +27,7 @@
 #include <net/route.h>
 #include <net/icmp.h>
 #include <net/checksum.h>
+#include <net/net_namespace.h>
 
 #if 0
 #define DEBUGP printk
@@ -68,11 +62,7 @@
 {
 	int err;
 	struct rtable *rt;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
 	struct iphdr *iph = ip_hdr(skb);
-#else
-	struct iphdr *iph = skb->nh.iph;
-#endif
 	struct flowi fl = {
 		.oif = ifindex,
 		.nl_u = {
@@ -136,7 +126,7 @@
 	unsigned seq;
 
 	/* Be paranoid, rather than too clever. */
-	if (unlikely(skb_headroom(skb) < hh_len && dev->hard_header)) {
+	if (unlikely(skb_headroom(skb) < hh_len && (dev->header_ops && dev->header_ops->create))) {
 		struct sk_buff *skb2;
 
 		skb2 = skb_realloc_headroom(skb, LL_RESERVED_SPACE(dev));
@@ -190,7 +180,7 @@
 	/* The user set the interface name to use.
 	 * Getting the current interface index.
 	 */
-	if ((dev_out = dev_get_by_name(route_info->oif))) {
+	if ((dev_out = dev_get_by_name(&init_net , route_info->oif))) {
 		ifindex = dev_out->ifindex;
 	} else {
 		/* Unknown interface name : packet dropped */
@@ -256,7 +246,7 @@
 	struct net_device *dev_in = NULL;
 
 	/* Getting the current interface index. */
-	if (!(dev_in = dev_get_by_name(route_info->iif))) {
+	if (!(dev_in = dev_get_by_name(&init_net , route_info->iif))) {
 		if (net_ratelimit()) 
 			DEBUGP("ipt_ROUTE: iif interface %s not found\n", route_info->iif);
 		return NF_DROP;
@@ -292,28 +282,16 @@
  * routing packets when we see they already have that ->nfct.
  */
 
-#ifdef CONFIG_NF_CONNTRACK_SUPPORT
 static struct nf_conn route_tee_track;
-#else
-static struct ip_conntrack route_tee_track;
-#endif
 
-static unsigned int ipt_route_target(struct sk_buff **pskb,
+static unsigned int xt_route_target(struct sk_buff *skb,
 				     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_route_target_info *route_info = targinfo;
-	struct sk_buff *skb = *pskb;
 	unsigned int res;
 
 	if (skb->nfct == &route_tee_track.ct_general) {
@@ -331,11 +309,7 @@
 	if (hooknum == NF_IP_PRE_ROUTING ||
 	    hooknum == NF_IP_LOCAL_IN) {
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
 		struct iphdr *iph = ip_hdr(skb);
-#else
-		struct iphdr *iph = skb->nh.iph;
-#endif
 		if (iph->ttl <= 1) {
 			struct rtable *rt;
 			struct flowi fl = {
@@ -390,7 +364,7 @@
 		 * on its way as if nothing happened. The copy should be
 		 * independantly delivered to the ROUTE --gw.
 		 */
-		skb = skb_copy(*pskb, GFP_ATOMIC);
+		skb = skb_copy(skb, GFP_ATOMIC);
 		if (!skb) {
 			if (net_ratelimit()) 
 				DEBUGP(KERN_DEBUG "ipt_ROUTE: copy failed!\n");
@@ -431,19 +405,10 @@
 }
 
 
-static int ipt_route_checkentry(const char *tablename,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+static bool xt_route_checkentry(const char *tablename,
 				const void *e,
-#else
-				const struct ipt_ip *ip,
-#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
 				const struct xt_target *target,
-#endif
 				void *targinfo,
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-				unsigned int targinfosize,
-#endif
 				unsigned int hook_mask)
 {
 	if (strcmp(tablename, "mangle") != 0) {
@@ -461,32 +426,15 @@
 		return 0;
 	}
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-	if (targinfosize != IPT_ALIGN(sizeof(struct ipt_route_target_info))) {
-		printk(KERN_WARNING "ipt_ROUTE: targinfosize %u != %Zu\n",
-		       targinfosize,
-		       IPT_ALIGN(sizeof(struct ipt_route_target_info)));
-		return 0;
-	}
-#endif
-
 	return 1;
 }
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-static struct ipt_target xt_route_reg = { 
-#else
-static struct ipt_target ipt_route_reg = { 
-#endif
+static struct xt_target xt_route_reg = { 
 	.name = "ROUTE",
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	.family		= AF_INET,
-#endif
-	.target = ipt_route_target,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
+	.target = xt_route_target,
 	.targetsize = sizeof(struct ipt_route_target_info),
-#endif
-	.checkentry = ipt_route_checkentry,
+	.checkentry = xt_route_checkentry,
 	.me = THIS_MODULE,
 };
 
@@ -500,21 +448,13 @@
 	/* Initialize fake conntrack so that NAT will skip it */
 	route_tee_track.status |= IPS_NAT_DONE_MASK;
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	return xt_register_target(&xt_route_reg);
-#else
-	return ipt_register_target(&ipt_route_reg);
-#endif
 }
 
 
 static void __exit fini(void)
 {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	xt_unregister_target(&xt_route_reg);
-#else
-	ipt_unregister_target(&ipt_route_reg);
-#endif
 }
 
 module_init(init);

--- ../patch-o-matic-ng/patchlets/TARPIT/linux-2.6/net/ipv4/netfilter/ipt_TARPIT.c.orig	2008-03-13 21:43:06.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/TARPIT/linux-2.6/net/ipv4/netfilter/ipt_TARPIT.c	2008-03-26 13:00:28.000000000 +0100
@@ -42,7 +42,6 @@
 #include <net/ip.h>
 #include <net/tcp.h>
 #include <net/icmp.h>
-struct in_device;
 #include <net/route.h>
 #include <linux/random.h>
 #include <linux/netfilter_ipv4/ip_tables.h>
@@ -83,13 +84,15 @@
 	unsigned int otcplen;
 	u_int16_t tmp;
 
+	struct iphdr *oiph = ip_hdr(oskb);
+
 	/* A truncated TCP header isn't going to be useful */
-	if (oskb->len < (oskb->nh.iph->ihl*4) + sizeof(struct tcphdr))
+	if (oskb->len < (oiph->ihl*4) + sizeof(struct tcphdr))
 		return;
-
-	otcph = (struct tcphdr *)((u_int32_t*)oskb->nh.iph
-				  + oskb->nh.iph->ihl);
-	otcplen = oskb->len - oskb->nh.iph->ihl*4;
+		
+	otcph = (struct tcphdr *)((u_int32_t*)oiph
+				  + oiph->ihl);
+	otcplen = oskb->len - oiph->ihl*4;
 
 	/* No replies for RST or FIN */
 	if (otcph->rst || otcph->fin)
@@ -100,8 +103,8 @@
 		return;
 
 	/* Check checksum. */
-	if (tcp_v4_check(otcplen, oskb->nh.iph->saddr,
-			 oskb->nh.iph->daddr,
+	if (tcp_v4_check(otcplen, oiph->saddr,
+			 oiph->daddr,
 			 csum_partial((char *)otcph, otcplen, 0)) != 0)
 		return;
 
@@ -119,25 +122,21 @@
 	nskb->nf_debug = 0;
 #endif
 
-	ntcph = (struct tcphdr *)((u_int32_t*)nskb->nh.iph + nskb->nh.iph->ihl);
+	ntcph = (struct tcphdr *)((u_int32_t*)oiph + oiph->ihl);
 
 	/* Truncate to length (no data) */
 	ntcph->doff = sizeof(struct tcphdr)/4;
-	skb_trim(nskb, nskb->nh.iph->ihl*4 + sizeof(struct tcphdr));
-	nskb->nh.iph->tot_len = htons(nskb->len);
+	skb_trim(nskb, oiph->ihl*4 + sizeof(struct tcphdr));
+	oiph->tot_len = htons(nskb->len);
 
 	/* Swap source and dest */
-	nskb->nh.iph->daddr = xchg(&nskb->nh.iph->saddr, nskb->nh.iph->daddr);
+	oiph->daddr = xchg(&oiph->saddr, oiph->daddr);
 	tmp = ntcph->source;
 	ntcph->source = ntcph->dest;
 	ntcph->dest = tmp;
 
 	/* Use supplied sequence number or make a new one */
-	ntcph->seq = otcph->ack ? otcph->ack_seq
-		: htonl(secure_tcp_sequence_number(nskb->nh.iph->saddr,
-						   nskb->nh.iph->daddr,
-						   ntcph->source,
-						   ntcph->dest));
+	otcph->ack ? ntcph->seq = otcph->ack_seq : get_random_bytes(&ntcph->seq ,sizeof(ntcph->seq));
 
 	/* Our SYN-ACKs must have a >0 window */
 	ntcph->window = (otcph->syn && !otcph->ack) ? htons(5) : 0;
@@ -159,14 +158,14 @@
 	/* Adjust TCP checksum */
 	ntcph->check = 0;
 	ntcph->check = tcp_v4_check(sizeof(struct tcphdr),
-				   nskb->nh.iph->saddr,
-				   nskb->nh.iph->daddr,
+				   oiph->saddr,
+				   oiph->daddr,
 				   csum_partial((char *)ntcph,
 						sizeof(struct tcphdr), 0));
 
-	fl.nl_u.ip4_u.daddr = nskb->nh.iph->daddr;
-	fl.nl_u.ip4_u.saddr = local ? nskb->nh.iph->saddr : 0;
-	fl.nl_u.ip4_u.tos = RT_TOS(nskb->nh.iph->tos) | RTO_CONN;
+	fl.nl_u.ip4_u.daddr = oiph->daddr;
+	fl.nl_u.ip4_u.saddr = local ? oiph->saddr : 0;
+	fl.nl_u.ip4_u.tos = RT_TOS(oiph->tos) | RTO_CONN;
 	fl.oif = 0;
 
 	if (ip_route_output_key(&nrt, &fl))
@@ -176,23 +175,18 @@
 	nskb->dst = &nrt->u.dst;
 
 	/* Adjust IP TTL */
-	nskb->nh.iph->ttl = dst_metric(nskb->dst, RTAX_HOPLIMIT);
+	oiph->ttl = dst_metric(nskb->dst, RTAX_HOPLIMIT);
 
 	/* Set DF, id = 0 */
-	nskb->nh.iph->frag_off = htons(IP_DF);
-	nskb->nh.iph->id = 0;
+	oiph->frag_off = htons(IP_DF);
+	oiph->id = 0;
 
 	/* Adjust IP checksum */
-	nskb->nh.iph->check = 0;
-	nskb->nh.iph->check = ip_fast_csum((unsigned char *)nskb->nh.iph,
-					   nskb->nh.iph->ihl);
-
+	oiph->check = 0;
+	oiph->check = ip_fast_csum((unsigned char *)oiph,
+					   oiph->ihl);
 	/* "Never happens" */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
 	if (nskb->len > dst_mtu(nskb->dst))
-#else
-	if (nskb->len > dst_pmtu(nskb->dst))
-#endif
 		goto free_nskb;
 
 	ip_direct_send (nskb);
@@ -204,15 +198,15 @@
 }
 
 
-static unsigned int tarpit(struct sk_buff **pskb,
+static unsigned int tarpit(struct sk_buff *skb,
 			   const struct net_device *in,
 			   const struct net_device *out,
 			   unsigned int hooknum,
 			   const struct xt_target *target,
 			   const void *targinfo)
 {
-	struct sk_buff *skb = *pskb;
 	struct rtable *rt = (struct rtable*)skb->dst;
+	struct iphdr *iph = ip_hdr(skb);
 
 	/* Do we have an input route cache entry? */
 	if (!rt)
@@ -228,11 +222,11 @@
 
 	/* Our naive response construction doesn't deal with IP
            options, and probably shouldn't try. */
-	if (skb->nh.iph->ihl*4 != sizeof(struct iphdr))
+	if (iph->ihl*4 != sizeof(struct iphdr))
 		return NF_DROP;
 
 	/* We aren't interested in fragments */
-	if (skb->nh.iph->frag_off & htons(IP_OFFSET))
+	if (iph->frag_off & htons(IP_OFFSET))
 		return NF_DROP;
 
 	tarpit_tcp(skb,rt,hooknum == NF_IP_LOCAL_IN);
@@ -241,7 +235,7 @@
 }
 
 
-static int check(const char *tablename,
+static bool check(const char *tablename,
 		 const void *e_void,
 		 const struct xt_target *target,
 		 void *targinfo,

--- ../patch-o-matic-ng/patchlets/time/linux-2.6/net/ipv4/netfilter/ipt_time.c.orig	2007-07-11 23:34:46.000000000 +0200
+++ ../patch-o-matic-ng/patchlets/time/linux-2.6/net/ipv4/netfilter/ipt_time.c	2008-03-15 20:55:56.000000000 +0100
@@ -15,7 +15,6 @@
 
 #include <linux/module.h>
 #include <linux/skbuff.h>
-#include <linux/version.h>
 #include <linux/netfilter_ipv4/ip_tables.h>
 #include <linux/netfilter_ipv4/ipt_time.h>
 #include <linux/time.h>
@@ -43,51 +42,33 @@
 void
 localtime(const u32 time, struct tm *r);
 
-static int
+static bool
 match(const struct sk_buff *skb,
       const struct net_device *in,
       const struct net_device *out,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
       const struct xt_match *match,
-#endif
       const void *matchinfo,
       int offset,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
       unsigned int protoff,
-#endif
-      int *hotdrop)
+      bool *hotdrop)
 {
 	const struct ipt_time_info *info = matchinfo;   /* match info for rule */
 	struct tm currenttime;                          /* time human readable */
 	u_int8_t days_of_week[7] = {64, 32, 16, 8, 4, 2, 1};
 	u_int16_t packet_time;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
 	struct timeval tv;
-#endif
 
 	/* We might not have a timestamp, get one */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
 	if (skb->tstamp.tv64 == 0)
-#else
-	if (skb->tstamp.off_sec == 0)
-#endif
 		__net_timestamp((struct sk_buff *)skb);
 
 	/* First we make sure we are in the date start-stop boundaries */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
 	tv = ktime_to_timeval(skb->tstamp);
 	if ((tv.tv_sec < info->date_start) || (tv.tv_sec > info->date_stop))
-#else
-	if ((skb->tstamp.off_sec < info->date_start) || (skb->tstamp.off_sec > info->date_stop))
-#endif
 		return 0; /* We are outside the date boundaries */
 
 	/* Transform the timestamp of the packet, in a human readable form */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
 	localtime(tv.tv_sec, &currenttime);
-#else
-	localtime(skb->tstamp.off_sec, &currenttime);
-#endif
 
 
 	/* check if we match this timestamp, we start by the days... */
@@ -108,29 +89,15 @@
 	return 1;
 }
 
-static int
+static bool
 checkentry(const char *tablename,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
            const void *ip,
-#else
-           const struct ipt_ip *ip,
-#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
             const struct xt_match *match,
-#endif
            void *matchinfo,
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-           unsigned int matchsize,
-#endif
            unsigned int hook_mask)
 {
 	struct ipt_time_info *info = matchinfo;   /* match info for rule */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-	/* Check the size */
-	if (matchsize != IPT_ALIGN(sizeof(struct ipt_time_info)))
-		return 0;
-#endif
 
 	/* Now check the coherence of the data ... */
 	if ((info->time_start > 1439) ||        /* 23*60+59 = 1439*/
@@ -143,19 +110,11 @@
 	return 1;
 }
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 static struct xt_match time_match = {
-#else
-static struct ipt_match time_match = {
-#endif
 	.name		= "time",
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	.family		= AF_INET,
-#endif
 	.match		= &match,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
 	.matchsize      = sizeof(struct ipt_time_info),
-#endif
 	.checkentry	= &checkentry,
 	.me = THIS_MODULE
 };
@@ -163,20 +122,12 @@
 static int __init init(void)
 {
 	printk("ipt_time loading\n");
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	return xt_register_match(&time_match);
-#else
-	return ipt_register_match(&time_match);
-#endif
 }
 
 static void __exit fini(void)
 {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
 	xt_unregister_match(&time_match);
-#else
-	ipt_unregister_match(&time_match);
-#endif
 	printk("ipt_time unloaded\n");
 }
 

--- ../patch-o-matic-ng/patchlets/u32/linux-2.6/net/ipv4/netfilter/ipt_u32.c.orig	2008-03-13 21:43:06.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/u32/linux-2.6/net/ipv4/netfilter/ipt_u32.c	2008-03-15 19:51:02.000000000 +0100
@@ -116,7 +116,7 @@
 static char u32_buffer[65536];
 static DEFINE_SPINLOCK(u32_lock);
 
-static int
+static bool
 match(const struct sk_buff *skb,
       const struct net_device *in,
       const struct net_device *out,
@@ -124,7 +124,7 @@
       const void *matchinfo,
       int offset,
       unsigned int protoff,
-      int *hotdrop)
+      bool *hotdrop)
 {
 	const struct ipt_u32 *data = matchinfo;
 	int testind, i;
@@ -201,16 +201,13 @@
 	return 1;
 }
 
-static int
+static bool
 checkentry(const char *tablename,
            const void *ip,
            const struct xt_match *match,
            void *matchinfo,
-           unsigned int matchsize,
            unsigned int hook_mask)
 {
-	if (matchsize != IPT_ALIGN(sizeof(struct ipt_u32)))
-		return 0;
 	return 1;
 }
 

--- ../iptables/iptables.c.orig	2008-03-10 14:10:27.000000000 +0100
+++ ../iptables/iptables.c	2008-03-10 14:15:52.000000000 +0100
@@ -99,38 +99,38 @@
 = { 'n', 's', 'd', 'p', 'j', 'v', 'x', 'i', 'o', 'f', '0', 'c'};
 
 static struct option original_opts[] = {
-	{ "append", 1, NULL, 'A' },
-	{ "delete", 1, NULL,  'D' },
-	{ "insert", 1, NULL,  'I' },
-	{ "replace", 1, NULL,  'R' },
-	{ "list", 2, NULL,  'L' },
-	{ "flush", 2, NULL,  'F' },
-	{ "zero", 2, NULL,  'Z' },
-	{ "new-chain", 1, NULL,  'N' },
-	{ "delete-chain", 2, NULL,  'X' },
-	{ "rename-chain", 1, NULL,  'E' },
-	{ "policy", 1, NULL,  'P' },
-	{ "source", 1, NULL, 's' },
-	{ "destination", 1, NULL,  'd' },
-	{ "src", 1, NULL,  's' }, /* synonym */
-	{ "dst", 1, NULL,  'd' }, /* synonym */
-	{ "protocol", 1, NULL,  'p' },
-	{ "in-interface", 1, NULL, 'i' },
-	{ "jump", 1, NULL, 'j' },
-	{ "table", 1, NULL, 't' },
-	{ "match", 1, NULL, 'm' },
-	{ "numeric", 0, NULL, 'n' },
-	{ "out-interface", 1, NULL, 'o' },
-	{ "verbose", 0, NULL, 'v' },
-	{ "exact", 0, NULL, 'x' },
-	{ "fragments", 0, NULL, 'f' },
-	{ "version", 0, NULL, 'V' },
-	{ "help", 2, NULL, 'h' },
-	{ "line-numbers", 0, NULL, '0' },
-	{ "modprobe", 1, NULL, 'M' },
-	{ "set-counters", 1, NULL, 'c' },
-	{ "goto", 1, NULL, 'g' },
-	{ }
+	{ .name = "append", .has_arg = 1, .flag = NULL, .val = 'A' },
+	{ .name = "delete", .has_arg = 1, .flag = NULL, .val = 'D' },
+	{ .name = "insert", .has_arg = 1, .flag = NULL, .val = 'I' },
+	{ .name = "replace", .has_arg = 1, .flag = NULL, .val = 'R' },
+	{ .name = "list", .has_arg = 2, .flag = NULL, .val = 'L' },
+	{ .name = "flush", .has_arg = 2, .flag = NULL, .val = 'F' },
+	{ .name = "zero", .has_arg = 2, .flag = NULL, .val = 'Z' },
+	{ .name = "new-chain", .has_arg = 1, .flag = NULL, .val = 'N' },
+	{ .name = "delete-chain", .has_arg = 2, .flag = NULL, .val = 'X' },
+	{ .name = "rename-chain", .has_arg = 1, .flag = NULL, .val = 'E' },
+	{ .name = "policy", .has_arg = 1, .flag = NULL, .val = 'P' },
+	{ .name = "source", .has_arg = 1, .flag = NULL, .val = 's' },
+	{ .name = "destination", .has_arg = 1, .flag = NULL, .val = 'd' },
+	{ .name = "src", .has_arg = 1, .flag = NULL, .val = 's' }, /* synonym */
+	{ .name = "dst", .has_arg = 1, .flag = NULL, .val = 'd' }, /* synonym */
+	{ .name = "protocol", .has_arg = 1, .flag = NULL, .val = 'p' },
+	{ .name = "in-interface", .has_arg = 1, .flag = NULL, .val = 'i' },
+	{ .name = "jump", .has_arg = 1, .flag = NULL, .val = 'j' },
+	{ .name = "table", .has_arg = 1, .flag = NULL, .val = 't' },
+	{ .name = "match", .has_arg = 1, .flag = NULL, .val = 'm' },
+	{ .name = "numeric", .has_arg = 0, .flag = NULL, .val = 'n' },
+	{ .name = "out-interface", .has_arg = 1, .flag = NULL, .val = 'o' },
+	{ .name = "verbose", .has_arg = 0, .flag = NULL, .val = 'v' },
+	{ .name = "exact", .has_arg = 0, .flag = NULL, .val = 'x' },
+	{ .name = "fragments", .has_arg = 0, .flag = NULL, .val = 'f' },
+	{ .name = "version", .has_arg = 0, .flag = NULL, .val = 'V' },
+	{ .name = "help", .has_arg = 2, .flag = NULL, .val = 'h' },
+	{ .name = "line-numbers", .has_arg = 0, .flag = NULL, .val = '0' },
+	{ .name = "modprobe", .has_arg = 1, .flag = NULL, .val = 'M' },
+	{ .name = "set-counters", .has_arg = 1, .flag = NULL, .val = 'c' },
+	{ .name = "goto", .has_arg = 1, .flag = NULL, .val = 'g' },
+	{ .name = NULL }
 };
 
 /* we need this for iptables-restore.  iptables-restore.c sets line to the
@@ -574,7 +574,7 @@
 
 	if (invert) {
 		unsigned int i;
-		for (i = 0; 1 << i != option; i++);
+		for (i = 0; (unsigned int)(1 << i) != option; i++);
 
 		if (!inverse_for_options[i])
 			exit_error(PARAMETER_PROBLEM,

--- ../iptables/iptables-restore.c.orig	2008-03-10 13:08:02.000000000 +0100
+++ ../iptables/iptables-restore.c	2008-03-10 14:04:49.000000000 +0100
@@ -26,15 +26,15 @@
 
 /* Keeping track of external matches and targets.  */
 static struct option options[] = {
-	{ "binary", 0, 0, 'b' },
-	{ "counters", 0, 0, 'c' },
-	{ "verbose", 0, 0, 'v' },
-	{ "test", 0, 0, 't' },
-	{ "help", 0, 0, 'h' },
-	{ "noflush", 0, 0, 'n'},
-	{ "modprobe", 1, 0, 'M'},
-	{ "table", 1, 0, 'T'},
-	{ 0 }
+	{ .name = "binary", .has_arg = 0, .flag = 0, .val = 'b' },
+	{ .name = "counters", .has_arg = 0, .flag = 0, .val = 'c' },
+	{ .name = "verbose", .has_arg = 0, .flag = 0, .val = 'v' },
+	{ .name = "test", .has_arg = 0, .flag = 0, .val = 't' },
+	{ .name = "help", .has_arg = 0, .flag = 0, .val = 'h' },
+	{ .name = "noflush", .has_arg = 0, .flag = 0, .val = 'n'},
+	{ .name = "modprobe", .has_arg = 1, .flag = 0, .val = 'M'},
+	{ .name = "table", .has_arg = 1, .flag = 0, .val = 'T'},
+	{ .name = NULL }
 };
 
 static void print_usage(const char *name, const char *version) __attribute__((noreturn));
@@ -95,7 +95,7 @@
  * returns true if argument added, false otherwise */
 static int add_argv(char *what) {
 	DEBUGP("add_argv: %s\n", what);
-	if (what && ((newargc + 1) < sizeof(newargv)/sizeof(char *))) {
+	if (what && (((unsigned int)(newargc + 1)) < sizeof(newargv)/sizeof(char *))) {
 		newargv[newargc] = strdup(what);
 		newargc++;
 		return 1;

--- ../iptables/iptables-save.c.orig	2008-03-10 12:38:18.000000000 +0100
+++ ../iptables/iptables-save.c	2008-03-10 12:54:55.000000000 +0100
@@ -23,11 +23,11 @@
 static int binary = 0, counters = 0;
 
 static struct option options[] = {
-	{ "binary", 0, 0, 'b' },
-	{ "counters", 0, 0, 'c' },
-	{ "dump", 0, 0, 'd' },
-	{ "table", 1, 0, 't' },
-	{ 0 }
+	{ .name = "binary", .has_arg = 0, .flag = 0, .val = 'b' },
+	{ .name = "counters", .has_arg = 0, .flag = 0, .val = 'c' },
+	{ .name = "dump", .has_arg = 0, .flag = 0, .val = 'd' },
+	{ .name = "table", .has_arg = 1, .flag = 0, .val = 't' },
+	{ .name = NULL }
 };
 
 #define IP_PARTS_NATIVE(n)			\

--- ../patch-o-matic-ng/patchlets/ROUTE/iptables/extensions/libip6t_ROUTE.c.orig	2006-12-12 11:34:45.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/ROUTE/iptables/extensions/libip6t_ROUTE.c	2008-03-14 08:48:04.000000000 +0100
@@ -38,17 +38,17 @@
 }
 
 static struct option opts[] = {
-	{ "oif", 1, 0, '1' },
-	{ "iif", 1, 0, '2' },
-	{ "gw", 1, 0, '3' },
-	{ "continue", 0, 0, '4' },
-	{ "tee", 0, 0, '5' },
-	{ 0 }
+	{ .name = "oif", .has_arg = 1, .flag = 0, .val = '1' },
+	{ .name = "iif", .has_arg = 1, .flag = 0, .val = '2' },
+	{ .name = "gw", .has_arg = 1, .flag = 0, .val = '3' },
+	{ .name = "continue", .has_arg = 0, .flag = 0, .val = '4' },
+	{ .name = "tee", .has_arg = 0, .flag = 0, .val = '5' },
+	{ .name = NULL }
 };
 
 /* Initialize the target. */
 static void
-init(struct ip6t_entry_target *t, unsigned int *nfcache)
+init(struct xt_entry_target *t)
 {
 	struct ip6t_route_target_info *route_info = 
 		(struct ip6t_route_target_info*)t->data;
@@ -73,8 +73,8 @@
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ip6t_entry *entry,
-      struct ip6t_entry_target **target)
+      const void *entry,
+      struct xt_entry_target **target)
 {
 	struct ip6t_route_target_info *route_info = 
 		(struct ip6t_route_target_info*)(*target)->data;
@@ -166,8 +166,8 @@
 
 /* Prints out the targinfo. */
 static void
-print(const struct ip6t_ip6 *ip,
-      const struct ip6t_entry_target *target,
+print(const void *ip,
+      const struct xt_entry_target *target,
       int numeric)
 {
 	const struct ip6t_route_target_info *route_info
@@ -195,8 +195,8 @@
 }
 
 
-static void save(const struct ip6t_ip6 *ip, 
-		 const struct ip6t_entry_target *target)
+static void save(const void *ip, 
+		 const struct xt_entry_target *target)
 {
 	const struct ip6t_route_target_info *route_info
 		= (const struct ip6t_route_target_info *)target->data;
@@ -220,7 +220,7 @@
 }
 
 
-static struct ip6tables_target route = { 
+static struct xtables_target route = { 
 	.name 		= "ROUTE",
 	.version	= IPTABLES_VERSION,
 	.size		= IP6T_ALIGN(sizeof(struct ip6t_route_target_info)),

--- ../patch-o-matic-ng/patchlets/ACCOUNT/iptables/extensions/libipt_ACCOUNT.c.orig	2007-12-14 10:42:16.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/ACCOUNT/iptables/extensions/libipt_ACCOUNT.c	2008-03-13 23:36:21.000000000 +0100
@@ -30,14 +30,12 @@
 
 /* Initialize the target. */
 static void
-init(struct ipt_entry_target *t, unsigned int *nfcache)
+init(struct xt_entry_target *t)
 {
     struct ipt_acc_info *accountinfo = (struct ipt_acc_info *)t->data;
 
     accountinfo->table_nr = -1;
 
-    /* Can't cache this */
-    *nfcache |= NFC_UNKNOWN;
 }
 
 #define IPT_ACCOUNT_OPT_ADDR 0x01
@@ -47,8 +45,8 @@
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      struct ipt_entry_target **target)
+      const void *entry,
+      struct xt_entry_target **target)
 {
     struct ipt_acc_info *accountinfo = (struct ipt_acc_info *)(*target)->data;
     struct in_addr *addrs = NULL, mask;
@@ -65,7 +63,7 @@
                             opts[0].name);
 
         //loginfo->level = parse_level(optarg);
-        parse_hostnetworkmask(optarg, &addrs, &mask, &naddrs);
+        ipparse_hostnetworkmask(optarg, &addrs, &mask, &naddrs);
         
         if (naddrs > 1)
                 exit_error(PARAMETER_PROBLEM, "multiple IP addresses not allowed");
@@ -108,8 +106,8 @@
                     opts[0].name, opts[1].name);
 }
 
-static void print_it(const struct ipt_ip *ip,
-                     const struct ipt_entry_target *target, char do_prefix)
+static void print_it(const void *ip,
+                     const struct xt_entry_target *target, char do_prefix)
 {
     const struct ipt_acc_info *accountinfo
         = (const struct ipt_acc_info *)target->data;
@@ -123,12 +121,11 @@
 	printf("--");
     printf("%s ", opts[0].name);
     
-    a.s_addr = accountinfo->net_ip;	
-    printf("%s", addr_to_dotted(&a));
+    a.s_addr = accountinfo->net_ip;
+    printf("%s", ipaddr_to_numeric(&a));
     a.s_addr = accountinfo->net_mask;
-    printf("%s", mask_to_dotted(&a));
+    printf("%s", ipmask_to_numeric(&a));
 
-    printf(" ");
     if (do_prefix)
 	printf("--");
 
@@ -137,8 +134,8 @@
 
 /* Prints out the targinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_target *target,
+print(const void *ip,
+      const struct xt_entry_target *target,
       int numeric)
 {
     print_it (ip, target, 0);
@@ -146,13 +143,13 @@
 
 /* Saves the union ipt_targinfo in parsable form to stdout. */
 static void
-save(const struct ipt_ip *ip, const struct ipt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
 {
     print_it(ip, target, 1);
 }
 
 static
-struct iptables_target account
+struct xtables_target account
 = {
     .next          = NULL,
     .name          = "ACCOUNT",

--- ../patch-o-matic-ng/patchlets/connlimit/iptables/extensions/libipt_connlimit.c.orig	2006-12-04 12:15:19.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/connlimit/iptables/extensions/libipt_connlimit.c	2008-03-10 17:00:22.000000000 +0100
@@ -6,7 +6,6 @@
 #include <stddef.h>
 #include <getopt.h>
 #include <iptables.h>
-#include <linux/netfilter_ipv4/ip_conntrack.h>
 #include <linux/netfilter_ipv4/ipt_connlimit.h>
 
 /* Function which prints out usage message. */
@@ -21,18 +20,17 @@
 }
 
 static struct option opts[] = {
-	{ "connlimit-above", 1, 0, '1' },
-	{ "connlimit-mask",  1, 0, '2' },
-	{0}
+	{ .name = "connlimit-above", .has_arg = true, .flag = 0, .val = '1' },
+	{ .name = "connlimit-mask", .has_arg = true, .flag = 0, .val = '2' },
+	{ .name = 0 }
 };
 
 /* Function which parses command options; returns true if it
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      unsigned int *nfcache,
-      struct ipt_entry_match **match)
+      const void *entry,
+      struct xt_entry_match **match)
 {
 	struct ipt_connlimit_info *info = (struct ipt_connlimit_info*)(*match)->data;
 	int i;
@@ -94,8 +92,8 @@
 
 /* Prints out the matchinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_match *match,
+print(const void *ip,
+      const struct xt_entry_match *match,
       int numeric)
 {
 	struct ipt_connlimit_info *info = (struct ipt_connlimit_info*)match->data;
@@ -105,7 +103,7 @@
 }
 
 /* Saves the matchinfo in parsable form to stdout. */
-static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
 {
 	struct ipt_connlimit_info *info = (struct ipt_connlimit_info*)match->data;
 

--- ../patch-o-matic-ng/patchlets/IPMARK/iptables/extensions/libipt_IPMARK.c.orig	2006-12-04 12:15:20.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/IPMARK/iptables/extensions/libipt_IPMARK.c	2008-03-13 21:51:12.000000000 +0100
@@ -19,7 +19,7 @@
 #define IPT_OR_MASK_USED     4
 
 struct ipmarkinfo {
-	struct ipt_entry_target t;
+	struct xt_entry_target t;
 	struct ipt_ipmark_target_info ipmark;
 };
 
@@ -37,15 +37,15 @@
 }
 
 static struct option opts[] = {
-	{ "addr", 1, 0, '1' },
-	{ "and-mask", 1, 0, '2' },
-	{ "or-mask", 1, 0, '3' },
-	{ 0 }
+	{ .name = "addr", .has_arg = 1, .flag = 0, .val = '1' },
+	{ .name = "and-mask", .has_arg = 1, .flag = 0, .val = '2' },
+	{ .name = "or-mask", .has_arg = 1, .flag = 0, .val = '3' },
+	{ .name = NULL }
 };
 
 /* Initialize the target. */
 static void
-init(struct ipt_entry_target *t, unsigned int *nfcache)
+init(struct xt_entry_target *t)
 {
 	struct ipt_ipmark_target_info *ipmarkinfo =
 		(struct ipt_ipmark_target_info *)t->data;
@@ -59,8 +59,8 @@
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      struct ipt_entry_target **target)
+      const void *entry,
+      struct xt_entry_target **target)
 {
 	struct ipt_ipmark_target_info *ipmarkinfo
 		= (struct ipt_ipmark_target_info *)(*target)->data;
@@ -116,8 +116,8 @@
 
 /* Prints out the targinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_target *target,
+print(const void *ip,
+      const struct xt_entry_target *target,
       int numeric)
 {
 	const struct ipt_ipmark_target_info *ipmarkinfo =
@@ -132,7 +132,7 @@
 
 /* Saves the union ipt_targinfo in parsable form to stdout. */
 static void
-save(const struct ipt_ip *ip, const struct ipt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
 {
 	const struct ipt_ipmark_target_info *ipmarkinfo =
 		(const struct ipt_ipmark_target_info *)target->data;
@@ -147,7 +147,7 @@
 	  printf("--or-mask 0x%lx ", ipmarkinfo->ormask);
 }
 
-static struct iptables_target ipmark = { 
+static struct xtables_target ipmark = { 
 	.next		= NULL,
 	.name		= "IPMARK",
 	.version	= IPTABLES_VERSION,

--- ../patch-o-matic-ng/patchlets/ipp2p/iptables/extensions/libipt_ipp2p.c.orig	2006-03-29 10:59:21.000000000 +0200
+++ ../patch-o-matic-ng/patchlets/ipp2p/iptables/extensions/libipt_ipp2p.c	2008-03-13 23:49:28.000000000 +0100
@@ -44,32 +44,29 @@
 }
 
 static struct option opts[] = {
-        { "ipp2p", 0, 0, '1' },
-        { "edk", 0, 0, '2' },	
-	{ "dc", 0, 0, '7' },
-	{ "gnu", 0, 0, '9' },
-	{ "kazaa", 0, 0, 'a' },
-	{ "bit", 0, 0, 'b' },
-	{ "apple", 0, 0, 'c' },	
-	{ "soul", 0, 0, 'd' },	
-	{ "winmx", 0, 0, 'e' },	
-	{ "ares", 0, 0, 'f' },
-	{ "mute", 0, 0, 'g' },
-	{ "waste", 0, 0, 'h' },
-	{ "xdcc", 0, 0, 'i' },
-	{ "debug", 0, 0, 'j' },
-        {0}
+	{ .name = "ipp2p", .has_arg = 0, .flag = 0, .val = '1' },
+	{ .name = "edk", .has_arg = 0, .flag = 0, .val = '2' },
+	{ .name = "dc", .has_arg = 0, .flag = 0, .val = '7' },
+	{ .name = "gnu", .has_arg = 0, .flag = 0, .val = '9' },
+	{ .name = "kazaa", .has_arg = 0, .flag = 0, .val = 'a' },
+	{ .name = "bit", .has_arg = 0, .flag = 0, .val = 'b' },
+	{ .name = "apple", .has_arg = 0, .flag = 0, .val = 'c' },
+	{ .name = "soul", .has_arg = 0, .flag = 0, .val = 'd' },
+	{ .name = "winmx", .has_arg = 0, .flag = 0, .val = 'e' },
+	{ .name = "ares", .has_arg = 0, .flag = 0, .val = 'f' },
+	{ .name = "mute", .has_arg = 0, .flag = 0, .val = 'g' },
+	{ .name = "waste", .has_arg = 0, .flag = 0, .val = 'h' },
+	{ .name = "xdcc", .has_arg = 0, .flag = 0, .val = 'i' },
+	{ .name = "debug", .has_arg = 0, .flag = 0, .val = 'j' },
+	{ .name = NULL }
 };
 
-	
 
 static void
-init(struct ipt_entry_match *m, unsigned int *nfcache)
+init(struct xt_entry_match *m)
 {
     struct ipt_p2p_info *info = (struct ipt_p2p_info *)m->data;
 
-    *nfcache |= NFC_UNKNOWN;
-
     /*init the module with default values*/
     info->cmd = 0;
     info->debug = 0;
@@ -79,9 +76,8 @@
 
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-	const struct ipt_entry *entry,
-	unsigned int *nfcache,
-	struct ipt_entry_match **match)
+	const void *entry,
+	struct xt_entry_match **match)
 {
     struct ipt_p2p_info *info = (struct ipt_p2p_info *)(*match)->data;
     
@@ -315,8 +311,8 @@
 
 
 static void
-print(const struct ipt_ip *ip,
-        const struct ipt_entry_match *match,
+print(const void *ip,
+        const struct xt_entry_match *match,
 	int numeric)
 {
     struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
@@ -347,7 +343,7 @@
 
 
 static void
-save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
+save(const void *ip, const struct xt_entry_match *match)
 {
     struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
     
@@ -376,7 +372,7 @@
 
 
 static 
-struct iptables_match ipp2p= 
+struct xtables_match ipp2p= 
 { 
     .next           = NULL,
     .name           = "ipp2p",

--- ../patch-o-matic-ng/patchlets/ipv4options/iptables/extensions/libipt_ipv4options.c.orig	2008-03-13 18:56:14.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/ipv4options/iptables/extensions/libipt_ipv4options.c	2008-03-13 20:12:14.000000000 +0100
@@ -25,22 +25,22 @@
 }
 
 static struct option opts[] = {
-	{ "ssrr", 0, 0, '1' },
-	{ "lsrr", 0, 0, '2' },
-	{ "no-srr", 0, 0, '3'},
-	{ "rr", 0, 0, '4'},
-	{ "ts", 0, 0, '5'},
-	{ "ra", 0, 0, '6'},
-	{ "any-opt", 0, 0, '7'},
-	{0}
+	{ .name = "ssrr", .has_arg = 0, .flag = 0, .val = '1' },
+	{ .name = "lsrr", .has_arg = 0, .flag = 0, .val = '2' },
+	{ .name = "no-srr", .has_arg = 0, .flag = 0, .val = '3'},
+	{ .name = "rr", .has_arg = 0, .flag = 0, .val = '4'},
+	{ .name = "ts", .has_arg = 0, .flag = 0, .val = '5'},
+	{ .name = "ra", .has_arg = 0, .flag = 0, .val = '6'},
+	{ .name = "any-opt", .has_arg = 0, .flag = 0, .val = '7'},
+	{ .name = NULL }
 };
 
 /* Function which parses command options; returns true if it
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      struct ipt_entry_match **match)
+      const void *entry,
+      struct xt_entry_match **match)
 {
 	struct ipt_ipv4options_info *info = (struct ipt_ipv4options_info *)(*match)->data;
 
@@ -225,8 +225,8 @@
 
 /* Prints out the matchinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_match *match,
+print(const void *ip,
+      const struct xt_entry_match *match,
       int numeric)
 {
 	struct ipt_ipv4options_info *info = ((struct ipt_ipv4options_info *)match->data);
@@ -260,7 +260,7 @@
 
 /* Saves the data in parsable form to stdout. */
 static void
-save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
+save(const void *ip, const struct xt_entry_match *match)
 {
 	struct ipt_ipv4options_info *info = ((struct ipt_ipv4options_info *)match->data);
 
@@ -290,7 +290,7 @@
 	printf(" ");
 }
 
-static struct iptables_match ipv4options_struct = { 
+static struct xtables_match ipv4options_struct = { 
 	.next		= NULL,
 	.name		= "ipv4options",
 	.version	= IPTABLES_VERSION,

--- ../patch-o-matic-ng/patchlets/IPV4OPTSSTRIP/iptables/extensions/libipt_IPV4OPTSSTRIP.c.orig	2008-03-13 21:43:06.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/IPV4OPTSSTRIP/iptables/extensions/libipt_IPV4OPTSSTRIP.c	2008-03-13 23:51:27.000000000 +0100
@@ -20,15 +20,15 @@
 }
 
 static struct option opts[] = {
-	{ 0 }
+	{ .name = NULL }
 };
 
 /* Function which parses command options; returns true if it
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      struct ipt_entry_target **target)
+      const void *entry,
+      struct xt_entry_target **target)
 {
 	return 0;
 }
@@ -40,8 +40,8 @@
 
 /* Prints out the targinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_target *target,
+print(const void *ip,
+      const struct xt_entry_target *target,
       int numeric)
 {
 	/* nothing to print, we don't take option... */
@@ -49,12 +49,12 @@
 
 /* Saves the stuff in parsable form to stdout. */
 static void
-save(const struct ipt_ip *ip, const struct ipt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
 {
 	/* nothing to print, we don't take option... */
 }
 
-static struct iptables_target IPV4OPTSSTRIP = { 
+static struct xtables_target IPV4OPTSSTRIP = { 
 	.next		= NULL,
 	.name		= "IPV4OPTSSTRIP",
 	.version	= IPTABLES_VERSION,

--- ../patch-o-matic-ng/patchlets/ROUTE/iptables/extensions/libipt_ROUTE.c.orig	2006-12-12 11:34:45.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/ROUTE/iptables/extensions/libipt_ROUTE.c	2008-03-10 15:04:02.000000000 +0100
@@ -39,17 +39,17 @@
 }
 
 static struct option opts[] = {
-	{ "oif", 1, 0, '1' },
-	{ "iif", 1, 0, '2' },
-	{ "gw", 1, 0, '3' },
-	{ "continue", 0, 0, '4' },
-	{ "tee", 0, 0, '5' },
-	{ 0 }
+	{ .name = "oif", .has_arg = 1, .flag = 0, .val = '1' },
+	{ .name = "iif", .has_arg = 1, .flag = 0, .val = '2' },
+	{ .name = "gw", .has_arg = 1, .flag = 0, .val = '3' },
+	{ .name = "continue", .has_arg = 0, .flag = 0, .val = '4' },
+	{ .name = "tee", .has_arg = 0, .flag = 0, .val = '5' },
+	{ .name = NULL }
 };
 
 /* Initialize the target. */
 static void
-init(struct ipt_entry_target *t, unsigned int *nfcache)
+init(struct xt_entry_target *t)
 {
 	struct ipt_route_target_info *route_info = 
 		(struct ipt_route_target_info*)t->data;
@@ -71,8 +71,8 @@
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      struct ipt_entry_target **target)
+      const void *entry,
+      struct xt_entry_target **target)
 {
 	struct ipt_route_target_info *route_info = 
 		(struct ipt_route_target_info*)(*target)->data;
@@ -189,8 +189,8 @@
 
 /* Prints out the targinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_target *target,
+print(const void *ip,
+      const struct xt_entry_target *target,
       int numeric)
 {
 	const struct ipt_route_target_info *route_info
@@ -218,8 +218,8 @@
 }
 
 
-static void save(const struct ipt_ip *ip, 
-		 const struct ipt_entry_target *target)
+static void save(const void *ip, 
+		 const struct xt_entry_target *target)
 {
 	const struct ipt_route_target_info *route_info
 		= (const struct ipt_route_target_info *)target->data;

--- ../iptables/extensions/libipt_SET.c.orig	2008-03-10 15:11:32.000000000 +0100
+++ ../iptables/extensions/libipt_SET.c	2008-03-10 15:49:43.000000000 +0100
@@ -35,9 +35,9 @@
 }
 
 static const struct option SET_opts[] = {
-	{"add-set",   1, 0, '1'},
-	{"del-set",   1, 0, '2'},
-	{0}
+	{ .name = "add-set", .has_arg = 1, .flag = 0, .val = '1'},
+	{ .name = "del-set", .has_arg = 1, .flag = 0, .val = '2'},
+	{ .name = NULL }
 };
 
 /* Initialize the target. */

--- ../iptables/extensions/libipt_SET.c.orig	2008-03-10 15:11:32.000000000 +0100
+++ ../iptables/extensions/libipt_SET.c	2008-03-10 15:49:43.000000000 +0100
@@ -35,9 +35,9 @@
 }
 
 static const struct option SET_opts[] = {
-	{"add-set",   1, 0, '1'},
-	{"del-set",   1, 0, '2'},
-	{0}
+	{ .name = "add-set", .has_arg = 1, .flag = 0, .val = '1'},
+	{ .name = "del-set", .has_arg = 1, .flag = 0, .val = '2'},
+	{ .name = NULL }
 };
 
 /* Initialize the target. */

--- ../iptables/extensions/libipt_set.h.orig	2008-03-13 23:52:34.000000000 +0100
+++ ../iptables/extensions/libipt_set.h	2008-03-14 00:01:05.000000000 +0100
@@ -67,7 +67,7 @@
 		exit_error(OTHER_PROBLEM,
 			   "Incorrect return size from kernel during ipset lookup, "
 			   "(want %ld, got %ld)\n",
-			   sizeof(struct ip_set_req_get_set), size);
+			   (long int)sizeof(struct ip_set_req_get_set), (long int)size);
 	if (req.set.index == IP_SET_INVALID_ID)
 		exit_error(PARAMETER_PROBLEM,
 			   "Set %s doesn't exist.\n", setname);
@@ -93,7 +93,7 @@
 		exit_error(OTHER_PROBLEM,
 			   "Incorrect return size from kernel during ipset lookup, "
 			   "(want %ld, got %ld)\n",
-			   sizeof(struct ip_set_req_get_set), size);
+			   (long int)sizeof(struct ip_set_req_get_set), (long int)size);
 	if (req.set.name[0] == '\0')
 		exit_error(PARAMETER_PROBLEM,
 			   "Set id %i in kernel doesn't exist.\n", index);

--- ../patch-o-matic-ng/patchlets/TARPIT/iptables/extensions/libipt_TARPIT.c.orig	2008-03-10 16:40:05.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/TARPIT/iptables/extensions/libipt_TARPIT.c	2008-03-10 16:50:27.000000000 +0100
@@ -12,13 +12,13 @@
 }
 
 static struct option opts[] = {
-	{ 0 }
+	{ .name = 0 }
 };
 
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      struct ipt_entry_target **target)
+      const void *entry,
+      struct xt_entry_target **target)
 {
 	return 0;
 }
@@ -28,13 +28,13 @@
 }
 
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_target *target,
+print(const void *ip,
+      const struct xt_entry_target *target,
       int numeric)
 {
 }
 
-static void save(const struct ipt_ip *ip, const struct ipt_entry_target *target)
+static void save(const void *ip, const struct xt_entry_target *target)
 {
 }
 

--- ../patch-o-matic-ng/patchlets/time/iptables/extensions/libipt_time.c.orig	2006-12-04 12:15:20.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/time/iptables/extensions/libipt_time.c	2008-03-14 01:23:54.000000000 +0100
@@ -10,7 +10,7 @@
 #include <linux/netfilter_ipv4/ipt_time.h>
 #include <time.h>
 
-static int globaldays;
+static unsigned int globaldays;
 
 /* Function which prints out usage message. */
 static void
@@ -43,17 +43,17 @@
 }
 
 static struct option opts[] = {
-	{ "timestart", 1, 0, '1' },
-	{ "timestop", 1, 0, '2' },
-	{ "days", 1, 0, '3'},
-	{ "datestart", 1, 0, '4' },
-	{ "datestop", 1, 0, '5' },
-	{0}
+	{ .name = "timestart", .has_arg = 1, .flag = 0, .val = '1' },
+	{ .name = "timestop", .has_arg = 1, .flag = 0, .val = '2' },
+	{ .name = "days", .has_arg = 1, .flag = 0, .val = '3'},
+	{ .name = "datestart", .has_arg = 1, .flag = 0, .val = '4' },
+	{ .name = "datestop", .has_arg = 1, .flag = 0, .val = '5' },
+	{ .name = NULL }
 };
 
 /* Initialize the match. */
 static void
-init(struct ipt_entry_match *m, unsigned int *nfcache)
+init(struct xt_entry_match *m)
 {
 	struct ipt_time_info *info = (struct ipt_time_info *)m->data;
 	globaldays = 0;
@@ -105,7 +105,7 @@
 }
 
 static int
-parse_number(char *str, int num_min, int num_max, int *number)
+parse_number(char *str, unsigned int num_min, unsigned int num_max, void *number)
 {
 	/* if the number starts with 0, replace it with a space else
 	string_to_number() will interpret it as octal !! */
@@ -119,7 +119,7 @@
 }
 
 static void
-parse_time_string(int *hour, int *minute, const char *time)
+parse_time_string(unsigned int *hour, unsigned int *minute, const char *time)
 {
 	char *hours;
 	char *minutes;
@@ -151,11 +151,11 @@
 
 /* return 1->ok, return 0->error */
 static int
-parse_day(int *days, int from, int to, const char *string)
+parse_day(unsigned int *days, unsigned int from, unsigned int to, const char *string)
 {
 	char *dayread;
 	char *days_str[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
-	unsigned short int days_of_week[7] = {64, 32, 16, 8, 4, 2, 1};
+	unsigned short int days_of_week[7] = {1 << 6, 1 << 5, 1 << 4, 1 << 3, 1 << 2, 1 << 1, 1 << 0};
 	unsigned int i;
 
 	dayread = (char *)malloc(4);
@@ -179,7 +179,7 @@
 }
 
 static void
-parse_days_string(int *days, const char *daystring)
+parse_days_string(unsigned int *days, const char *daystring)
 {
 	int len;
 	int i=0;
@@ -334,12 +334,11 @@
    ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      unsigned int *nfcache,
-      struct ipt_entry_match **match)
+      const void *entry,
+      struct xt_entry_match **match)
 {
 	struct ipt_time_info *timeinfo = (struct ipt_time_info *)(*match)->data;
-	int hours, minutes;
+	unsigned int hours, minutes;
 	time_t temp_date;
 
 	switch (c)
@@ -425,7 +424,7 @@
 print_days(int daynum)
 {
 	char *days[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
-	unsigned short int days_of_week[7] = {64, 32, 16, 8, 4, 2, 1};
+	unsigned short int days_of_week[7] = {1 << 6, 1 << 5, 1 << 4, 1 << 3, 1 << 2, 1 << 1, 1 << 0};
 	unsigned short int i, nbdays=0;
 
 	for (i=0; i<7; i++) {
@@ -467,8 +466,8 @@
 
 /* Prints out the matchinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_match *match,
+print(const void *ip,
+      const struct xt_entry_match *match,
       int numeric)
 {
 	struct ipt_time_info *time = ((struct ipt_time_info *)match->data);
@@ -500,7 +499,7 @@
 
 /* Saves the data in parsable form to stdout. */
 static void
-save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
+save(const void *ip, const struct xt_entry_match *match)
 {
 	struct ipt_time_info *time = ((struct ipt_time_info *)match->data);
 	int hour_start, hour_stop, minute_start, minute_stop;
@@ -528,7 +527,7 @@
 /* have to use offsetof() instead of IPT_ALIGN(), since kerneltime must not
  * be compared when user deletes rule with '-D' */
 static
-struct iptables_match timestruct = {
+struct xtables_match timestruct = {
 	.next		= NULL,
 	.name		= "time",
 	.version	= IPTABLES_VERSION,

--- ../patch-o-matic-ng/patchlets/u32/iptables/extensions/libipt_u32.c.orig	2008-03-10 17:03:26.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/u32/iptables/extensions/libipt_u32.c	2008-03-10 17:14:57.000000000 +0100
@@ -33,8 +33,8 @@
 
 /* defined in /usr/include/getopt.h maybe in man getopt */
 static struct option opts[] = {
-	{ "u32", 1, 0, '1' },
-	{ 0 }
+	{ .name = "u32", .has_arg = 1, .flag = 0, .val = '1' },
+	{ .name = NULL }
 };
 
 /* shared printing code */
@@ -92,8 +92,8 @@
 /* Function which parses command options; returns true if it ate an option */
 static int
 parse(int c, char **argv, int invert, unsigned int *flags,
-      const struct ipt_entry *entry,
-      struct ipt_entry_match **match)
+      const void *entry,
+      struct xt_entry_match **match)
 {
 	struct ipt_u32 *data = (struct ipt_u32 *)(*match)->data;
 	char *arg = argv[optind-1]; /* the argument string */
@@ -227,8 +227,8 @@
 
 /* Prints out the matchinfo. */
 static void
-print(const struct ipt_ip *ip,
-      const struct ipt_entry_match *match,
+print(const void *ip,
+      const struct xt_entry_match *match,
       int numeric)
 {
 	printf("u32 ");
@@ -236,7 +236,7 @@
 }
 
 /* Saves the union ipt_matchinfo in parsable form to stdout. */
-static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
 {
 	printf("--u32 ");
 	print_u32((struct ipt_u32 *)match->data);

--- ../iptables/libiptc/libiptc.c.orig	2008-03-10 14:30:20.000000000 +0100
+++ ../iptables/libiptc/libiptc.c	2008-03-10 14:41:54.000000000 +0100
@@ -918,7 +918,7 @@
 			if (t->verdict < 0) {
 				DEBUGP_C("standard, verdict=%d\n", t->verdict);
 				r->type = IPTCC_R_STANDARD;
-			} else if (t->verdict == r->offset+e->next_offset) {
+			} else if ((unsigned int)(t->verdict) == r->offset+e->next_offset) {
 				DEBUGP_C("fallthrough\n");
 				r->type = IPTCC_R_FALLTHROUGH;
 			} else {

--- ../chaostables/tags/v0.7/iptables/extensions/libxt_CHAOS.c.orig	2008-03-07 16:51:34.000000000 +0100
+++ ../chaostables/tags/v0.7/iptables/extensions/libxt_CHAOS.c	2008-03-07 16:57:06.000000000 +0100
@@ -86,9 +86,9 @@
 }
 
 static const struct option CHAOS_opts[] = {
-	{"delude", 0, NULL, 'd'},
-	{"tarpit", 0, NULL, 't'},
-	{NULL},
+	{ .name = "delude", .has_arg = 0, .flag = NULL, .val = 'd'},
+	{ .name = "tarpit", .has_arg = 0, .flag = NULL, .val = 't'},
+	{ .name = NULL }
 };
 
 static struct xtables_target CHAOS_reg = {

--- ../patch-o-matic-ng/patchlets/geoip/iptables/extensions/libxt_geoip.c.orig	2008-02-13 17:03:42.000000000 +0100
+++ ../patch-o-matic-ng/patchlets/geoip/iptables/extensions/libxt_geoip.c	2008-03-15 20:05:46.000000000 +0100
@@ -46,11 +46,11 @@
 }
 
 static struct option geoip_opts[] = {
-   {  "dst-cc",  1, 0, '2'  }, /* Alias for --destination-country */
-   {  "destination-country",   1, 0, '2'  },
-   {  "src-cc",  1, 0, '1'  }, /* Alias for --source-country */
-   {  "source-country",  1, 0, '1'  },
-   {  0  },
+   { .name = "dst-cc", .has_arg = 1, .flag = 0, .val = '2'  }, /* Alias for --destination-country */
+   { .name = "destination-country", .has_arg = 1, .flag = 0, .val = '2'  },
+   { .name = "src-cc", .has_arg = 1, .flag = 0, .val = '1'  }, /* Alias for --source-country */
+   { .name = "source-country", .has_arg = 1, .flag = 0, .val = '1'  },
+   { .name = NULL  }
 };
 
 /* NOT IMPLEMENTED YET

--- ../chaostables/tags/v0.7/iptables/extensions/libxt_portscan.c.orig	2008-03-13 18:25:33.000000000 +0100
+++ ../chaostables/tags/v0.7/iptables/extensions/libxt_portscan.c	2008-03-13 18:51:02.000000000 +0100
@@ -29,15 +29,13 @@
 	return;
 }
 
-static void portscan_mtinit(struct xt_entry_match *match, unsigned int *nfcache)
+static void portscan_mtinit(struct xt_entry_match *match)
 {
-	/* Cannot cache this */
-	*nfcache |= NFC_UNKNOWN;
 	return;
 }
 
 static int portscan_parse(int c, char **argv, int invert, unsigned int *flags,
-    const void *entry, unsigned int *nfcache, struct xt_entry_match **match)
+    const void *entry, struct xt_entry_match **match)
 {
 	struct xt_portscan_info *info = (void *)((*match)->data);
 
@@ -100,11 +98,11 @@
 }
 
 static const struct option portscan_opts[] = {
-	{"stealth", 0, NULL, 'x'},
-	{"synscan", 0, NULL, 's'},
-	{"cnscan",  0, NULL, 'c'},
-	{"grscan",  0, NULL, 'g'},
-	{NULL},
+	{ .name = "stealth", .has_arg = 0, .flag = NULL, .val = 'x'},
+	{ .name = "synscan", .has_arg = 0, .flag = NULL, .val = 's'},
+	{ .name = "cnscan",  .has_arg = 0, .flag = NULL, .val = 'c'},
+	{ .name = "grscan",  .has_arg = 0, .flag = NULL, .val = 'g'},
+	{ .name = NULL }
 };
 
 static struct xtables_match portscan_reg = {

--- ../iptables/extensions/libxt_RATEEST.c.orig	2008-03-10 15:11:32.000000000 +0100
+++ ../iptables/extensions/libxt_RATEEST.c	2008-03-10 15:23:07.000000000 +0100
@@ -152,7 +152,7 @@
 		exit_error(PARAMETER_PROBLEM, "RATEEST: no ewmalog specified");
 
 	for (info->interval = 0; info->interval <= 5; info->interval++) {
-		if (interval <= (1 << info->interval) * (TIME_UNITS_PER_SEC / 4))
+		if (interval <= (unsigned int)(1 << info->interval) * (TIME_UNITS_PER_SEC / 4))
 			break;
 	}
 

--- ../iptables/extensions/libxt_sctp.c.orig	2008-03-09 22:28:33.000000000 +0100
+++ ../iptables/extensions/libxt_sctp.c	2008-03-10 16:17:27.000000000 +0100
@@ -388,7 +388,7 @@
 		printf("0x%04X", chunknum);
 	}
 	else {
-		int i;
+		unsigned int i;
 
 		for (i = 0; i < ELEMCOUNT(sctp_chunk_names); i++) {
 			if (sctp_chunk_names[i].chunk_type == chunknum)

--- ../linux/Makefile.orig	2008-02-07 16:06:30.000000000 +0100
+++ ../linux/Makefile	2008-02-07 16:24:03.000000000 +0100
@@ -331,7 +331,7 @@
 KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
 
 KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-		   -fno-strict-aliasing -fno-common \
+		   -fno-strict-aliasing -fno-common -fno-tree-scev-cprop \
 		   -Werror-implicit-function-declaration
 KBUILD_AFLAGS   := -D__ASSEMBLY__
 

--- ../patch-o-matic-ng/Netfilter_POM.pm.orig	2008-03-04 14:29:20.000000000 +0100
+++ ../patch-o-matic-ng/Netfilter_POM.pm	2008-03-04 14:30:10.000000000 +0100
@@ -128,7 +128,7 @@
 		or croak "Missing Makefile from $self->{projects}->{iptables}->{PATH}!";
 	while (my $line = <MAKEFILE>) {
 		chomp($line);
-		if ($line =~ /^IPTABLES_VERSION:=(\S+)/) {
+		if ($line =~ /^VERSION =\s*(\S+)/) {
 			$version = $1;
 			# don't support versioning like 1.2.3b!
 			$version =~ s/[^\d\.]//g;

--- ../chaostables/tags/v0.7/kernel/xt_CHAOS.c.orig	2008-03-27 07:28:52.000000000 +0100
+++ ../chaostables/tags/v0.7/kernel/xt_CHAOS.c	2008-03-27 07:41:14.000000000 +0100
@@ -44,16 +44,17 @@
 
 /* CHAOS functions */
 static void xt_chaos_total(const struct xt_chaos_info *info,
-    struct sk_buff **pskb, const struct net_device *in,
+    struct sk_buff *pskb, const struct net_device *in,
     const struct net_device *out, unsigned int hooknum)
 {
-	const struct iphdr *iph = ip_hdr(*pskb);
+	const struct iphdr *iph = ip_hdr(pskb);
 	const int protoff       = 4 * iph->ihl;
 	const int offset        = ntohs(iph->frag_off) & IP_OFFSET;
 	const struct xt_target *destiny;
-	int hotdrop = false, ret;
+	bool hotdrop = false;
+	int ret;
 
-	ret = xm_tcp->match(*pskb, in, out, xm_tcp, &tcp_params,
+	ret = xm_tcp->match(pskb, in, out, xm_tcp, &tcp_params,
 	                    offset, protoff, &hotdrop);
 	if (!ret || hotdrop || (unsigned int)net_random() > delude_percentage)
 		return;
@@ -63,7 +64,7 @@
 	return;
 }
 
-static unsigned int xt_chaos_target(struct sk_buff **pskb,
+static unsigned int xt_chaos_target(struct sk_buff *pskb,
     const struct net_device *in, const struct net_device *out,
     unsigned int hooknum, const struct xt_target *target, const void *targinfo)
 {
@@ -76,7 +77,7 @@
 	 * -A chaos -j DROP;
 	 */
 	const struct xt_chaos_info *info = targinfo;
-	const struct iphdr *iph = ip_hdr(*pskb);
+	const struct iphdr *iph = ip_hdr(pskb);
 
 	if ((unsigned int)net_random() <= reject_percentage)
 		return xt_reject->target(pskb, in, out, hooknum, target,
@@ -90,7 +91,7 @@
 	return NF_DROP;
 }
 
-static int xt_chaos_checkentry(const char *tablename, const void *entry,
+static bool xt_chaos_checkentry(const char *tablename, const void *entry,
     const struct xt_target *target, void *targinfo, unsigned int hook_mask)
 {
 	const struct xt_chaos_info *info = targinfo;

--- ../chaostables/tags/v0.7/kernel/xt_DELUDE.c.orig	2008-03-26 15:06:58.000000000 +0100
+++ ../chaostables/tags/v0.7/kernel/xt_DELUDE.c	2008-03-26 15:32:57.000000000 +0100
@@ -131,7 +131,7 @@
 #endif
 		addr_type = RTN_LOCAL;
 
-	if (ip_route_me_harder(&nskb, addr_type))
+	if (ip_route_me_harder(nskb, addr_type))
 		goto free_nskb;
 
 	nskb->ip_summed = CHECKSUM_NONE;
@@ -157,14 +157,14 @@
 	kfree_skb(nskb);
 }
 
-static unsigned int xt_delude_target(struct sk_buff **pskb,
+static unsigned int xt_delude_target(struct sk_buff *pskb,
     const struct net_device *in, const struct net_device *out,
     unsigned int hooknum, const struct xt_target *target, const void *targinfo)
 {
 	/* WARNING: This code causes reentry within iptables.
 	   This means that the iptables jump stack is now crap.  We
 	   must return an absolute verdict. --RR */
-	send_reset(*pskb, hooknum);
+	send_reset(pskb, hooknum);
 	return NF_DROP;
 }
 

--- ../chaostables/tags/v0.7/kernel/xt_portscan.c.orig	2008-03-26 08:58:01.000000000 +0100
+++ ../chaostables/tags/v0.7/kernel/xt_portscan.c	2008-03-26 15:01:29.000000000 +0100
@@ -18,6 +18,7 @@
 #include <linux/netfilter/x_tables.h>
 #include <linux/netfilter/xt_tcpudp.h>
 #include <net/netfilter/nf_nat_rule.h>
+#include <net/net_namespace.h>
 #include "xt_portscan.h"
 #define PFX KBUILD_MODNAME ": "
 
@@ -170,10 +171,10 @@
 	return mark;
 }
 
-static int xt_portscan_match(const struct sk_buff *skb,
+static bool xt_portscan_match(const struct sk_buff *skb,
     const struct net_device *in, const struct net_device *out,
     const struct xt_match *match, const void *matchinfo, int offset,
-    unsigned int protoff, int *hotdrop)
+    unsigned int protoff, bool *hotdrop)
 {
 	const struct xt_portscan_info *info = matchinfo;
 	enum ip_conntrack_info ctstate;
@@ -206,7 +207,7 @@
 		unsigned int n;
 
 		n = xt_portscan_full(ctdata->mark & connmark_mask, ctstate,
-		    in == &loopback_dev, tcph,
+		    in == init_net.loopback_dev, tcph,
 		    skb->len - protoff - 4 * tcph->doff);
 
 		ctdata->mark = (ctdata->mark & ~connmark_mask) | n;
@@ -219,7 +220,7 @@
 	       (info->match_gr && ctdata->mark == mark_grscan);
 }
 
-static int xt_portscan_checkentry(const char *tablename, const void *entry,
+static bool xt_portscan_checkentry(const char *tablename, const void *entry,
     const struct xt_match *match, void *matchinfo, unsigned int hook_mask)
 {
 	const struct xt_portscan_info *info = matchinfo;

--- ../iptables/include/linux/netfilter/xt_sctp.h.orig	2008-03-10 15:50:52.000000000 +0100
+++ ../iptables/include/linux/netfilter/xt_sctp.h	2008-03-10 16:30:59.000000000 +0100
@@ -58,28 +58,28 @@
 
 #define SCTP_CHUNKMAP_RESET(chunkmap) 				\
 	do {							\
-		int i; 						\
+		unsigned int i; 						\
 		for (i = 0; i < ELEMCOUNT(chunkmap); i++)	\
 			chunkmap[i] = 0;			\
 	} while (0)
 
 #define SCTP_CHUNKMAP_SET_ALL(chunkmap) 			\
 	do {							\
-		int i; 						\
+		unsigned int i; 						\
 		for (i = 0; i < ELEMCOUNT(chunkmap); i++) 	\
 			chunkmap[i] = ~0;			\
 	} while (0)
 
 #define SCTP_CHUNKMAP_COPY(destmap, srcmap) 			\
 	do {							\
-		int i; 						\
+		unsigned int i; 						\
 		for (i = 0; i < ELEMCOUNT(chunkmap); i++) 	\
 			destmap[i] = srcmap[i];			\
 	} while (0)
 
 #define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) 		\
 ({							\
-	int i; 						\
+	unsigned int i; 						\
 	int flag = 1;					\
 	for (i = 0; i < ELEMCOUNT(chunkmap); i++) {	\
 		if (chunkmap[i]) {			\
@@ -92,10 +92,10 @@
 
 #define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) 		\
 ({							\
-	int i; 						\
+	unsigned int i; 						\
 	int flag = 1;					\
 	for (i = 0; i < ELEMCOUNT(chunkmap); i++) {	\
-		if (chunkmap[i] != ~0) {		\
+		if (chunkmap[i] != (unsigned int)(~0)) {		\
 			flag = 0;			\
 				break;			\
 		}					\


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux