diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2019-07-29 16:13:27 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2019-07-29 16:13:27 +0200 |
commit | 0ac329d00096d7862f1a68883f54e9a1c8b50ffb (patch) | |
tree | fc4623c79ce323f5e1783629edde7db58ed964a4 | |
parent | a7de48515c50c35376a782ca67fbb6539e793c1f (diff) | |
download | NetworkManager-bg/ovs-restart-rh1733709.tar.gz |
ovs: don't release slaves on quitbg/ovs-restart-rh1733709
An OVS bridge and its slaves can continue to work even after NM has
quit. Keep the interface enslaved when the @configure argument of
device->release_slave() is FALSE, which happens on quit and in other
circumstances when we don't really want to release the slave from its
master.
https://bugzilla.redhat.com/show_bug.cgi?id=1733709
-rw-r--r-- | src/devices/ovs/nm-device-ovs-port.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/devices/ovs/nm-device-ovs-port.c b/src/devices/ovs/nm-device-ovs-port.c index 35eb739f9a..6fa8719880 100644 --- a/src/devices/ovs/nm-device-ovs-port.c +++ b/src/devices/ovs/nm-device-ovs-port.c @@ -140,13 +140,18 @@ del_iface_cb (GError *error, gpointer user_data) static void release_slave (NMDevice *device, NMDevice *slave, gboolean configure) { - nm_ovsdb_del_interface (nm_ovsdb_get (), nm_device_get_iface (slave), - del_iface_cb, g_object_ref (slave)); - - /* Open VSwitch is going to delete this one. We must ignore what happens - * next with the interface. */ - if (NM_IS_DEVICE_OVS_INTERFACE (slave)) - nm_device_update_from_platform_link (slave, NULL); + NMDeviceOvsPort *self = NM_DEVICE_OVS_PORT (device); + + if (configure) { + _LOGI (LOGD_TEAM, "releasing ovs interface %s", nm_device_get_ip_iface (slave)); + nm_ovsdb_del_interface (nm_ovsdb_get (), nm_device_get_iface (slave), + del_iface_cb, g_object_ref (slave)); + /* Open VSwitch is going to delete this one. We must ignore what happens + * next with the interface. */ + if (NM_IS_DEVICE_OVS_INTERFACE (slave)) + nm_device_update_from_platform_link (slave, NULL); + } else + _LOGI (LOGD_TEAM, "ovs interface %s was released", nm_device_get_ip_iface (slave)); } /*****************************************************************************/ |