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