netdev
[Top] [All Lists]

[PATCH 2.6] ip6t_LOG and packets with hop-by-hop options

To: davem@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, netfilter-devel@xxxxxxxxxxxxxxxxxxx, laforge@xxxxxxxxxxxxx
Subject: [PATCH 2.6] ip6t_LOG and packets with hop-by-hop options
From: sebek64@xxxxxxx (Marcel Sebek)
Date: Tue, 6 Jul 2004 17:09:18 +0200
Mail-followup-to: davem@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, netfilter-devel@xxxxxxxxxxxxxxxxxxx, laforge@xxxxxxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.6+20040523i
Packet with IPPROTO_HOPOPTS extended header isn't logged properly by
ip6t_LOG.c. It only prints PROTO=0 and nothing more, because
IPPROTO_HOPOPTS=0 and in this file 0 is used to indicate last header.
This patch fix it by using IPPROTO_NONE to indicate last header.

Signed-off-by: Marcel Sebek <sebek64@xxxxxxx>


diff -urpN linux-2.6/net/ipv6/netfilter/ip6t_LOG.c 
linux-2.6-new/net/ipv6/netfilter/ip6t_LOG.c
--- linux-2.6/net/ipv6/netfilter/ip6t_LOG.c     2004-04-21 20:01:54.000000000 
+0200
+++ linux-2.6-new/net/ipv6/netfilter/ip6t_LOG.c 2004-07-06 16:48:20.000000000 
+0200
@@ -48,10 +48,10 @@ static spinlock_t log_lock = SPIN_LOCK_U
 
 /* takes in current header and pointer to the header */
 /* if another header exists, sets hdrptr to the next header
-   and returns the new header value, else returns 0 */
+   and returns the new header value, else returns IPPROTO_NONE */
 static u_int8_t ip6_nexthdr(u_int8_t currenthdr, u_int8_t **hdrptr)
 {
-       u_int8_t hdrlen, nexthdr = 0;
+       u_int8_t hdrlen, nexthdr = IPPROTO_NONE;
 
        switch(currenthdr){
                case IPPROTO_AH:
@@ -77,7 +77,6 @@ static u_int8_t ip6_nexthdr(u_int8_t cur
                        break;
        }       
        return nexthdr;
-
 }
 
 /* One level of recursion won't kill us */
@@ -101,7 +100,7 @@ static void dump_packet(const struct ip6
 
        fragment = 0;
        hdrptr = (u_int8_t *)(ipv6h + 1);
-       while (currenthdr) {
+       while (currenthdr != IPPROTO_NONE) {
                if ((currenthdr == IPPROTO_TCP) ||
                    (currenthdr == IPPROTO_UDP) ||
                    (currenthdr == IPPROTO_ICMPV6))
@@ -264,7 +263,7 @@ static void dump_packet(const struct ip6
                }
                break;
        }
-       /* Max length: 10 "PROTO 255 " */
+       /* Max length: 10 "PROTO=255 " */
        default:
                printk("PROTO=%u ", currenthdr);
        }

-- 
Marcel Sebek
jabber: sebek@xxxxxxxxx                     ICQ: 279852819
linux user number: 307850                 GPG ID: 5F88735E
GPG FP: 0F01 BAB8 3148 94DB B95D  1FCA 8B63 CA06 5F88 735E

Attachment: signature.asc
Description: Digital signature

<Prev in Thread] Current Thread [Next in Thread>