From patchwork Wed Jun 17 15:28:42 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Eric W. Biederman" X-Patchwork-Id: 485521 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 B7FB4140290 for ; Thu, 18 Jun 2015 01:39:38 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757080AbbFQPji (ORCPT ); Wed, 17 Jun 2015 11:39:38 -0400 Received: from out01.mta.xmission.com ([166.70.13.231]:45958 "EHLO out01.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757515AbbFQPie (ORCPT ); Wed, 17 Jun 2015 11:38:34 -0400 Received: from in02.mta.xmission.com ([166.70.13.52]) by out01.mta.xmission.com with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1Z5FQ9-0002ej-4C; Wed, 17 Jun 2015 09:38:33 -0600 Received: from 67-3-205-90.omah.qwest.net ([67.3.205.90] helo=x220.int.ebiederm.org) by in02.mta.xmission.com with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1Z5FO9-0008Nk-1O; Wed, 17 Jun 2015 09:36:30 -0600 From: "Eric W. Biederman" To: David Miller Cc: , netfilter-devel@vger.kernel.org, Stephen Hemminger , Juanjo Ciarlante , Wensong Zhang , Simon Horman , Julian Anastasov , Pablo Neira Ayuso , Patrick McHardy , Jozsef Kadlecsik , Jamal Hadi Salim , Steffen Klassert , Herbert Xu Date: Wed, 17 Jun 2015 10:28:42 -0500 Message-Id: <1434554932-4552-33-git-send-email-ebiederm@xmission.com> X-Mailer: git-send-email 2.2.1 In-Reply-To: <87r3pae5hn.fsf@x220.int.ebiederm.org> References: <87r3pae5hn.fsf@x220.int.ebiederm.org> X-XM-AID: U2FsdGVkX1+hQxNHpStazthnImXbs0X0M9OaCjD69SE= X-SA-Exim-Connect-IP: 67.3.205.90 X-SA-Exim-Mail-From: ebiederm@xmission.com X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sa03.xmission.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=8.0 tests=ALL_TRUSTED,BAYES_50, DCC_CHECK_NEGATIVE, TVD_RCVD_IP, T_TM2_M_HEADER_IN_MSG, T_TooManySym_01, XMSubLong autolearn=disabled version=3.3.2 X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * 0.0 TVD_RCVD_IP Message was received from an IP address * 0.7 XMSubLong Long Subject * 0.0 T_TM2_M_HEADER_IN_MSG BODY: T_TM2_M_HEADER_IN_MSG * 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% * [score: 0.5090] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa03 1397; Body=1 Fuz1=1 Fuz2=1] * 0.0 T_TooManySym_01 4+ unique symbols in subject X-Spam-DCC: XMission; sa03 1397; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ;David Miller X-Spam-Relay-Country: X-Spam-Timing: total 1288 ms - load_scoreonly_sql: 0.06 (0.0%), signal_user_changed: 9 (0.7%), parse: 1.55 (0.1%), extract_message_metadata: 39 (3.1%), get_uri_detail_list: 4 (0.3%), tests_pri_-1000: 43 (3.3%), tests_pri_-950: 2 (0.2%), tests_pri_-900: 1.58 (0.1%), tests_pri_-400: 74 (5.8%), check_bayes: 73 (5.6%), tests_pri_0: 1092 (84.8%), tests_pri_500: 19 (1.5%), rewrite_mail: 0.00 (0.0%) Subject: [PATCH net-next 33/43] netfilter: ebtables: adapt the filter and nat table to pernet hooks X-Spam-Flag: No X-SA-Exim-Version: 4.2.1 (built Wed, 24 Sep 2014 11:00:52 -0600) X-SA-Exim-Scanned: Yes (on in02.mta.xmission.com) Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org From: Pablo Neira Ayuso This adapts the filter and nat tables to register the hooks for each netnamespace. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Eric W Biederman --- net/bridge/netfilter/ebtable_filter.c | 25 +++++++++++++------------ net/bridge/netfilter/ebtable_nat.c | 24 ++++++++++++------------ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/net/bridge/netfilter/ebtable_filter.c b/net/bridge/netfilter/ebtable_filter.c index a3dc249945ec..514273f949c0 100644 --- a/net/bridge/netfilter/ebtable_filter.c +++ b/net/bridge/netfilter/ebtable_filter.c @@ -96,12 +96,23 @@ static struct nf_hook_ops ebt_ops_filter[] __read_mostly = { static int __net_init frame_filter_net_init(struct net *net) { + int ret; + net->xt.frame_filter = ebt_register_table(net, &frame_filter); - return PTR_ERR_OR_ZERO(net->xt.frame_filter); + if (IS_ERR(net->xt.frame_filter)) + return PTR_ERR(net->xt.frame_filter); + + ret = nf_register_hooks(net, ebt_ops_filter, + ARRAY_SIZE(ebt_ops_filter)); + if (ret < 0) + ebt_unregister_table(net, net->xt.frame_filter); + + return ret; } static void __net_exit frame_filter_net_exit(struct net *net) { + nf_unregister_hooks(net, ebt_ops_filter, ARRAY_SIZE(ebt_ops_filter)); ebt_unregister_table(net, net->xt.frame_filter); } @@ -112,21 +123,11 @@ static struct pernet_operations frame_filter_net_ops = { static int __init ebtable_filter_init(void) { - int ret; - - ret = register_pernet_subsys(&frame_filter_net_ops); - if (ret < 0) - return ret; - ret = nf_register_hooks(&init_net, ebt_ops_filter, - ARRAY_SIZE(ebt_ops_filter)); - if (ret < 0) - unregister_pernet_subsys(&frame_filter_net_ops); - return ret; + return register_pernet_subsys(&frame_filter_net_ops); } static void __exit ebtable_filter_fini(void) { - nf_unregister_hooks(&init_net, ebt_ops_filter, ARRAY_SIZE(ebt_ops_filter)); unregister_pernet_subsys(&frame_filter_net_ops); } diff --git a/net/bridge/netfilter/ebtable_nat.c b/net/bridge/netfilter/ebtable_nat.c index 11bf447f8b46..2dcd19c7d078 100644 --- a/net/bridge/netfilter/ebtable_nat.c +++ b/net/bridge/netfilter/ebtable_nat.c @@ -96,12 +96,22 @@ static struct nf_hook_ops ebt_ops_nat[] __read_mostly = { static int __net_init frame_nat_net_init(struct net *net) { + int ret; + net->xt.frame_nat = ebt_register_table(net, &frame_nat); - return PTR_ERR_OR_ZERO(net->xt.frame_nat); + if (IS_ERR(net->xt.frame_nat)) + return PTR_ERR(net->xt.frame_nat); + + ret = nf_register_hooks(net, ebt_ops_nat, ARRAY_SIZE(ebt_ops_nat)); + if (ret < 0) + ebt_unregister_table(net, net->xt.frame_nat); + + return ret; } static void __net_exit frame_nat_net_exit(struct net *net) { + nf_unregister_hooks(net, ebt_ops_nat, ARRAY_SIZE(ebt_ops_nat)); ebt_unregister_table(net, net->xt.frame_nat); } @@ -112,21 +122,11 @@ static struct pernet_operations frame_nat_net_ops = { static int __init ebtable_nat_init(void) { - int ret; - - ret = register_pernet_subsys(&frame_nat_net_ops); - if (ret < 0) - return ret; - ret = nf_register_hooks(&init_net, ebt_ops_nat, - ARRAY_SIZE(ebt_ops_nat)); - if (ret < 0) - unregister_pernet_subsys(&frame_nat_net_ops); - return ret; + return register_pernet_subsys(&frame_nat_net_ops); } static void __exit ebtable_nat_fini(void) { - nf_unregister_hooks(&init_net, ebt_ops_nat, ARRAY_SIZE(ebt_ops_nat)); unregister_pernet_subsys(&frame_nat_net_ops); }