All of lore.kernel.org
 help / color / mirror / Atom feed
* Patch for geoip to make it work with Linux kernel 2.6.22.x
       [not found] <twig.1177771162.67234@bugmachine.ca>
@ 2007-07-10 15:44 ` Svein Olav Bjerkeset
  2007-07-10 16:58   ` Jan Engelhardt
  2007-07-10 17:04   ` Samuel Jean
  0 siblings, 2 replies; 9+ messages in thread
From: Svein Olav Bjerkeset @ 2007-07-10 15:44 UTC (permalink / raw)
  To: jix; +Cc: netfilter-devel

Hi,

After upgrading to kernel 2.6.22, I found that the geoip patchlet did not 
compile.
I have made a patch that works on my system with kernel 2.6.22.

The patch is against geoip match as of Dec 6th 2006 from 
http://people.netfilter.org/peejix/patchlets/
I made a patch for kernel 2.6.21 as well, but it has not been applied to the 
official geoip patchlet, and is therefor included in this patch.

You can download the patch by using the following URL:
http://bjerkeset.com/patches/geoip-match-2.6.22.patch.gz

Regards
Svein Olav Bjerkeset, 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-10 15:44 ` Patch for geoip to make it work with Linux kernel 2.6.22.x Svein Olav Bjerkeset
@ 2007-07-10 16:58   ` Jan Engelhardt
  2007-07-10 17:57     ` Svein Olav Bjerkeset
  2007-07-10 23:26     ` patric
  2007-07-10 17:04   ` Samuel Jean
  1 sibling, 2 replies; 9+ messages in thread
From: Jan Engelhardt @ 2007-07-10 16:58 UTC (permalink / raw)
  To: Svein Olav Bjerkeset; +Cc: jix, netfilter-devel


On Jul 10 2007 17:44, Svein Olav Bjerkeset wrote:
>
> After upgrading to kernel 2.6.22, I found that the geoip patchlet did not
> compile.
> I have made a patch that works on my system with kernel 2.6.22.
>[...]
> You can download the patch by using the following URL:
> http://bjerkeset.com/patches/geoip-match-2.6.22.patch.gz

