[6bone-pl] Re: patch to Solaris mrt 980728 (nexthop or link local)

masaki w merit.edu masaki w merit.edu
Śro, 26 Sie 1998, 12:53:15 MEST


Hi. Rafal,

>> From: Rafal Maszkowski <rzm w icm.edu.pl>
>> Subject: patch to Solaris mrt 980728 (nexthop or link local)
>> Date: Mon, 24 Aug 1998 03:34:32 +0200
>> Message-ID: <19980824033432.Z26541 w icm.edu.pl>
>>
> Long TIMEOUT delay: I'm getting disconnected still with this patch.
> In non-threaded version (I'm using it for easier debugging) the timeout
> is some 900 s. The test I've done before sending the patch was made on
> home non-connected Linux, where mrtd I think recently was also compiled
> with threads disabled.

I'll check this later. My understanding is that non-thread version
never timeouts, but I haven't taken a look at this part well.

> My problems described in last two e-mails (not CCed to any list:
> new->nexthop in rib_kernel_update_route contains link local address,
> not next-hop gateway addres so assigning it to nexthop variable in
> rib.c:264 causes adding a kernel route with link local address as a
> gateway address which I suppose isn't correct.) seem to be solved by
> following patch to view.c:

Nexthops (in the kernel routing table) should be link-local since the
addresses are within link-local scope. I remember that the RIPng RFC
says routers must send link-local address as nexthop. About BGP4+, I
think (the IPv6 BGP extension draft says) nexthop is either 1) global
address, or 2) global address + link-local address if the link is
shared by the peers. So, I think my code tries to use link-local if
it's available when injecting a route into the kernel.

Using link-local address as nexthop (gateway) is correct, I think, but
also global address could be used as nexthop on most implementations.
Note that link-local address doesn't have subnet information, so
route_add() function requires its interface index.

I've read Linux IPv6 code and confirmed my understanding, but I can
not read Solaris IPv6 code. My Solaris's code is built by guessing
their IPv6 extension. Their IPv6 extension is specific to Solaris and
its interface is hidden to the public. (But I think Solaris IPv6 code
accepts link-local address as nexthop.)

> I see no reason why something called nexthop should contain a link local
> address. If I understand correctly ll address is only for router advertisements
> which mrtd is not dealing with. The nexthop variable is used as a gateway
> later in the code and it should be some global gateway address, not ll address.
> Why the non-patched code works on Linux? You may be getting a real interface
> address into the variable where link local should be stored. Just a hypotesis.
> Somebody may want to check if my patch breaks Linux version (Cc to Polish
> 6bone list and to mrt-discuss).
> 
> 
> solaris.c patch is temporary and will work for tunnels-only configuration.
> I'm not using real Ethernet interfaces for v6 connections so I even don't
> know how it could look like. Probably the interfaces list should be searched
> for ifname#v6 and ifname:1. If the 1st exists it should be used. If not (and
> maybe only if ifname:1 exists) just ifname without any suffix should be used.

This may be one of reasons why MRT doesn't work on your Solaris.
Since I haven't taken a look at Solaris IPv6 code, I'm not sure how
its interface index corresponds to their interface names as well as
aliases. And, as you probably noticed, Solaris link-local address is
built differently from others.  The link-local address includes kind
of interface index in it.

Very long time ago, I asked about their interface. The answer was to
wait until their code follows the API drafts being discussed in IETF.
I have not been spending much time to develop MRT on Solaris since
they said Solaris 2.7 will be shipped with the product version of IPv6
code.

Allow me to respond you incompletely. I'm afraid that a couple of
mixed things cause your problem on Solaris. Your situation is so
complicated as I haven't tested, so I need to check out one by one.

Masaki
at Chicago IETF

> diff -ru mrt-1.4.8a-980728.masaki+/src/lib/kernel/solaris.c mrt-1.4.8a-980728.masaki++/src/lib/kernel/solaris.c
> --- mrt-1.4.8a-980728.masaki+/src/lib/kernel/solaris.c	Fri Jul 17 20:31:27 1998
> +++ mrt-1.4.8a-980728.masaki++/src/lib/kernel/solaris.c	Mon Aug 24 01:42:07 1998
> @@ -436,9 +436,9 @@
>  	    strncpy (rt6.v6rt_ifname, interface->name,
>  		     sizeof (rt6.v6rt_ifname));
>  	    /* XXX dirty way! */
> -	    if (strchr (rt6.v6rt_ifname, '#') == NULL) {
> +/*	    if (strchr (rt6.v6rt_ifname, '#') == NULL) {
>  		strcat (rt6.v6rt_ifname, "#v6");
> -	    }
> +	    }	*/
>  	}
>  
>  	switch (cmd) {
> 
> R.
> 



Więcej informacji o liście dyskusyjnej 6BONE-PL