- if ((ifp->if_flags & IFF_POINTOPOINT) == 0) {
- netaddr.sin_addr = in_makeaddr(ia->ia_subnet, INADDR_ANY);
- rtinit((struct sockaddr *)&netaddr, &ia->ia_addr,
+ if (ifp->if_flags & IFF_LOOPBACK)
+ rtinit(&oldaddr, &oldaddr, (int)SIOCDELRT, RTF_HOST);
+ else if (ifp->if_flags & IFF_POINTOPOINT)
+ rtinit(&ia->ia_dstaddr, &oldaddr, (int)SIOCDELRT,
+ RTF_HOST);
+ else {
+ netaddr.sin_addr = in_makeaddr(ia->ia_subnet,
+ INADDR_ANY);
+ rtinit((struct sockaddr *)&netaddr, &oldaddr,