at v4.8-rc8 53 lines 1.2 kB view raw
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#include <net/netfilter/nf_log.h> 8 9MODULE_DESCRIPTION("Xtables: packet flow tracing"); 10MODULE_LICENSE("GPL"); 11MODULE_ALIAS("ipt_TRACE"); 12MODULE_ALIAS("ip6t_TRACE"); 13 14static 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 19static void trace_tg_destroy(const struct xt_tgdtor_param *par) 20{ 21 nf_logger_put(par->family, NF_LOG_TYPE_LOG); 22} 23 24static unsigned int 25trace_tg(struct sk_buff *skb, const struct xt_action_param *par) 26{ 27 skb->nf_trace = 1; 28 return XT_CONTINUE; 29} 30 31static struct xt_target trace_tg_reg __read_mostly = { 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, 40}; 41 42static int __init trace_tg_init(void) 43{ 44 return xt_register_target(&trace_tg_reg); 45} 46 47static void __exit trace_tg_exit(void) 48{ 49 xt_unregister_target(&trace_tg_reg); 50} 51 52module_init(trace_tg_init); 53module_exit(trace_tg_exit);