[oe] default route handling of udhcpc

Steffen Sledz sledz at dresearch-fe.de
Mon Nov 7 10:31:31 UTC 2011


On 07.11.2011 11:11, Phil Blundell wrote:
> On Mon, 2011-11-07 at 09:13 +0100, Steffen Sledz wrote:
>> Recently we hit a problem with the default route handling of udhcpc.
>>
>> The provided script busybox/files/simple.script (aka /etc/udhcpc.d/50default) removes all existing default routes before setting new routes. I think that's wrong.
>>
>> If multiple interfaces offer default routes (via DHCP, static config, or any other way) there is no reason to prefer one over another (without having any additional information). So the script should only add the new default route. A short search in the internet brings up a lot of useful scenarios for multiple default routes.
>>
>> So i tried to remove the part from the script which removes the existing routes. This led to a confusing situation.
>>
>> If the script uses "route add default gw ..." (which is the case if /sbin/ip is not installed) everything seems to work fine.
>>
>> But if /sbin/ip (from the busybox package) is installed the "ip route add default via ..." results in an "ip: RTNETLINK answers: File exists" error. In my opinion this is an error in the busybox ip implementation.
> 
> It's not a defect in busybox ip; this is the intended behaviour of "ip
> route add" and iproute2 behaves the same.  If you want multiple routes
> for the same destination then you need to use "ip route append" instead.
> Arguably it is a defect in "route" that you are allowed to set multiple
> equivalent routes without having to specify any ordering but, given that
> "route" is old and obsolescent, I am not too enthusiastic about trying
> to fix it.

OK, thanx to clarify this.

> As to whether it makes sense for the default script to tear down old
> routes, my view is that the current behaviour probably is the correct
> default.  Wanting to use multiple default routes is a fairly unusual
> case and anybody who does want to do that is probably capable of writing
> a custom script for whatever their installation requires.  Whereas, if
> dhcpcd were to leave old routes in place by default, you would probably
> end up with naive users getting stale routes left around when switching
> between networks and ending up with hard-to-debug connectivity problems.

What do you mean with stale routes? If an interfaces supports a default route it is availailable as long as the interface is up. If the interface goes down all routes using this interface are removed.

On the contrary. As i mentioned above we really hit a problem with current setting.

* Interface ethA (static config with default route) comes up and sets this default route.
* Interface ethB (in our case a USB-NIC for diagnostic purposes, DHCP with default route) comes up and *replaces* the former default route.

scenario a)
* Interface ethB goes down and removes its default route.
* There does not exist a default route any longer. :(

scenario b)
* Interface ethA tries to go down.
* This fails because removing the not-existing default route of config ethA fails. :(

Regards,
Steffen

-- 
DResearch Fahrzeugelektronik GmbH
Otto-Schmirgal-Str. 3, 10319 Berlin, Germany
Tel: +49 30 515932-237 mailto:sledz at dresearch-fe.de
Fax: +49 30 515932-299
Geschäftsführer: Dr. Michael Weber, Werner Mögle;
Amtsgericht Berlin Charlottenburg; HRB 130120 B;
Ust.-IDNr. DE273952058




More information about the Openembedded-devel mailing list