ovs-vtep: Support userspace datapaths.
authorDaniele Di Proietto <diproiettod@vmware.com>
Tue, 16 Jun 2015 15:25:24 +0000 (16:25 +0100)
committerGurucharan Shetty <gshetty@nicira.com>
Tue, 16 Jun 2015 15:37:14 +0000 (08:37 -0700)
With this commit, the VTEP emulator detects the datapath_type of the
bridge used as a "physical" switch, and creates subsequent bridges
with the same type.  This allows ovs-vtep to work with the userspace
datapath.

Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Gurucharan Shetty <gshetty@nicira.com>
vtep/ovs-vtep

index 60dbb95..a774e02 100755 (executable)
@@ -40,6 +40,7 @@ vlog = ovs.vlog.Vlog("ovs-vtep")
 exiting = False
 
 ps_name = ""
+ps_type = ""
 Tunnel_Ip = ""
 Lswitches = {}
 Bindings = {}
@@ -103,7 +104,12 @@ class Logical_Switch(object):
             self.tunnel_key = 0
             vlog.warn("invalid tunnel key for %s, using 0" % self.name)
 
-        ovs_vsctl("--may-exist add-br %s" % self.short_name)
+        if ps_type:
+            ovs_vsctl("--may-exist add-br %s -- set Bridge %s datapath_type=%s"
+                      % (self.short_name, self.short_name, ps_type))
+        else:
+            ovs_vsctl("--may-exist add-br %s" % self.short_name)
+
         ovs_vsctl("br-set-external-id %s vtep_logical_switch true"
                   % self.short_name)
         ovs_vsctl("br-set-external-id %s logical_switch_name %s"
@@ -595,6 +601,9 @@ def setup():
     if (ps_name not in br_list):
         ovs.util.ovs_fatal(0, "couldn't find OVS bridge %s" % ps_name, vlog)
 
+    global ps_type
+    ps_type = ovs_vsctl("get Bridge %s datapath_type" % ps_name).strip('"')
+
     call_prog("vtep-ctl", ["set", "physical_switch", ps_name,
                            'description="OVS VTEP Emulator"'])
 
@@ -636,7 +645,11 @@ def setup():
 
             ovs_vsctl("del-br %s" % br)
 
-    ovs_vsctl("add-br %s" % bfd_bridge)
+    if ps_type:
+        ovs_vsctl("add-br %s -- set Bridge %s datapath_type=%s"
+                  % (bfd_bridge, bfd_bridge, ps_type))
+    else:
+        ovs_vsctl("add-br %s" % bfd_bridge)
 
 
 def main():