[libvirt] [PATCH v2 07/36] network: use virNetDevTapReattachBridge API

Daniel P. Berrangé berrange at redhat.com
Wed Feb 27 16:28:58 UTC 2019


Switch over to use the new API for re-attaching the bridge device

Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
---
 src/network/bridge_driver.c | 47 ++++++++-----------------------------
 1 file changed, 10 insertions(+), 37 deletions(-)

diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 287c0e1889..0d8adcd8b1 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -4802,7 +4802,6 @@ networkNotifyActualDevice(virNetworkPtr net,
     virNetworkDefPtr netdef;
     virNetworkForwardIfDefPtr dev = NULL;
     size_t i;
-    char *master = NULL;
 
     obj = virNetworkObjFindByName(driver->networks, net->name);
     if (!obj) {
@@ -4849,42 +4848,17 @@ networkNotifyActualDevice(virNetworkPtr net,
 
     /* see if we're connected to the correct bridge */
     if (netdef->bridge) {
-        bool useOVS = false;
-
-        if (virNetDevGetMaster(iface->ifname, &master) < 0)
+        /*
+         * NB: we can't notify the guest of any MTU change anyway,
+         * so there is no point in trying to learn the actualMTU
+         * (final arg to virNetDevTapReattachBridge())
+         */
+        if (virNetDevTapReattachBridge(iface->ifname, netdef->bridge,
+                                       &iface->mac, dom->uuid,
+                                       virDomainNetGetActualVirtPortProfile(iface),
+                                       virDomainNetGetActualVlan(iface),
+                                       iface->mtu, NULL) < 0) {
             goto error;
-
-        /* IFLA_MASTER for a tap on an OVS switch is always "ovs-system" */
-        if (STREQ_NULLABLE(master, "ovs-system")) {
-            useOVS = true;
-            VIR_FREE(master);
-            if (virNetDevOpenvswitchInterfaceGetMaster(iface->ifname, &master) < 0)
-                goto error;
-        }
-
-        if (STRNEQ_NULLABLE(netdef->bridge, master)) {
-            /* disconnect from current (incorrect) bridge */
-            if (master) {
-                VIR_INFO("Removing %s from %s", iface->ifname, master);
-                if (useOVS)
-                    ignore_value(virNetDevOpenvswitchRemovePort(master, iface->ifname));
-                else
-                    ignore_value(virNetDevBridgeRemovePort(master, iface->ifname));
-            }
-
-            /* attach/reattach to correct bridge.
-             * NB: we can't notify the guest of any MTU change anyway,
-             * so there is no point in trying to learn the actualMTU
-             * (final arg to virNetDevTapAttachBridge())
-             */
-            VIR_INFO("Attaching %s to %s", iface->ifname, netdef->bridge);
-            if (virNetDevTapAttachBridge(iface->ifname, netdef->bridge,
-                                         &iface->mac, dom->uuid,
-                                         virDomainNetGetActualVirtPortProfile(iface),
-                                         virDomainNetGetActualVlan(iface),
-                                         iface->mtu, NULL) < 0) {
-                goto error;
-            }
         }
     }
 
@@ -5019,7 +4993,6 @@ networkNotifyActualDevice(virNetworkPtr net,
 
  cleanup:
     virNetworkObjEndAPI(&obj);
-    VIR_FREE(master);
     return;
 
  error:
-- 
2.20.1




More information about the libvir-list mailing list