summaryrefslogtreecommitdiff
path: root/kernel-desktop-pom-ng-IPMARK.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kernel-desktop-pom-ng-IPMARK.patch')
-rw-r--r--kernel-desktop-pom-ng-IPMARK.patch89
1 files changed, 53 insertions, 36 deletions
diff --git a/kernel-desktop-pom-ng-IPMARK.patch b/kernel-desktop-pom-ng-IPMARK.patch
index 7efffa5..d8839ad 100644
--- a/kernel-desktop-pom-ng-IPMARK.patch
+++ b/kernel-desktop-pom-ng-IPMARK.patch
@@ -1,12 +1,6 @@
- include/linux/netfilter_ipv4/ipt_IPMARK.h | 13 ++++
- net/ipv4/netfilter/Kconfig | 18 ++++++
- net/ipv4/netfilter/Makefile | 1
- net/ipv4/netfilter/ipt_IPMARK.c | 79 ++++++++++++++++++++++++++++++
- 4 files changed, 111 insertions(+)
-
-diff -Nur --exclude '*.orig' linux.org/include/linux/netfilter_ipv4/ipt_IPMARK.h linux/include/linux/netfilter_ipv4/ipt_IPMARK.h
---- linux.org/include/linux/netfilter_ipv4/ipt_IPMARK.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/include/linux/netfilter_ipv4/ipt_IPMARK.h 2006-05-04 11:19:22.000000000 +0200
+diff -NurpP --minimal linux-2.6.21.a/include/linux/netfilter_ipv4/ipt_IPMARK.h linux-2.6.21.b/include/linux/netfilter_ipv4/ipt_IPMARK.h
+--- linux-2.6.21.a/include/linux/netfilter_ipv4/ipt_IPMARK.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21.b/include/linux/netfilter_ipv4/ipt_IPMARK.h 2007-05-30 12:01:20.000000000 +0200
@@ -0,0 +1,13 @@
+#ifndef _IPT_IPMARK_H_target
+#define _IPT_IPMARK_H_target
@@ -21,12 +15,12 @@ diff -Nur --exclude '*.orig' linux.org/include/linux/netfilter_ipv4/ipt_IPMARK.h
+#define IPT_IPMARK_DST 1
+
+#endif /*_IPT_IPMARK_H_target*/
-diff -Nur --exclude '*.orig' linux.org/net/ipv4/netfilter/Kconfig linux/net/ipv4/netfilter/Kconfig
---- linux.org/net/ipv4/netfilter/Kconfig 2006-05-02 23:38:44.000000000 +0200
-+++ linux/net/ipv4/netfilter/Kconfig 2006-05-04 11:19:22.000000000 +0200
-@@ -606,5 +606,23 @@
- Allows altering the ARP packet payload: source and destination
- hardware and network addresses.
+diff -NurpP --minimal linux-2.6.21.a/net/ipv4/netfilter/Kconfig linux-2.6.21.b/net/ipv4/netfilter/Kconfig
+--- linux-2.6.21.a/net/ipv4/netfilter/Kconfig 2007-05-30 12:01:03.000000000 +0200
++++ linux-2.6.21.b/net/ipv4/netfilter/Kconfig 2007-05-30 12:01:20.000000000 +0200
+@@ -893,5 +893,23 @@ config IP_NF_RSH
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. If unsure, say `N'.
+config IP_NF_TARGET_IPMARK
+ tristate 'IPMARK target support'
@@ -48,20 +42,27 @@ diff -Nur --exclude '*.orig' linux.org/net/ipv4/netfilter/Kconfig linux/net/ipv4
+
endmenu
-diff -Nur --exclude '*.orig' linux.org/net/ipv4/netfilter/Makefile linux/net/ipv4/netfilter/Makefile
---- linux.org/net/ipv4/netfilter/Makefile 2006-05-02 23:38:44.000000000 +0200
-+++ linux/net/ipv4/netfilter/Makefile 2006-05-04 11:19:22.000000000 +0200
-@@ -0,0 +0,1 @@
+diff -NurpP --minimal linux-2.6.21.a/net/ipv4/netfilter/Makefile linux-2.6.21.b/net/ipv4/netfilter/Makefile
+--- linux-2.6.21.a/net/ipv4/netfilter/Makefile 2007-05-30 12:01:03.000000000 +0200
++++ linux-2.6.21.b/net/ipv4/netfilter/Makefile 2007-05-30 12:01:21.000000000 +0200
+@@ -118,6 +118,7 @@ obj-$(CONFIG_IP_NF_TARGET_IPV4OPTSSTRIP)
+ obj-$(CONFIG_IP_NF_TARGET_ULOG) += ipt_ULOG.o
+ obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o
+ obj-$(CONFIG_IP_NF_TARGET_TTL) += ipt_TTL.o
+obj-$(CONFIG_IP_NF_TARGET_IPMARK) += ipt_IPMARK.o
-diff -Nur --exclude '*.orig' linux.org/net/ipv4/netfilter/ipt_IPMARK.c linux/net/ipv4/netfilter/ipt_IPMARK.c
---- linux.org/net/ipv4/netfilter/ipt_IPMARK.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/net/ipv4/netfilter/ipt_IPMARK.c 2006-05-04 11:19:22.000000000 +0200
-@@ -0,0 +1,79 @@
+
+ # generic ARP tables
+ obj-$(CONFIG_IP_NF_ARPTABLES) += arp_tables.o
+diff -NurpP --minimal linux-2.6.21.a/net/ipv4/netfilter/ipt_IPMARK.c linux-2.6.21.b/net/ipv4/netfilter/ipt_IPMARK.c
+--- linux-2.6.21.a/net/ipv4/netfilter/ipt_IPMARK.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.21.b/net/ipv4/netfilter/ipt_IPMARK.c 2007-05-30 12:01:21.000000000 +0200
+@@ -0,0 +1,96 @@
+#include <linux/module.h>
+#include <linux/skbuff.h>
++#include <linux/version.h>
+#include <linux/ip.h>
+#include <net/checksum.h>
-+
++#include <linux/netfilter/x_tables.h>
+#include <linux/netfilter_ipv4/ip_tables.h>
+#include <linux/netfilter_ipv4/ipt_IPMARK.h>
+
@@ -74,11 +75,14 @@ diff -Nur --exclude '*.orig' linux.org/net/ipv4/netfilter/ipt_IPMARK.c linux/net
+ const struct net_device *in,
+ const struct net_device *out,
+ unsigned int hooknum,
-+ const void *targinfo,
-+ void *userinfo)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
++ const struct xt_target *target,
++#endif
++ const void *targinfo
++ )
+{
+ const struct ipt_ipmark_target_info *ipmarkinfo = targinfo;
-+ struct iphdr *iph = (*pskb)->nh.iph;
++ struct iphdr *iph = ip_hdr(*pskb);
+ unsigned long mark;
+
+ if (ipmarkinfo->addr == IPT_IPMARK_SRC)
@@ -89,25 +93,35 @@ diff -Nur --exclude '*.orig' linux.org/net/ipv4/netfilter/ipt_IPMARK.c linux/net
+ mark &= ipmarkinfo->andmask;
+ mark |= ipmarkinfo->ormask;
+
-+ if ((*pskb)->nfmark != mark)
-+ (*pskb)->nfmark = mark;
++ if ((*pskb)->mark != mark)
++ (*pskb)->mark = mark;
+
+ return IPT_CONTINUE;
+}
+
+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,17)
+ if (targinfosize != IPT_ALIGN(sizeof(struct ipt_ipmark_target_info))) {
+ printk(KERN_WARNING "IPMARK: targinfosize %u != %Zu\n",
+ targinfosize,
+ IPT_ALIGN(sizeof(struct ipt_ipmark_target_info)));
+ return 0;
+ }
++#endif
+
+ if (strcmp(tablename, "mangle") != 0) {
+ printk(KERN_WARNING "IPMARK: can only be called from \"mangle\" table, not \"%s\"\n", tablename);
@@ -118,20 +132,23 @@ diff -Nur --exclude '*.orig' linux.org/net/ipv4/netfilter/ipt_IPMARK.c linux/net
+}
+
+static struct ipt_target ipt_ipmark_reg = {
-+ .name = "IPMARK",
-+ .target = target,
-+ .checkentry = checkentry,
-+ .me = THIS_MODULE
++ .name = "IPMARK",
++ .target = target,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
++ .targetsize = sizeof(struct ipt_ipmark_target_info),
++#endif
++ .checkentry = checkentry,
++ .me = THIS_MODULE
+};
+
+static int __init init(void)
+{
-+ return ipt_register_target(&ipt_ipmark_reg);
++ return xt_register_target(&ipt_ipmark_reg);
+}
+
+static void __exit fini(void)
+{
-+ ipt_unregister_target(&ipt_ipmark_reg);
++ xt_unregister_target(&ipt_ipmark_reg);
+}
+
+module_init(init);