Merge remote-tracking branches 'spi/fix/lock', 'spi/fix/maintainers', 'spi/fix/put...
[cascardo/linux.git] / net / netfilter / xt_TRACE.c
index df48967..858d189 100644 (file)
@@ -4,12 +4,23 @@
 #include <linux/skbuff.h>
 
 #include <linux/netfilter/x_tables.h>
+#include <net/netfilter/nf_log.h>
 
 MODULE_DESCRIPTION("Xtables: packet flow tracing");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("ipt_TRACE");
 MODULE_ALIAS("ip6t_TRACE");
 
+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);
+}
+
 static unsigned int
 trace_tg(struct sk_buff *skb, const struct xt_action_param *par)
 {
@@ -18,12 +29,14 @@ trace_tg(struct sk_buff *skb, const struct xt_action_param *par)
 }
 
 static struct xt_target trace_tg_reg __read_mostly = {
-       .name       = "TRACE",
-       .revision   = 0,
-       .family     = NFPROTO_UNSPEC,
-       .table      = "raw",
-       .target     = trace_tg,
-       .me         = THIS_MODULE,
+       .name           = "TRACE",
+       .revision       = 0,
+       .family         = NFPROTO_UNSPEC,
+       .table          = "raw",
+       .target         = trace_tg,
+       .checkentry     = trace_tg_check,
+       .destroy        = trace_tg_destroy,
+       .me             = THIS_MODULE,
 };
 
 static int __init trace_tg_init(void)