Index: sys/netinet6/in6.c =================================================================== --- sys/netinet6/in6.c +++ sys/netinet6/in6.c @@ -2134,8 +2134,6 @@ { const struct sockaddr_in6 *sin6; struct nhop_object *nh; - struct in6_addr dst; - uint32_t scopeid; char ip6buf[INET6_ADDRSTRLEN]; int fibnum; @@ -2144,9 +2142,8 @@ ("sin_family %d", l3addr->sa_family)); sin6 = (const struct sockaddr_in6 *)l3addr; - in6_splitscope(&sin6->sin6_addr, &dst, &scopeid); fibnum = V_rt_add_addr_allfibs ? RT_DEFAULT_FIB : ifp->if_fib; - nh = fib6_lookup(fibnum, &dst, scopeid, NHR_NONE, 0); + nh = fib6_lookup(fibnum, &sin6->sin6_addr, sin6->sin6_scope_id, NHR_NONE, 0); if (nh && ((nh->nh_flags & NHF_GATEWAY) || nh->nh_ifp != ifp)) { struct ifaddr *ifa; /* @@ -2365,7 +2362,6 @@ ndpc.rtm.rtm_type = RTM_GET; ndpc.rtm.rtm_flags = RTF_UP; ndpc.rtm.rtm_addrs = RTA_DST | RTA_GATEWAY; - sa6_recoverscope(&ndpc.sin6); /* publish */ if (lle->la_flags & LLE_PUB) Index: sys/netinet6/nd6.c =================================================================== --- sys/netinet6/nd6.c +++ sys/netinet6/nd6.c @@ -185,8 +185,6 @@ bzero(&gw, sizeof(gw)); bzero(&rtinfo, sizeof(rtinfo)); lltable_fill_sa_entry(lle, (struct sockaddr *)&dst); - dst.sin6_scope_id = in6_getscopezone(ifp, - in6_addrscope(&dst.sin6_addr)); gw.sdl_len = sizeof(struct sockaddr_dl); gw.sdl_family = AF_LINK; gw.sdl_alen = ifp->if_addrlen;