From Qing.Li@windriver.com  Fri Aug  9 16:48:53 2002
Return-Path: <Qing.Li@windriver.com>
Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id A872437B400
	for <freebsd-gnats-submit@freebsd.org>; Fri,  9 Aug 2002 16:48:53 -0700 (PDT)
Received: from mail.wrs.com (unknown-1-11.windriver.com [147.11.1.11])
	by mx1.FreeBSD.org (Postfix) with ESMTP id C5FA643E70
	for <freebsd-gnats-submit@freebsd.org>; Fri,  9 Aug 2002 16:48:52 -0700 (PDT)
	(envelope-from Qing.Li@windriver.com)
Received: from heavygear (qing3.isi.com [192.103.54.234])
	by mail.wrs.com (8.9.3/8.9.1) with SMTP id QAA19399
	for <freebsd-gnats-submit@freebsd.org>; Fri, 9 Aug 2002 16:48:42 -0700 (PDT)
Message-Id: <DMEGKJAJNLKBGDDBEAIPAECMFPAA.Qing.Li@windriver.com>
Date: Fri, 9 Aug 2002 16:47:52 -0700
From: "Qing Li" <Qing.Li@windriver.com>
To: "FreeBSD gnats submit" <freebsd-gnats-submit@freebsd.org>
Subject: static routes set with interface address as gateway are non-functional

>Number:         41494
>Category:       kern
>Synopsis:       static routes set with interface address as gateway are
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    bms
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Aug 09 16:51:24 PDT 2002
>Closed-Date:    Sat Nov 29 19:02:30 PST 2003
>Last-Modified:  Sat Nov 29 19:02:30 PST 2003
>Originator:     Qing Li
>Release:        FreeBSD 4.6-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD t38-108.wrs.com 4.6-PRERELEASE FreeBSD 4.6-PRERELEASE #2:
Mon Jun 17 11:10:00 GMT 2002
root@t38-108.wrs.com:/usr/obj/usr/src/sys/GENERIC i386

Timecounter "i8254"  frequency 1193182 Hz
CPU: Pentium II/Pentium II Xeon/Celeron (265.37-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x634  Stepping = 4

Features=0x80f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,M
MX>
real memory  = 167772160 (163840K bytes)
avail memory = 158187520 (154480K bytes)
pnpbios: Bad PnP BIOS data checksum
Preloaded elf kernel "kernel" at 0xc04c8000.
Pentium Pro MTRR support enabled

>Description:

	My interface xl0 is assigned 147.11.38.218.

	==========
	Routing tables

	Internet:
	Destination        Gateway            Flags    Refs      Use  Netif Expire
	default            147.11.38.1        UGSc        4        0    xl0
	127.0.0.1          127.0.0.1          UH          1       22    lo0
	147.11.38/24       link#5             UC          2        0    xl0
	147.11.38.1        00:00:0c:07:ac:26  UHLW        5        0    xl0    783
	147.11.38.15       147.11.38.218      UGHS        0        3    xl0
	147.11.38.218      127.0.0.1          UGHS        1        0    lo0
	147.11.38.254      00:02:7e:23:fa:80  UHLW        0        0    xl0     49

	Internet6:
	Destination                       Gateway                       Flags
Netif Expire
	::1                               ::1                           UH
lo0
	fe80::%xl0/64                     link#5                        UC
xl0
	fe80::2b0:d0ff:fe84:c8bc%xl0      fe80::2c0:4fff:fe8d:63b9%xl0  UGHS
xl0
	fe80::2c0:4fff:fe8d:63b9%xl0      00:c0:4f:8d:63:b9             UHL
lo0
	fe80::2e0:ff:fe84:4237%xl0        00:e0:00:84:42:37             UHLW
xl0
	fe80::%lo0/64                     fe80::1%lo0                   Uc
lo0
	fe80::1%lo0                       link#8                        UHL
lo0
	ff01::/32                         ::1                           U
lo0
	ff02::%xl0/32                     link#5                        UC
xl0
	ff02::%lo0/32                     ::1                           UC
lo0
	==========

	Now I add a host route:
	"route add -host 147.11.38.15 147.11.38.218"

	Then "ping 147.11.38.15"  fails.

	This is due to the "G" flag in that static route entry with the gateway
	address being one of the interface addresses. During transmission the
	route lookup on the gateway address will point the output interface
	to the loopback interface.

	This route addition should be allowed as a place holder
	to be filled in later, similar to of an entry with RTF_LLINFO flag.

	I put in the fixes, here is what the routing table shows after the fix
	using the same route command,

	===========
	147.11.38.15       link#5      UHLS        0        3    xl0
	===========

	"ping 147.11.38.15" now succeeds, that route entry is modified to be

	===========
	147.11.38.15       8:0:20:d1:64:c6    UHLS        0        3    xl0
	===========

	Similar problem exists in IPv6.
	Unlike "ping", "ping6" returns -1 with an error message
	of "No route to host".


>How-To-Repeat:

	Add a static route entry to a host that is directely reachable, set
	the gateway value using the interface address.

	For IPv4
	--------
	Step 1: route add -host 147.11.38.15 147.11.38.218
	Step 2: ping 147.11.38.15

	For IPv6
	--------
	Step 1: route add -host -inet6 fe80::2b0:d0ff:fe84:c8bc%xl0 -inet6 \
					      fe80::2c0:4fff:fe8d:63b9%xl0
	Step 2: ping6 fe80::2b0:d0ff:fe84:c8bc%xl0

>Fix:

	/usr/src/net/route.c

*** route.c     Mon Aug  5 17:33:39 2002
--- route.c.new Fri Aug  9 15:18:04 2002
***************
*** 1006,1011 ****
--- 1006,1018 ----
                        rt->rt_gwroute = 0;
                        return EDQUOT; /* failure */
                }
