Re: [PATCH 2.4.35.3] Fix the InAddrErrors increasing problem
From: Gui Jianfeng [EMAIL PROTECTED] Date: Mon, 22 Oct 2007 14:07:07 +0800 When kernel receives a package with a wrong destination ipv4 address, it can't increase InAddrErrors number correctly. InAddrErrors is located in /proc/net/snmp. This is a patch for fixing this problem. Signed-off-by: Gui Jianfeng [EMAIL PROTECTED] This patch looks fine, but I really don't handle 2.4.x kernel patches for networking as 2.6.x takes enough of my time and effort. - 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
Re: [PATCH 2.4.35.3] Fix the InAddrErrors increasing problem
Gui Jianfeng wrote on 10/22/2007 11:37:07 AM: @@ -310,8 +310,12 @@ static inline int ip_rcv_finish(struct s * how the packet travels inside Linux networking. */ if (skb-dst == NULL) { - if (ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev)) - goto drop; + int err = ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev); + if (unlikely(err)) { + if (err == -EHOSTUNREACH) +IP_INC_STATS_BH(IpInAddrErrors); + } + goto drop; } Shouldn't the goto drop be inside the if (unlikely(err)) { case? And normally it is nice to have a blank line after variable declaration. - KK - 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
Re: [PATCH 2.4.35.3] Fix the InAddrErrors increasing problem
Krishna Kumar2 写道: Gui Jianfeng wrote on 10/22/2007 11:37:07 AM: @@ -310,8 +310,12 @@ static inline int ip_rcv_finish(struct s * how the packet travels inside Linux networking. */ if (skb-dst == NULL) { - if (ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev)) - goto drop; + int err = ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev); + if (unlikely(err)) { + if (err == -EHOSTUNREACH) +IP_INC_STATS_BH(IpInAddrErrors); + } + goto drop; } Shouldn't the goto drop be inside the if (unlikely(err)) { case? yes, you are right :-) And normally it is nice to have a blank line after variable declaration. - KK -- Regards Gui Jianfeng -- Gui Jianfeng Development Dept.I Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST) 8/F., Civil Defense Building, No.189 Guangzhou Road, Nanjing, 210029, China TEL: +86+25-86630566-851 COINS: 79955-851 FAX: +86+25-83317685 MAIL:[EMAIL PROTECTED] -- - 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
Re: [PATCH 2.4.35.3] Fix the InAddrErrors increasing problem
Krishna Kumar2 写道: Gui Jianfeng wrote on 10/22/2007 11:37:07 AM: @@ -310,8 +310,12 @@ static inline int ip_rcv_finish(struct s * how the packet travels inside Linux networking. */ if (skb-dst == NULL) { - if (ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev)) - goto drop; + int err = ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev); + if (unlikely(err)) { + if (err == -EHOSTUNREACH) +IP_INC_STATS_BH(IpInAddrErrors); + } + goto drop; } Shouldn't the goto drop be inside the if (unlikely(err)) { case? And normally it is nice to have a blank line after variable declaration. sorry for my careless, here is the correct one Signed-off-by: Gui Jianfeng [EMAIL PROTECTED] --- diff -Narup linux-2.4.35.3/net/ipv4/ip_input.c linux-2.4.35.3-prep/net/ipv4/ip_input.c --- linux-2.4.35.3/net/ipv4/ip_input.c 2007-09-24 06:02:58.0 +0800 +++ linux-2.4.35.3-prep/net/ipv4/ip_input.c 2007-09-26 11:30:22.0 +0800 @@ -310,8 +310,13 @@ static inline int ip_rcv_finish(struct s * how the packet travels inside Linux networking. */ if (skb-dst == NULL) { - if (ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev)) + int err = ip_route_input(skb, iph-daddr, iph-saddr, iph-tos, dev); + + if (unlikely(err)) { + if (err == -EHOSTUNREACH) + IP_INC_STATS_BH(IpInAddrErrors); goto drop; + } } #ifdef CONFIG_NET_CLS_ROUTE diff -Narup linux-2.4.35.3/net/ipv4/route.c linux-2.4.35.3-prep/net/ipv4/route.c --- linux-2.4.35.3/net/ipv4/route.c 2007-09-24 06:02:58.0 +0800 +++ linux-2.4.35.3-prep/net/ipv4/route.c2007-09-26 11:29:19.0 +0800 @@ -1450,7 +1450,7 @@ int ip_route_input_slow(struct sk_buff * */ if ((err = fib_lookup(key, res)) != 0) { if (!IN_DEV_FORWARD(in_dev)) - goto e_inval; + goto e_hostunreach; goto no_route; } free_res = 1; @@ -1499,7 +1499,7 @@ int ip_route_input_slow(struct sk_buff * } if (!IN_DEV_FORWARD(in_dev)) - goto e_inval; + goto e_hostunreach; if (res.type != RTN_UNICAST) goto martian_destination; @@ -1668,6 +1668,11 @@ martian_destination: %u.%u.%u.%u, dev %s\n, NIPQUAD(daddr), NIPQUAD(saddr), dev-name); #endif + +e_hostunreach: + err = -EHOSTUNREACH; + goto done; + e_inval: err = -EINVAL; goto done; - KK - 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
Re: [PATCH 2.4.35.3] Fix the InAddrErrors increasing problem
From: Gui Jianfeng [EMAIL PROTECTED] Date: Mon, 22 Oct 2007 15:10:46 +0800 sorry for my careless, here is the correct one Signed-off-by: Gui Jianfeng [EMAIL PROTECTED] BTW, I would also like to say that I think a statistics correction is totally inappropriate for the 2.4.x kernel series which is in super maintainence mode. Only crash fixes and fixes for bugs that severely harm functionality should go into that tree. These obscure statistic counter cases absolutely do not qualify. - 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