diff options
Diffstat (limited to 'kernel-desktop-pom-ng-IPMARK.patch')
-rw-r--r-- | kernel-desktop-pom-ng-IPMARK.patch | 89 |
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); |