Subject: Re: loopback routes
To: Andrew Brown <atatat@atatdot.net>
From: Charles M. Hannum <root@ihack.net>
List: tech-net
Date: 05/05/2000 22:51:34
This is due to some special cases for IFF_LOOPBACK.  Could you try the
following change?


*** in.c.orig	Fri May  5 22:41:32 2000
--- in.c	Fri May  5 22:47:41 2000
***************
*** 790,796 ****
  
  	if ((ia->ia_flags & IFA_ROUTE) == 0)
  		return;
! 	if (ifp->if_flags & (IFF_LOOPBACK|IFF_POINTOPOINT))
  		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST);
  	else
  		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, 0);
--- 790,796 ----
  
  	if ((ia->ia_flags & IFA_ROUTE) == 0)
  		return;
! 	if (ifp->if_flags & IFF_POINTOPOINT)
  		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST);
  	else
  		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, 0);
***************
*** 867,875 ****
  			ia->ia_subnet | ~ia->ia_subnetmask;
  		ia->ia_netbroadcast.s_addr =
  			ia->ia_net | ~ia->ia_netmask;
- 	} else if (ifp->if_flags & IFF_LOOPBACK) {
- 		ia->ia_ifa.ifa_dstaddr = ia->ia_ifa.ifa_addr;
- 		flags |= RTF_HOST;
  	} else if (ifp->if_flags & IFF_POINTOPOINT) {
  		if (ia->ia_dstaddr.sin_family != AF_INET)
  			return (0);
--- 867,872 ----