[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <47C3E2EC.1020402@cn.fujitsu.com>
Date: Tue, 26 Feb 2008 18:59:08 +0900
From: Wei Yongjun <yjwei@...fujitsu.com>
To: Jarek Poplawski <jarkao2@...il.com>
CC: Li Yewang <lyw@...fujitsu.com>, davem@...emloft.net,
swhiteho@...hat.com, netdev@...r.kernel.org
Subject: Re: [PATCH] Can not send icmp netunreach packet
Jarek Poplawski wrote:
Maybe ip_error() does not handle the ESRCH error. In this place ESRCH eq
to ENETUNREACH?
static int ip_error(struct sk_buff *skb)
{
struct rtable *rt = (struct rtable*)skb->dst;
unsigned long now;
int code;
switch (rt->u.dst.error) {
case EINVAL:
default:
goto out;
case EHOSTUNREACH:
code = ICMP_HOST_UNREACH;
break;
case ENETUNREACH:
code = ICMP_NET_UNREACH;
break;
case EACCES:
code = ICMP_PKT_FILTERED;
break;
}
...............snip....................
}
> On 26-02-2008 07:34, Li Yewang wrote:
>
>> Hi All
>>
>> There is a bug about icmp netunreach.
>> If the kernel does not find a route for a packet,
>> it must send a icmp netunreach packet to the source host,
>> and discard the packet. But the kernel does not send
>> a icmp netunreach packet because of the fib_lookup
>> return value of -ESRCH when a route is not found.
>>
>
> ...or because some function doesn't handle -ESRCH return from
> fib_lookup? It seems changing this to -ESRCH was needed in some cases.
> And you don't explain enough why it can't be handled later (like in
> ipv4/route.c: ip_route_input_slow)?
>
> Regards,
> Jarek P.
>
>
>> Signed-off-by: Li Yewang <lyw@...fujitsu.com>
>>
>> diff -Nurp net/core_back/fib_rules.c net/core/fib_rules.c
>> --- net/core_back/fib_rules.c 2008-02-25 13:15:37.000000000 +0800
>> +++ net/core/fib_rules.c 2008-02-25 13:16:01.000000000 +0800
>> @@ -188,7 +188,7 @@ jumped:
>> }
>> }
>>
>> - err = -ESRCH;
>> + err = -ENETUNREACH;
>> out:
>> rcu_read_unlock();
>>
>>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists