]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/ipv6/netfilter/ip6t_LOG.c
[NETFILTER]: nf_log: constify struct nf_logger and nf_log_packet loginfo arg
[mv-sheeva.git] / net / ipv6 / netfilter / ip6t_LOG.c
index 5bb9cd3493504b9459004ac4336fefa0c9650173..474c2b12621ad489eb7391b22ac9e883e011ced7 100644 (file)
@@ -23,6 +23,7 @@
 #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");
@@ -32,12 +33,6 @@ struct in_device;
 #include <net/route.h>
 #include <linux/netfilter_ipv6/ip6t_LOG.h>
 
-#if 0
-#define DEBUGP printk
-#else
-#define DEBUGP(format, args...)
-#endif
-
 /* Use lock to serialize, so printks don't overlap */
 static DEFINE_SPINLOCK(log_lock);
 
@@ -48,7 +43,8 @@ static void dump_packet(const struct nf_loginfo *info,
 {
        u_int8_t currenthdr;
        int fragment;
-       struct ipv6hdr _ip6h, *ih;
+       struct ipv6hdr _ip6h;
+       const struct ipv6hdr *ih;
        unsigned int ptr;
        unsigned int hdrlen = 0;
        unsigned int logflags;
@@ -78,7 +74,8 @@ static void dump_packet(const struct nf_loginfo *info,
        ptr = ip6hoff + sizeof(struct ipv6hdr);
        currenthdr = ih->nexthdr;
        while (currenthdr != NEXTHDR_NONE && ip6t_ext_hdr(currenthdr)) {
-               struct ipv6_opt_hdr _hdr, *hp;
+               struct ipv6_opt_hdr _hdr;
+               const struct ipv6_opt_hdr *hp;
 
                hp = skb_header_pointer(skb, ptr, sizeof(_hdr), &_hdr);
                if (hp == NULL) {
@@ -92,7 +89,8 @@ static void dump_packet(const struct nf_loginfo *info,
 
                switch (currenthdr) {
                case IPPROTO_FRAGMENT: {
-                       struct frag_hdr _fhdr, *fh;
+                       struct frag_hdr _fhdr;
+                       const struct frag_hdr *fh;
 
                        printk("FRAG:");
                        fh = skb_header_pointer(skb, ptr, sizeof(_fhdr),
@@ -131,7 +129,8 @@ static void dump_packet(const struct nf_loginfo *info,
                /* Max Length */
                case IPPROTO_AH:
                        if (logflags & IP6T_LOG_IPOPT) {
-                               struct ip_auth_hdr _ahdr, *ah;
+                               struct ip_auth_hdr _ahdr;
+                               const struct ip_auth_hdr *ah;
 
                                /* Max length: 3 "AH " */
                                printk("AH ");
@@ -162,7 +161,8 @@ static void dump_packet(const struct nf_loginfo *info,
                        break;
                case IPPROTO_ESP:
                        if (logflags & IP6T_LOG_IPOPT) {
-                               struct ip_esp_hdr _esph, *eh;
+                               struct ip_esp_hdr _esph;
+                               const struct ip_esp_hdr *eh;
 
                                /* Max length: 4 "ESP " */
                                printk("ESP ");
@@ -202,7 +202,8 @@ static void dump_packet(const struct nf_loginfo *info,
 
        switch (currenthdr) {
        case IPPROTO_TCP: {
-               struct tcphdr _tcph, *th;
+               struct tcphdr _tcph;
+               const struct tcphdr *th;
 
                /* Max length: 10 "PROTO=TCP " */
                printk("PROTO=TCP ");
@@ -250,7 +251,8 @@ static void dump_packet(const struct nf_loginfo *info,
 
                if ((logflags & IP6T_LOG_TCPOPT)
                    && th->doff * 4 > sizeof(struct tcphdr)) {
-                       u_int8_t _opt[60 - sizeof(struct tcphdr)], *op;
+                       u_int8_t _opt[60 - sizeof(struct tcphdr)];
+                       const u_int8_t *op;
                        unsigned int i;
                        unsigned int optsize = th->doff * 4
                                               - sizeof(struct tcphdr);
@@ -273,7 +275,8 @@ static void dump_packet(const struct nf_loginfo *info,
        }
        case IPPROTO_UDP:
        case IPPROTO_UDPLITE: {
-               struct udphdr _udph, *uh;
+               struct udphdr _udph;
+               const struct udphdr *uh;
 
                if (currenthdr == IPPROTO_UDP)
                        /* Max length: 10 "PROTO=UDP "     */
@@ -298,7 +301,8 @@ static void dump_packet(const struct nf_loginfo *info,
                break;
        }
        case IPPROTO_ICMPV6: {
-               struct icmp6hdr _icmp6h, *ic;
+               struct icmp6hdr _icmp6h;
+               const struct icmp6hdr *ic;
 
                /* Max length: 13 "PROTO=ICMPv6 " */
                printk("PROTO=ICMPv6 ");
@@ -359,7 +363,9 @@ 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);
        }
 }
@@ -428,12 +434,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;
@@ -442,65 +445,61 @@ 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 int 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;
 
        if (loginfo->level >= 8) {
-               DEBUGP("LOG: level %u >= 8\n", loginfo->level);
-               return 0;
+               pr_debug("LOG: level %u >= 8\n", loginfo->level);
+               return false;
        }
        if (loginfo->prefix[sizeof(loginfo->prefix)-1] != '\0') {
-               DEBUGP("LOG: prefix term %i\n",
-                      loginfo->prefix[sizeof(loginfo->prefix)-1]);
-               return 0;
+               pr_debug("LOG: prefix term %i\n",
+                        loginfo->prefix[sizeof(loginfo->prefix)-1]);
+               return false;
        }
-       return 1;
+       return true;
 }
 
-static struct xt_target ip6t_log_reg = {
+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;
-       ret = nf_log_register(PF_INET6, &ip6t_logger);
-       if (ret < 0 && ret != -EEXIST)
-               xt_unregister_target(&ip6t_log_reg);
-       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);