[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