git: if: Bandaid ifa_ifwithnet() for ifaddrs w/ same netmask
Sepherosa Ziehau
sephe at crater.dragonflybsd.org
Thu Dec 10 23:48:05 PST 2015
commit 0925f9d882e80bae6773fbae547965da8ac5ba3e
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date: Fri Dec 11 15:39:03 2015 +0800
if: Bandaid ifa_ifwithnet() for ifaddrs w/ same netmask
The original ifaddr selection logic would cause trouble for
SO_DONTROUTE sockets, if following stuffs happened:
ifconfig drv0 inet a.b.c.1
ifconfig drv0 down
ifconfig drv1 inet a.b.c.2
The original ifaddr selection logic in ifa_ifwithnet() will
select a.b.c.1 at drv0, which is down. Instead, a.b.c.2 at drv1
should be selected.
We thus prefer ifaddr w/ IFF_UP interface or is routable.
Same bandaid probably should be applied to ifa_ifwithdstaddr(),
ifa_ifwithaddr() [broadcast part], and ifaof_ifpforaddr() too.
Summary of changes:
sys/net/if.c | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0925f9d882e80bae6773fbae547965da8ac5ba3e
--
DragonFly BSD source repository
More information about the Commits
mailing list