+                 if (rt->rt_gwroute->rt_ifp &&
+                     (rt->rt_gwroute->rt_ifp->if_flags & IFF_LOOPBACK))
+                 {
+                     rt->rt_gwroute = 0;
+                     rt->rt_flags &= ~RTF_GATEWAY;
+                     rt->rt_flags |= RTF_LLINFO;
+                 }
        }

        /*


	/usr/src/netinet/if_ether.c

*** if_ether.c  Mon Aug  5 17:33:44 2002
--- if_ether.c.new      Fri Aug  9 15:15:50 2002
***************
*** 188,194 ****
                if ((rt->rt_flags & RTF_HOST) == 0 &&
                    SIN(rt_mask(rt))->sin_addr.s_addr != 0xffffffff)
                        rt->rt_flags |= RTF_CLONING;
!               if (rt->rt_flags & RTF_CLONING) {
                        /*
                         * Case 1: This route should come from a route to
iface.
                         */
--- 188,194 ----
                if ((rt->rt_flags & RTF_HOST) == 0 &&
                    SIN(rt_mask(rt))->sin_addr.s_addr != 0xffffffff)
                        rt->rt_flags |= RTF_CLONING;
!               if (rt->rt_flags & (RTF_CLONING | RTF_LLINFO)) {
                        /*
                         * Case 1: This route should come from a route to
iface.
                         */
***************
*** 198,204 ****
                        SDL(gate)->sdl_type = rt->rt_ifp->if_type;
                        SDL(gate)->sdl_index = rt->rt_ifp->if_index;
                        rt->rt_expire = time_second;
!                       break;
                }
                /* Announce a new entry if requested. */
                if (rt->rt_flags & RTF_ANNOUNCE)
--- 198,205 ----
                        SDL(gate)->sdl_type = rt->rt_ifp->if_type;
                        SDL(gate)->sdl_index = rt->rt_ifp->if_index;
                        rt->rt_expire = time_second;
!                         if (rt->rt_flags & RTF_CLONING)
!                           break;
                }
                /* Announce a new entry if requested. */
                if (rt->rt_flags & RTF_ANNOUNCE)


	/usr/src/netinet6/nd6.c

*** nd6.c       Tue Apr 30 14:09:54 2002
--- nd6.c.new   Fri Aug  9 15:20:11 2002
***************
*** 1227,1233 ****
                Bzero(ln, sizeof(*ln));
                ln->ln_rt = rt;
                /* this is required for "ndp" command. - shin */
