Date: Fri, 02 Jun 2000 11:49:56 -0700 From: Shiva Shenoy <shiva@yagosys.com> To: Garrett Wollman <wollman@khavrinen.lcs.mit.edu> Cc: freebsd-net@FreeBSD.ORG Subject: Re: [Q] Clarification regarding RTF_PRCLONING and RTF_CLONING. Message-ID: <393801D4.84C60B59@yagosys.com> References: <3937F28A.5168FABC@yagosys.com> <200006021822.OAA42179@khavrinen.lcs.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
Garrett Wollman wrote:
>
> <<On Fri, 02 Jun 2000 10:44:42 -0700, Shiva Shenoy <shiva@yagosys.com> said:
>
> > 1. What is the difference between RTF_PRCLONING and RTF_CLONING
> > I see that these 2 attributes are mutually exclusive.
>
> One is enabled by the protocol and the other is enabled by the
> interface or by a routing process. The former was a hack perpetrated
> by yours truly to make the routing table behave like a per-host
> cache. I know better now, but I haven't had the time or inclination
> over the past four years to sit down and fix it.
>
> > 2. Do ARP entries, cloned off of interface routes, get deleted
> > when an interface route is brought down or deleted?
>
> I don't recall. I think there was some code to support that, but I
> don't know whether it was actually effective or not.
>
(All code snippets below are from net/route.c)
The code that may have been there is under RTM_DELETE. This call
here after the route has been deleted was intended to do that, I think.
rnh->rnh_walktree_from(rnh, dst, netmask,
rt_fixdelete, rt);
When an interface route is blown away, arp entries are not removed.
Reason: rt_fixdelete() - the first line precludes arp entries, cloned
off
of the interface route from passing the test.
The parent route is NULL for arp entries!
if (rt->rt_parent == rt0 && !(rt->rt_flags & RTF_PINNED)) {
This can be fixed by changing the line in rtrequest:
if ((*ret_nrt)->rt_flags & RTF_PRCLONING) {
rt->rt_parent = (*ret_nrt);
to:
if ((*ret_nrt)->rt_flags & (RTF_CLONING | RTF_PRCLONING)) {
rt->rt_parent = (*ret_nrt);
Do you see any serious problem in this logic?
> > 3. How come ARP rtentries do not have rt_parent set to the
> > interface routes that they are cloned off of? In fact they
> > are set to NULL.
>
> Because they are created from RTF_CLONING routes and not RTF_PRCLONING
> routes. This may actually be a bug.
Thanks again for your feedback.
-Shiva Shenoy
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?393801D4.84C60B59>
