device: trigger a connectivity check when device disconnects

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/219

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/225
(cherry picked from commit 88bcf87ad9)
This commit is contained in:
Thomas Haller
2019-08-01 15:40:05 +02:00
parent 0df7f74c29
commit 9168dea0da

View File

@@ -3186,14 +3186,11 @@ nm_device_check_connectivity (NMDevice *self,
NMDeviceConnectivityCallback callback, NMDeviceConnectivityCallback callback,
gpointer user_data) gpointer user_data)
{ {
NMDeviceConnectivityHandle *handle;
if (!concheck_is_possible (self)) if (!concheck_is_possible (self))
return NULL; return NULL;
concheck_periodic_schedule_set (self, addr_family, CONCHECK_SCHEDULE_CHECK_EXTERNAL); concheck_periodic_schedule_set (self, addr_family, CONCHECK_SCHEDULE_CHECK_EXTERNAL);
handle = concheck_start (self, addr_family, callback, user_data, FALSE); return concheck_start (self, addr_family, callback, user_data, FALSE);
return handle;
} }
void void
@@ -15117,6 +15114,7 @@ _set_state_full (NMDevice *self,
gboolean no_firmware = FALSE; gboolean no_firmware = FALSE;
NMSettingsConnection *sett_conn; NMSettingsConnection *sett_conn;
NMSettingSriov *s_sriov; NMSettingSriov *s_sriov;
gboolean concheck_now;
g_return_if_fail (NM_IS_DEVICE (self)); g_return_if_fail (NM_IS_DEVICE (self));
@@ -15452,8 +15450,11 @@ _set_state_full (NMDevice *self,
if (ip_config_valid (old_state) && !ip_config_valid (state)) if (ip_config_valid (old_state) && !ip_config_valid (state))
notify_ip_properties (self); notify_ip_properties (self);
concheck_update_interval (self, AF_INET, state == NM_DEVICE_STATE_ACTIVATED); concheck_now = NM_IN_SET (state, NM_DEVICE_STATE_ACTIVATED,
concheck_update_interval (self, AF_INET6, state == NM_DEVICE_STATE_ACTIVATED); NM_DEVICE_STATE_DISCONNECTED)
|| old_state >= NM_DEVICE_STATE_ACTIVATED;
concheck_update_interval (self, AF_INET, concheck_now);
concheck_update_interval (self, AF_INET6, concheck_now);
/* Dispose of the cached activation request */ /* Dispose of the cached activation request */
if (req) if (req)