tests: implement ipaddress convenience methods
[vpp.git] / test / vpp_ip.py
index 8c3bbba..3c01ba5 100644 (file)
@@ -67,14 +67,16 @@ class VppIpAddressUnion():
         elif hasattr(other, "ip4") and hasattr(other, "ip6"):
             # vl_api_address_union_t
             if 4 == self.version:
-                return self.ip_addr.packed == other.ip4
+                return self.ip_addr == other.ip4
             else:
-                return self.ip_addr.packed == other.ip6
+                return self.ip_addr == other.ip6
         else:
-            _log.error("Comparing VppIpAddressUnions:%s"
-                       " with incomparable type: %s",
-                       self, other)
-            return NotImplemented
+            raise Exception("Comparing VppIpAddressUnions:%s"
+                            " with incomparable type: %s",
+                            self, other)
+
+    def __ne__(self, other):
+        return not (self == other)
 
     def __str__(self):
         return str(self.ip_addr)
@@ -91,29 +93,16 @@ class VppIpMPrefix():
                              'same address family.')
 
     def encode(self):
-        if 6 == self.version:
-            prefix = {
-                'af': VppEnum.vl_api_address_family_t.ADDRESS_IP6,
-                'grp_address': {
-                    'ip6': self.gaddr
-                },
-                'src_address': {
-                    'ip6': self.saddr
-                },
-                'grp_address_length': self.glen,
-            }
-        else:
-            prefix = {
-                'af': VppEnum.vl_api_address_family_t.ADDRESS_IP4,
-                'grp_address': {
-                    'ip4': self.gaddr
-                },
-                'src_address': {
-                    'ip4':  self.saddr
-                },
-                'grp_address_length': self.glen,
-            }
-        return prefix
+        return {
+            'af': ip_address(self.gaddr).vapi_af,
+            'grp_address': {
+                ip_address(self.gaddr).vapi_af_name: self.gaddr
+            },
+            'src_address': {
+                ip_address(self.saddr).vapi_af_name: self.saddr
+            },
+            'grp_address_length': self.glen,
+        }
 
     @property
     def length(self):
@@ -143,7 +132,4 @@ class VppIpMPrefix():
                 return (self.glen == other.grp_address_length and
                         self.gaddr == str(other.grp_address.ip6) and
                         self.saddr == str(other.src_address.ip6))
-        else:
-            raise Exception("Comparing VppIpPrefix:%s with unknown type: %s" %
-                            (self, other))
-        return False
+        return NotImplemented