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
This commit is contained in:
ume 2001-08-03 19:10:31 +00:00
parent 8c4571a0e7
commit f62663bb06

View File

@ -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);