[ovs-dev] [PATCH v2] ovs-vtep: Support userspace datapaths.

Daniele Di Proietto diproiettod at vmware.com
Tue Jun 16 13:20:07 UTC 2015


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 at vmware.com>
---
v1 - v2:
Applied Guru's suggestions
* Fixed unspecified datapath_type
* Use more pythonic check for empty string
---
 vtep/ovs-vtep | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/vtep/ovs-vtep b/vtep/ovs-vtep
index 60dbb95..6e8d0db 100755
--- a/vtep/ovs-vtep
+++ b/vtep/ovs-vtep
@@ -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,11 @@ 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)
+    if ps_type == "\"\"":
+        ps_type = ""
+
     call_prog("vtep-ctl", ["set", "physical_switch", ps_name,
                            'description="OVS VTEP Emulator"'])
 
@@ -636,7 +647,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():
-- 
2.1.4




More information about the dev mailing list