From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751528AbaKZJgK (ORCPT ); Wed, 26 Nov 2014 04:36:10 -0500 Received: from mail-wg0-f47.google.com ([74.125.82.47]:37575 "EHLO mail-wg0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750875AbaKZJgI (ORCPT ); Wed, 26 Nov 2014 04:36:08 -0500 From: Andreas Ruprecht To: Pablo Neira Ayuso Cc: Patrick McHardy , Jozsef Kadlecsik , "David S. Miller" , netfilter-devel@vger.kernel.org, coreteam@netfilter.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Andreas Ruprecht Subject: [PATCH v2] net: netfilter: Fix undefined reference to nf_nat_redirect_* functions Date: Wed, 26 Nov 2014 10:35:37 +0100 Message-Id: <1416994537-1592-1-git-send-email-rupran@einserver.de> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1416928034-10882-1-git-send-email-rupran@einserver.de> References: <1416928034-10882-1-git-send-email-rupran@einserver.de> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In a configuration with CONFIG_NFT_NAT and CONFIG_NETFILTER_XT_TARGET_REDIRECT enabled, undefined references to nf_nat_redirect_ipv{4,6}() can occur, when the corresponding options CONFIG_NF_NAT_REDIRECT_IPV4 or CONFIG_NF_NAT_REDIRECT_IPV6 are not enabled. net/built-in.o: In function `redirect_tg4': xt_REDIRECT.c:(.text+0x6d001): undefined reference to `nf_nat_redirect_ipv4' net/built-in.o: In function `redirect_tg6': xt_REDIRECT.c:(.text+0x6d021): undefined reference to `nf_nat_redirect_ipv6' This is because the file xt_REDIRECT.c is compiled when CONFIG_NETFILTER_XT_TARGET_REDIRECT is enabled, which only depends on CONFIG_NF_NAT. This option is invisible and can only be selected by other Kconfig options. In this particular case, it is selected by CONFIG_NFT_NAT. This patch changes the dependency for CONFIG_NETFILTER_XT_TARGET_REDIRECT to only make it visible if at least one of {CONFIG_NF_NAT_REDIRECT_IPV4, CONFIG_NF_NAT_REDIRECT_IPV6} are enabled. Additionally it is necessary to provide stubs for the nf_nat_redirect_ipv{4,6} functions in case the header is included but the corresponding Kconfig feature is not enabled. Changes: v2: Correct capitalization for CONFIG_NF_NAT_REDIRECT_IPV4 in comment. Signed-off-by: Andreas Ruprecht --- include/net/netfilter/ipv4/nf_nat_redirect.h | 14 ++++++++++++++ include/net/netfilter/ipv6/nf_nat_redirect.h | 13 +++++++++++++ net/netfilter/Kconfig | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/include/net/netfilter/ipv4/nf_nat_redirect.h b/include/net/netfilter/ipv4/nf_nat_redirect.h index 19e1df3a0a4d..56a506dd55cc 100644 --- a/include/net/netfilter/ipv4/nf_nat_redirect.h +++ b/include/net/netfilter/ipv4/nf_nat_redirect.h @@ -1,9 +1,23 @@ #ifndef _NF_NAT_REDIRECT_IPV4_H_ #define _NF_NAT_REDIRECT_IPV4_H_ +#include + +#ifdef CONFIG_NF_NAT_REDIRECT_IPV4 unsigned int nf_nat_redirect_ipv4(struct sk_buff *skb, const struct nf_nat_ipv4_multi_range_compat *mr, unsigned int hooknum); +#else /* CONFIG_NF_NAT_REDIRECT_IPV4 */ + +unsigned int +nf_nat_redirect_ipv4(struct sk_buff *skb, + const struct nf_nat_ipv4_multi_range_compat *mr, + unsigned int hooknum) +{ + return NF_ACCEPT; +} +#endif /* CONFIG_NF_NAT_REDIRECT_IPV4 */ + #endif /* _NF_NAT_REDIRECT_IPV4_H_ */ diff --git a/include/net/netfilter/ipv6/nf_nat_redirect.h b/include/net/netfilter/ipv6/nf_nat_redirect.h index 1ebdffc461cc..4db9351120ec 100644 --- a/include/net/netfilter/ipv6/nf_nat_redirect.h +++ b/include/net/netfilter/ipv6/nf_nat_redirect.h @@ -1,8 +1,21 @@ #ifndef _NF_NAT_REDIRECT_IPV6_H_ #define _NF_NAT_REDIRECT_IPV6_H_ +#include + +#ifdef CONFIG_NF_NAT_REDIRECT_IPV6 unsigned int nf_nat_redirect_ipv6(struct sk_buff *skb, const struct nf_nat_range *range, unsigned int hooknum); +#else /* CONFIG_NF_NAT_REDIRECT_IPV6 */ + +unsigned int +nf_nat_redirect_ipv6(struct sk_buff *skb, const struct nf_nat_range *range, + unsigned int hooknum) +{ + return NF_ACCEPT; +} +#endif /* CONFIG_NF_NAT_REDIRECT_IPV6 */ + #endif /* _NF_NAT_REDIRECT_IPV6_H_ */ diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig index be8db270aa77..0972851cce03 100644 --- a/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig @@ -844,7 +844,7 @@ config NETFILTER_XT_TARGET_RATEEST config NETFILTER_XT_TARGET_REDIRECT tristate "REDIRECT target support" - depends on NF_NAT + depends on NF_NAT_IPV4 || NF_NAT_IPV6 select NF_NAT_REDIRECT_IPV4 if NF_NAT_IPV4 select NF_NAT_REDIRECT_IPV6 if NF_NAT_IPV6 ---help--- -- 1.9.1