提交 ce20cdf4 编写于 作者: T Taehee Yoo 提交者: Pablo Neira Ayuso

netfilter: xt_NFLOG: use nf_log_packet instead of nfulnl_log_packet.

The nfulnl_log_packet() is added to make sure that the NFLOG target
works as only user-space logger. but now, nf_log_packet() can find proper
log function using NF_LOG_TYPE_ULOG and NF_LOG_TYPE_LOG.
Signed-off-by: NTaehee Yoo <ap420073@gmail.com>
Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
上级 415787d7
/* SPDX-License-Identifier: GPL-2.0 */ /* SPDX-License-Identifier: GPL-2.0 */
#ifndef _KER_NFNETLINK_LOG_H
#define _KER_NFNETLINK_LOG_H
void
nfulnl_log_packet(struct net *net,
u_int8_t pf,
unsigned int hooknum,
const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
const struct nf_loginfo *li_user,
const char *prefix);
#define NFULNL_COPY_DISABLED 0xff
#endif /* _KER_NFNETLINK_LOG_H */
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <net/sock.h> #include <net/sock.h>
#include <net/netfilter/nf_log.h> #include <net/netfilter/nf_log.h>
#include <net/netns/generic.h> #include <net/netns/generic.h>
#include <net/netfilter/nfnetlink_log.h>
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/refcount.h> #include <linux/refcount.h>
...@@ -47,6 +46,7 @@ ...@@ -47,6 +46,7 @@
#include "../bridge/br_private.h" #include "../bridge/br_private.h"
#endif #endif
#define NFULNL_COPY_DISABLED 0xff
#define NFULNL_NLBUFSIZ_DEFAULT NLMSG_GOODSIZE #define NFULNL_NLBUFSIZ_DEFAULT NLMSG_GOODSIZE
#define NFULNL_TIMEOUT_DEFAULT 100 /* every second */ #define NFULNL_TIMEOUT_DEFAULT 100 /* every second */
#define NFULNL_QTHRESH_DEFAULT 100 /* 100 packets */ #define NFULNL_QTHRESH_DEFAULT 100 /* 100 packets */
...@@ -618,7 +618,7 @@ static const struct nf_loginfo default_loginfo = { ...@@ -618,7 +618,7 @@ static const struct nf_loginfo default_loginfo = {
}; };
/* log handler for internal netfilter logging api */ /* log handler for internal netfilter logging api */
void static void
nfulnl_log_packet(struct net *net, nfulnl_log_packet(struct net *net,
u_int8_t pf, u_int8_t pf,
unsigned int hooknum, unsigned int hooknum,
...@@ -633,7 +633,7 @@ nfulnl_log_packet(struct net *net, ...@@ -633,7 +633,7 @@ nfulnl_log_packet(struct net *net,
struct nfulnl_instance *inst; struct nfulnl_instance *inst;
const struct nf_loginfo *li; const struct nf_loginfo *li;
unsigned int qthreshold; unsigned int qthreshold;
unsigned int plen; unsigned int plen = 0;
struct nfnl_log_net *log = nfnl_log_pernet(net); struct nfnl_log_net *log = nfnl_log_pernet(net);
const struct nfnl_ct_hook *nfnl_ct = NULL; const struct nfnl_ct_hook *nfnl_ct = NULL;
struct nf_conn *ct = NULL; struct nf_conn *ct = NULL;
...@@ -648,7 +648,6 @@ nfulnl_log_packet(struct net *net, ...@@ -648,7 +648,6 @@ nfulnl_log_packet(struct net *net,
if (!inst) if (!inst)
return; return;
plen = 0;
if (prefix) if (prefix)
plen = strlen(prefix) + 1; plen = strlen(prefix) + 1;
...@@ -760,7 +759,6 @@ nfulnl_log_packet(struct net *net, ...@@ -760,7 +759,6 @@ nfulnl_log_packet(struct net *net,
/* FIXME: statistics */ /* FIXME: statistics */
goto unlock_and_release; goto unlock_and_release;
} }
EXPORT_SYMBOL_GPL(nfulnl_log_packet);
static int static int
nfulnl_rcv_nl_event(struct notifier_block *this, nfulnl_rcv_nl_event(struct notifier_block *this,
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <linux/netfilter/x_tables.h> #include <linux/netfilter/x_tables.h>
#include <linux/netfilter/xt_NFLOG.h> #include <linux/netfilter/xt_NFLOG.h>
#include <net/netfilter/nf_log.h> #include <net/netfilter/nf_log.h>
#include <net/netfilter/nfnetlink_log.h>
MODULE_AUTHOR("Patrick McHardy <kaber@trash.net>"); MODULE_AUTHOR("Patrick McHardy <kaber@trash.net>");
MODULE_DESCRIPTION("Xtables: packet logging to netlink using NFLOG"); MODULE_DESCRIPTION("Xtables: packet logging to netlink using NFLOG");
...@@ -37,8 +36,9 @@ nflog_tg(struct sk_buff *skb, const struct xt_action_param *par) ...@@ -37,8 +36,9 @@ nflog_tg(struct sk_buff *skb, const struct xt_action_param *par)
if (info->flags & XT_NFLOG_F_COPY_LEN) if (info->flags & XT_NFLOG_F_COPY_LEN)
li.u.ulog.flags |= NF_LOG_F_COPY_LEN; li.u.ulog.flags |= NF_LOG_F_COPY_LEN;
nfulnl_log_packet(net, xt_family(par), xt_hooknum(par), skb, nf_log_packet(net, xt_family(par), xt_hooknum(par), skb, xt_in(par),
xt_in(par), xt_out(par), &li, info->prefix); xt_out(par), &li, "%s", info->prefix);
return XT_CONTINUE; return XT_CONTINUE;
} }
...@@ -50,7 +50,13 @@ static int nflog_tg_check(const struct xt_tgchk_param *par) ...@@ -50,7 +50,13 @@ static int nflog_tg_check(const struct xt_tgchk_param *par)
return -EINVAL; return -EINVAL;
if (info->prefix[sizeof(info->prefix) - 1] != '\0') if (info->prefix[sizeof(info->prefix) - 1] != '\0')
return -EINVAL; return -EINVAL;
return 0;
return nf_logger_find_get(par->family, NF_LOG_TYPE_ULOG);
}
static void nflog_tg_destroy(const struct xt_tgdtor_param *par)
{
nf_logger_put(par->family, NF_LOG_TYPE_ULOG);
} }
static struct xt_target nflog_tg_reg __read_mostly = { static struct xt_target nflog_tg_reg __read_mostly = {
...@@ -58,6 +64,7 @@ static struct xt_target nflog_tg_reg __read_mostly = { ...@@ -58,6 +64,7 @@ static struct xt_target nflog_tg_reg __read_mostly = {
.revision = 0, .revision = 0,
.family = NFPROTO_UNSPEC, .family = NFPROTO_UNSPEC,
.checkentry = nflog_tg_check, .checkentry = nflog_tg_check,
.destroy = nflog_tg_destroy,
.target = nflog_tg, .target = nflog_tg,
.targetsize = sizeof(struct xt_nflog_info), .targetsize = sizeof(struct xt_nflog_info),
.me = THIS_MODULE, .me = THIS_MODULE,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册