!               if (req == RTM_ADD) {
                        /*
                         * gate should have some valid AF_LINK entry,
                         * and ln->ln_expire should have some lifetime
--- 1227,1233 ----
                Bzero(ln, sizeof(*ln));
                ln->ln_rt = rt;
                /* this is required for "ndp" command. - shin */
!                 if ((req == RTM_ADD) && !(rt->rt_flags & RTF_LLINFO)) {
                        /*
                         * gate should have some valid AF_LINK entry,
                         * and ln->ln_expire should have some lifetime




>Release-Note:
>Audit-Trail:

From: Ruslan Ermilov <ru@FreeBSD.org>
To: Qing Li <Qing.Li@windriver.com>
Cc: bug-followup@FreeBSD.org
Subject: Re: kern/41494: static routes set with interface address as gateway are non-functional
Date: Tue, 13 Aug 2002 13:27:58 +0300

 --xJK8B5Wah2CMJs8h
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable
 
 On Fri, Aug 09, 2002 at 04:47:52PM -0700, Qing Li wrote:
 >=20
 > 	My interface xl0 is assigned 147.11.38.218.
 >=20
 > 	=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 > 	Routing tables
 >=20
 > 	Internet:
 > 	Destination        Gateway            Flags    Refs      Use  Netif Expi=
 re
 > 	default            147.11.38.1        UGSc        4        0    xl0
 > 	127.0.0.1          127.0.0.1          UH          1       22    lo0
 > 	147.11.38/24       link#5             UC          2        0    xl0
 > 	147.11.38.1        00:00:0c:07:ac:26  UHLW        5        0    xl0    7=
 83
 > 	147.11.38.15       147.11.38.218      UGHS        0        3    xl0
 > 	147.11.38.218      127.0.0.1          UGHS        1        0    lo0
 > 	147.11.38.254      00:02:7e:23:fa:80  UHLW        0        0    xl0     =
 49
 >=20
 > 	Internet6:
 > 	Destination                       Gateway                       Flags Ne=
 tif Expire
 > 	::1                               ::1                           UH    lo0
 > 	fe80::%xl0/64                     link#5                        UC    xl0
 > 	fe80::2b0:d0ff:fe84:c8bc%xl0      fe80::2c0:4fff:fe8d:63b9%xl0  UGHS  xl0
 > 	fe80::2c0:4fff:fe8d:63b9%xl0      00:c0:4f:8d:63:b9             UHL   lo0
 > 	fe80::2e0:ff:fe84:4237%xl0        00:e0:00:84:42:37             UHLW  xl0
 > 	fe80::%lo0/64                     fe80::1%lo0                   Uc    lo0
 > 	fe80::1%lo0                       link#8                        UHL   lo0
 > 	ff01::/32                         ::1                           U     lo0
 > 	ff02::%xl0/32                     link#5                        UC    xl0
 > 	ff02::%lo0/32                     ::1                           UC    lo0
 > 	=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 >=20
 > 	Now I add a host route:
 > 	"route add -host 147.11.38.15 147.11.38.218"
 >=20
 > 	Then "ping 147.11.38.15"  fails.
 >=20
 > 	This is due to the "G" flag in that static route entry with the gateway
 > 	address being one of the interface addresses.
 >=20
 Yep, this corresponds to what you typed: gateway 147.11.38.218.
 
 >       During transmission the
 > 	route lookup on the gateway address will point the output interface
 > 	to the loopback interface.
 >=20
 Yes, gwroute will point to the 147.11.38.218 route which is thru lo0.
 
 > 	This route addition should be allowed as a place holder
 > 	to be filled in later, similar to of an entry with RTF_LLINFO flag.
 >=20
 I disagree.  In your ``route add'', you specified a gateway and you
 get what you requested.  What would be a purpose of adding such a
 route?  ARP can already do this for you by cloning from the network
 route, adding route with the gateway of some of the local addresses
 has its own purpose; e.g. one can put a divert(4) daemon listetning
 on lo0 that would get these packets.  Or:
 
 # ifconfig rl0 inet
 rl0: flags=3D8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet 192.168.4.115 netmask 0xffffff00 broadcast 192.168.4.255
 # ifconfig rl0 192.168.4.201/32 alias
 # route delete 192.168.4.201/32
 delete net 192.168.4.201
 # route add 192.168.4.201 192.168.4.115
 add host 192.168.4.201: gateway 192.168.4.115
 # ping -c1 192.168.4.201
 PING 192.168.4.201 (192.168.4.201): 56 data bytes
 64 bytes from 192.168.4.201: icmp_seq=3D0 ttl=3D64 time=3D0.088 ms
 --- 192.168.4.201 ping statistics ---
 1 packets transmitted, 1 packets received, 0% packet loss
 round-trip min/avg/max/stddev =3D 0.088/0.088/0.088/0.000 ms
 #
 
 > 	I put in the fixes, here is what the routing table shows after the fix
 > 	using the same route command,
 >=20
 > 	=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 > 	147.11.38.15       link#5      UHLS        0        3    xl0
 > 	=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 >=20
 It's possible to create such an entry (though a bit tricky) even without
 patching sys/net/route.c:
 
 route -vn add -host 147.11.38.15 -link : -ifp rl0 -iface
 
 > 	"ping 147.11.38.15" now succeeds, that route entry is modified to be
 >=20
 > 	=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 > 	147.11.38.15       8:0:20:d1:64:c6    UHLS        0        3    xl0
 > 	=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 >=20
 > 	Similar problem exists in IPv6.
 > 	Unlike "ping", "ping6" returns -1 with an error message
 > 	of "No route to host".
 >=20
 >=20
 > >How-To-Repeat:
 >=20
 > 	Add a static route entry to a host that is directely reachable, set
 > 	the gateway value using the interface address.
 >=20
 > 	For IPv4
 > 	--------
 > 	Step 1: route add -host 147.11.38.15 147.11.38.218
 > 	Step 2: ping 147.11.38.15
 >=20
 > 	For IPv6
 > 	--------
 > 	Step 1: route add -host -inet6 fe80::2b0:d0ff:fe84:c8bc%xl0 -inet6 \
 > 					      fe80::2c0:4fff:fe8d:63b9%xl0
 > 	Step 2: ping6 fe80::2b0:d0ff:fe84:c8bc%xl0
 >=20
 > >Fix:
 >=20
 > 	/usr/src/net/route.c
 >=20
 > *** route.c     Mon Aug  5 17:33:39 2002
 > --- route.c.new Fri Aug  9 15:18:04 2002
 > ***************
 > *** 1006,1011 ****
 > --- 1006,1018 ----
 >                         rt->rt_gwroute =3D 0;
 >                         return EDQUOT; /* failure */
 >                 }
 > +                 if (rt->rt_gwroute->rt_ifp &&
 > +                     (rt->rt_gwroute->rt_ifp->if_flags & IFF_LOOPBACK))
 > +                 {
 > +                     rt->rt_gwroute =3D 0;
 
 This leaks.  You need to RTFREE() it first.
 
 > +                     rt->rt_flags &=3D ~RTF_GATEWAY;
 > +                     rt->rt_flags |=3D RTF_LLINFO;
 > +                 }
 >         }
 >=20
 >         /*
 >=20
 >=20
 > 	/usr/src/netinet/if_ether.c
 >=20
 > *** if_ether.c  Mon Aug  5 17:33:44 2002
 > --- if_ether.c.new      Fri Aug  9 15:15:50 2002
 > ***************
 > *** 188,194 ****
 >                 if ((rt->rt_flags & RTF_HOST) =3D=3D 0 &&
 >                     SIN(rt_mask(rt))->sin_addr.s_addr !=3D 0xffffffff)
 >                         rt->rt_flags |=3D RTF_CLONING;
 > !               if (rt->rt_flags & RTF_CLONING) {
 >                         /*
 >                          * Case 1: This route should come from a route to
 > iface.
 >                          */
 > --- 188,194 ----
 >                 if ((rt->rt_flags & RTF_HOST) =3D=3D 0 &&
 >                     SIN(rt_mask(rt))->sin_addr.s_addr !=3D 0xffffffff)
 >                         rt->rt_flags |=3D RTF_CLONING;
 > !               if (rt->rt_flags & (RTF_CLONING | RTF_LLINFO)) {
 >                         /*
 >                          * Case 1: This route should come from a route to
 > iface.
 >                          */
 
 I think this might make the ``route add'' I quoted above to do
 what you want, though I disagree with the change in principle.
 
 > ***************
 > *** 198,204 ****
 >                         SDL(gate)->sdl_type =3D rt->rt_ifp->if_type;
 >                         SDL(gate)->sdl_index =3D rt->rt_ifp->if_index;
 >                         rt->rt_expire =3D time_second;
 > !                       break;
 >                 }
 >                 /* Announce a new entry if requested. */
 >                 if (rt->rt_flags & RTF_ANNOUNCE)
 > --- 198,205 ----
 >                         SDL(gate)->sdl_type =3D rt->rt_ifp->if_type;
 >                         SDL(gate)->sdl_index =3D rt->rt_ifp->if_index;
 >                         rt->rt_expire =3D time_second;
 > !                         if (rt->rt_flags & RTF_CLONING)
 > !                           break;
 >                 }
 >                 /* Announce a new entry if requested. */
 >                 if (rt->rt_flags & RTF_ANNOUNCE)
 >=20
 >=20
 > 	/usr/src/netinet6/nd6.c
 >=20
 > *** nd6.c       Tue Apr 30 14:09:54 2002
 > --- nd6.c.new   Fri Aug  9 15:20:11 2002
 > ***************
 > *** 1227,1233 ****
 >                 Bzero(ln, sizeof(*ln));
 >                 ln->ln_rt =3D rt;
 >                 /* this is required for "ndp" command. - shin */
 > !               if (req =3D=3D RTM_ADD) {
 >                         /*
 >                          * gate should have some valid AF_LINK entry,
 >                          * and ln->ln_expire should have some lifetime
 > --- 1227,1233 ----
 >                 Bzero(ln, sizeof(*ln));
 >                 ln->ln_rt =3D rt;
 >                 /* this is required for "ndp" command. - shin */
 > !                 if ((req =3D=3D RTM_ADD) && !(rt->rt_flags & RTF_LLINFO=
 )) {
 >                         /*
 >                          * gate should have some valid AF_LINK entry,
 >                          * and ln->ln_expire should have some lifetime
 
 --=20
 Ruslan Ermilov		Sysadmin and DBA,
 ru@sunbay.com		Sunbay Software AG,
 ru@FreeBSD.org		FreeBSD committer,
 +380.652.512.251	Simferopol, Ukraine
 
 http://www.FreeBSD.org	The Power To Serve
 http://www.oracle.com	Enabling The Information Age
 
 --xJK8B5Wah2CMJs8h
 Content-Type: application/pgp-signature
 Content-Disposition: inline
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.0.7 (FreeBSD)
 
 iD8DBQE9WN8uUkv4P6juNwoRAl5UAJ0bYxz0Qi+yTebpgcJmBGE6lqsujgCaAtbr
 m2LslPsR/llwJkTFs0RwCgg=
 =WApY
 -----END PGP SIGNATURE-----
 
 --xJK8B5Wah2CMJs8h--

From: "Qing Li" <Qing.Li@windriver.com>
To: "QING LI" <qing.li@windriver.com>,
	"Ruslan Ermilov" <ru@freebsd.org>
Cc: <bug-followup@freebsd.org>
Subject: RE: kern/41494: static routes set with interface address as gateway are non-functional
Date: Wed, 14 Aug 2002 12:28:29 -0700

 >
 > > 	This route addition should be allowed as a place holder
 > > 	to be filled in later, similar to of an entry with RTF_LLINFO flag.
 > >
 > I disagree.  In your ``route add'', you specified a gateway and you
 > get what you requested.  What would be a purpose of adding such a
 > route?
 >
 
 	This issue came up while I was trying to narrow down
 	an EHOSTUNREACH problem when running PPP over IPv6.
 
 > >
 > It's possible to create such an entry (though a bit tricky) even without
 > patching sys/net/route.c:
 >
 > route -vn add -host 147.11.38.15 -link : -ifp rl0 -iface
 >
 
 	This would be one reason.
 
 >
 > ARP can already do this for you by cloning from the network
 > route,
 >
 
 	Right, and I am aware of that.
 
 	My point is, however, that the code tries to validate
 	gateway reach-ability for indirect routes. So why can't that
 	code be extended to make an attempt in determining
 	whether a route should be converted from RTF_GATEWAY
 	to RTF_LLINFO during the insertion process.
 
 >
 > adding route with the gateway of some of the local addresses
 > has its own purpose;
 >
 
 	No disagreement here.
 
 >
 > e.g. one can put a divert(4) daemon listetning
 > on lo0 that would get these packets.  Or:
 >
 
 	I don't really see how that is of what you said
 	above looking at ip_output and divert_packet.
 
 	But I think I understand what you are getting at.
 	I am also trying to find a case, if any, that
 	would indicate the code change would break the
 	existing operation.
 
 >
 > # ifconfig rl0 inet
 > rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
 >         inet 192.168.4.115 netmask 0xffffff00 broadcast 192.168.4.255
 > # ifconfig rl0 192.168.4.201/32 alias
 > # route delete 192.168.4.201/32
 > delete net 192.168.4.201
 > # route add 192.168.4.201 192.168.4.115
 > add host 192.168.4.201: gateway 192.168.4.115
 > # ping -c1 192.168.4.201
 > PING 192.168.4.201 (192.168.4.201): 56 data bytes
 > 64 bytes from 192.168.4.201: icmp_seq=0 ttl=64 time=0.088 ms
 > --- 192.168.4.201 ping statistics ---
 > 1 packets transmitted, 1 packets received, 0% packet loss
 > round-trip min/avg/max/stddev = 0.088/0.088/0.088/0.000 ms
 > #
 >
 
 	Hmmm.... That is not what I get after doing the exact same
 	thing as the above (without any modification of course).
 	Using your example, my route table looks like the following:
 
  	Internet:
  	Destination        Gateway            Flags    Refs      Use  Netif Expire
 
  	192.168.4.201      192.168.4.115      UGHS        0        3    rl0
 
 >
 > >                 }
 > > +                 if (rt->rt_gwroute->rt_ifp &&
 > > +                     (rt->rt_gwroute->rt_ifp->if_flags & IFF_LOOPBACK))
 > > +                 {
 > > +                     rt->rt_gwroute = 0;
 >
 > This leaks.  You need to RTFREE() it first.
 >
 
 	Nice catch. Thank you.
 
 >
 > I think this might make the ``route add'' I quoted above to do
 > what you want,
 >
 
 	It does just that though I haven't tested the code exhaustively
 	to see if it broke something.
 
 	-- Qing
 
 
 
State-Changed-From-To: open->feedback 
State-Changed-By: njl 
State-Changed-When: Fri Aug 23 17:14:38 PDT 2002 
State-Changed-Why:  
Please discuss on freebsd-net to agree on proper behavior.  If the 
current behavior is by design, this PR can be closed.  If not, a proper 
patch should be built, following style(9) and fixing resource leaks. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=41494 

From: Nate Lawson <nate@root.org>
To: freebsd-gnats-submit@freebsd.org
Cc:  
Subject: RE: kern/41494: static routes set with interface address as gateway
 are (fwd)
Date: Fri, 11 Oct 2002 21:59:46 -0700 (PDT)

 ---------- Forwarded message ----------
 Date: Fri, 23 Aug 2002 17:52:42 -0700
 From: Qing Li <Qing.Li@windriver.com>
 To: Nate Lawson <njl@freebsd.org>, freebsd-bugs@freebsd.org
 Subject: RE: kern/41494: static routes set with interface address as
     gateway are
 
 
 	I have sent a detailed description email to freebsd-net and 
 	freebsd-hackers before submitting the PR. I received only
 	one reply.
 
 	This behavior is by design but I believe it should be corrected.
 	The analogy to my reasoning is ICMP redirect.
 
 	I am not sure how to carry this discussion forward.
 	Please advise.
 
 	-- Qing
 
State-Changed-From-To: feedback->open 
State-Changed-By: ceri 
State-Changed-When: Sun Jun 8 10:57:41 PDT 2003 
State-Changed-Why:  
Feedback has been requested and received; throw this PR back open. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=41494 
Responsible-Changed-From-To: freebsd-bugs->bms 
Responsible-Changed-By: bms 
Responsible-Changed-When: Tue 25 Nov 2003 08:23:28 PST 
Responsible-Changed-Why:  
I'm in hoover up network PRs mode. I'll look into this. 

Looks like this one has already been bashed around a bit. A rewrite of some 
parts of the routing code is long overdue, so I'll pick this up with my fork 
and put it on my plate. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=41494 
State-Changed-From-To: open->closed 
State-Changed-By: bms 
State-Changed-When: Sat 29 Nov 2003 19:01:56 PST 
State-Changed-Why:  
The behaviour the submitter is encountering is by design, but it may 
change in future. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=41494 
>Unformatted:
 non-functional
