diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index 75d4977310..eda52c1460 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -234,6 +234,8 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIP4Config *setting) memset (&address, 0, sizeof (address)); address.address = nm_ip4_address_get_address (s_addr); address.plen = nm_ip4_address_get_prefix (s_addr); + address.lifetime = NM_PLATFORM_LIFETIME_PERMANENT; + address.preferred = NM_PLATFORM_LIFETIME_PERMANENT; nm_ip4_config_add_address (config, &address); } @@ -278,6 +280,12 @@ nm_ip4_config_update_setting (NMIP4Config *config, NMSettingIP4Config *setting) const NMPlatformIP4Address *address = nm_ip4_config_get_address (config, i); gs_unref_object NMIP4Address *s_addr = nm_ip4_address_new (); + /* Detect dynamic address */ + if (address->lifetime != NM_PLATFORM_LIFETIME_PERMANENT) { + method = NM_SETTING_IP4_CONFIG_METHOD_AUTO; + continue; + } + /* Static address found. */ if (!method) method = NM_SETTING_IP4_CONFIG_METHOD_MANUAL; diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index bef33bc86a..2c7ce94f7e 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -237,6 +237,8 @@ nm_ip6_config_merge_setting (NMIP6Config *config, NMSettingIP6Config *setting) memset (&address, 0, sizeof (address)); address.address = *nm_ip6_address_get_address (s_addr); address.plen = nm_ip6_address_get_prefix (s_addr); + address.lifetime = G_MAXUINT32; + address.preferred = G_MAXUINT32; nm_ip6_config_add_address (config, &address); } @@ -285,6 +287,12 @@ nm_ip6_config_update_setting (NMIP6Config *config, NMSettingIP6Config *setting) if (IN6_IS_ADDR_LINKLOCAL (&address->address)) continue; + /* Detect dynamic address */ + if (address->lifetime != G_MAXUINT32) { + method = NM_SETTING_IP6_CONFIG_METHOD_AUTO; + continue; + } + /* Static address found. */ if (!method) method = NM_SETTING_IP6_CONFIG_METHOD_MANUAL;