[radvd-devel-l] [RADVD PATCH] MAX_INITIAL_RTR_ADVERT_INTERVAL support.

Pekka Savola pekkas at netcore.fi
Mon Aug 7 15:57:27 EDT 2006


Hi,

Thanks for the patch.  I've committed it to CVS.

Maybe I really should get around to releasing 1.0 soon..


On Mon, 7 Aug 2006, YOSHIFUJI Hideaki / µÈÆ£±ÑÌÀ wrote:
> This patch (against current CVS tree) adds MAX_INITIAL_RTR_ADVERT_INTERVAL
> support.
>
> Regards,
>
> Index: TODO
> ===================================================================
> RCS file: /work/cvsroot/radvd/TODO,v
> retrieving revision 1.22
> diff -u -r1.22 TODO
> --- TODO	23 May 2006 06:37:43 -0000	1.22
> +++ TODO	7 Aug 2006 07:26:12 -0000
> @@ -29,14 +29,6 @@
>  - section 6.2.1: Adv{Valid,Preferred}Lifetime that decrements in real time,
>    that is, one that will result in a Lifetime of zero at the specified time in
>    the future. (MUST)
> - - section 6.2.4: For the first few advertisements (up to
> -   MAX_INITIAL_RTR_ADVERTISEMENTS) sent from an interface when it
> -   becomes an advertising interface, if the randomly chosen interval is
> -   greater than MAX_INITIAL_RTR_ADVERT_INTERVAL, the timer SHOULD be set
> -   to MAX_INITIAL_RTR_ADVERT_INTERVAL instead.  Using a smaller interval
> -   for the initial advertisements increases the likelihood of a router
> -   being discovered quickly when it first becomes available, in the
> -   presence of possible packet loss. (SHOULD)
>  - section 6.2.5: when AdvSendAdvertisements changes to FALSE, we don't send
>    a final RA with zero Router Lifetime (we just send it when shutting down).
>    (SHOULD)
> Index: radvd.c
> ===================================================================
> RCS file: /work/cvsroot/radvd/radvd.c,v
> retrieving revision 1.28
> diff -u -r1.28 radvd.c
> --- radvd.c	23 May 2006 06:52:46 -0000	1.28
> +++ radvd.c	7 Aug 2006 07:26:12 -0000
> @@ -311,6 +311,13 @@
> 	send_ra(sock, iface, NULL);
>
> 	next = rand_between(iface->MinRtrAdvInterval, iface->MaxRtrAdvInterval);
> +
> +	if (iface->init_racount < MAX_INITIAL_RTR_ADVERTISEMENTS)
> +	{
> +		iface->init_racount++;
> +		next = min(MAX_INITIAL_RTR_ADVERT_INTERVAL, next);
> +	}
> +
> 	set_timer(&iface->tm, next);
> }
>
> @@ -350,7 +357,11 @@
> 				/* send an initial advertisement */
> 				send_ra(sock, iface, NULL);
>
> -				set_timer(&iface->tm, iface->MaxRtrAdvInterval);
> +				iface->init_racount++;
> +
> +				set_timer(&iface->tm,
> +					  min(MAX_INITIAL_RTR_ADVERT_INTERVAL,
> +					      iface->MaxRtrAdvInterval));
> 			}
> 		}
> 	}
> Index: radvd.h
> ===================================================================
> RCS file: /work/cvsroot/radvd/radvd.h,v
> retrieving revision 1.22
> diff -u -r1.22 radvd.h
> --- radvd.h	9 Jun 2006 11:46:49 -0000	1.22
> +++ radvd.h	7 Aug 2006 07:26:12 -0000
> @@ -40,6 +40,8 @@
> 	struct timer_lst	*prev;
> };
>
> +#define min(a,b)	(((a) < (b)) ? (a) : (b))
> +
> struct AdvPrefix;
>
> #define HWADDR_MAX 16
> @@ -50,6 +52,8 @@
> 	struct in6_addr		if_addr;
> 	unsigned int		if_index;
>
> +	uint8_t			init_racount;	/* Initial RAs */
> +
> 	uint8_t			if_hwaddr[HWADDR_MAX];
> 	int			if_hwaddr_len;
> 	int			if_prefix_len;
>
>

-- 
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