stplib: Adopt to Python3

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 <iwase.yusuke0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
IWASE Yusuke 2016-07-25 14:41:06 +09:00 committed by FUJITA Tomonori
parent a909fa3044
commit f52bb7007e
2 changed files with 9 additions and 2 deletions

View File

@ -379,7 +379,7 @@ class ConfigurationBPDUs(bpdu):
@staticmethod
def _encode_timer(timer):
return timer * 0x100
return int(timer) * 0x100
@bpdu.register_bpdu_type

View File

@ -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: