7f99183a20
Add 2/3 support to binarytomac and mactobinary and move to vpp_mac.py Change-Id: I3dc7e4a24486aee22140c781aae7e44e58935877 Signed-off-by: Ole Troan <ot@cisco.com>
51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
"""
|
|
MAC Types
|
|
|
|
"""
|
|
import binascii
|
|
|
|
|
|
def mactobinary(mac):
|
|
""" Convert the : separated format into binary packet data for the API """
|
|
return binascii.unhexlify(mac.replace(':', ''))
|
|
|
|
|
|
def binarytomac(binary):
|
|
""" Convert binary packed data in a : separated string """
|
|
x = b':'.join(binascii.hexlify(binary)[i:i + 2]
|
|
for i in range(0, 12, 2))
|
|
return str(x.decode('ascii'))
|
|
|
|
|
|
class VppMacAddress():
|
|
def __init__(self, addr):
|
|
self._address = addr
|
|
|
|
def encode(self):
|
|
return {
|
|
'bytes': self.bytes
|
|
}
|
|
|
|
@property
|
|
def bytes(self):
|
|
return mactobinary(self.address)
|
|
|
|
@property
|
|
def address(self):
|
|
return self._address
|
|
|
|
def __str__(self):
|
|
return self.address
|
|
|
|
def __eq__(self, other):
|
|
if isinstance(other, self.__class__):
|
|
return self.address == other.address
|
|
elif hasattr(other, "bytes"):
|
|
# vl_api_mac_addres_t
|
|
return self.bytes == other.bytes
|
|
else:
|
|
raise TypeError("Comparing VppMacAddress:%s"
|
|
"with unknown type: %s" %
|
|
(self, other))
|
|
return False
|