From c8b5a3f91a1be7c595be4bc176a75d5beb57047a Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 20 Feb 2020 14:38:30 +0100 Subject: [PATCH] ovs: fail port enslavement when the bridge AC is not found The previous code tried to get the bridge active connection and it used the port active connection instead in case of failure. This doesn't seem right, as in nm-ovsdb.c the bridge AC is used to get the bridge settings (including the uuid, interface name, and cloned mac). In case of failure getting the bridge AC we should just fail. Fixes: 830a5a14cb29 ('device: add support for OpenVSwitch devices') --- src/devices/ovs/nm-device-ovs-port.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/devices/ovs/nm-device-ovs-port.c b/src/devices/ovs/nm-device-ovs-port.c index 0955e8a92..66a610530 100644 --- a/src/devices/ovs/nm-device-ovs-port.c +++ b/src/devices/ovs/nm-device-ovs-port.c @@ -86,6 +86,7 @@ add_iface_cb (GError *error, gpointer user_data) static gboolean enslave_slave (NMDevice *device, NMDevice *slave, NMConnection *connection, gboolean configure) { + NMDeviceOvsPort *self = NM_DEVICE_OVS_PORT (device); NMActiveConnection *ac_port = NULL; NMActiveConnection *ac_bridge = NULL; NMDevice *bridge_device; @@ -95,8 +96,11 @@ enslave_slave (NMDevice *device, NMDevice *slave, NMConnection *connection, gboo ac_port = NM_ACTIVE_CONNECTION (nm_device_get_act_request (device)); ac_bridge = nm_active_connection_get_master (ac_port); - if (!ac_bridge) - ac_bridge = ac_port; + if (!ac_bridge) { + _LOGW (LOGD_DEVICE, "can't enslave %s: bridge active-connection not found", + nm_device_get_iface (slave)); + return FALSE; + } bridge_device = nm_active_connection_get_device (ac_bridge);