netfilter: xtables: support arpt_mark and ipv6 optstrip for iptables-nft only builds
authorFlorian Westphal <fw@strlen.de>
Fri, 16 May 2025 14:12:13 +0000 (16:12 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 22 May 2025 15:16:02 +0000 (17:16 +0200)
Its now possible to build a kernel that has no support for the classic
xtables get/setsockopt interfaces and builtin tables.

In this case, we have CONFIG_IP6_NF_MANGLE=n and
CONFIG_IP_NF_ARPTABLES=n.

For optstript, the ipv6 code is so small that we can enable it if
netfilter ipv6 support exists. For mark, check if either classic
arptables or NFT_ARP_COMPAT is set.

Fixes: a9525c7f6219 ("netfilter: xtables: allow xtables-nft only builds")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/xt_TCPOPTSTRIP.c
net/netfilter/xt_mark.c

index 30e99464171b7b4f60a96cd3d57c0c53b47f400f..93f064306901c0e080fcaee3e4dae02f9c6dec83 100644 (file)
@@ -91,7 +91,7 @@ tcpoptstrip_tg4(struct sk_buff *skb, const struct xt_action_param *par)
        return tcpoptstrip_mangle_packet(skb, par, ip_hdrlen(skb));
 }
 
-#if IS_ENABLED(CONFIG_IP6_NF_MANGLE)
+#if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
 static unsigned int
 tcpoptstrip_tg6(struct sk_buff *skb, const struct xt_action_param *par)
 {
@@ -119,7 +119,7 @@ static struct xt_target tcpoptstrip_tg_reg[] __read_mostly = {
                .targetsize = sizeof(struct xt_tcpoptstrip_target_info),
                .me         = THIS_MODULE,
        },
-#if IS_ENABLED(CONFIG_IP6_NF_MANGLE)
+#if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
        {
                .name       = "TCPOPTSTRIP",
                .family     = NFPROTO_IPV6,
index 65b965ca40ea7ea5d9feff381b433bf267a424c4..59b9d04400cac2fff8914aa6046ee5f1e8b123d6 100644 (file)
@@ -48,7 +48,7 @@ static struct xt_target mark_tg_reg[] __read_mostly = {
                .targetsize     = sizeof(struct xt_mark_tginfo2),
                .me             = THIS_MODULE,
        },
-#if IS_ENABLED(CONFIG_IP_NF_ARPTABLES)
+#if IS_ENABLED(CONFIG_IP_NF_ARPTABLES) || IS_ENABLED(CONFIG_NFT_COMPAT_ARP)
        {
                .name           = "MARK",
                .revision       = 2,