Subject: Re: [PATCH] ipv4/ipv6: check hop limit field on input

From: Brian Haley <[email-masked]>
Date: Mon, 01 Jun 2009 14:55:20 -0400

Eric Dumazet wrote:
> Nicolas Dichtel a écrit :
>> Le 01.06.2009 18:19, Florian Westphal a écrit :
>>> Nicolas Dichtel <[email-masked]> wrote:
>>>> when network stack receives a packet, it didn't check value of
>>>> ttl/hop limit
>>>> field. RFC indicates that a router must drop the packet if this field
>>>> is 0.
>>> Whats wrong with the checks in ip(6)_forward?
>> It's on forward, not on input. Router must not process it.
>> For example, if you try to ping (with ttl set to 0) the router, you will
>> receive a reply.
>>
> 
> You seem to mix requirements for routers and hosts. ttl processing
> is relevant for a gateway only, not for a host.
> 
> (terminology : gateway / host in rfc 792)
> 
> I would say : who sent this ttl=0 packet at first ?
> 
> ping -t 0 host
> ping: can't set unicast time-to-live: Invalid argument
> 
> So Linux is not able to do that, unless using tricks of course, or patching IP_TTL

'ping6 -t 0 host' does work however.  The problem I see is that if you ping a system,
if it's a host it will respond, if it's a router it won't - the RFCs don't
explicitly state the host should drop the packet.  I don't know if that difference
in behavior is desired.  Do we know how any other OSes behave?

-Brian