diff options
-rw-r--r-- | sys/netinet6/in6.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index 7d0e5da..7f06a18 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $KAME: in6.c,v 1.87 2000/07/03 15:44:21 itojun Exp $ */ +/* $KAME: in6.c,v 1.99 2000/07/11 17:00:58 jinmei Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -165,7 +165,7 @@ in6_ifloop_request(int cmd, struct ifaddr *ifa) { struct sockaddr_in6 lo_sa; struct sockaddr_in6 all1_sa; - struct rtentry *nrt = NULL; + struct rtentry *nrt = NULL, **nrtp = NULL; bzero(&lo_sa, sizeof(lo_sa)); bzero(&all1_sa, sizeof(all1_sa)); @@ -180,10 +180,12 @@ in6_ifloop_request(int cmd, struct ifaddr *ifa) * This request for deletion could fail, e.g. when we remove * an address right after adding it. */ + if (cmd == RTM_ADD) + nrtp = &nrt; rtrequest(cmd, ifa->ifa_addr, (struct sockaddr *)&lo_sa, (struct sockaddr *)&all1_sa, - RTF_UP|RTF_HOST, &nrt); + RTF_UP|RTF_HOST, nrtp); /* * Make sure rt_ifa be equal to IFA, the second argument of the |