[NETFILTER]: x_tables: add TRACE target
The TRACE target can be used to follow IP and IPv6 packets through the ruleset. Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Signed-off-by: Patrick NcHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
1b50b8a371
commit
ba9dda3ab5
@@ -343,6 +343,18 @@ config NETFILTER_XT_TARGET_NOTRACK
|
||||
If you want to compile it as a module, say M here and read
|
||||
<file:Documentation/kbuild/modules.txt>. If unsure, say `N'.
|
||||
|
||||
config NETFILTER_XT_TARGET_TRACE
|
||||
tristate '"TRACE" target support'
|
||||
depends on NETFILTER_XTABLES
|
||||
depends on IP_NF_RAW || IP6_NF_RAW
|
||||
help
|
||||
The TRACE target allows you to mark packets so that the kernel
|
||||
will log every rule which match the packets as those traverse
|
||||
the tables, chains, rules.
|
||||
|
||||
If you want to compile it as a module, say M here and read
|
||||
<file:Documentation/modules.txt>. If unsure, say `N'.
|
||||
|
||||
config NETFILTER_XT_TARGET_SECMARK
|
||||
tristate '"SECMARK" target support'
|
||||
depends on NETFILTER_XTABLES && NETWORK_SECMARK
|
||||
|
@@ -44,6 +44,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_MARK) += xt_MARK.o
|
||||
obj-$(CONFIG_NETFILTER_XT_TARGET_NFQUEUE) += xt_NFQUEUE.o
|
||||
obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
|
||||
obj-$(CONFIG_NETFILTER_XT_TARGET_NOTRACK) += xt_NOTRACK.o
|
||||
obj-$(CONFIG_NETFILTER_XT_TARGET_TRACE) += xt_TRACE.o
|
||||
obj-$(CONFIG_NETFILTER_XT_TARGET_SECMARK) += xt_SECMARK.o
|
||||
obj-$(CONFIG_NETFILTER_XT_TARGET_TCPMSS) += xt_TCPMSS.o
|
||||
obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
|
||||
|
53
net/netfilter/xt_TRACE.c
Normal file
53
net/netfilter/xt_TRACE.c
Normal file
@@ -0,0 +1,53 @@
|
||||
/* This is a module which is used to mark packets for tracing.
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
#include <linux/netfilter/x_tables.h>
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("ipt_TRACE");
|
||||
MODULE_ALIAS("ip6t_TRACE");
|
||||
|
||||
static unsigned int
|
||||
target(struct sk_buff **pskb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
unsigned int hooknum,
|
||||
const struct xt_target *target,
|
||||
const void *targinfo)
|
||||
{
|
||||
(*pskb)->nf_trace = 1;
|
||||
return XT_CONTINUE;
|
||||
}
|
||||
|
||||
static struct xt_target xt_trace_target[] = {
|
||||
{
|
||||
.name = "TRACE",
|
||||
.family = AF_INET,
|
||||
.target = target,
|
||||
.table = "raw",
|
||||
.me = THIS_MODULE,
|
||||
},
|
||||
{
|
||||
.name = "TRACE",
|
||||
.family = AF_INET6,
|
||||
.target = target,
|
||||
.table = "raw",
|
||||
.me = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init xt_trace_init(void)
|
||||
{
|
||||
return xt_register_targets(xt_trace_target,
|
||||
ARRAY_SIZE(xt_trace_target));
|
||||
}
|
||||
|
||||
static void __exit xt_trace_fini(void)
|
||||
{
|
||||
xt_unregister_targets(xt_trace_target, ARRAY_SIZE(xt_trace_target));
|
||||
}
|
||||
|
||||
module_init(xt_trace_init);
|
||||
module_exit(xt_trace_fini);
|
Reference in New Issue
Block a user