[radvd-devel-l] Solicited Router Advertisements not coming when the test asks for them.
Pekka Savola
pekkas at netcore.fi
Thu Jul 30 07:49:14 EDT 2009
Hello,
Looking at this in detail, it appears from your description that
you're expecting the destination address of a solicited RA to be
ff02::1. RFC 4861 Section 6.2.6 allows to send the response to the
soliciting node directly, which is what happens when dest argument is
NULL. So the implementation is compliant in letter though not
necessarily in spirit.
I note that there *was* an unintentional change with this regard
between radvd 1.2 and 1.3. Depending on the timers, unless multicast
RA has been sent recently, the code now sends immediate reply via
unicast instead of multicast (the latter change), I suppose this was
due to a search/replace or similar error and not intentional:
http://cvs.litech.org/viewcvs/radvd/process.c?r1=1.16&r2=1.17
I suppose I'll need to correct the latter change and release radvd
1.4. Comments, anyone?
On Thu, 30 Jul 2009, Pekka Savola wrote:
> Could you clarify which radvd version you're testing? There were changes to
> this behaviour in 1.3; if you tested this, do you see the same behaviour with
> 1.2?
>
> On Thu, 30 Jul 2009, Ninad wrote:
>> I am running radvd daemon for ipv6 ready tests,
>>
>> but I am not getting radvd solicited router advertisements.
>>
>>
>>
>> I debugged the code in gdb and found that the problem was
>>
>> the destination address was not getting set to à all nodes/hosts multicast
>> address i.e
>> ff02::1.
>>
>>
>>
>> The problem I faced is à
>>
>> In the file send.c , in the routine send_ra() Line 114/115
>>
>>
>>
>> There is one condition
>>
>>
>>
>> if ( dest == NULL )
>>
>> 115 {
>>
>> 116 struct timeval tv;
>>
>> 117
>>
>> 118 dest = (struct in6_addr *)all_hosts_addr;
>>
>> 119 gettimeofday(&tv, NULL);
>>
>> 120
>>
>> 121 iface->last_multicast_sec = tv.tv_sec;
>>
>> 122 iface->last_multicast_usec = tv.tv_usec;
>>
>> 123 }
>>
>>
>>
>> Even if my dest. is NULL and source address is unspecified( :: )
>>
>> This condition is not fulfilled and so solicited router advertisements are
>> not sent.
>>
>>
>>
>> I changed the condition to
>>
>> if ( dest == NULL || dest != NULL )
>>
>> for specific tests which were depending on solicited router advertisements
>>
>> and the things started working fine. My Tests are passing.
>>
>>
>>
>>
>>
>> But the question is First of all why I need to change the code and get
>> solicited router
>> advertisements.
>>
>>
>>
>> Why the original condition was not getting satisfied ?
>>
>>
>>
>> Thanks
>>
>> Ninad.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
--
Pekka Savola "You each name yourselves king, yet the
Netcore Oy kingdom bleeds."
Systems. Networks. Security. -- George R.R. Martin: A Clash of Kings
More information about the radvd-devel-l
mailing list