]>
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> | |
7 | ||
8 | MODULE_LICENSE("GPL"); | |
9 | MODULE_ALIAS("ipt_TRACE"); | |
10 | MODULE_ALIAS("ip6t_TRACE"); | |
11 | ||
12 | static unsigned int | |
13 | target(struct sk_buff **pskb, | |
14 | const struct net_device *in, | |
15 | const struct net_device *out, | |
16 | unsigned int hooknum, | |
17 | const struct xt_target *target, | |
18 | const void *targinfo) | |
19 | { | |
20 | (*pskb)->nf_trace = 1; | |
21 | return XT_CONTINUE; | |
22 | } | |
23 | ||
9f15c530 | 24 | static struct xt_target xt_trace_target[] __read_mostly = { |
ba9dda3a JK |
25 | { |
26 | .name = "TRACE", | |
27 | .family = AF_INET, | |
28 | .target = target, | |
29 | .table = "raw", | |
30 | .me = THIS_MODULE, | |
31 | }, | |
32 | { | |
33 | .name = "TRACE", | |
34 | .family = AF_INET6, | |
35 | .target = target, | |
36 | .table = "raw", | |
37 | .me = THIS_MODULE, | |
38 | }, | |
39 | }; | |
40 | ||
41 | static int __init xt_trace_init(void) | |
42 | { | |
43 | return xt_register_targets(xt_trace_target, | |
44 | ARRAY_SIZE(xt_trace_target)); | |
45 | } | |
46 | ||
47 | static void __exit xt_trace_fini(void) | |
48 | { | |
49 | xt_unregister_targets(xt_trace_target, ARRAY_SIZE(xt_trace_target)); | |
50 | } | |
51 | ||
52 | module_init(xt_trace_init); | |
53 | module_exit(xt_trace_fini); |