configure: Change --with-l26 to --with-linux.
[sliver-openvswitch.git] / xenserver / usr_share_openvswitch_scripts_ovs-xapi-sync
index 273ec04..400693c 100755 (executable)
@@ -99,7 +99,7 @@ def get_bridge_id(br_name, default=None):
 # "nicira-iface-id" key in the "other_config" field of the VIF
 # record of XAPI.
 def get_iface_id(if_name, xs_vif_uuid):
-    if not if_name.startswith("vif"):
+    if not if_name.startswith("vif") and not if_name.startswith("tap"):
         # Treat whatever was passed into 'xs_vif_uuid' as a default
         # value for non-VIFs.
         return xs_vif_uuid
@@ -164,7 +164,7 @@ def update_in_band_mgmt(name):
     else:
         s_log.warning('"' + dib + '"'
                       "isn't a valid setting for other_config:disable-in-band on " +
-                      bridge)
+                      name)
 
 def update_bridge_id(name, ids):
     id = get_bridge_id(name, ids.get("xs-network-uuids"))
@@ -178,12 +178,16 @@ def update_bridge_id(name, ids):
         set_external_id("Bridge", name, "bridge-id", primary_id)
         ids["bridge-id"] = primary_id
 
-def update_iface_id(name, ids):
+def update_iface(name, ids):
     id = get_iface_id(name, ids.get("xs-vif-uuid"))
     if ids.get("iface-id") != id and id:
         set_external_id("Interface", name, "iface-id", id)
         ids["iface-id"] = id
 
+    status = ids.get("iface-status")
+    if status:
+        set_external_id("Interface", name, "iface-status", status)
+
 def keep_table_columns(schema, table_name, column_types):
     table = schema.tables.get(table_name)
     if not table:
@@ -297,6 +301,24 @@ def main(argv):
             new_interfaces[name] = {"xs-vif-uuid": xs_vif_uuid,
                                     "iface-id": iface_id}
 
+            if name.startswith("vif"):
+                new_interfaces[name]["iface-status"] = "active"
+
+        #Tap devices take their xs-vif-uuid from their corresponding vif and
+        #cause that vif to be labled inactive.
+        for name in new_interfaces:
+            if not name.startswith("tap"):
+                continue
+
+            vif = name.replace("tap", "vif", 1)
+
+            if vif in new_interfaces:
+                xs_vif_uuid = new_interfaces[vif]["xs-vif-uuid"]
+                new_interfaces[name]["xs-vif-uuid"] = xs_vif_uuid
+
+                new_interfaces[vif]["iface-status"] = "inactive"
+                new_interfaces[name]["iface-status"] = "active"
+
         if bridges != new_bridges:
             for name,ids in new_bridges.items():
                 if name not in bridges:
@@ -311,7 +333,7 @@ def main(argv):
         if interfaces != new_interfaces:
             for name,ids in new_interfaces.items():
                 if (name not in interfaces) or (interfaces[name] != ids):
-                    update_iface_id(name, ids)
+                    update_iface(name, ids)
             interfaces = new_interfaces
 
 if __name__ == '__main__':