kern/71474: route lookup does not skip interfaces marked down

Ruslan Ermilov ru at FreeBSD.ORG
Wed Sep 8 06:50:36 PDT 2004

The following reply was made to PR kern/71474; it has been noted by GNATS.

From: Ruslan Ermilov <ru at FreeBSD.ORG>
To: Thomas Quinot <thomas at FreeBSD.ORG>
Cc: bug-followup at FreeBSD.ORG
Subject: Re: kern/71474: route lookup does not skip interfaces marked down
Date: Wed, 8 Sep 2004 16:49:27 +0300

 On Wed, Sep 08, 2004 at 03:06:48PM +0200, Thomas Quinot wrote:
 > * Ruslan Ermilov, 2004-09-08 :
 > >  > ifconfig I1 netmask
 > >  > ifconfig I1 down
 > >  > ifconfig I2 netmask
 > >  > route add default
 > >  > 
 > >  > The default route will be set to on I1, not on I2 as
 > >  > expected.
 > >  > 
 > >  It's still a misconfiguration -- if you do not bring the I1 interface
 > >  down, the "interface" route for I2 will not be installed, and the
 > >  ifconfig(8) command will be aborted.  Anyway...
 > I am not sure I get what you mean. The point of this PR is that I *do*
 > bring I1 down, that the kernel has an unambiguous indication of how to
 > reach the specified gateway ('ping' works in the example
 > described above), and in spite of that the wrong interface is selected
 > when creating a route.
 This is a misconfiguration because you cannot expect two broadcast
 interfaces configured with the same IP network to work.  The fact
 that it works at all, in a scenario you shown, is probably a bug.
 > >  I reproduced this with two ng_eiface(4) nodes.  There's still a useful
 > >  option in the route(8) utility -- you can supply an explicit reference
 > >  to the interface, like this:
 > >  : route add default -ifp I1
 > Right, I was not aware of that option.
 > >  This is also vaguely documented in the route(8) manpage, FWIW:
 > *Vaguely* is the right term I think. :-)
 > Having browsed through the code, I think the interface lookup for route
 > additions should use a modified version of ifa_ifwithaddr ignoring
 > non-up interfaces.
 If we change ifa_ifwith*() to ignore !IFF_UP interfaces, I suspect this
 will break too many things.  I think the correct change here would be
 to set the interface of the route to the interface of its gateway (if
 route is through the gateway (RTF_GATEWAY)).  This should be easy to
 fix, but I don't have a time for this now.
 Ruslan Ermilov
 ru at
 FreeBSD committer

More information about the freebsd-bugs mailing list