]>
Commit | Line | Data |
---|---|---|
ba9dda3a JK |
1 | /* This is a module which is used to mark packets for tracing. |
2 | */ | |
3 | #include <linux/module.h> | |
4 | #include <linux/skbuff.h> | |
5 | ||
6 | #include <linux/netfilter/x_tables.h> | |
36f959c4 | 7 | #include <net/netfilter/nf_log.h> |
ba9dda3a | 8 | |
2ae15b64 | 9 | MODULE_DESCRIPTION("Xtables: packet flow tracing"); |
ba9dda3a JK |
10 | MODULE_LICENSE("GPL"); |
11 | MODULE_ALIAS("ipt_TRACE"); | |
12 | MODULE_ALIAS("ip6t_TRACE"); | |
13 | ||
36f959c4 LZ |
14 | static int trace_tg_check(const struct xt_tgchk_param *par) |
15 | { | |
16 | return nf_logger_find_get(par->family, NF_LOG_TYPE_LOG); | |
17 | } | |
18 | ||
19 | static void trace_tg_destroy(const struct xt_tgdtor_param *par) | |
20 | { | |
21 | nf_logger_put(par->family, NF_LOG_TYPE_LOG); | |
22 | } | |
23 | ||
ba9dda3a | 24 | static unsigned int |
4b560b44 | 25 | trace_tg(struct sk_buff *skb, const struct xt_action_param *par) |
ba9dda3a | 26 | { |
3db05fea | 27 | skb->nf_trace = 1; |
ba9dda3a JK |
28 | return XT_CONTINUE; |
29 | } | |
30 | ||
55b69e91 | 31 | static struct xt_target trace_tg_reg __read_mostly = { |
36f959c4 LZ |
32 | .name = "TRACE", |
33 | .revision = 0, | |
34 | .family = NFPROTO_UNSPEC, | |
35 | .table = "raw", | |
36 | .target = trace_tg, | |
37 | .checkentry = trace_tg_check, | |
38 | .destroy = trace_tg_destroy, | |
39 | .me = THIS_MODULE, | |
ba9dda3a JK |
40 | }; |
41 | ||
d3c5ee6d | 42 | static int __init trace_tg_init(void) |
ba9dda3a | 43 | { |
55b69e91 | 44 | return xt_register_target(&trace_tg_reg); |
ba9dda3a JK |
45 | } |
46 | ||
d3c5ee6d | 47 | static void __exit trace_tg_exit(void) |
ba9dda3a | 48 | { |
55b69e91 | 49 | xt_unregister_target(&trace_tg_reg); |
ba9dda3a JK |
50 | } |
51 | ||
d3c5ee6d JE |
52 | module_init(trace_tg_init); |
53 | module_exit(trace_tg_exit); |