stplib: Fix to compare MAC address and Bridge ID
cmp() func was introduced for Python 3 compatibility before, but this implementation is not enough, because a MAC address can not be compared with a Bridge ID (integer value) by com() func. This patch fixes to convert the MAC address into an integer value before comparing with Bridge ID and fixes this problem. Signed-off-by: Shinpei Muraoka <shinpei.muraoka@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
29d1a97139
commit
d23c07054e
@ -49,6 +49,15 @@ def haddr_to_str(addr):
|
||||
raise AssertionError
|
||||
|
||||
|
||||
def haddr_to_int(addr):
|
||||
"""Convert mac address string in human readable format into
|
||||
integer value"""
|
||||
try:
|
||||
return int(addr.replace(':', ''), 16)
|
||||
except:
|
||||
raise ValueError
|
||||
|
||||
|
||||
def haddr_to_bin(string):
|
||||
"""Parse mac address string in human readable format into
|
||||
internal representation"""
|
||||
|
@ -25,6 +25,7 @@ from ryu.controller.handler import set_ev_cls
|
||||
from ryu.exception import RyuException
|
||||
from ryu.exception import OFPUnknownVersion
|
||||
from ryu.lib import hub
|
||||
from ryu.lib import mac
|
||||
from ryu.lib.dpid import dpid_to_str
|
||||
from ryu.lib.packet import bpdu
|
||||
from ryu.lib.packet import ethernet
|
||||
@ -351,7 +352,8 @@ class Stp(app_manager.RyuApp):
|
||||
if not result:
|
||||
result1 = Stp._cmp_value(
|
||||
rcv_priority.designated_bridge_id.value,
|
||||
my_priority.designated_bridge_id.mac_addr)
|
||||
mac.haddr_to_int(
|
||||
my_priority.designated_bridge_id.mac_addr))
|
||||
result2 = Stp._cmp_value(
|
||||
rcv_priority.designated_port_id.value,
|
||||
my_priority.designated_port_id.port_no)
|
||||
@ -363,7 +365,7 @@ class Stp(app_manager.RyuApp):
|
||||
|
||||
@staticmethod
|
||||
def _cmp_value(value1, value2):
|
||||
result = cmp(str(value1), str(value2))
|
||||
result = cmp(value1, value2)
|
||||
if result < 0:
|
||||
return SUPERIOR
|
||||
elif result == 0:
|
||||
|
Loading…
x
Reference in New Issue
Block a user