You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
455 lines
18 KiB
455 lines
18 KiB
![]()
19 years ago
|
diff -urN iptables.old/extensions/Makefile iptables.dev/extensions/Makefile
|
||
|
--- iptables.old/extensions/Makefile 2005-07-20 04:22:56.000000000 +0200
|
||
|
+++ iptables.dev/extensions/Makefile 2006-03-23 14:42:28.000000000 +0100
|
||
|
@@ -8,6 +8,10 @@
|
||
|
PF_EXT_SLIB:=ah addrtype comment connlimit connmark conntrack dscp ecn esp hashlimit 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 NFQUEUE NOTRACK REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS TRACE TTL ULOG
|
||
|
PF6_EXT_SLIB:=eui64 hl icmpv6 length limit mac mark multiport owner physdev standard tcp udp HL LOG NFQUEUE MARK TRACE
|
||
|
|
||
|
+
|
||
|
+# ipp2p
|
||
|
+PF_EXT_SLIB += ipp2p
|
||
|
+
|
||
|
# Optionals
|
||
|
PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
|
||
|
PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
|
||
|
diff -urN iptables.old/extensions/libipt_ipp2p.c iptables.dev/extensions/libipt_ipp2p.c
|
||
|
--- iptables.old/extensions/libipt_ipp2p.c 1970-01-01 01:00:00.000000000 +0100
|
||
|
+++ iptables.dev/extensions/libipt_ipp2p.c 2006-03-23 14:43:26.000000000 +0100
|
||
|
@@ -0,0 +1,401 @@
|
||
![]()
20 years ago
|
+
|
||
|
+#include <stdio.h>
|
||
|
+#include <netdb.h>
|
||
|
+#include <string.h>
|
||
|
+#include <stdlib.h>
|
||
|
+#include <getopt.h>
|
||
|
+#include <ctype.h>
|
||
|
+
|
||
|
+#include <iptables.h>
|
||
|
+
|
||
|
+#include <linux/netfilter_ipv4/ipt_ipp2p.h>
|
||
|
+
|
||
|
+static void
|
||
|
+help(void)
|
||
|
+{
|
||
|
+ printf(
|
||
|
+ "IPP2P v%s options:\n"
|
||
|
+ " --ipp2p Grab all known p2p packets\n"
|
||
|
+ " --edk [TCP&UDP] All known eDonkey/eMule/Overnet packets\n"
|
||
|
+ " --dc [TCP] All known Direct Connect packets\n"
|
||
|
+ " --kazaa [TCP&UDP] All known KaZaA packets\n"
|
||
|
+ " --gnu [TCP&UDP] All known Gnutella packets\n"
|
||
|
+ " --bit [TCP&UDP] All known BitTorrent packets\n"
|
||
![]()
19 years ago
|
+ " --apple [TCP] All known AppleJuice packets\n"
|
||
|
+ " --winmx [TCP] All known WinMX\n"
|
||
|
+ " --soul [TCP] All known SoulSeek\n"
|
||
|
+ " --ares [TCP] All known Ares\n\n"
|
||
|
+ " EXPERIMENTAL protocols (please send feedback to: ipp2p@ipp2p.org) :\n"
|
||
|
+ " --mute [TCP] All known Mute packets\n"
|
||
|
+ " --waste [TCP] All known Waste packets\n"
|
||
|
+ " --xdcc [TCP] All known XDCC packets (only xdcc login)\n\n"
|
||
|
+ " DEBUG SUPPPORT, use only if you know why\n"
|
||
|
+ " --debug Generate kernel debug output, THIS WILL SLOW DOWN THE FILTER\n"
|
||
![]()
20 years ago
|
+ "\nNote that the follwing options will have the same meaning:\n"
|
||
![]()
19 years ago
|
+ " '--ipp2p' is equal to '--edk --dc --kazaa --gnu --bit --apple --winmx --soul --ares'\n"
|
||
![]()
20 years ago
|
+ "\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"
|
||
![]()
20 years ago
|
+ "\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"
|
||
![]()
20 years ago
|
+ " 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"
|
||
![]()
20 years ago
|
+ , IPP2P_VERSION);
|
||
|
+}
|
||
|
+
|
||
|
+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' },
|
||
![]()
19 years ago
|
+ { "mute", 0, 0, 'g' },
|
||
|
+ { "waste", 0, 0, 'h' },
|
||
|
+ { "xdcc", 0, 0, 'i' },
|
||
|
+ { "debug", 0, 0, 'j' },
|
||
![]()
20 years ago
|
+ {0}
|
||
|
+};
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
+static void
|
||
|
+init(struct ipt_entry_match *m, unsigned int *nfcache)
|
||
|
+{
|
||
|
+ 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;
|
||
|
+
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+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)
|
||
|
+{
|
||
|
+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)(*match)->data;
|
||
|
+
|
||
|
+ switch (c) {
|
||
|
+ case '1': /*cmd: ipp2p*/
|
||
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
|
||
![]()
20 years ago
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p-data' may only be "
|
||
![]()
19 years ago
|
+ "specified alone!");*/
|
||
![]()
20 years ago
|
+ if ((*flags) != 0)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += SHORT_HAND_IPP2P;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+
|
||
|
+ case '2': /*cmd: edk*/
|
||
|
+ if ((*flags & IPP2P_EDK) == IPP2P_EDK)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--edk' may only be "
|
||
|
+ "specified once");
|
||
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
![]()
19 years ago
|
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
|
||
![]()
20 years ago
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p-data' may only be "
|
||
![]()
19 years ago
|
+ "specified alone!");*/
|
||
![]()
20 years ago
|
+ if ((*flags & IPP2P_DATA_EDK) == IPP2P_DATA_EDK)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: use `--edk' OR `--edk-data' but not both of them!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_EDK;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+
|
||
|
+
|
||
|
+ case '7': /*cmd: dc*/
|
||
|
+ if ((*flags & IPP2P_DC) == IPP2P_DC)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--dc' may only be "
|
||
|
+ "specified once!");
|
||
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
![]()
19 years ago
|
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
|
||
![]()
20 years ago
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p-data' may only be "
|
||
![]()
19 years ago
|
+ "specified alone!");*/
|
||
![]()
20 years ago
|
+ if ((*flags & IPP2P_DATA_DC) == IPP2P_DATA_DC)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: use `--dc' OR `--dc-data' but not both of them!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_DC;
|
||
|
+ info->cmd = *flags;
|
||
![]()
19 years ago
|
+ break;
|
||
![]()
20 years ago
|
+
|
||
|
+
|
||
|
+ case '9': /*cmd: gnu*/
|
||
|
+ if ((*flags & IPP2P_GNU) == IPP2P_GNU)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--gnu' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
|
||
![]()
20 years ago
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p-data' may only be "
|
||
![]()
19 years ago
|
+ "specified alone!");*/
|
||
![]()
20 years ago
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
|
+ if ((*flags & IPP2P_DATA_GNU) == IPP2P_DATA_GNU)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: use `--gnu' OR `--gnu-data' but not both of them!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_GNU;
|
||
|
+ info->cmd = *flags;
|
||
![]()
19 years ago
|
+ break;
|
||
![]()
20 years ago
|
+
|
||
|
+ case 'a': /*cmd: kazaa*/
|
||
|
+ if ((*flags & IPP2P_KAZAA) == IPP2P_KAZAA)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--kazaa' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
|
||
![]()
20 years ago
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p-data' may only be "
|
||
![]()
19 years ago
|
+ "specified alone!");*/
|
||
![]()
20 years ago
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
|
+ if ((*flags & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: use `--kazaa' OR `--kazaa-data' but not both of them!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_KAZAA;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 'b': /*cmd: bit*/
|
||
|
+ if ((*flags & IPP2P_BIT) == IPP2P_BIT)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--bit' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
![]()
20 years ago
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_BIT;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 'c': /*cmd: apple*/
|
||
|
+ if ((*flags & IPP2P_APPLE) == IPP2P_APPLE)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--apple' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
![]()
20 years ago
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_APPLE;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+
|
||
|
+
|
||
|
+ case 'd': /*cmd: soul*/
|
||
|
+ if ((*flags & IPP2P_SOUL) == IPP2P_SOUL)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--soul' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
![]()
20 years ago
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_SOUL;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+
|
||
|
+
|
||
|
+ case 'e': /*cmd: winmx*/
|
||
|
+ if ((*flags & IPP2P_WINMX) == IPP2P_WINMX)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--winmx' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
![]()
20 years ago
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_WINMX;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+
|
||
|
+ case 'f': /*cmd: ares*/
|
||
|
+ if ((*flags & IPP2P_ARES) == IPP2P_ARES)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ares' may only be "
|
||
|
+ "specified once!");
|
||
![]()
19 years ago
|
+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ipp2p' may only be "
|
||
|
+ "specified alone!");
|
||
![]()
20 years ago
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_ARES;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
![]()
19 years ago
|
+
|
||
|
+ case 'g': /*cmd: mute*/
|
||
|
+ if ((*flags & IPP2P_MUTE) == IPP2P_MUTE)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--mute' may only be "
|
||
|
+ "specified once!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_MUTE;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+ case 'h': /*cmd: waste*/
|
||
|
+ if ((*flags & IPP2P_WASTE) == IPP2P_WASTE)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--waste' may only be "
|
||
|
+ "specified once!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_WASTE;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
|
+ case 'i': /*cmd: xdcc*/
|
||
|
+ if ((*flags & IPP2P_XDCC) == IPP2P_XDCC)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "ipp2p: `--ares' may only be "
|
||
|
+ "specified once!");
|
||
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ *flags += IPP2P_XDCC;
|
||
|
+ info->cmd = *flags;
|
||
|
+ break;
|
||
![]()
20 years ago
|
+
|
||
![]()
19 years ago
|
+ case 'j': /*cmd: debug*/
|
||
![]()
20 years ago
|
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
|
||
|
+ info->debug = 1;
|
||
|
+ break;
|
||
|
+
|
||
|
+ default:
|
||
![]()
19 years ago
|
+// exit_error(PARAMETER_PROBLEM,
|
||
|
+// "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
|
||
![]()
20 years ago
|
+ return 0;
|
||
|
+ }
|
||
|
+ return 1;
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+static void
|
||
|
+final_check(unsigned int flags)
|
||
|
+{
|
||
|
+ if (!flags)
|
||
|
+ exit_error(PARAMETER_PROBLEM,
|
||
|
+ "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
+static void
|
||
|
+print(const struct ipt_ip *ip,
|
||
|
+ const struct ipt_entry_match *match,
|
||
|
+ int numeric)
|
||
|
+{
|
||
|
+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
|
||
|
+
|
||
|
+ printf("ipp2p v%s", IPP2P_VERSION);
|
||
|
+ if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf(" --ipp2p");
|
||
![]()
19 years ago
|
+// if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf(" --ipp2p-data");
|
||
![]()
20 years ago
|
+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf(" --kazaa");
|
||
![]()
19 years ago
|
+// if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf(" --kazaa-data");
|
||
|
+// if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf(" --gnu-data");
|
||
![]()
20 years ago
|
+ if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf(" --gnu");
|
||
|
+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf(" --edk");
|
||
![]()
19 years ago
|
+// if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf(" --edk-data");
|
||
|
+// if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf(" --dc-data");
|
||
![]()
20 years ago
|
+ if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf(" --dc");
|
||
|
+ if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf(" --bit");
|
||
|
+ if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf(" --apple");
|
||
|
+ 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");
|
||
![]()
19 years ago
|
+ if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
|
||
|
+ if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
|
||
|
+ if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
|
||
![]()
20 years ago
|
+ if (info->debug != 0) printf(" --debug");
|
||
|
+ printf(" ");
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
+static void
|
||
|
+save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
|
||
|
+{
|
||
|
+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
|
||
|
+
|
||
|
+ if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf("--ipp2p ");
|
||
![]()
19 years ago
|
+// if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf("--ipp2p-data ");
|
||
![]()
20 years ago
|
+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf("--kazaa ");
|
||
![]()
19 years ago
|
+// if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf("--kazaa-data ");
|
||
|
+// if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf("--gnu-data ");
|
||
![]()
20 years ago
|
+ if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf("--gnu ");
|
||
|
+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf("--edk ");
|
||
![]()
19 years ago
|
+// if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf("--edk-data ");
|
||
|
+// if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf("--dc-data ");
|
||
![]()
20 years ago
|
+ if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf("--dc ");
|
||
|
+ if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf("--bit ");
|
||
|
+ if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf("--apple ");
|
||
|
+ 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 ");
|
||
![]()
19 years ago
|
+ if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
|
||
|
+ if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
|
||
|
+ if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
|
||
![]()
20 years ago
|
+ if (info->debug != 0) printf("--debug ");
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
+
|
||
![]()
20 years ago
|
+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
|
||
![]()
20 years ago
|
+};
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
+void _init(void)
|
||
|
+{
|
||
|
+ register_match(&ipp2p);
|
||
|
+}
|
||
|
+
|
||
![]()
19 years ago
|
diff -urN iptables.old/include/linux/netfilter_ipv4/ipt_ipp2p.h iptables.dev/include/linux/netfilter_ipv4/ipt_ipp2p.h
|
||
|
--- iptables.old/include/linux/netfilter_ipv4/ipt_ipp2p.h 1970-01-01 01:00:00.000000000 +0100
|
||
|
+++ iptables.dev/include/linux/netfilter_ipv4/ipt_ipp2p.h 2006-03-23 14:44:26.000000000 +0100
|
||
|
@@ -0,0 +1,31 @@
|
||
![]()
20 years ago
|
+#ifndef __IPT_IPP2P_H
|
||
|
+#define __IPT_IPP2P_H
|
||
![]()
19 years ago
|
+#define IPP2P_VERSION "0.8.1_rc1"
|
||
![]()
20 years ago
|
+
|
||
|
+struct ipt_p2p_info {
|
||
|
+ int cmd;
|
||
|
+ int debug;
|
||
|
+};
|
||
|
+
|
||
|
+#endif //__IPT_IPP2P_H
|
||
|
+
|
||
|
+#define SHORT_HAND_IPP2P 1 /* --ipp2p switch*/
|
||
![]()
19 years ago
|
+//#define SHORT_HAND_DATA 4 /* --ipp2p-data switch*/
|
||
![]()
20 years ago
|
+#define SHORT_HAND_NONE 5 /* no short hand*/
|
||
|
+
|
||
![]()
19 years ago
|
+#define IPP2P_EDK (1 << 1)
|
||
|
+#define IPP2P_DATA_KAZAA (1 << 2)
|
||
|
+#define IPP2P_DATA_EDK (1 << 3)
|
||
|
+#define IPP2P_DATA_DC (1 << 4)
|
||
|
+#define IPP2P_DC (1 << 5)
|
||
|
+#define IPP2P_DATA_GNU (1 << 6)
|
||
|
+#define IPP2P_GNU (1 << 7)
|
||
|
+#define IPP2P_KAZAA (1 << 8)
|
||
|
+#define IPP2P_BIT (1 << 9)
|
||
|
+#define IPP2P_APPLE (1 << 10)
|
||
|
+#define IPP2P_SOUL (1 << 11)
|
||
|
+#define IPP2P_WINMX (1 << 12)
|
||
|
+#define IPP2P_ARES (1 << 13)
|
||
|
+#define IPP2P_MUTE (1 << 14)
|
||
|
+#define IPP2P_WASTE (1 << 15)
|
||
|
+#define IPP2P_XDCC (1 << 16)
|