diff --git a/src/devices/ovs/nm-ovs-factory.c b/src/devices/ovs/nm-ovs-factory.c index 0c85123f8..766c650bf 100644 --- a/src/devices/ovs/nm-ovs-factory.c +++ b/src/devices/ovs/nm-ovs-factory.c @@ -120,13 +120,20 @@ ovsdb_device_removed (NMOvsdb *ovsdb, const char *name, NMDeviceType device_type NMDeviceFactory *self) { NMDevice *device; + NMDeviceState device_state; device = nm_manager_get_device (nm_manager_get (), name, device_type); if (!device) return; + device_state = nm_device_get_state (device); if ( device_type == NM_DEVICE_TYPE_OVS_INTERFACE - || nm_device_get_state (device) == NM_DEVICE_STATE_UNMANAGED) { + && device_state > NM_DEVICE_STATE_DISCONNECTED + && device_state < NM_DEVICE_STATE_DEACTIVATING) { + nm_device_state_changed (device, + NM_DEVICE_STATE_DEACTIVATING, + NM_DEVICE_STATE_REASON_REMOVED); + } else if (device_state == NM_DEVICE_STATE_UNMANAGED) { nm_device_unrealize (device, TRUE, NULL); } }