""" 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