MAP: Remove dual loop in MAP-T in preparation for refactor.
[vpp.git] / test / vpp_mac.py
index c9ee11e..b20bf54 100644 (file)
@@ -2,13 +2,24 @@
   MAC Types
 
 """
+import binascii
 
-from util import mactobinary
+
+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
+        self._address = addr
 
     def encode(self):
         return {
@@ -21,4 +32,19 @@ class VppMacAddress():
 
     @property
     def address(self):
-        return self.addr.address
+        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