>diff -urN geoip-20061206/linux-2.6/net/ipv4/netfilter/ipt_geoip.c geoip/linux-2.6/net/ipv4/netfilter/ipt_geoip.c
>--- geoip-20061206/linux-2.6/net/ipv4/netfilter/ipt_geoip.c	2006-12-06 03:47:46.000000000 +0100
>+++ geoip/linux-2.6/net/ipv4/netfilter/ipt_geoip.c	2007-07-10 17:17:11.599991698 +0200
>@@ -110,7 +110,11 @@
> {
>    const struct ipt_geoip_info *info = matchinfo;
>    const struct geoip_info *node; /* This keeps the code sexy */
>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
>+   const struct iphdr *iph = ip_hdr(skb);
>+#else
>    const struct iphdr *iph = skb->nh.iph;
>+#endif
>    u_int32_t ip, j;
>    u_int8_t i;
> 
>@@ -276,7 +280,10 @@
> }
> 
> static struct ipt_match geoip_match = {

ipt_match is not defined anymore, and hence should have thrown a compile error
right away.

>-   .name    = "geoip",
>+   .name       = "geoip",
>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>+   .family     = AF_INET,
>+#endif

.family and is required when using xt_register_match.
xt_register_match exists since at least 2.6.18.

>    .match      = &match,
> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
>    .matchsize  = sizeof (struct ipt_geoip_info),
>@@ -288,12 +295,20 @@
> 
> static int __init init(void)
> {
>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>+   return xt_register_match(&geoip_match);
>+#else
>    return ipt_register_match(&geoip_match);
>+#endif
> }
> 
> static void __exit fini(void)
> {
>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>+  xt_unregister_match(&geoip_match);
>+#else
>   ipt_unregister_match(&geoip_match);
>+#endif
>   return;
> }
> 



	Jan
-- 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-10 15:44 ` Patch for geoip to make it work with Linux kernel 2.6.22.x Svein Olav Bjerkeset
  2007-07-10 16:58   ` Jan Engelhardt
@ 2007-07-10 17:04   ` Samuel Jean
  1 sibling, 0 replies; 9+ messages in thread
From: Samuel Jean @ 2007-07-10 17:04 UTC (permalink / raw)
  To: Svein Olav Bjerkeset; +Cc: netfilter-devel

On Tue, Jul 10, 2007, Svein Olav Bjerkeset <svein.olav@bjerkeset.com>
said:

> I made a patch for kernel 2.6.21 as well, but it has not been applied to the 
> official geoip patchlet, and is therefor included in this patch.

I am sorry for that, Svein. I merged your patch with my local SVN geoip
version but I had some compiler errors (not related with your patch).

I've got no time to debug, fix, test and release it yet.

> You can download the patch by using the following URL:
> http://bjerkeset.com/patches/geoip-match-2.6.22.patch.gz

Thank you!

Regards,
Samuel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-10 16:58   ` Jan Engelhardt
@ 2007-07-10 17:57     ` Svein Olav Bjerkeset
  2007-07-10 18:10       ` Jan Engelhardt
  2007-07-10 23:26     ` patric
  1 sibling, 1 reply; 9+ messages in thread
From: Svein Olav Bjerkeset @ 2007-07-10 17:57 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: jix, netfilter-devel

Hi,

In the kernel (2.6.22) I downloaded from www.kernel.org yesterday, ipt_match 
is certainly defined:

highbury:/opt/kernel> grep ipt_match 
linux-2.6.22/include/linux/netfilter_ipv4/ip_tables.h
#define ipt_match xt_match

Whether the code should use xt_match directly instead of ipt_match, is 
another matter. I have just made the changes needed to get the patchlet to 
compile and work. I do not know the netfilter or geoip code well enough to 
tidy up the code in general. Maybe Samuel can comment on this issue?

As for xt_register_match, it may have existed before 2.6.21, but as far as I 
can recall, it was not until 2.6.21 that ipt_register_match was removed, and 
geoip match compiled/worked with ipt_register_match until 2.6.21. I did not 
quite understand what you were saying about .family and xt_register_match?

Regards,
Svein Olav Bjerkeset

----- Original Message ----- 
From: "Jan Engelhardt" <jengelh@computergmbh.de>
To: "Svein Olav Bjerkeset" <svein.olav@bjerkeset.com>
Cc: <jix@bugmachine.ca>; <netfilter-devel@lists.netfilter.org>
Sent: Tuesday, July 10, 2007 6:58 PM
Subject: Re: Patch for geoip to make it work with Linux kernel 2.6.22.x


>
> On Jul 10 2007 17:44, Svein Olav Bjerkeset wrote:
>>
>> After upgrading to kernel 2.6.22, I found that the geoip patchlet did not
>> compile.
>> I have made a patch that works on my system with kernel 2.6.22.
>>[...]
>> You can download the patch by using the following URL:
>> http://bjerkeset.com/patches/geoip-match-2.6.22.patch.gz
>
>>diff -urN geoip-20061206/linux-2.6/net/ipv4/netfilter/ipt_geoip.c 
>>geoip/linux-2.6/net/ipv4/netfilter/ipt_geoip.c
>>--- geoip-20061206/linux-2.6/net/ipv4/netfilter/ipt_geoip.c 2006-12-06 
>>03:47:46.000000000 +0100
>>+++ geoip/linux-2.6/net/ipv4/netfilter/ipt_geoip.c 2007-07-10 
>>17:17:11.599991698 +0200
>>@@ -110,7 +110,11 @@
>> {
>>    const struct ipt_geoip_info *info = matchinfo;
>>    const struct geoip_info *node; /* This keeps the code sexy */
>>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
>>+   const struct iphdr *iph = ip_hdr(skb);
>>+#else
>>    const struct iphdr *iph = skb->nh.iph;
>>+#endif
>>    u_int32_t ip, j;
>>    u_int8_t i;
>>
>>@@ -276,7 +280,10 @@
>> }
>>
>> static struct ipt_match geoip_match = {
>
> ipt_match is not defined anymore, and hence should have thrown a compile 
> error
> right away.
>
>>-   .name    = "geoip",
>>+   .name       = "geoip",
>>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>>+   .family     = AF_INET,
>>+#endif
>
> .family and is required when using xt_register_match.
> xt_register_match exists since at least 2.6.18.
>
>>    .match      = &match,
>> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
>>    .matchsize  = sizeof (struct ipt_geoip_info),
>>@@ -288,12 +295,20 @@
>>
>> static int __init init(void)
>> {
>>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>>+   return xt_register_match(&geoip_match);
>>+#else
>>    return ipt_register_match(&geoip_match);
>>+#endif
>> }
>>
>> static void __exit fini(void)
>> {
>>+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>>+  xt_unregister_match(&geoip_match);
>>+#else
>>   ipt_unregister_match(&geoip_match);
>>+#endif
>>   return;
>> }
>>
>
>
>
> Jan
> -- 
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-10 17:57     ` Svein Olav Bjerkeset
@ 2007-07-10 18:10       ` Jan Engelhardt
  0 siblings, 0 replies; 9+ messages in thread
From: Jan Engelhardt @ 2007-07-10 18:10 UTC (permalink / raw)
  To: Svein Olav Bjerkeset; +Cc: jix, netfilter-devel


On Jul 10 2007 19:57, Svein Olav Bjerkeset wrote:
>
> As for xt_register_match, it may have existed before 2.6.21, but as far as I
> can recall, it was not until 2.6.21 that ipt_register_match was removed, and
> geoip match compiled/worked with ipt_register_match until 2.6.21. I did not
> quite understand what you were saying about .family and xt_register_match?

'was saying that when using xt_register_match(), you _do_ need the ".family"
member in xt_match, because this is what ipt_register_match is:

#define ipt_register_match(x) \
	do { \
		(x)->family = AF_INET; \
		xt_register_match(x); \
	} while (0);


	Jan
-- 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-10 16:58   ` Jan Engelhardt
  2007-07-10 17:57     ` Svein Olav Bjerkeset
@ 2007-07-10 23:26     ` patric
  2007-07-11 17:39       ` Jan Engelhardt
  1 sibling, 1 reply; 9+ messages in thread
From: patric @ 2007-07-10 23:26 UTC (permalink / raw)
  To: netfilter-devel

Hi,


Just wanted to repost that there is a userspace daemon for this too..

http://bladerunner.mine.nu/CJ/


So if there is a bug in the code only the daemon fails and not the 
entire kernel.. =)

It also eliminates the issues with kernel-revision incompatibility and 
should make  it easier for people to setup. Have not really had any time 
lately to work anything on this, but current release seems to be stable 
and has a current uptime of around a month (my last reboot of that system).


Just don't laugh to much when reading the code... LOTS of really ugly 
code, but it works..  :)


/Patric



Jan Engelhardt wrote:

> On Jul 10 2007 17:44, Svein Olav Bjerkeset wrote:
>   
>> After upgrading to kernel 2.6.22, I found that the geoip patchlet did not
>> compile.
>> I have made a patch that works on my system with kernel 2.6.22.
>> [...]
>> You can download the patch by using the following URL:
>> http://bjerkeset.com/patches/geoip-match-2.6.22.patch.gz
>>     
>
>   
>> diff -urN geoip-20061206/linux-2.6/net/ipv4/netfilter/ipt_geoip.c geoip/linux-2.6/net/ipv4/netfilter/ipt_geoip.c
>> --- geoip-20061206/linux-2.6/net/ipv4/netfilter/ipt_geoip.c	2006-12-06 03:47:46.000000000 +0100
>> +++ geoip/linux-2.6/net/ipv4/netfilter/ipt_geoip.c	2007-07-10 17:17:11.599991698 +0200
>> @@ -110,7 +110,11 @@
>> {
>>    const struct ipt_geoip_info *info = matchinfo;
>>    const struct geoip_info *node; /* This keeps the code sexy */
>> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
>> +   const struct iphdr *iph = ip_hdr(skb);
>> +#else
>>    const struct iphdr *iph = skb->nh.iph;
>> +#endif
>>    u_int32_t ip, j;
>>    u_int8_t i;
>>
>> @@ -276,7 +280,10 @@
>> }
>>
>> static struct ipt_match geoip_match = {
>>     
>
> ipt_match is not defined anymore, and hence should have thrown a compile error
> right away.
>
>   
>> -   .name    = "geoip",
>> +   .name       = "geoip",
>> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>> +   .family     = AF_INET,
>> +#endif
>>     
>
> .family and is required when using xt_register_match.
> xt_register_match exists since at least 2.6.18.
>
>   
>>    .match      = &match,
>> #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
>>    .matchsize  = sizeof (struct ipt_geoip_info),
>> @@ -288,12 +295,20 @@
>>
>> static int __init init(void)
>> {
>> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>> +   return xt_register_match(&geoip_match);
>> +#else
>>    return ipt_register_match(&geoip_match);
>> +#endif
>> }
>>
>> static void __exit fini(void)
>> {
>> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
>> +  xt_unregister_match(&geoip_match);
>> +#else
>>   ipt_unregister_match(&geoip_match);
>> +#endif
>>   return;
>> }
>>
>>     
>
>
>
> 	Jan
>   

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-10 23:26     ` patric
@ 2007-07-11 17:39       ` Jan Engelhardt
  2007-07-11 19:34         ` patric
  0 siblings, 1 reply; 9+ messages in thread
From: Jan Engelhardt @ 2007-07-11 17:39 UTC (permalink / raw)
  To: patric; +Cc: netfilter-devel


On Jul 11 2007 01:26, patric wrote:
>
> Just wanted to repost that there is a userspace daemon for this too..
>
> http://bladerunner.mine.nu/CJ/
>
> So if there is a bug in the code only the daemon fails and not the entire
> kernel.. =)
>
> It also eliminates the issues with kernel-revision incompatibility and should
> make  it easier for people to setup.

