]> err.no Git - linux-2.6/blobdiff - net/ipv6/netfilter/ip6t_LOG.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
[linux-2.6] / net / ipv6 / netfilter / ip6t_LOG.c
index 6ab99001dcccb321bedb88c57b95f812e9aef412..3a2316974f835b86921fe2b63296992558a9c251 100644 (file)
 #include <linux/netfilter.h>
 #include <linux/netfilter/x_tables.h>
 #include <linux/netfilter_ipv6/ip6_tables.h>
+#include <net/netfilter/nf_log.h>
 
 MODULE_AUTHOR("Jan Rekorajski <baggins@pld.org.pl>");
-MODULE_DESCRIPTION("IP6 tables LOG target module");
+MODULE_DESCRIPTION("Xtables: IPv6 packet logging to syslog");
 MODULE_LICENSE("GPL");
 
 struct in_device;
@@ -362,9 +363,15 @@ static void dump_packet(const struct nf_loginfo *info,
        if ((logflags & IP6T_LOG_UID) && recurse && skb->sk) {
                read_lock_bh(&skb->sk->sk_callback_lock);
                if (skb->sk->sk_socket && skb->sk->sk_socket->file)
-                       printk("UID=%u ", skb->sk->sk_socket->file->f_uid);
+                       printk("UID=%u GID=%u ",
+                               skb->sk->sk_socket->file->f_uid,
+                               skb->sk->sk_socket->file->f_gid);
                read_unlock_bh(&skb->sk->sk_callback_lock);
        }
+
+       /* Max length: 16 "MARK=0xFFFFFFFF " */
+       if (!recurse && skb->mark)
+               printk("MARK=0x%x ", skb->mark);
 }
 
 static struct nf_loginfo default_loginfo = {
@@ -431,12 +438,9 @@ ip6t_log_packet(unsigned int pf,
 }
 
 static unsigned int
-ip6t_log_target(struct sk_buff **pskb,
-               const struct net_device *in,
-               const struct net_device *out,
-               unsigned int hooknum,
-               const struct xt_target *target,
-               const void *targinfo)
+log_tg6(struct sk_buff *skb, const struct net_device *in,
+        const struct net_device *out, unsigned int hooknum,
+        const struct xt_target *target, const void *targinfo)
 {
        const struct ip6t_log_info *loginfo = targinfo;
        struct nf_loginfo li;
@@ -445,17 +449,15 @@ ip6t_log_target(struct sk_buff **pskb,
        li.u.log.level = loginfo->level;
        li.u.log.logflags = loginfo->logflags;
 
-       ip6t_log_packet(PF_INET6, hooknum, *pskb, in, out, &li,
-                       loginfo->prefix);
+       ip6t_log_packet(PF_INET6, hooknum, skb, in, out, &li, loginfo->prefix);
        return XT_CONTINUE;
 }
 
 
-static bool ip6t_log_checkentry(const char *tablename,
-                               const void *entry,
-                               const struct xt_target *target,
-                               void *targinfo,
-                               unsigned int hook_mask)
+static bool
+log_tg6_check(const char *tablename, const void *entry,
+              const struct xt_target *target, void *targinfo,
+              unsigned int hook_mask)
 {
        const struct ip6t_log_info *loginfo = targinfo;
 
@@ -471,37 +473,37 @@ static bool ip6t_log_checkentry(const char *tablename,
        return true;
 }
 
-static struct xt_target ip6t_log_reg __read_mostly = {
+static struct xt_target log_tg6_reg __read_mostly = {
        .name           = "LOG",
        .family         = AF_INET6,
-       .target         = ip6t_log_target,
+       .target         = log_tg6,
        .targetsize     = sizeof(struct ip6t_log_info),
-       .checkentry     = ip6t_log_checkentry,
+       .checkentry     = log_tg6_check,
        .me             = THIS_MODULE,
 };
 
-static struct nf_logger ip6t_logger = {
+static const struct nf_logger ip6t_logger = {
        .name           = "ip6t_LOG",
        .logfn          = &ip6t_log_packet,
        .me             = THIS_MODULE,
 };
 
-static int __init ip6t_log_init(void)
+static int __init log_tg6_init(void)
 {
        int ret;
 
-       ret = xt_register_target(&ip6t_log_reg);
+       ret = xt_register_target(&log_tg6_reg);
        if (ret < 0)
                return ret;
        nf_log_register(PF_INET6, &ip6t_logger);
        return 0;
 }
 
-static void __exit ip6t_log_fini(void)
+static void __exit log_tg6_exit(void)
 {
        nf_log_unregister(&ip6t_logger);
-       xt_unregister_target(&ip6t_log_reg);
+       xt_unregister_target(&log_tg6_reg);
 }
 
-module_init(ip6t_log_init);
-module_exit(ip6t_log_fini);
+module_init(log_tg6_init);
+module_exit(log_tg6_exit);