icmp: account for ICMP out errors because of socket limit
Subsystems (3)
Hi, Eric && David
____ ______________
| | | | | PC |<------->| MIPS 32 core | |____| |______________|
When ping from a PC to a board (MIPS 32 core), because of socket limit, ping echo will fail. But ICMP_MIB_OUTERRORS counter is not incremented. In this case, "netstat -s" can not report these errors.
This patch will fix this problem. Now it is in the attachment. Please check it.
Best Regards!
Zhu Yanjun
Quoted 1 line
From
af800d0f123cf9c66a9ae167baa7dc1d25d0cd1fMon Sep 17 00:00:00 2001
From: Zhu Yanjun <[email protected]>
Date: Mon, 12 May 2014 11:07:20 +0800
Subject: [PATCH 1/1] icmp: account for ICMP out errors because of socket
limit
When icmp_xmit_lock fails because of socket limit or memory shortage, increment ICMP_MIB_OUTERRORS counter, so that "netstat -s" can report these errors.
netstat -s | grep "ICMP messages failed"
0 ICMP messages failed
--- net/ipv4/icmp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
net/ipv4/icmp.c +3 -1
@@ -342,8 +342,10 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)return ; sk =icmp_xmit_lock (net); -if (sk ==NULL ) +if (sk ==NULL ){ +ICMP_INC_STATS_BH (net,ICMP_MIB_OUTERRORS );return ; + } inet =inet_sk (sk); icmp_param->data.icmph.checksum =0 ;
Signature · 1 line
1.7.9.5
Hi, Eric && David
This patch is similar to the following patch.
commit 1f8438a853667d48055ad38384c63e94b32c6578
Author: Eric Dumazet <[email protected]> Date: Sat Apr 3 15:09:04 2010 -0700
icmp: Account for ICMP out errors
When ip_append() fails because of socket limit or memory shortage, increment ICMP_MIB_OUTERRORS counter, so that "netstat -s" can report these errors.
LANG=C netstat -s | grep "ICMP messages failed"
0 ICMP messages failed
For IPV6, implement ICMP6_MIB_OUTERRORS counter as well.
# grep Icmp6OutErrors /proc/net/dev_snmp6/*
/proc/net/dev_snmp6/eth0:Icmp6OutErrors 0
/proc/net/dev_snmp6/lo:Icmp6OutErrors 0
Best Regards!
Zhu Yanjun
Quoted 15 lines · zhuyj
Hi, Eric && David
____ ______________
| | | | | PC |<------->| MIPS 32 core | |____| |______________|When ping from a PC to a board (MIPS 32 core), because of socket limit, ping echo will fail. But
ICMP_MIB_OUTERRORScounter is not incremented. In this case, "netstat -s" can not report these errors.This patch will fix this problem. Now it is in the attachment. Please check it.
Best Regards!
Zhu Yanjun
David Miller
maintainerFrom: zhuyj <[email protected]>
Date: Mon, 12 May 2014 11:19:28 +0800
Quoted 7 lines
Hi, Eric && David
____ ______________
| | | | | PC |<------->| MIPS 32 core | |____| |______________|
Quoted 8 lines
When ping from a PC to a board (MIPS 32 core), because of socket limit,
ping echo will fail. ButICMP_MIB_OUTERRORScounter is not incremented.
In this case, "netstat -s" can not report these errors.This patch will fix this problem. Now it is in the attachment. Please check it.
The only time icmp_xmit_lock() can fail is if we try to generate an ICMP response to a failure to send another ICMP packet.
It is an entirely different situation from Eric's other patch which you've mentioned in this thread, and I do not think this case warrants a statistic bump at all.