From: Eicke Friedrich <tady@gmx.net>
To: netfilter-devel@lists.netfilter.org
Subject: [PATCH] IPP2P update to 0.6.1
Date: Fri, 10 Sep 2004 11:17:03 +0200 [thread overview]
Message-ID: <4141710F.7040303@gmx.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 353 bytes --]
Hi folks,
a patch against latest pom-ng snapshot is attached containing an
update to the current ipp2p code. It offers first support for WinMX
packets (beta - please come back to me with any feedback) and some
code cleanup (spaces). Please apply.
Regards,
Eicke.
PS: is the script creating daily snapshots of pom-ng at
ftp.netfilter.org not running?
[-- Attachment #2: ipp2p-0.6.1.diff --]
[-- Type: text/plain, Size: 11568 bytes --]
diff -Nru patch-o-matic-ng-orig/ipp2p/iptables/extensions/libipt_ipp2p.c patch-o-matic-ng-new/ipp2p/iptables/extensions/libipt_ipp2p.c
--- patch-o-matic-ng-orig/ipp2p/iptables/extensions/libipt_ipp2p.c 2004-07-13 13:43:15.000000000 +0200
+++ patch-o-matic-ng-new/ipp2p/iptables/extensions/libipt_ipp2p.c 2004-09-10 11:06:34.442282680 +0200
@@ -1,4 +1,3 @@
-
#include <stdio.h>
#include <netdb.h>
#include <string.h>
@@ -19,18 +18,19 @@
printf(
"IPP2P v%s options:\n"
" --ipp2p Grab all known p2p packets\n"
- " --ipp2p-data Grab all known p2p data packets\n"
- " --edk Grab all known eDonkey/eMule/Overnet packets\n"
+ " --ipp2p-data Grab all known p2p data packets\n"
+ " --edk Grab all known eDonkey/eMule/Overnet packets\n"
" --edk-data Grab all eDonkey/eMule/Overnet data packets\n"
" --dc Grab all known Direct Connect packets\n"
" --dc-data Grab all Direct Connect data packets\n"
- " --kazaa Grab all KaZaA packets\n"
+ " --kazaa Grab all KaZaA packets\n"
" --kazaa-data Grab all KaZaA data packets\n"
- " --gnu Grab all Gnutella packets\n"
+ " --gnu Grab all Gnutella packets\n"
" --gnu-data Grab all Gnutella data packets\n"
- " --bit Grab all BitTorrent packets\n"
+ " --bit Grab all BitTorrent packets\n"
" --apple Grab all AppleJuice packets (beta - just a few tests until now)\n"
" --soul SoulSeek (beta - handle with care)\n"
+ " --winmx WinMX (beta - handle with care)\n"
"\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"
@@ -43,18 +43,19 @@
static struct option opts[] = {
{ "ipp2p", 0, 0, '1' },
- { "edk", 0, 0, '2' },
- { "ipp2p-data", 0, 0, '3' },
+ { "edk", 0, 0, '2' },
+ { "ipp2p-data", 0, 0, '3' },
{ "kazaa-data", 0, 0, '4' },
- { "edk-data", 0, 0, '5' },
+ { "edk-data", 0, 0, '5' },
{ "dc-data", 0, 0, '6' },
{ "dc", 0, 0, '7' },
- { "gnu-data", 0, 0, '8' },
+ { "gnu-data", 0, 0, '8' },
{ "gnu", 0, 0, '9' },
{ "kazaa", 0, 0, 'a' },
{ "bit", 0, 0, 'b' },
- { "apple", 0, 0, 'c' },
- { "soul", 0, 0, 'd' },
+ { "apple", 0, 0, 'c' },
+ { "soul", 0, 0, 'd' },
+ { "winmx", 0, 0, 'e' },
{0}
};
@@ -348,6 +349,18 @@
break;
+ case 'e': /*cmd: winmx*/
+ if ((*flags & IPP2P_WINMX) == IPP2P_WINMX)
+ exit_error(PARAMETER_PROBLEM,
+ "ipp2p: `--winmx' may only be "
+ "specified once!");
+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
+
+ *flags += IPP2P_WINMX;
+ info->cmd = *flags;
+ break;
+
+
default:
exit_error(PARAMETER_PROBLEM,
"\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
@@ -377,17 +390,18 @@
printf("ipp2p v%s", IPP2P_VERSION);
if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf(" --ipp2p");
if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf(" --ipp2p-data");
- if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf(" --kazaa");
+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf(" --kazaa");
if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf(" --kazaa-data");
- if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf(" --gnu-data");
+ if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf(" --gnu-data");
if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf(" --gnu");
- if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf(" --edk");
- if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf(" --edk-data");
+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf(" --edk");
+ if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf(" --edk-data");
if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf(" --dc-data");
- 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_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");
printf(" ");
}
@@ -400,17 +414,18 @@
if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf("--ipp2p ");
if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf("--ipp2p-data ");
- if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf("--kazaa ");
+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf("--kazaa ");
if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf("--kazaa-data ");
- if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf("--gnu-data ");
+ if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf("--gnu-data ");
if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf("--gnu ");
- if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf("--edk ");
- if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf("--edk-data ");
+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf("--edk ");
+ if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf("--edk-data ");
if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf("--dc-data ");
- 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_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 ");
}
diff -Nru patch-o-matic-ng-orig/ipp2p/iptables/extensions/libipt_ipp2p.man patch-o-matic-ng-new/ipp2p/iptables/extensions/libipt_ipp2p.man
--- patch-o-matic-ng-orig/ipp2p/iptables/extensions/libipt_ipp2p.man 2004-07-13 13:43:15.000000000 +0200
+++ patch-o-matic-ng-new/ipp2p/iptables/extensions/libipt_ipp2p.man 2004-09-10 09:36:30.031877944 +0200
@@ -26,6 +26,9 @@
.B "--soul "
Matches some SoulSeek packets. Considered as beta, use careful!
.TP
+.B "--winmx "
+Matches some WinMX packets. Considered as beta, use careful!
+.TP
.B "--edk-data "
Matches eDonkey control packets initiating a download.
.TP
diff -Nru patch-o-matic-ng-orig/ipp2p/linux/include/linux/netfilter_ipv4/ipt_ipp2p.h patch-o-matic-ng-new/ipp2p/linux/include/linux/netfilter_ipv4/ipt_ipp2p.h
--- patch-o-matic-ng-orig/ipp2p/linux/include/linux/netfilter_ipv4/ipt_ipp2p.h 2004-07-13 13:43:15.000000000 +0200
+++ patch-o-matic-ng-new/ipp2p/linux/include/linux/netfilter_ipv4/ipt_ipp2p.h 2004-09-10 09:30:02.129848016 +0200
@@ -1,6 +1,6 @@
#ifndef __IPT_IPP2P_H
#define __IPT_IPP2P_H
-#define IPP2P_VERSION "0.6"
+#define IPP2P_VERSION "0.6.1"
struct ipt_p2p_info {
int cmd;
@@ -22,5 +22,6 @@
#define IPP2P_BIT 1024
#define IPP2P_APPLE 2048
#define IPP2P_SOUL 4096
+#define IPP2P_WINMX 8192
#endif /*__IPT_IPP2P_H*/
diff -Nru patch-o-matic-ng-orig/ipp2p/linux/net/ipv4/netfilter/ipt_ipp2p.c patch-o-matic-ng-new/ipp2p/linux/net/ipv4/netfilter/ipt_ipp2p.c
--- patch-o-matic-ng-orig/ipp2p/linux/net/ipv4/netfilter/ipt_ipp2p.c 2004-07-13 13:43:15.000000000 +0200
+++ patch-o-matic-ng-new/ipp2p/linux/net/ipv4/netfilter/ipt_ipp2p.c 2004-09-10 11:01:56.511534576 +0200
@@ -35,6 +35,37 @@
}
+/*Search for WinMX commands*/
+int
+search_winmx (unsigned char *haystack, int packet_len, int head_len)
+{
+ unsigned char *t = haystack;
+ int c;
+ t += head_len;
+
+ if (((packet_len - head_len) == 4) && (memcmp(t, "SEND", 4) == 0)) return 1;
+ if (packet_len < (head_len + 10)) return 0;
+
+ if (memcmp(t, "SEND", 4) == 0){
+ c = head_len + 4;
+ t += 4;
+ while (c < packet_len - 5) {
+ if ((t[0] == 0x20) && (t[1] == 0x22)) {
+ c += 2;
+ t += 2;
+ while (c < packet_len - 2) {
+ if ((t[0] == 0x22) && (t[1] == 0x20)) return 1;
+ t++;
+ c++;
+ }
+ }
+ t++;
+ c++;
+ }
+ }
+ return 0;
+
+} /*search_winmx*/
/*Search for appleJuice commands*/
int
@@ -330,6 +361,7 @@
{IPP2P_BIT,SHORT_HAND_NONE,40, &search_bittorrent},
{IPP2P_APPLE,SHORT_HAND_NONE,20, &search_apple},
{IPP2P_SOUL,SHORT_HAND_NONE,20, &search_soul},
+ {IPP2P_WINMX,SHORT_HAND_NONE,20, &search_winmx},
{0,0,0,NULL}
};
diff -Nru patch-o-matic-ng-orig/ipp2p/linux-2.6/include/linux/netfilter_ipv4/ipt_ipp2p.h patch-o-matic-ng-new/ipp2p/linux-2.6/include/linux/netfilter_ipv4/ipt_ipp2p.h
--- patch-o-matic-ng-orig/ipp2p/linux-2.6/include/linux/netfilter_ipv4/ipt_ipp2p.h 2004-07-13 13:43:15.000000000 +0200
+++ patch-o-matic-ng-new/ipp2p/linux-2.6/include/linux/netfilter_ipv4/ipt_ipp2p.h 2004-09-10 09:29:22.119930448 +0200
@@ -1,6 +1,6 @@
#ifndef __IPT_IPP2P_H
#define __IPT_IPP2P_H
-#define IPP2P_VERSION "0.6"
+#define IPP2P_VERSION "0.6.1"
struct ipt_p2p_info {
int cmd;
@@ -22,5 +22,6 @@
#define IPP2P_BIT 1024
#define IPP2P_APPLE 2048
#define IPP2P_SOUL 4096
+#define IPP2P_WINMX 8192
#endif /*__IPT_IPP2P_H*/
diff -Nru patch-o-matic-ng-orig/ipp2p/linux-2.6/net/ipv4/netfilter/ipt_ipp2p.c patch-o-matic-ng-new/ipp2p/linux-2.6/net/ipv4/netfilter/ipt_ipp2p.c
--- patch-o-matic-ng-orig/ipp2p/linux-2.6/net/ipv4/netfilter/ipt_ipp2p.c 2004-07-13 13:43:15.000000000 +0200
+++ patch-o-matic-ng-new/ipp2p/linux-2.6/net/ipv4/netfilter/ipt_ipp2p.c 2004-09-10 11:02:17.171393800 +0200
@@ -32,6 +32,38 @@
}
+/*Search for WinMX commands*/
+int
+search_winmx (unsigned char *haystack, int packet_len, int head_len)
+{
+ unsigned char *t = haystack;
+ int c;
+ t += head_len;
+
+ if (((packet_len - head_len) == 4) && (memcmp(t, "SEND", 4) == 0)) return 1;
+ if (packet_len < (head_len + 10)) return 0;
+
+ if (memcmp(t, "SEND", 4) == 0){
+ c = head_len + 4;
+ t += 4;
+ while (c < packet_len - 5) {
+ if ((t[0] == 0x20) && (t[1] == 0x22)) {
+ c += 2;
+ t += 2;
+ while (c < packet_len - 2) {
+ if ((t[0] == 0x22) && (t[1] == 0x20)) return 1;
+ t++;
+ c++;
+ }
+ }
+ t++;
+ c++;
+ }
+ }
+ return 0;
+
+} /*search_winmx*/
+
/*Search for appleJuice commands*/
int
search_apple (unsigned char *haystack, int packet_len, int head_len)
@@ -326,6 +358,7 @@
{IPP2P_BIT,SHORT_HAND_NONE,40, &search_bittorrent},
{IPP2P_APPLE,SHORT_HAND_NONE,20, &search_apple},
{IPP2P_SOUL,SHORT_HAND_NONE,20, &search_soul},
+ {IPP2P_WINMX,SHORT_HAND_NONE,20, &search_winmx},
{0,0,0,NULL}
};
next reply other threads:[~2004-09-10 9:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-10 9:17 Eicke Friedrich [this message]
2004-09-12 22:29 ` [PATCH] IPP2P update to 0.6.1 Patrick McHardy
2004-09-14 7:12 ` Harald Welte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4141710F.7040303@gmx.net \
--to=tady@gmx.net \
--cc=netfilter-devel@lists.netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.