From patchwork Wed Jun 8 12:43:19 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liping Zhang X-Patchwork-Id: 632209 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 3rPp6Y61b7z9sBm for ; Wed, 8 Jun 2016 22:44:37 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=163.com header.i=@163.com header.b=L/+VELc0; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1422920AbcFHMoN (ORCPT ); Wed, 8 Jun 2016 08:44:13 -0400 Received: from m12-15.163.com ([220.181.12.15]:33566 "EHLO m12-15.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1422659AbcFHMoM (ORCPT ); Wed, 8 Jun 2016 08:44:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=Oh+DfS9l13551ZKkrW wAOSUkBm2RqirR1j47zn5i8Sk=; b=L/+VELc0Rk53xKfDR23WbAP90f8IS1Lkjb YPhPHwnFGmeU+HQCysfCX6kX/SdFAv5Ra+YQXKEV4badPPV8pRPidvucsCuuD+iA 87y5oBBCC+vhEKACYD/AeGZRfEd5+Qn9rHoTOI4CZOEFDCKUvVchwlO/O2hyr6OF /Pdhz0BJ4= Received: from MiWiFi-R2D-srv.localdomain (unknown [101.93.167.24]) by smtp11 (Coremail) with SMTP id D8CowADnwcgDE1hXAVDIAQ--.37632S5; Wed, 08 Jun 2016 20:44:03 +0800 (CST) From: Liping Zhang To: pablo@netfilter.org Cc: netfilter-devel@vger.kernel.org, Liping Zhang Subject: [PATCH nf-next 3/4] netfilter: xt_TRACE: add explicitly nf_logger_find_get call Date: Wed, 8 Jun 2016 20:43:19 +0800 Message-Id: <1465389800-27842-4-git-send-email-zlpnobody@163.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1465389800-27842-1-git-send-email-zlpnobody@163.com> References: <1465389800-27842-1-git-send-email-zlpnobody@163.com> X-CM-TRANSID: D8CowADnwcgDE1hXAVDIAQ--.37632S5 X-Coremail-Antispam: 1Uf129KBjvJXoW7tF48WF4UCrWkXFWxAFyrZwb_yoW8CF43pa nYkw13Xr43ZF1a9a1xuF4UCFyfAF93JFW09ry5Ka45tF98Jrs0g3WfKFZ2va45Z397Wry3 AF4I9r1UCwsIvrJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jkJ5rUUUUU= X-Originating-IP: [101.93.167.24] X-CM-SenderInfo: x2os00perg5qqrwthudrp/xtbBzxOCl1aDqZ8uOQAAs9 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org From: Liping Zhang Consider such situation, if nf_log_ipv4 kernel module is not installed, and the user add a following iptables rule: # iptables -t raw -I PREROUTING -j TRACE There will be no trace log generated until the user install nf_log_ipv4 module manully. So we should add request related nf_log module appropriately here. Signed-off-by: Liping Zhang Acked-by: Florian Westphal --- net/netfilter/xt_TRACE.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/net/netfilter/xt_TRACE.c b/net/netfilter/xt_TRACE.c index df48967..858d189 100644 --- a/net/netfilter/xt_TRACE.c +++ b/net/netfilter/xt_TRACE.c @@ -4,12 +4,23 @@ #include #include +#include MODULE_DESCRIPTION("Xtables: packet flow tracing"); MODULE_LICENSE("GPL"); MODULE_ALIAS("ipt_TRACE"); MODULE_ALIAS("ip6t_TRACE"); +static int trace_tg_check(const struct xt_tgchk_param *par) +{ + return nf_logger_find_get(par->family, NF_LOG_TYPE_LOG); +} + +static void trace_tg_destroy(const struct xt_tgdtor_param *par) +{ + nf_logger_put(par->family, NF_LOG_TYPE_LOG); +} + static unsigned int trace_tg(struct sk_buff *skb, const struct xt_action_param *par) { @@ -18,12 +29,14 @@ trace_tg(struct sk_buff *skb, const struct xt_action_param *par) } static struct xt_target trace_tg_reg __read_mostly = { - .name = "TRACE", - .revision = 0, - .family = NFPROTO_UNSPEC, - .table = "raw", - .target = trace_tg, - .me = THIS_MODULE, + .name = "TRACE", + .revision = 0, + .family = NFPROTO_UNSPEC, + .table = "raw", + .target = trace_tg, + .checkentry = trace_tg_check, + .destroy = trace_tg_destroy, + .me = THIS_MODULE, }; static int __init trace_tg_init(void)