mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-03 13:40:39 +01:00
core/platform: limit the preferred time to address lifetime
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1082041 Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
parent
8310a039d8
commit
84cfd06d6a
3 changed files with 10 additions and 0 deletions
|
|
@ -3601,6 +3601,8 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, NMDevice *device
|
|||
address.timestamp = discovered_address->timestamp;
|
||||
address.lifetime = discovered_address->lifetime;
|
||||
address.preferred = discovered_address->preferred;
|
||||
if (address.preferred > address.lifetime)
|
||||
address.preferred = address.lifetime;
|
||||
address.source = NM_PLATFORM_SOURCE_RDISC;
|
||||
address.flags = ifa_flags;
|
||||
|
||||
|
|
|
|||
|
|
@ -1425,6 +1425,7 @@ nm_platform_ip4_address_add (int ifindex,
|
|||
g_return_val_if_fail (ifindex > 0, FALSE);
|
||||
g_return_val_if_fail (plen > 0, FALSE);
|
||||
g_return_val_if_fail (lifetime > 0, FALSE);
|
||||
g_return_val_if_fail (preferred <= lifetime, FALSE);
|
||||
g_return_val_if_fail (klass->ip4_address_add, FALSE);
|
||||
g_return_val_if_fail (!label || strlen (label) < sizeof (((NMPlatformIP4Address *) NULL)->label), FALSE);
|
||||
|
||||
|
|
@ -1459,6 +1460,7 @@ nm_platform_ip6_address_add (int ifindex,
|
|||
g_return_val_if_fail (ifindex > 0, FALSE);
|
||||
g_return_val_if_fail (plen > 0, FALSE);
|
||||
g_return_val_if_fail (lifetime > 0, FALSE);
|
||||
g_return_val_if_fail (preferred <= lifetime, FALSE);
|
||||
g_return_val_if_fail (klass->ip6_address_add, FALSE);
|
||||
|
||||
if (nm_logging_enabled (LOGL_DEBUG, LOGD_PLATFORM)) {
|
||||
|
|
@ -1610,6 +1612,8 @@ nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses)
|
|||
|
||||
lifetime = subtract_guint32 (known_address->lifetime, shift);
|
||||
preferred = subtract_guint32 (known_address->lifetime, shift);
|
||||
|
||||
g_warn_if_fail (known_address->preferred <= known_address->lifetime);
|
||||
} else
|
||||
lifetime = preferred = NM_PLATFORM_LIFETIME_PERMANENT;
|
||||
|
||||
|
|
@ -1667,6 +1671,8 @@ nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses)
|
|||
|
||||
lifetime = subtract_guint32 (known_address->lifetime, shift);
|
||||
preferred = subtract_guint32 (known_address->lifetime, shift);
|
||||
|
||||
g_warn_if_fail (known_address->preferred <= known_address->lifetime);
|
||||
} else
|
||||
lifetime = preferred = NM_PLATFORM_LIFETIME_PERMANENT;
|
||||
|
||||
|
|
|
|||
|
|
@ -547,6 +547,8 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data)
|
|||
address.timestamp = now;
|
||||
address.lifetime = ndp_msg_opt_prefix_valid_time (msg, offset);
|
||||
address.preferred = ndp_msg_opt_prefix_preferred_time (msg, offset);
|
||||
if (address.preferred > address.lifetime)
|
||||
address.preferred = address.lifetime;
|
||||
|
||||
fill_address_from_mac (&address.address, lladdr);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue