Hi All:
    When I test linux kernel 2.6.9-34, and find that kernel statistics
about ipInHdrErrors which exsits in file /proc/net/snmp doesn't increase
correctly.  The criteria conform to RFC2011:

ipInHdrErrors OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of input datagrams discarded due to errors in
            their IP headers, including bad checksums, version number
            mismatch, other format errors, time-to-live exceeded, errors
            discovered in processing their IP options, etc."

When kernel receives an IP packet containing error protocol in IP
header, kernel doesn't increase this counter "ipInHdrErrors". Also, when
kernel receives an IP packet and need to forward, but  TTL=1 or TTL=0,
kernel just sends an ICMP packet to inform the sender TTL count
exceeded, and doesn't increase this counter.

The patch for this problem is shown as the following:

diff -ruN old/net/ipv4/ip_forward.c new/net/ipv4/ip_forward.c
--- old/net/ipv4/ip_forward.c   2006-05-10 10:43:30.000000000 +0800
+++ new/net/ipv4/ip_forward.c   2006-05-12 15:06:57.000000000 +0800
@@ -120,6 +120,7 @@
 
 too_many_hops:
         /* Tell the sender its packet died... */
+        IP_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS);
         icmp_send(skb, ICMP_TIME_EXCEEDED, ICMP_EXC_TTL, 0);
 drop:
        kfree_skb(skb);
diff -ruN old/net/ipv4/ip_input.c new/net/ipv4/ip_input.c
--- old/net/ipv4/ip_input.c     2006-05-10 10:43:31.000000000 +0800
+++ new/net/ipv4/ip_input.c     2006-05-12 15:07:27.000000000 +0800
@@ -249,6 +249,7 @@
                        if (!raw_sk) {
                                if (xfrm4_policy_check(NULL,
XFRM_POLICY_IN, skb)) {
                                        
IP_INC_STATS_BH(IPSTATS_MIB_INUNKNOWNPROTOS);
+                                       
IP_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS);
                                        icmp_send(skb,
ICMP_DEST_UNREACH,
                                                  ICMP_PROT_UNREACH, 0);
                                }

Signed-off-by: Wei Dong <[EMAIL PROTECTED]>

Regards
Wei Dong 


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to