From cf9653b88c3484228da9358ffe49888b7a7409a7 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 14 Mar 2005 15:30:55 +0000 Subject: [PATCH] update ipp2p to version 0.7.4 git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@369 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../{ipp2p-0.7.1.patch => ipp2p-0.7.4.patch} | 82 ++++++------------ .../304-netfilter-ipp2p-0.7.1.bz2 | Bin 5300 -> 0 bytes .../304-netfilter-ipp2p-0.7.4.bz2 | Bin 0 -> 5267 bytes 3 files changed, 25 insertions(+), 57 deletions(-) rename package/iptables/patches/{ipp2p-0.7.1.patch => ipp2p-0.7.4.patch} (90%) delete mode 100644 package/linux/kernel-patches/304-netfilter-ipp2p-0.7.1.bz2 create mode 100644 package/linux/kernel-patches/304-netfilter-ipp2p-0.7.4.bz2 diff --git a/package/iptables/patches/ipp2p-0.7.1.patch b/package/iptables/patches/ipp2p-0.7.4.patch similarity index 90% rename from package/iptables/patches/ipp2p-0.7.1.patch rename to package/iptables/patches/ipp2p-0.7.4.patch index 0da71947bc..d39a39d2d6 100644 --- a/package/iptables/patches/ipp2p-0.7.1.patch +++ b/package/iptables/patches/ipp2p-0.7.4.patch @@ -1,7 +1,7 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensions/libipt_ipp2p.c --- iptables-1.2.11.old/extensions/libipt_ipp2p.c 1970-01-01 01:00:00.000000000 +0100 -+++ iptables-1.2.11/extensions/libipt_ipp2p.c 2005-03-01 17:49:59.000000000 +0100 -@@ -0,0 +1,482 @@ ++++ iptables-1.2.11/extensions/libipt_ipp2p.c 2005-03-12 00:50:27.000000000 +0100 +@@ -0,0 +1,455 @@ + +#include +#include @@ -40,15 +40,13 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensio + "\nNote that the follwing options will have the same meaning:\n" + " '--ipp2p' is equal to '--edk --dc --kazaa --gnu'\n" + " '--ipp2p-data' is equal to '--edk-data --dc-data --kazaa-data --gnu-data'\n" -+ "\nIPP2P was intended for TCP only. Due to increasing usage of UDP we needed to change this:\n" -+ " --udp search UDP packets only\n" -+ " --tcp search TCP packets only\n" -+ " --udp --tcp search UDP and TCP packets\n" ++ "\nIPP2P was intended for TCP only. Due to increasing usage of UDP we needed to change this.\n" ++ "You can now use -p udp to search UDP packets only or without -p switch to search UDP and TCP packets.\n" + "\nSee README included with this package for more details or visit http://www.ipp2p.org\n" + "\nExamples:\n" + " iptables -A FORWARD -m ipp2p --ipp2p -j MARK --set-mark 0x01\n" -+ " iptables -A FORWARD -m ipp2p --udp --kazaa --bit -j DROP\n" -+ " iptables -A FORWARD -m ipp2p --tcp --edk --soul -j DROP\n\n" ++ " iptables -A FORWARD -p udp -m ipp2p --kazaa --bit -j DROP\n" ++ " iptables -A FORWARD -p tcp -m ipp2p --edk --soul -j DROP\n\n" + , IPP2P_VERSION); +} + @@ -71,8 +69,6 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensio + { "winmx", 0, 0, 'e' }, + { "ares", 0, 0, 'f' }, + { "debug", 0, 0, 'g' }, -+ { "udp", 0, 0, 'h' }, -+ { "tcp", 0, 0, 'i' }, + {0} +}; + @@ -88,7 +84,6 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensio + /*init the module with default values*/ + info->cmd = 0; + info->debug = 0; -+ info->proto = IPP2P_PROTO_DEFAULT; + +} + @@ -364,25 +359,6 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensio + info->debug = 1; + break; + -+ case 'h': /*cmd: udp*/ -+ if ((info->proto & IPP2P_PROTO_UDP) == IPP2P_PROTO_UDP) -+ exit_error(PARAMETER_PROBLEM, -+ "ipp2p: --udp may only be specified once!"); -+ -+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!"); -+ info->proto += IPP2P_PROTO_UDP; -+ break; -+ -+ -+ case 'i': /*cmd: tcp*/ -+ if ((info->proto & IPP2P_PROTO_TCP) == IPP2P_PROTO_TCP) -+ exit_error(PARAMETER_PROBLEM, -+ "ipp2p: --tcp may only be specified once!"); -+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!"); -+ info->proto += IPP2P_PROTO_TCP; -+ break; -+ -+ + default: + exit_error(PARAMETER_PROBLEM, + "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n"); @@ -425,8 +401,6 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensio + if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf(" --soul"); + if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf(" --winmx"); + if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf(" --ares"); -+ if ((info->proto & IPP2P_PROTO_UDP) == IPP2P_PROTO_UDP) printf(" --udp"); -+ if ((info->proto & IPP2P_PROTO_TCP) == IPP2P_PROTO_TCP) printf(" --tcp"); + if (info->debug != 0) printf(" --debug"); + printf(" "); +} @@ -453,28 +427,27 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensio + if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf("--soul "); + if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf("--winmx "); + if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf("--ares "); -+ if ((info->proto & IPP2P_PROTO_UDP) == IPP2P_PROTO_UDP) printf("--udp "); -+ if ((info->proto & IPP2P_PROTO_TCP) == IPP2P_PROTO_TCP) printf("--tcp "); + if (info->debug != 0) printf("--debug "); +} + + + + -+static -+struct iptables_match ipp2p -+= { NULL, -+ "ipp2p", -+ IPTABLES_VERSION, -+ IPT_ALIGN(sizeof(struct ipt_p2p_info)), -+ IPT_ALIGN(sizeof(struct ipt_p2p_info)), -+ &help, -+ &init, -+ &parse, -+ &final_check, -+ &print, -+ &save, -+ opts ++static ++struct iptables_match ipp2p= ++{ ++ .next = NULL, ++ .name = "ipp2p", ++ .version = IPTABLES_VERSION, ++ .size = IPT_ALIGN(sizeof(struct ipt_p2p_info)), ++ .userspacesize = IPT_ALIGN(sizeof(struct ipt_p2p_info)), ++ .help = &help, ++ .init = &init, ++ .parse = &parse, ++ .final_check = &final_check, ++ .print = &print, ++ .save = &save, ++ .extra_opts = opts +}; + + @@ -486,7 +459,7 @@ diff -urN iptables-1.2.11.old/extensions/libipt_ipp2p.c iptables-1.2.11/extensio + diff -urN iptables-1.2.11.old/extensions/Makefile iptables-1.2.11/extensions/Makefile --- iptables-1.2.11.old/extensions/Makefile 2004-06-17 12:22:54.000000000 +0200 -+++ iptables-1.2.11/extensions/Makefile 2005-03-01 17:51:19.000000000 +0100 ++++ iptables-1.2.11/extensions/Makefile 2005-03-12 00:50:12.000000000 +0100 @@ -8,6 +8,10 @@ PF_EXT_SLIB:=ah connlimit connmark conntrack dscp ecn esp helper icmp iprange length limit mac mark multiport owner physdev pkttype realm rpc sctp standard state tcp tcpmss tos ttl udp unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NOTRACK REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS TRACE TTL ULOG PF6_EXT_SLIB:=eui64 hl icmpv6 length limit mac mark multiport owner standard tcp udp HL LOG MARK TRACE @@ -500,16 +473,15 @@ diff -urN iptables-1.2.11.old/extensions/Makefile iptables-1.2.11/extensions/Mak PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T))) diff -urN iptables-1.2.11.old/include/linux/netfilter_ipv4/ipt_ipp2p.h iptables-1.2.11/include/linux/netfilter_ipv4/ipt_ipp2p.h --- iptables-1.2.11.old/include/linux/netfilter_ipv4/ipt_ipp2p.h 1970-01-01 01:00:00.000000000 +0100 -+++ iptables-1.2.11/include/linux/netfilter_ipv4/ipt_ipp2p.h 2005-03-01 17:48:03.000000000 +0100 -@@ -0,0 +1,34 @@ ++++ iptables-1.2.11/include/linux/netfilter_ipv4/ipt_ipp2p.h 2005-03-12 00:50:46.000000000 +0100 +@@ -0,0 +1,29 @@ +#ifndef __IPT_IPP2P_H +#define __IPT_IPP2P_H -+#define IPP2P_VERSION "0.7.1" ++#define IPP2P_VERSION "0.7.4" + +struct ipt_p2p_info { + int cmd; + int debug; -+ int proto; +}; + +#endif //__IPT_IPP2P_H @@ -532,7 +504,3 @@ diff -urN iptables-1.2.11.old/include/linux/netfilter_ipv4/ipt_ipp2p.h iptables- +#define IPP2P_WINMX 8192 +#define IPP2P_ARES 16384 + -+#define IPP2P_PROTO_DEFAULT 1 -+#define IPP2P_PROTO_UDP 2 -+#define IPP2P_PROTO_TCP 4 -+ diff --git a/package/linux/kernel-patches/304-netfilter-ipp2p-0.7.1.bz2 b/package/linux/kernel-patches/304-netfilter-ipp2p-0.7.1.bz2 deleted file mode 100644 index 10efa16c20613eaebda1f113c7361958abcb4516..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5300 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 GOmBJT|Fb6m diff --git a/package/linux/kernel-patches/304-netfilter-ipp2p-0.7.4.bz2 b/package/linux/kernel-patches/304-netfilter-ipp2p-0.7.4.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..42f303b5434b4afb85f3097b53bc18b8984c4286 GIT binary patch literal 5267 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 Z=tAte