diff options
author | 2016-07-05 09:17:10 +0000 | |
---|---|---|
committer | 2016-07-05 09:17:10 +0000 | |
commit | fe29d91b2d4245699d8cba1cbd2702b9263d4f1f (patch) | |
tree | 69ac3c4411f568bb244f9414d8c66d3612cd120c /sys/netinet6 | |
parent | Modify code added in rev 1.30 to use the correct variable instead of a (diff) | |
download | wireguard-openbsd-fe29d91b2d4245699d8cba1cbd2702b9263d4f1f.tar.xz wireguard-openbsd-fe29d91b2d4245699d8cba1cbd2702b9263d4f1f.zip |
Do not use ``rt_addr'' in in{6,}_selectsrc() it doesn't work with magic
addresses set on p2p interfaces.
Found the hardway by naddy@
Diffstat (limited to 'sys/netinet6')
-rw-r--r-- | sys/netinet6/in6_src.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c index b26e0e645d2..6cecd702199 100644 --- a/sys/netinet6/in6_src.c +++ b/sys/netinet6/in6_src.c @@ -1,4 +1,4 @@ -/* $OpenBSD: in6_src.c,v 1.74 2016/06/30 12:36:27 mpi Exp $ */ +/* $OpenBSD: in6_src.c,v 1.75 2016/07/05 09:17:10 mpi Exp $ */ /* $KAME: in6_src.c,v 1.36 2001/02/06 04:08:17 itojun Exp $ */ /* @@ -257,11 +257,8 @@ in6_selectsrc(struct in6_addr **in6src, struct sockaddr_in6 *dstsock, ia6 = in6_ifawithscope(ifp, dst, rtableid); if_put(ifp); } - if (ia6 == NULL) { /* xxx scope error ?*/ - *in6src = - &satosin6(ro->ro_rt->rt_addr)->sin6_addr; - return (0); - } + if (ia6 == NULL) /* xxx scope error ?*/ + ia6 = ifatoia6(ro->ro_rt->rt_ifa); } if (ia6 == NULL) return (EHOSTUNREACH); /* no route */ |