summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/in6.c
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2001-08-03 19:10:31 +0000
committerume <ume@FreeBSD.org>2001-08-03 19:10:31 +0000
commitf62663bb069962df0f18083699b88c314bc77bf4 (patch)
treef06e18c0fbb148c49da7bdaccba295de4240854d /sys/netinet6/in6.c
parent8c4571a0e7b9f93dbd564c1efd9b96f34776cf79 (diff)
downloadFreeBSD-src-f62663bb069962df0f18083699b88c314bc77bf4.zip
FreeBSD-src-f62663bb069962df0f18083699b88c314bc77bf4.tar.gz
When global anycast address was assigned to lo0, wrong source
address was selected. Reported by: Shingo WATANABE <nabe@nabechan.org> Submitted by: JINMEI Tatuya <jinmei@isl.rdc.toshiba.co.jp> MFC after: 3 days
Diffstat (limited to 'sys/netinet6/in6.c')
-rw-r--r--sys/netinet6/in6.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index 9a5b404..529d122 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -1087,16 +1087,18 @@ in6_update_ifa(ifp, ifra, ia)
* some interface-boundary restriction.
*/
if (ifp->if_flags & IFF_LOOPBACK) {
+ struct in6_ifaddr *ia_loop;
+
struct in6_addr loop6 = in6addr_loopback;
- ia = in6ifa_ifpwithaddr(ifp, &loop6);
+ ia_loop = in6ifa_ifpwithaddr(ifp, &loop6);
mltaddr.sin6_addr = in6addr_nodelocal_allnodes;
IN6_LOOKUP_MULTI(mltaddr.sin6_addr, ifp, in6m);
- if (in6m == NULL && ia != NULL) {
+ if (in6m == NULL && ia_loop != NULL) {
rtrequest(RTM_ADD,
(struct sockaddr *)&mltaddr,
- (struct sockaddr *)&ia->ia_addr,
+ (struct sockaddr *)&ia_loop->ia_addr,
(struct sockaddr *)&mltmask,
RTF_UP,
(struct rtentry **)0);
OpenPOWER on IntegriCloud