Subject: Re: kern/33279
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Tommy Beadle <tbeadle@gmail.com>
List: netbsd-bugs
Date: 05/11/2006 13:35:02
The following reply was made to PR kern/33279; it has been noted by GNATS.
From: "Tommy Beadle" <tbeadle@gmail.com>
To: gnats-bugs@NetBSD.org
Cc:
Subject: Re: kern/33279
Date: Thu, 11 May 2006 09:32:30 -0400
------=_Part_6610_9427890.1147354350061
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
I have encountered the same issue and it actually appears to be a result of
the "route flush" that is called from within the startup script. Before
performing a route flush, the local link-local address has a routing table
entry with the UHL flags (not 'c'):
fe80::202:b3ff:fe48:8fd5%fxp0 00:02:b3:48:8f:d5
UHL 0 0 - lo0
After doing the route flush, it later clones the interface route:
fe80::202:b3ff:fe48:8fd5%fxp0 00:02:b3:48:8f:d5
UHLc 0 0 - lo0
which is resulting in what was previously described by dyoung. I have
modified my /usr/src/sbin/route/route.c with the following patch so that,
when performing the route flush, the UHL (without the 'c') flagged entries
are not deleted:
--- route.old.c 2006-05-10 18:00:32.000000000 -0400
+++ route.c 2006-05-10 18:00:59.000000000 -0400
@@ -309,9 +309,14 @@
rtm =3D (struct rt_msghdr *)next;
if (verbose)
print_rtmsg(rtm, rtm->rtm_msglen);
- if (!(rtm->rtm_flags & (RTF_GATEWAY | RTF_STATIC |
- RTF_LLINFO)) && !doall)
+ if (!(
+ (rtm->rtm_flags & (RTF_GATEWAY | RTF_STATIC)) ||
+ (((rtm->rtm_flags & (RTF_LLINFO | RTF_CLONED)) =3D=3D
(RTF_LLINFO | RTF_CLONED)))
+ )
+ && !doall)
+ {
continue;
+ }
if (af) {
struct sockaddr *sa =3D (struct sockaddr *)(rtm + 1=
);
I don't know if this is the "right" fix, but it is working for me.
Regards,
Tommy Beadle
------=_Part_6610_9427890.1147354350061
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
I have encountered the same issue and it actually appears to be a
result of the "route flush" that is called from within the startu=
p
script. Before performing a route flush, the local link-local
address has a routing table entry with the UHL flags (not 'c'):<br>
<br>
fe80::202:b3ff:fe48:8fd5%fxp0
00:02:b3:48:8f:d5 &nbs=
p;
UHL
0
0 - lo0<br>
<br>
After doing the route flush, it later clones the interface route:<br>
<br>
fe80::202:b3ff:fe48:8fd5%fxp0
00:02:b3:48:8f:d5 &nbs=
p;
UHLc
0
0 - lo0<br>
<br>
which is resulting in what was previously described by dyoung. I
have modified my /usr/src/sbin/route/route.c with the following patch
so that, when performing the route flush, the UHL (without the 'c')
flagged entries are not deleted:<br>
<br>
--- route.old.c 2006-05-10 18:00:32.000000000 -0400<br>
+++ route.c 2006-05-10 18:00:59.000000000 -0400<br>
@@ -309,9 +309,14 @@<br>
&nb=
sp; rtm =3D (struct rt_msghdr *)next;<br>
&nb=
sp; if (verbose)<br>
&nb=
sp;
print_rtmsg(rtm, rtm->rtm_msglen);<br>
- &n=
bsp;
if (!(rtm->rtm_flags & (RTF_GATEWAY | RTF_STATIC |<br>
- &n=
bsp;  =
; &n=
bsp;
RTF_LLINFO)) && !doall)<br>
+ &n=
bsp; if (!(<br>
+ &n=
bsp;
(rtm->rtm_flags & (RTF_GATEWAY | RTF_STATIC)) ||<br>
+ &n=
bsp;
(((rtm->rtm_flags & (RTF_LLINFO | RTF_CLONED)) =3D=3D (RTF_LLINFO |
RTF_CLONED)))<br>
+ &n=
bsp; )<br>
+ &n=
bsp; && !doall)<br>
+ &n=
bsp; {<br>
&nb=
sp;
continue;<br>
+ &n=
bsp; }<br>
&nb=
sp; if (af) {<br>
&nb=
sp;
struct sockaddr *sa =3D (struct sockaddr *)(rtm + 1);<br>
<br>
I don't know if this is the "right" fix, but it is working for me=
.<br>
<br>
Regards,<br>
Tommy Beadle<br>
------=_Part_6610_9427890.1147354350061--