As far as I know you can only have one NFQUEUE userspace program at a time.

> Have not really had any time lately to
> work anything on this, but current release seems to be stable and has a current
> uptime of around a month (my last reboot of that system).
>
>
> Just don't laugh to much when reading the code... LOTS of really ugly code, but
> it works..  :)
>

	Jan
-- 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-11 17:39       ` Jan Engelhardt
@ 2007-07-11 19:34         ` patric
  2007-07-11 23:35           ` patric
  0 siblings, 1 reply; 9+ messages in thread
From: patric @ 2007-07-11 19:34 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: netfilter-devel

Yea, that's true as far as i know too.... And that's one con with this...


/Patric


Jan Engelhardt wrote:

> On Jul 11 2007 01:26, patric wrote:
>   
>> Just wanted to repost that there is a userspace daemon for this too..
>>
>> http://bladerunner.mine.nu/CJ/
>>
>> So if there is a bug in the code only the daemon fails and not the entire
>> kernel.. =)
>>
>> It also eliminates the issues with kernel-revision incompatibility and should
>> make  it easier for people to setup.
>>     
>
> As far as I know you can only have one NFQUEUE userspace program at a time.
>
>   
>> Have not really had any time lately to
>> work anything on this, but current release seems to be stable and has a current
>> uptime of around a month (my last reboot of that system).
>>
>>
>> Just don't laugh to much when reading the code... LOTS of really ugly code, but
>> it works..  :)
>>
>>     
>
> 	Jan
>   

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Patch for geoip to make it work with Linux kernel 2.6.22.x
  2007-07-11 19:34         ` patric
