[NETFILTER]: nf_conntrack_h323: logical-bitwise & confusion in process_setup()
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / netfilter / xt_TRACE.c
CommitLineData
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
2ae15b64 8MODULE_DESCRIPTION("Xtables: packet flow tracing");
ba9dda3a
JK
9MODULE_LICENSE("GPL");
10MODULE_ALIAS("ipt_TRACE");
11MODULE_ALIAS("ip6t_TRACE");
12
13static unsigned int
d3c5ee6d
JE
14trace_tg(struct sk_buff *skb, const struct net_device *in,
15 const struct net_device *out, unsigned int hooknum,
16 const struct xt_target *target, const void *targinfo)
ba9dda3a 17{
3db05fea 18 skb->nf_trace = 1;
ba9dda3a
JK
19 return XT_CONTINUE;
20}
21
d3c5ee6d 22static struct xt_target trace_tg_reg[] __read_mostly = {
ba9dda3a
JK
23 {
24 .name = "TRACE",
25 .family = AF_INET,
d3c5ee6d 26 .target = trace_tg,
ba9dda3a
JK
27 .table = "raw",
28 .me = THIS_MODULE,
29 },
30 {
31 .name = "TRACE",
32 .family = AF_INET6,
d3c5ee6d 33 .target = trace_tg,
ba9dda3a
JK
34 .table = "raw",
35 .me = THIS_MODULE,
36 },
37};
38
d3c5ee6d 39static int __init trace_tg_init(void)
ba9dda3a 40{
d3c5ee6d 41 return xt_register_targets(trace_tg_reg, ARRAY_SIZE(trace_tg_reg));
ba9dda3a
JK
42}
43
d3c5ee6d 44static void __exit trace_tg_exit(void)
ba9dda3a 45{
d3c5ee6d 46 xt_unregister_targets(trace_tg_reg, ARRAY_SIZE(trace_tg_reg));
ba9dda3a
JK
47}
48
d3c5ee6d
JE
49module_init(trace_tg_init);
50module_exit(trace_tg_exit);