From 2a21da302215feb6cf98ccdecb4f273b2cdd1019 Mon Sep 17 00:00:00 2001 From: Hajimu UMEMOTO Date: Fri, 3 Aug 2001 19:10:31 +0000 Subject: [PATCH] When global anycast address was assigned to lo0, wrong source address was selected. Reported by: Shingo WATANABE Submitted by: JINMEI Tatuya MFC after: 3 days --- sys/netinet6/in6.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index 9a5b4046653..529d122369a 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);