@ 2007-07-11 23:35           ` patric
  0 siblings, 0 replies; 9+ messages in thread
From: patric @ 2007-07-11 23:35 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: netfilter-devel

Or... just did some research on this, and there is a possibility for 
multiple queues...


----------------------------------------------------

NFQUEUE target

The NFQUEUE target is used much the same way as the QUEUE target, and is 
basically an extension of it. The NFQUEUE target allows for sending 
packets for separate and specific queues. The queue is identified by a 
16-bit id.

This target requires the nfnetlink_queue kernel support to run. For more 
information on what you can do with the NFQUEUE target, see the QUEUE 
target.

Table 11-12. NFQUEUE target options
Option    --queue-num
Example    iptables -t nat -A PREROUTING -p tcp --dport 80 -j NFQUEUE 
--queue-num 30
Explanation    The --queue-num option specifies which queue to use and 
to send the queue'd data to. If this option is skipped, the default 
queue 0 is used. The queue number is a 16 bit unsigned integer, which 
means it can take any value between 0 and 65535. The default 0 queue is 
also used by the QUEUE target.

* Works under Linux kernel 2.6.14 and later.
---------------------------------------------------

So i think it's time to update the kernel and do some mods on my code :)


/Patric




patric wrote:

> Yea, that's true as far as i know too.... And that's one con with this...
>
>
> /Patric
>
>
> Jan Engelhardt wrote:
>
>> On Jul 11 2007 01:26, patric wrote:
>>  
>>> Just wanted to repost that there is a userspace daemon for this too..
>>>
>>> http://bladerunner.mine.nu/CJ/
>>>
>>> So if there is a bug in the code only the daemon fails and not the 
>>> entire
>>> kernel.. =)
>>>
>>> It also eliminates the issues with kernel-revision incompatibility 
>>> and should
>>> make  it easier for people to setup.
>>>     
>>
>> As far as I know you can only have one NFQUEUE userspace program at a 
>> time.
>>
>>  
>>> Have not really had any time lately to
>>> work anything on this, but current release seems to be stable and 
>>> has a current
>>> uptime of around a month (my last reboot of that system).
>>>
>>>
>>> Just don't laugh to much when reading the code... LOTS of really 
>>> ugly code, but
>>> it works..  :)
>>>
>>>     
>>
>>     Jan
>>   
>
>
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2007-07-11 23:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <twig.1177771162.67234@bugmachine.ca>
2007-07-10 15:44 ` Patch for geoip to make it work with Linux kernel 2.6.22.x Svein Olav Bjerkeset
2007-07-10 16:58   ` Jan Engelhardt
2007-07-10 17:57     ` Svein Olav Bjerkeset
2007-07-10 18:10       ` Jan Engelhardt
2007-07-10 23:26     ` patric
2007-07-11 17:39       ` Jan Engelhardt
2007-07-11 19:34         ` patric
2007-07-11 23:35           ` patric
2007-07-10 17:04   ` Samuel Jean

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.