Re: [PATCH] [IPv4] Reply net unreachable ICMP message
From: Mitsuru Chinen <hidden>
Date: 2007-12-06 08:14:46
On Thu, 6 Dec 2007 08:49:47 +0100 Jarek Poplawski [off-list ref] wrote:
On 06-12-2007 07:31, Mitsuru Chinen wrote:quoted
IPv4 stack doesn't reply any ICMP destination unreachable message with net unreachable code when IP detagrams are being discarded because of no route could be found in the forwarding path. Incidentally, IPv6 stack replies such ICMPv6 message in the similar situation. Signed-off-by: Mitsuru Chinen <redacted> --- net/ipv4/route.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 6714bbc..ba85ec9 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c@@ -1375,6 +1375,7 @@ static int ip_error(struct sk_buff *skb) break; case ENETUNREACH: code = ICMP_NET_UNREACH; + IP_INC_STATS_BH(IPSTATS_MIB_INNOROUTES); break; case EACCES: code = ICMP_PKT_FILTERED;@@ -2004,6 +2005,7 @@ no_route: RT_CACHE_STAT_INC(in_no_route); spec_dst = inet_select_addr(dev, 0, RT_SCOPE_UNIVERSE); res.type = RTN_UNREACHABLE; + err = -ENETUNREACH; goto local_input; /*This patch seems to be wrong. It overrides err codes from fib_lookup, where such decisions should be made.
fib_lookup() replies -ESRCH in this situation. It is necessary to override the variable by the suitable error number like the code under e_hostunreach label. Best Regards, ---- Mitsuru Chinen [off-list ref]