diff options
author | ae <ae@FreeBSD.org> | 2016-04-08 11:13:24 +0000 |
---|---|---|
committer | ae <ae@FreeBSD.org> | 2016-04-08 11:13:24 +0000 |
commit | 3f81fe2ce06b0be2c179e60d88d8316d47f0c5a2 (patch) | |
tree | ea82fc43e131622e3a3fe43e1272bf3cca5a668e /sys/netinet6 | |
parent | 7dbfd5ad027d5eede9963cdaf6b072e4981ef62b (diff) | |
download | FreeBSD-src-3f81fe2ce06b0be2c179e60d88d8316d47f0c5a2.zip FreeBSD-src-3f81fe2ce06b0be2c179e60d88d8316d47f0c5a2.tar.gz |
Fix regression introduced in r296986.
Currently we don't keep zoneid in in6_ifaddr structure, because there
is still some code, that doesn't properly initialize sin6_scope_id,
but some functions use sa_equal() for addresses comparison. sa_equal()
compares full sockaddr_in6 structures and such comparison will fail.
For now use zero zoneid in in6ifa_ifwithaddr(). It is safe, because
used address is in embedded form. In future we will use zoneid, so mark it
with XXX comment.
Reported by: kp
Tested by: kp
Diffstat (limited to 'sys/netinet6')
-rw-r--r-- | sys/netinet6/in6_src.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c index 40b4723..54c0a0a 100644 --- a/sys/netinet6/in6_src.c +++ b/sys/netinet6/in6_src.c @@ -255,7 +255,7 @@ in6_selectsrc(uint32_t fibnum, struct sockaddr_in6 *dstsock, * ancillary data. */ if ((inp->inp_flags & INP_BINDANY) == 0) { - ia = in6ifa_ifwithaddr(&tmp, odstzone); + ia = in6ifa_ifwithaddr(&tmp, 0 /* XXX */); if (ia == NULL || (ia->ia6_flags & (IN6_IFF_ANYCAST | IN6_IFF_NOTREADY))) { if (ia != NULL) |