* xtables-addons: make ipv6 optional for RAWNAT and SYSRQ
@ 2010-02-19 11:52 Peter Volkov
2010-02-19 13:14 ` Jan Engelhardt
2010-02-23 23:34 ` Jan Engelhardt
0 siblings, 2 replies; 5+ messages in thread
From: Peter Volkov @ 2010-02-19 11:52 UTC (permalink / raw)
To: netfilter-devel
[-- Attachment #1: Type: text/plain, Size: 173 bytes --]
Hi, in case kernel was built without ipv6 support xt_RAWNAT and xt_SYSRQ
fail to load with unknown symbols. Patches in attachment fix this issue.
Please, apply.
--
Peter.
[-- Attachment #2: 0001-RAWNAT-make-ipv6-support-conditional.patch --]
[-- Type: text/x-patch, Size: 3230 bytes --]
>From 646fd4275f91a6e10823b1d6ad2df1581aec7bb5 Mon Sep 17 00:00:00 2001
From: Peter Volkov <pva@gentoo.org>
Date: Fri, 19 Feb 2010 14:06:00 +0300
Subject: [PATCH 1/2] RAWNAT: make ipv6 support conditional
In case kernel is built without ipv6 support this module fails as it
assumes ipv6. This patch makes kernel support conditional on kernel
.config.
---
extensions/ip6table_rawpost.c | 4 ++++
extensions/xt_RAWNAT.c | 12 ++++++++++++
2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/extensions/ip6table_rawpost.c b/extensions/ip6table_rawpost.c
index 1cd9b26..c1e6102 100644
--- a/extensions/ip6table_rawpost.c
+++ b/extensions/ip6table_rawpost.c
@@ -9,6 +9,8 @@
#include "compat_xtables.h"
#include "compat_rawpost.h"
+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
+
enum {
RAWPOST_VALID_HOOKS = 1 << NF_INET_POST_ROUTING,
};
@@ -105,3 +107,5 @@ module_init(rawpost6_table_init);
module_exit(rawpost6_table_exit);
MODULE_AUTHOR("Jan Engelhardt <jengelh@medozas.de>");
MODULE_LICENSE("GPL");
+
+#endif
diff --git a/extensions/xt_RAWNAT.c b/extensions/xt_RAWNAT.c
index 18661a9..b8c7bc7 100644
--- a/extensions/xt_RAWNAT.c
+++ b/extensions/xt_RAWNAT.c
@@ -22,6 +22,10 @@
#include "compat_xtables.h"
#include "xt_RAWNAT.h"
+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
+# define WITH_IPV6 1
+#endif
+
static inline __be32
remask(__be32 addr, __be32 repl, unsigned int shift)
{
@@ -29,6 +33,7 @@ remask(__be32 addr, __be32 repl, unsigned int shift)
return htonl((ntohl(addr) & mask) | (ntohl(repl) & ~mask));
}
+#ifdef WITH_IPV6
static void
rawnat_ipv6_mask(__be32 *addr, const __be32 *repl, unsigned int mask)
{
@@ -72,6 +77,7 @@ rawnat_ipv6_mask(__be32 *addr, const __be32 *repl, unsigned int mask)
break;
}
}
+#endif
static void rawnat4_update_l4(struct sk_buff *skb, __be32 oldip, __be32 newip)
{
@@ -162,6 +168,7 @@ rawdnat_tg4(struct sk_buff **pskb, const struct xt_target_param *par)
return XT_CONTINUE;
}
+#ifdef WITH_IPV6
static bool rawnat6_prepare_l4(struct sk_buff **pskb, unsigned int *l4offset,
unsigned int *l4proto)
{
@@ -274,6 +281,7 @@ rawdnat_tg6(struct sk_buff **pskb, const struct xt_target_param *par)
memcpy(&iph->daddr, &new_addr, sizeof(new_addr));
return XT_CONTINUE;
}
+#endif
static bool rawnat_tg_check(const struct xt_tgchk_param *par)
{
@@ -296,6 +304,7 @@ static struct xt_target rawnat_tg_reg[] __read_mostly = {
.checkentry = rawnat_tg_check,
.me = THIS_MODULE,
},
+#ifdef WITH_IPV6
{
.name = "RAWSNAT",
.revision = 0,
@@ -305,6 +314,7 @@ static struct xt_target rawnat_tg_reg[] __read_mostly = {
.checkentry = rawnat_tg_check,
.me = THIS_MODULE,
},
+#endif
{
.name = "RAWDNAT",
.revision = 0,
@@ -314,6 +324,7 @@ static struct xt_target rawnat_tg_reg[] __read_mostly = {
.checkentry = rawnat_tg_check,
.me = THIS_MODULE,
},
+#ifdef WITH_IPV6
{
.name = "RAWDNAT",
.revision = 0,
@@ -323,6 +334,7 @@ static struct xt_target rawnat_tg_reg[] __read_mostly = {
.checkentry = rawnat_tg_check,
.me = THIS_MODULE,
},
+#endif
};
static int __init rawnat_tg_init(void)
--
1.6.4.4
[-- Attachment #3: 0002-SYSRQ-make-ipv6-support-conditional.patch --]
[-- Type: text/x-patch, Size: 1791 bytes --]
>From fdbae5d62bea5775eaf412bbcb2c3d98d26f4c02 Mon Sep 17 00:00:00 2001
From: Peter Volkov <pva@gentoo.org>
Date: Fri, 19 Feb 2010 14:46:17 +0300
Subject: [PATCH 2/2] SYSRQ: make ipv6 support conditional
In case kernel is built without ipv6 support this module fails as it
assumes ipv6. This patch makes kernel support conditional on kernel
.config.
---
extensions/xt_SYSRQ.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/extensions/xt_SYSRQ.c b/extensions/xt_SYSRQ.c
index 3cd223b..95c1184 100644
--- a/extensions/xt_SYSRQ.c
+++ b/extensions/xt_SYSRQ.c
@@ -23,6 +23,10 @@
#include <net/ip.h>
#include "compat_xtables.h"
+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
+# define WITH_IPV6 1
+#endif
+
static bool sysrq_once;
static char sysrq_password[64];
static char sysrq_hash[16] = "sha1";
@@ -214,6 +218,7 @@ sysrq_tg4(struct sk_buff **pskb, const struct xt_target_param *par)
return sysrq_tg((void *)udph + sizeof(struct udphdr), len);
}
+#ifdef WITH_IPV6
static unsigned int
sysrq_tg6(struct sk_buff **pskb, const struct xt_target_param *par)
{
@@ -242,6 +247,7 @@ sysrq_tg6(struct sk_buff **pskb, const struct xt_target_param *par)
ntohs(udph->dest), len);
return sysrq_tg(udph + sizeof(struct udphdr), len);
}
+#endif
static bool sysrq_tg_check(const struct xt_tgchk_param *par)
{
@@ -278,6 +284,7 @@ static struct xt_target sysrq_tg_reg[] __read_mostly = {
.checkentry = sysrq_tg_check,
.me = THIS_MODULE,
},
+#ifdef WITH_IPV6
{
.name = "SYSRQ",
.revision = 1,
@@ -286,6 +293,7 @@ static struct xt_target sysrq_tg_reg[] __read_mostly = {
.checkentry = sysrq_tg_check,
.me = THIS_MODULE,
},
+#endif
};
static int __init sysrq_tg_init(void)
--
1.6.4.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: xtables-addons: make ipv6 optional for RAWNAT and SYSRQ
2010-02-19 11:52 xtables-addons: make ipv6 optional for RAWNAT and SYSRQ Peter Volkov
@ 2010-02-19 13:14 ` Jan Engelhardt
2010-02-20 12:43 ` Peter Volkov
2010-02-23 23:34 ` Jan Engelhardt
1 sibling, 1 reply; 5+ messages in thread
From: Jan Engelhardt @ 2010-02-19 13:14 UTC (permalink / raw)
To: Peter Volkov; +Cc: netfilter-devel
On Friday 2010-02-19 12:52, Peter Volkov wrote:
>Hi, in case kernel was built without ipv6 support xt_RAWNAT and xt_SYSRQ
>fail to load with unknown symbols. Patches in attachment fix this issue.
>Please, apply.
For ip6table_rawpost, we could probably do this in the Kbuild file:
ifneq (${CONFIG_IPV6},)
obj-${build_RAWNAT} += ip6table_rawpost.o
endif
Can you test?
For the second patch, I would suggest to move around the structures in
rawnat_tg_reg to reduce the number of #ifdefs needed.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: xtables-addons: make ipv6 optional for RAWNAT and SYSRQ
2010-02-19 13:14 ` Jan Engelhardt
@ 2010-02-20 12:43 ` Peter Volkov
2010-02-25 0:05 ` Jan Engelhardt
0 siblings, 1 reply; 5+ messages in thread
From: Peter Volkov @ 2010-02-20 12:43 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: netfilter-devel
[-- Attachment #1: Type: text/plain, Size: 626 bytes --]
В Птн, 19/02/2010 в 14:14 +0100, Jan Engelhardt пишет:
> On Friday 2010-02-19 12:52, Peter Volkov wrote:
> For ip6table_rawpost, we could probably do this in the Kbuild file:
>
> ifneq (${CONFIG_IPV6},)
> obj-${build_RAWNAT} += ip6table_rawpost.o
> endif
>
> Can you test?
Works.
> For the second patch, I would suggest to move around the structures in
> rawnat_tg_reg to reduce the number of #ifdefs needed.
Done. Updated patch in attachment. Also added #ifdefs around ip6t
MODULE_ALIAS.
Also I've updated SYSRQ patch a bit. Added ifdefs around another IPV6
related code and around MODULE_ALIAS.
--
Peter.
[-- Attachment #2: 0001-RAWNAT-make-ipv6-support-conditional.patch --]
[-- Type: text/x-patch, Size: 3696 bytes --]
>From 097f838fe1abac456f61774a727861a719ac3df3 Mon Sep 17 00:00:00 2001
From: Peter Volkov <pva@gentoo.org>
Date: Sat, 20 Feb 2010 14:56:32 +0300
Subject: [PATCH 1/2] RAWNAT: make ipv6 support conditional
In case kernel is built without ipv6 support this module fails as it
assumes ipv6. This patch makes kernel support conditional on kernel
.config.
---
extensions/Kbuild | 5 ++++-
extensions/xt_RAWNAT.c | 24 ++++++++++++++++++------
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/extensions/Kbuild b/extensions/Kbuild
index 5588c2c..841332d 100644
--- a/extensions/Kbuild
+++ b/extensions/Kbuild
@@ -12,7 +12,10 @@ obj-${build_DHCPMAC} += xt_DHCPMAC.o
obj-${build_ECHO} += xt_ECHO.o
obj-${build_IPMARK} += xt_IPMARK.o
obj-${build_LOGMARK} += xt_LOGMARK.o
-obj-${build_RAWNAT} += xt_RAWNAT.o iptable_rawpost.o ip6table_rawpost.o
+obj-${build_RAWNAT} += xt_RAWNAT.o iptable_rawpost.o
+ifneq (${CONFIG_IPV6},)
+obj-${build_RAWNAT} += ip6table_rawpost.o
+endif
obj-${build_SYSRQ} += xt_SYSRQ.o
obj-${build_STEAL} += xt_STEAL.o
obj-${build_TARPIT} += xt_TARPIT.o
diff --git a/extensions/xt_RAWNAT.c b/extensions/xt_RAWNAT.c
index 18661a9..e743531 100644
--- a/extensions/xt_RAWNAT.c
+++ b/extensions/xt_RAWNAT.c
@@ -22,6 +22,10 @@
#include "compat_xtables.h"
#include "xt_RAWNAT.h"
+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
+# define WITH_IPV6 1
+#endif
+
static inline __be32
remask(__be32 addr, __be32 repl, unsigned int shift)
{
@@ -29,6 +33,7 @@ remask(__be32 addr, __be32 repl, unsigned int shift)
return htonl((ntohl(addr) & mask) | (ntohl(repl) & ~mask));
}
+#ifdef WITH_IPV6
static void
rawnat_ipv6_mask(__be32 *addr, const __be32 *repl, unsigned int mask)
{
@@ -72,6 +77,7 @@ rawnat_ipv6_mask(__be32 *addr, const __be32 *repl, unsigned int mask)
break;
}
}
+#endif
static void rawnat4_update_l4(struct sk_buff *skb, __be32 oldip, __be32 newip)
{
@@ -162,6 +168,7 @@ rawdnat_tg4(struct sk_buff **pskb, const struct xt_target_param *par)
return XT_CONTINUE;
}
+#ifdef WITH_IPV6
static bool rawnat6_prepare_l4(struct sk_buff **pskb, unsigned int *l4offset,
unsigned int *l4proto)
{
@@ -274,6 +281,7 @@ rawdnat_tg6(struct sk_buff **pskb, const struct xt_target_param *par)
memcpy(&iph->daddr, &new_addr, sizeof(new_addr));
return XT_CONTINUE;
}
+#endif
static bool rawnat_tg_check(const struct xt_tgchk_param *par)
{
@@ -297,19 +305,20 @@ static struct xt_target rawnat_tg_reg[] __read_mostly = {
.me = THIS_MODULE,
},
{
- .name = "RAWSNAT",
+ .name = "RAWDNAT",
.revision = 0,
- .family = NFPROTO_IPV6,
- .target = rawsnat_tg6,
+ .family = NFPROTO_IPV4,
+ .target = rawdnat_tg4,
.targetsize = sizeof(struct xt_rawnat_tginfo),
.checkentry = rawnat_tg_check,
.me = THIS_MODULE,
},
+#ifdef WITH_IPV6
{
- .name = "RAWDNAT",
+ .name = "RAWSNAT",
.revision = 0,
- .family = NFPROTO_IPV4,
- .target = rawdnat_tg4,
+ .family = NFPROTO_IPV6,
+ .target = rawsnat_tg6,
.targetsize = sizeof(struct xt_rawnat_tginfo),
.checkentry = rawnat_tg_check,
.me = THIS_MODULE,
@@ -323,6 +332,7 @@ static struct xt_target rawnat_tg_reg[] __read_mostly = {
.checkentry = rawnat_tg_check,
.me = THIS_MODULE,
},
+#endif
};
static int __init rawnat_tg_init(void)
@@ -342,5 +352,7 @@ MODULE_DESCRIPTION("Xtables: conntrack-less raw NAT");
MODULE_LICENSE("GPL");
MODULE_ALIAS("ipt_RAWSNAT");
MODULE_ALIAS("ipt_RAWDNAT");
+#ifdef WITH_IPV6
MODULE_ALIAS("ip6t_RAWSNAT");
MODULE_ALIAS("ip6t_RAWDNAT");
+#endif
--
1.6.4.4
[-- Attachment #3: 0002-SYSRQ-make-ipv6-support-conditional.patch --]
[-- Type: text/x-patch, Size: 2559 bytes --]
>From 8dfafcf38940c4529845b28505439fd7f03349f0 Mon Sep 17 00:00:00 2001
From: Peter Volkov <pva@gentoo.org>
Date: Sat, 20 Feb 2010 14:57:20 +0300
Subject: [PATCH 2/2] SYSRQ: make ipv6 support conditional
In case kernel is built without ipv6 support this module fails as it
assumes ipv6. This patch makes kernel support conditional on kernel
.config.
---
extensions/xt_SYSRQ.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/extensions/xt_SYSRQ.c b/extensions/xt_SYSRQ.c
index 3cd223b..5557b41 100644
--- a/extensions/xt_SYSRQ.c
+++ b/extensions/xt_SYSRQ.c
@@ -23,6 +23,10 @@
#include <net/ip.h>
#include "compat_xtables.h"
+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
+# define WITH_IPV6 1
+#endif
+
static bool sysrq_once;
static char sysrq_password[64];
static char sysrq_hash[16] = "sha1";
@@ -214,6 +218,7 @@ sysrq_tg4(struct sk_buff **pskb, const struct xt_target_param *par)
return sysrq_tg((void *)udph + sizeof(struct udphdr), len);
}
+#ifdef WITH_IPV6
static unsigned int
sysrq_tg6(struct sk_buff **pskb, const struct xt_target_param *par)
{
@@ -242,6 +247,7 @@ sysrq_tg6(struct sk_buff **pskb, const struct xt_target_param *par)
ntohs(udph->dest), len);
return sysrq_tg(udph + sizeof(struct udphdr), len);
}
+#endif
static bool sysrq_tg_check(const struct xt_tgchk_param *par)
{
@@ -253,6 +259,7 @@ static bool sysrq_tg_check(const struct xt_tgchk_param *par)
entry->ip.proto != IPPROTO_UDPLITE) ||
entry->ip.invflags & XT_INV_PROTO)
goto out;
+#ifdef WITH_IPV6
} else if (par->target->family == NFPROTO_IPV6) {
const struct ip6t_entry *entry = par->entryinfo;
@@ -260,6 +267,7 @@ static bool sysrq_tg_check(const struct xt_tgchk_param *par)
entry->ipv6.proto != IPPROTO_UDPLITE) ||
entry->ipv6.invflags & XT_INV_PROTO)
goto out;
+#endif
}
return true;
@@ -278,6 +286,7 @@ static struct xt_target sysrq_tg_reg[] __read_mostly = {
.checkentry = sysrq_tg_check,
.me = THIS_MODULE,
},
+#ifdef WITH_IPV6
{
.name = "SYSRQ",
.revision = 1,
@@ -286,6 +295,7 @@ static struct xt_target sysrq_tg_reg[] __read_mostly = {
.checkentry = sysrq_tg_check,
.me = THIS_MODULE,
},
+#endif
};
static int __init sysrq_tg_init(void)
@@ -357,4 +367,6 @@ MODULE_DESCRIPTION("Xtables: triggering SYSRQ remotely");
MODULE_AUTHOR("Jan Engelhardt <jengelh@medozas.de>");
MODULE_LICENSE("GPL");
MODULE_ALIAS("ipt_SYSRQ");
+#ifdef WITH_IPV6
MODULE_ALIAS("ip6t_SYSRQ");
+#endif
--
1.6.4.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: xtables-addons: make ipv6 optional for RAWNAT and SYSRQ
2010-02-19 11:52 xtables-addons: make ipv6 optional for RAWNAT and SYSRQ Peter Volkov
2010-02-19 13:14 ` Jan Engelhardt
@ 2010-02-23 23:34 ` Jan Engelhardt
1 sibling, 0 replies; 5+ messages in thread
From: Jan Engelhardt @ 2010-02-23 23:34 UTC (permalink / raw)
To: Peter Volkov; +Cc: netfilter-devel
On Friday 2010-02-19 12:52, Peter Volkov wrote:
>Hi, in case kernel was built without ipv6 support xt_RAWNAT and xt_SYSRQ
>fail to load with unknown symbols. Patches in attachment fix this issue.
>Please, apply.
Applied, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: xtables-addons: make ipv6 optional for RAWNAT and SYSRQ
2010-02-20 12:43 ` Peter Volkov
@ 2010-02-25 0:05 ` Jan Engelhardt
0 siblings, 0 replies; 5+ messages in thread
From: Jan Engelhardt @ 2010-02-25 0:05 UTC (permalink / raw)
To: Peter Volkov; +Cc: netfilter-devel
On Saturday 2010-02-20 13:43, Peter Volkov wrote:
>В Птн, 19/02/2010 в 14:14 +0100, Jan Engelhardt пишет:
>> On Friday 2010-02-19 12:52, Peter Volkov wrote:
>> For ip6table_rawpost, we could probably do this in the Kbuild file:
>>
>> ifneq (${CONFIG_IPV6},)
>> obj-${build_RAWNAT} += ip6table_rawpost.o
>> endif
>>
>> Can you test?
>
>Works.
>
>> For the second patch, I would suggest to move around the structures in
>> rawnat_tg_reg to reduce the number of #ifdefs needed.
>
>Done. Updated patch in attachment.
Too late, I already merged it manually this morning :p (there was a
reply to your mail)
>Also added #ifdefs around ip6t MODULE_ALIAS.
>
>Also I've updated SYSRQ patch a bit. Added ifdefs around another IPV6
>related code and around MODULE_ALIAS.
I don't think we need to do it to such extremes - after all one of the
goals was to have less #macros than pom-ng.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-02-25 0:05 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-19 11:52 xtables-addons: make ipv6 optional for RAWNAT and SYSRQ Peter Volkov
2010-02-19 13:14 ` Jan Engelhardt
2010-02-20 12:43 ` Peter Volkov
2010-02-25 0:05 ` Jan Engelhardt
2010-02-23 23:34 ` Jan Engelhardt
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.