xenserver: Must pass --no-wait to ovs-vsctl before starting ovs-vswitchd.
[openvswitch] / vswitchd / bridge.c
index 63b0c9b21fe8c1d378bb2f19bff5bb66496721cf..596040b45482c161c6bd3808018e2db9d8fb2d48 100644 (file)
@@ -417,7 +417,12 @@ set_up_iface(const struct ovsrec_interface *iface_cfg, struct iface *iface,
 
         memset(&netdev_options, 0, sizeof netdev_options);
         netdev_options.name = iface_cfg->name;
-        netdev_options.type = iface_cfg->type;
+        if (!strcmp(iface_cfg->type, "internal")) {
+            /* An "internal" config type maps to a netdev "system" type. */
+            netdev_options.type = "system";
+        } else {
+            netdev_options.type = iface_cfg->type;
+        }
         netdev_options.args = &options;
         netdev_options.ethertype = NETDEV_ETH_TYPE_NONE;
         netdev_options.may_create = true;
@@ -435,6 +440,11 @@ set_up_iface(const struct ovsrec_interface *iface_cfg, struct iface *iface,
         const char *iface_type = iface_cfg->type && strlen(iface_cfg->type)
                                   ? iface_cfg->type : NULL;
 
+        /* An "internal" config type maps to a netdev "system" type. */
+        if (iface_type && !strcmp(iface_type, "internal")) {
+            iface_type = "system";
+        }
+
         if (!iface_type || !strcmp(netdev_type, iface_type)) {
             error = netdev_reconfigure(iface->netdev, &options);
         } else {
@@ -1520,7 +1530,6 @@ static void
 bridge_reconfigure_controller(const struct ovsrec_open_vswitch *ovs_cfg,
                               struct bridge *br)
 {
-    char *pfx = xasprintf("bridge.%s.controller", br->name);
     const struct ovsrec_controller *c;
 
     c = bridge_get_controller(ovs_cfg, br);
@@ -1614,7 +1623,6 @@ bridge_reconfigure_controller(const struct ovsrec_open_vswitch *ovs_cfg,
         ofproto_set_probe_interval(br->ofproto, 5);
         ofproto_set_failure(br->ofproto, false);
     }
-    free(pfx);
 
     ofproto_set_controller(br->ofproto, br->controller);
 }