From 2d4a4c400ba278c7ddae095e757e01ca77b7e202 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 17 Aug 2008 15:52:07 +0000 Subject: [PATCH] Patched ipp2p to work with the new kernel. --- make.sh | 4 ++-- src/ipp2p/ipt_ipp2p.c | 45 +++++++++++++++++++++++++++++-------------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/make.sh b/make.sh index e7a1c0f25a..a6b1fde994 100755 --- a/make.sh +++ b/make.sh @@ -347,7 +347,7 @@ buildipfire() { # ipfiremake openswan KMOD=1 SMP=1 ipfiremake linux ipfiremake linux-fusion -# ipfiremake ipp2p + ipfiremake ipp2p ipfiremake r8169 ipfiremake r8168 ipfiremake atl2 @@ -420,7 +420,7 @@ buildipfire() { ipfiremake whatmask ipfiremake iptables ipfiremake libupnp -# ipfiremake ipp2p IPT=1 + ipfiremake ipp2p IPT=1 ipfiremake linux-igd ipfiremake ipaddr ipfiremake iptstate diff --git a/src/ipp2p/ipt_ipp2p.c b/src/ipp2p/ipt_ipp2p.c index 29f6e7a429..9a37f59e7f 100644 --- a/src/ipp2p/ipt_ipp2p.c +++ b/src/ipp2p/ipt_ipp2p.c @@ -2,9 +2,18 @@ #include #endif #include -#include #include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21) +# include +# define ipt_register_match xt_register_match +# define ipt_unregister_match xt_unregister_match +# define ipt_match xt_match +#else +# include //#include +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21) */ + #include "ipt_ipp2p.h" #include #include @@ -725,7 +734,11 @@ static struct { }; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +static bool +#else static int +#endif match(const struct sk_buff *skb, const struct net_device *in, const struct net_device *out, @@ -744,11 +757,19 @@ match(const struct sk_buff *skb, u_int16_t datalen, #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) + bool *hotdrop) +#else int *hotdrop) +#endif { const struct ipt_p2p_info *info = matchinfo; unsigned char *haystack; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) + struct iphdr *ip = ip_hdr(skb); +#else struct iphdr *ip = skb->nh.iph; +#endif int p2p_result = 0, i = 0; // int head_len; int hlen = ntohs(ip->tot_len)-(ip->ihl*4); /*hlen = packet-data length*/ @@ -822,7 +843,11 @@ match(const struct sk_buff *skb, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +static bool +#else static int +#endif checkentry(const char *tablename, #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17) const void *ip, @@ -831,7 +856,9 @@ checkentry(const char *tablename, const struct ipt_ip *ip, #endif void *matchinfo, +#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,18) unsigned int matchsize, +#endif unsigned int hook_mask) { /* Must specify -p tcp */ @@ -843,15 +870,6 @@ checkentry(const char *tablename, } -// TODO: find out what this structure is for (scheme taken -// from kernel sources) -// content seems to have a length of 8 bytes -// (at least on my x86 machine) -struct ipp2p_match_info { - long int dunno_what_this_is_for; - long int i_also_dunno_what_this_is_for; -}; - static struct ipt_match ipp2p_match = { #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) { NULL, NULL }, @@ -860,17 +878,16 @@ static struct ipt_match ipp2p_match = { &checkentry, NULL, THIS_MODULE -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)) +#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17) .name = "ipp2p", .match = &match, .checkentry = &checkentry, .me = THIS_MODULE, -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17) +#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17) */ .name = "ipp2p", .match = &match, .family = AF_INET, - .matchsize = sizeof(struct ipp2p_match_info), + .matchsize = XT_ALIGN(sizeof(struct ipt_p2p_info)), .checkentry = &checkentry, .me = THIS_MODULE, #endif -- 2.39.2