diff options
-rw-r--r-- | test/vpp_ip.py | 60 |
1 files changed, 28 insertions, 32 deletions
diff --git a/test/vpp_ip.py b/test/vpp_ip.py index 055e6d73738..fe985fb901c 100644 --- a/test/vpp_ip.py +++ b/test/vpp_ip.py @@ -2,11 +2,14 @@ IP Types """ +import logging from ipaddress import ip_address from socket import AF_INET, AF_INET6 from vpp_papi import VppEnum +_log = logging.getLogger(__name__) + class DpoProto: DPO_PROTO_IP4 = 0 @@ -26,7 +29,7 @@ class VppIpAddressUnion(): self.ip_addr = ip_address(unicode(self.addr)) def encode(self): - if self.version is 6: + if self.version == 6: return {'ip6': self.ip_addr.packed} else: return {'ip4': self.ip_addr.packed} @@ -41,10 +44,7 @@ class VppIpAddressUnion(): @property def length(self): - if self.version is 6: - return 128 - else: - return 32 + return self.ip_addr.max_prefixlen @property def bytes(self): @@ -55,16 +55,15 @@ class VppIpAddressUnion(): return self.ip_addr == other.ip_addr elif hasattr(other, "ip4") and hasattr(other, "ip6"): # vl_api_address_union_t - if 4 is self.version: + if 4 == self.version: return self.ip_addr.packed == other.ip4 else: return self.ip_addr.packed == other.ip6 else: - raise Exception("Comparing VppIpAddresUnions:%s" - " with unknown type: %s" % - (self, other)) - - return False + _log.error("Comparing VppIpAddressUnions:%s" + " with incomparable type: %s", + self, other) + return NotImplemented class VppIpAddress(): @@ -72,7 +71,7 @@ class VppIpAddress(): self.addr = VppIpAddressUnion(addr) def encode(self): - if self.addr.version is 6: + if self.addr.version == 6: return { 'af': VppEnum.vl_api_address_family_t.ADDRESS_IP6, 'un': self.addr.encode() @@ -88,7 +87,7 @@ class VppIpAddress(): return self.addr == other.addr elif hasattr(other, "af") and hasattr(other, "un"): # a vp_api_address_t - if 4 is self.version: + if 4 == self.version: return other.af == \ VppEnum.vl_api_address_family_t.ADDRESS_IP4 and \ other.un == self.addr @@ -97,9 +96,12 @@ class VppIpAddress(): VppEnum.vl_api_address_family_t.ADDRESS_IP6 and \ other.un == self.addr else: - raise Exception("Comparing VppIpAddress:%s with unknown type: %s" % - (self, other)) - return False + _log.error( + "Comparing VppIpAddress:<%s> %s with incomparable " + "type: <%s> %s", + self.__class__.__name__, self, + other.__class__.__name__, other) + return NotImplemented def __ne__(self, other): return not (self == other) @@ -112,10 +114,6 @@ class VppIpAddress(): return self.addr.bytes @property - def bytes(self): - return self.addr.bytes - - @property def address(self): return self.addr.address @@ -140,7 +138,7 @@ class VppIpAddress(): @property def dpo_proto(self): - if self.version is 6: + if self.version == 6: return DpoProto.DPO_PROTO_IP6 else: return DpoProto.DPO_PROTO_IP4 @@ -151,11 +149,6 @@ class VppIpPrefix(): self.addr = VppIpAddress(addr) self.len = len - def __eq__(self, other): - if self.addr == other.addr and self.len == other.len: - return True - return False - def encode(self): return {'address': self.addr.encode(), 'address_length': self.len} @@ -185,11 +178,12 @@ class VppIpPrefix(): elif hasattr(other, "address") and hasattr(other, "address_length"): # vl_api_prefix_t return self.len == other.address_length and \ - self.addr == other.address + self.addr == other.address else: - raise Exception("Comparing VppIpPrefix:%s with unknown type: %s" % - (self, other)) - return False + _log.error( + "Comparing VppIpPrefix:%s with incomparable type: %s" % + (self, other)) + return NotImplemented class VppIpMPrefix(): @@ -199,10 +193,12 @@ class VppIpMPrefix(): self.len = len self.ip_saddr = ip_address(unicode(self.saddr)) self.ip_gaddr = ip_address(unicode(self.gaddr)) + if self.ip_saddr.version != self.ip_gaddr.version: + raise ValueError('Source and group addresses must be of the ' + 'same address family.') def encode(self): - - if 6 is self.ip_saddr.version: + if 6 == self.ip_saddr.version: prefix = { 'af': VppEnum.vl_api_address_family_t.ADDRESS_IP6, 'grp_address': {'ip6': self.ip_gaddr.packed}, |