In Python3, cmp() method is no longer supported and numerical
operations evaluates value type more strictly.
So, stplib get some errors in its calculating process.

This patch fixes these problems and enable to use stplib on
Python3 interpreter.

Signed-off-by: IWASE Yusuke <[email protected]>
---
 ryu/lib/packet/bpdu.py | 2 +-
 ryu/lib/stplib.py      | 9 ++++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/ryu/lib/packet/bpdu.py b/ryu/lib/packet/bpdu.py
index 8926b2a..da3d9cb 100644
--- a/ryu/lib/packet/bpdu.py
+++ b/ryu/lib/packet/bpdu.py
@@ -379,7 +379,7 @@ class ConfigurationBPDUs(bpdu):
 
     @staticmethod
     def _encode_timer(timer):
-        return timer * 0x100
+        return int(timer) * 0x100
 
 
 @bpdu.register_bpdu_type
diff --git a/ryu/lib/stplib.py b/ryu/lib/stplib.py
index fd17b2a..de3cced 100644
--- a/ryu/lib/stplib.py
+++ b/ryu/lib/stplib.py
@@ -169,6 +169,13 @@ class EventPacketIn(event.EventBase):
         self.msg = msg
 
 
+# For Python3 compatibility
+# Note: The following is the official workaround for cmp() in Python2.
+# https://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons
+def cmp(a, b):
+    return (a > b) - (a < b)
+
+
 class Stp(app_manager.RyuApp):
     """ STP(spanning tree) library. """
 
@@ -351,7 +358,7 @@ class Stp(app_manager.RyuApp):
 
     @staticmethod
     def _cmp_value(value1, value2):
-        result = cmp(value1, value2)
+        result = cmp(str(value1), str(value2))
         if result < 0:
             return SUPERIOR
         elif result == 0:
-- 
2.7.4


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to