From patchwork Wed Nov 26 09:35:37 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Ruprecht X-Patchwork-Id: 415040 X-Patchwork-Delegate: pablo@netfilter.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 02276140145 for ; Wed, 26 Nov 2014 20:36:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750875AbaKZJgK (ORCPT ); Wed, 26 Nov 2014 04:36:10 -0500 Received: from mail-wi0-f177.google.com ([209.85.212.177]:65140 "EHLO mail-wi0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750879AbaKZJgI (ORCPT ); Wed, 26 Nov 2014 04:36:08 -0500 Received: by mail-wi0-f177.google.com with SMTP id l15so4273535wiw.4 for ; Wed, 26 Nov 2014 01:36:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nG8jEqAhc+NNFaSJ7NfeJRGudMKi81mEGhuFUVV7Kos=; b=X7vgP2oIx9H71+W96fRkc0fjP67XZOSNVtooNPJDW1ko0LIedU/q2QAA04IMl3DvHC 0cIwWJCPW1ypO3CUJQbHUA+Ph43Lu65ObXte12HKasAGis8i3S+xt4wwYTLVRAqA4RDL aXcwNp4v1/LWFlmE/BMxf63++HqwVfJW2oo5jfb2Vdi/25jlIR/JWx1kTkPv5eipvBdH 5mP1IsbWvGlz2PU/YqE0fTvNSkdD4ue4EfO7VhPflyoO3bD5ZzXHQaxgMB6GNkFnyP4Y 4U9lM3LOLyFrlPHP5DbyxOw0JK7HdWbLisYjhlkbd1hrVHevsP073kstEFQ2Sb+ADMX4 a+CQ== X-Gm-Message-State: ALoCoQkGR0t4+FG3iKku23llJqU7LJodhnFISpEIoD0jFjiYtBWOsbRLsJfWue3r6s7nGdyhCAPX X-Received: by 10.194.92.82 with SMTP id ck18mr46450497wjb.103.1416994566043; Wed, 26 Nov 2014 01:36:06 -0800 (PST) Received: from faui49t.informatik.uni-erlangen.de (faui49t.informatik.uni-erlangen.de. [131.188.42.17]) by mx.google.com with ESMTPSA id p3sm5538223wjf.49.2014.11.26.01.36.04 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 26 Nov 2014 01:36:05 -0800 (PST) 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: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@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---