Commit 36f959c4 authored by Liping Zhang's avatar Liping Zhang Committed by Pablo Neira Ayuso
Browse files

netfilter: xt_TRACE: add explicitly nf_logger_find_get call



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: default avatarLiping Zhang <liping.zhang@spreadtrum.com>
Acked-by: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent f3bb5333
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -4,12 +4,23 @@
#include <linux/skbuff.h>

#include <linux/netfilter/x_tables.h>
#include <net/netfilter/nf_log.h>

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)
{
@@ -23,6 +34,8 @@ static struct xt_target trace_tg_reg __read_mostly = {
	.family		= NFPROTO_UNSPEC,
	.table		= "raw",
	.target		= trace_tg,
	.checkentry	= trace_tg_check,
	.destroy	= trace_tg_destroy,
	.me		= THIS_MODULE,
};