Re: [PATCH 2.4.35.3] Fix the InAddrErrors increasing problem

2007-10-22 Thread David Miller
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

2007-10-22 Thread 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.

- 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

2007-10-22 Thread Gui Jianfeng
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

2007-10-22 Thread Gui Jianfeng
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

2007-10-22 Thread David Miller
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