Blame view
net/netfilter/xt_TRACE.c
1.17 KB
09c434b8a
|
1 |
// SPDX-License-Identifier: GPL-2.0-only |
ba9dda3ab
|
2 3 4 5 6 7 |
/* 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> |
36f959c49
|
8 |
#include <net/netfilter/nf_log.h> |
ba9dda3ab
|
9 |
|
2ae15b64e
|
10 |
MODULE_DESCRIPTION("Xtables: packet flow tracing"); |
ba9dda3ab
|
11 12 13 |
MODULE_LICENSE("GPL"); MODULE_ALIAS("ipt_TRACE"); MODULE_ALIAS("ip6t_TRACE"); |
36f959c49
|
14 15 16 17 18 19 20 21 22 |
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); } |
ba9dda3ab
|
23 |
static unsigned int |
4b560b447
|
24 |
trace_tg(struct sk_buff *skb, const struct xt_action_param *par) |
ba9dda3ab
|
25 |
{ |
3db05fea5
|
26 |
skb->nf_trace = 1; |
ba9dda3ab
|
27 28 |
return XT_CONTINUE; } |
55b69e910
|
29 |
static struct xt_target trace_tg_reg __read_mostly = { |
36f959c49
|
30 31 32 33 34 35 36 37 |
.name = "TRACE", .revision = 0, .family = NFPROTO_UNSPEC, .table = "raw", .target = trace_tg, .checkentry = trace_tg_check, .destroy = trace_tg_destroy, .me = THIS_MODULE, |
ba9dda3ab
|
38 |
}; |
d3c5ee6d5
|
39 |
static int __init trace_tg_init(void) |
ba9dda3ab
|
40 |
{ |
55b69e910
|
41 |
return xt_register_target(&trace_tg_reg); |
ba9dda3ab
|
42 |
} |
d3c5ee6d5
|
43 |
static void __exit trace_tg_exit(void) |
ba9dda3ab
|
44 |
{ |
55b69e910
|
45 |
xt_unregister_target(&trace_tg_reg); |
ba9dda3ab
|
46 |
} |
d3c5ee6d5
|
47 48 |
module_init(trace_tg_init); module_exit(trace_tg_exit); |