From e4167a6c8145b425f94937ae0e39cc3f98856930 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Mon, 29 Jul 2019 16:13:27 +0200 Subject: [PATCH] ovs: don't release slaves on quit 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 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/215 (cherry picked from commit ccd4be4014f9f4cfdd0d298ff387ee7558d5f3a5) (cherry picked from commit a1f39b69e0b09b7ab02513e34bd41276808ad778) (cherry picked from commit f93018a41af6e6b8ef8458f4f0f0e8a26c45b7e9) (cherry picked from commit 647c054bce4c5d8dc712d3e281f629f3ed56633a) --- src/devices/ovs/nm-device-ovs-port.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/devices/ovs/nm-device-ovs-port.c b/src/devices/ovs/nm-device-ovs-port.c index a9a2b24a2b..e1243fd6b0 100644 --- a/src/devices/ovs/nm-device-ovs-port.c +++ b/src/devices/ovs/nm-device-ovs-port.c @@ -166,8 +166,14 @@ 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)); + NMDeviceOvsPort *self = NM_DEVICE_OVS_PORT (device); + + if (configure) { + _LOGI (LOGD_DEVICE, "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)); + } else + _LOGI (LOGD_DEVICE, "ovs interface %s was released", nm_device_get_ip_iface (slave)); } /*****************************************************************************/