Index: sys/netinet6/icmp6.c =================================================================== --- sys/netinet6/icmp6.c +++ sys/netinet6/icmp6.c @@ -2305,6 +2305,16 @@ goto bad; } + /* + * If the target is global, then the nh address + * will have its scope id stripped. Insert the scope + * id from the source interface. + */ + if (in6_addrscope(&reddst6) == IPV6_ADDR_SCOPE_GLOBAL) { + if (in6_setscope(&nh6.nh_addr, m->m_pkthdr.rcvif, NULL)) + goto freeit; + } + if (IN6_ARE_ADDR_EQUAL(&src6, &nh6.nh_addr) == 0) { nd6log((LOG_ERR, "ICMP6 redirect rejected; "