platform: fix setting preferred time for address

Before nm_platform_ip4_address_sync() set the preferred time to the same value
as the address lifetime. The result was that the preferred time was
always identical to valid lifetime.

This will lead to the kernel using the address longer then the desired
preferred time (until validity of the address expires).

https://bugzilla.redhat.com/show_bug.cgi?id=1082041
https://bugzilla.redhat.com/show_bug.cgi?id=1083283

Reported-by: Kai Engert <kengert@redhat.com>
Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
Thomas Haller 2014-03-31 11:19:45 +02:00
parent 84cfd06d6a
commit d90b9ff2c8

View file

@ -1611,7 +1611,7 @@ nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses)
guint32 shift = subtract_guint32 (now, known_address->timestamp + 5);
lifetime = subtract_guint32 (known_address->lifetime, shift);
preferred = subtract_guint32 (known_address->lifetime, shift);
preferred = subtract_guint32 (known_address->preferred, shift);
g_warn_if_fail (known_address->preferred <= known_address->lifetime);
} else
@ -1670,7 +1670,7 @@ nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses)
guint32 shift = subtract_guint32 (now, known_address->timestamp + 5);
lifetime = subtract_guint32 (known_address->lifetime, shift);
preferred = subtract_guint32 (known_address->lifetime, shift);
preferred = subtract_guint32 (known_address->preferred, shift);
g_warn_if_fail (known_address->preferred <= known_address->lifetime);
} else