ip6_forward_rt
if (ip6_forward_rt.ro_rt) {
RTFREE(ip6_forward_rt.ro_rt);
ip6_forward_rt.ro_rt = NULL;
dst = (struct sockaddr_in6 *)&ip6_forward_rt.ro_dst;
if (ip6_forward_rt.ro_rt == NULL ||
!(ip6_forward_rt.ro_rt->rt_flags & RTF_UP)) {
if (ip6_forward_rt.ro_rt) {
RTFREE(ip6_forward_rt.ro_rt);
ip6_forward_rt.ro_rt = 0;
rtalloc_ign((struct route *)&ip6_forward_rt,
if (ip6_forward_rt.ro_rt == NULL) {
} else if ((rt = ip6_forward_rt.ro_rt) == NULL ||
if (ip6_forward_rt.ro_rt) {
RTFREE(ip6_forward_rt.ro_rt);
ip6_forward_rt.ro_rt = 0;
rtalloc_ign((struct route *)&ip6_forward_rt, RTF_PRCLONING);
if (ip6_forward_rt.ro_rt == NULL) {
rt = ip6_forward_rt.ro_rt;
if (ip6_forward_rt.ro_rt != NULL &&
(ip6_forward_rt.ro_rt->rt_flags & RTF_UP) &&
&((struct sockaddr_in6 *)(&ip6_forward_rt.ro_dst))->sin6_addr)) {
if (ip6_forward_rt.ro_rt) {
RTFREE(ip6_forward_rt.ro_rt);
ip6_forward_rt.ro_rt = 0;
bzero(&ip6_forward_rt.ro_dst, sizeof(struct sockaddr_in6));
dst6 = &ip6_forward_rt.ro_dst;
rtalloc_ign((struct route *)&ip6_forward_rt, RTF_PRCLONING);
if (ip6_forward_rt.ro_rt &&
(ip6_forward_rt.ro_rt->rt_flags &
!(ip6_forward_rt.ro_rt->rt_flags & RTF_WASCLONED) &&
!(ip6_forward_rt.ro_rt->rt_flags & RTF_CLONED) &&
&rt6_key(ip6_forward_rt.ro_rt)->sin6_addr)
ip6_forward_rt.ro_rt->rt_ifp->if_type == IFT_LOOP) {
(struct in6_ifaddr *)ip6_forward_rt.ro_rt->rt_ifa;