randomise DHCPv6 lease renewal intervals

This commit is contained in:
Simon Kelley
2012-03-12 21:57:18 +00:00
parent d0e2c6c9ab
commit daf061c9de

View File

@@ -922,9 +922,14 @@ static int dhcp6_no_relay(int msg_type, struct in6_addr *link_address, struct dh
if (t1cntr != 0)
{
/* go back an fill in fields in IA_NA option */
unsigned int t1 = min_time == 0xffffffff ? 0xffffffff : min_time/2;
unsigned int t2 = min_time == 0xffffffff ? 0xffffffff : (min_time/8) * 7;
int sav = save_counter(t1cntr);
unsigned int t1, t2, fuzz = rand16();
while (fuzz > (min_time/16))
fuzz = fuzz/2;
t1 = min_time == 0xffffffff ? 0xffffffff : min_time/2 - fuzz;
t2 = min_time == 0xffffffff ? 0xffffffff : ((min_time/8)*7) - fuzz;
put_opt6_long(t1);
put_opt6_long(t2);
save_counter(sav);