X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_ip.py;h=7f3a6b01e95cd66fec583542b6e72a5514dd906d;hb=8c8acc027871f97370ee549306876690030c3bbb;hp=e44e6b56e30b1a0a9a9bb1cb26ce8caf35e756d7;hpb=c0a93143412b4be7bba087bf633855aeeaee7c56;p=vpp.git diff --git a/test/vpp_ip.py b/test/vpp_ip.py index e44e6b56e30..7f3a6b01e95 100644 --- a/test/vpp_ip.py +++ b/test/vpp_ip.py @@ -5,11 +5,7 @@ from ipaddress import ip_address from socket import AF_INET, AF_INET6 - - -class IpAddressFamily: - ADDRESS_IP4 = 0 - ADDRESS_IP6 = 1 +from vpp_papi import VppEnum class DpoProto: @@ -31,17 +27,9 @@ class VppIpAddressUnion(): def encode(self): if self.version is 6: - return { - 'ip6': { - 'address': self.ip_addr.packed - }, - } + return {'ip6': self.ip_addr.packed} else: - return { - 'ip4': { - 'address': self.ip_addr.packed - }, - } + return {'ip4': self.ip_addr.packed} @property def version(self): @@ -68,9 +56,9 @@ class VppIpAddressUnion(): elif hasattr(other, "ip4") and hasattr(other, "ip6"): # vl_api_address_union_t if 4 is self.version: - return self.ip_addr.packed == other.ip4.address + return self.ip_addr.packed == other.ip4 else: - return self.ip_addr.packed == other.ip6.address + return self.ip_addr.packed == other.ip6 else: raise Exception("Comparing VppIpAddresUnions:%s" " with unknown type: %s" % @@ -86,12 +74,12 @@ class VppIpAddress(): def encode(self): if self.addr.version is 6: return { - 'af': IpAddressFamily.ADDRESS_IP6, + 'af': VppEnum.vl_api_address_family_t.ADDRESS_IP6, 'un': self.addr.encode() } else: return { - 'af': IpAddressFamily.ADDRESS_IP4, + 'af': VppEnum.vl_api_address_family_t.ADDRESS_IP4, 'un': self.addr.encode() } @@ -101,10 +89,12 @@ class VppIpAddress(): elif hasattr(other, "af") and hasattr(other, "un"): # a vp_api_address_t if 4 is self.version: - return other.af == IpAddressFamily.ADDRESS_IP4 and \ + return other.af == \ + VppEnum.vl_api_address_family_t.ADDRESS_IP4 and \ other.un == self.addr else: - return other.af == IpAddressFamily.ADDRESS_IP6 and \ + return other.af == \ + VppEnum.vl_api_address_family_t.ADDRESS_IP6 and \ other.un == self.addr else: raise Exception("Comparing VppIpAddress:%s with unknown type: %s" % @@ -121,6 +111,10 @@ class VppIpAddress(): def bytes(self): return self.addr.bytes + @property + def bytes(self): + return self.addr.bytes + @property def address(self): return self.addr.address @@ -170,10 +164,18 @@ class VppIpPrefix(): def address(self): return self.addr.address + @property + def bytes(self): + return self.addr.bytes + @property def length(self): return self.len + @property + def is_ip6(self): + return self.addr.is_ip6 + def __str__(self): return "%s/%d" % (self.address, self.length) @@ -190,6 +192,20 @@ class VppIpPrefix(): return False +class VppIp6Prefix(): + def __init__(self, prefix, prefixlen): + self.ip_prefix = ip_address(unicode(prefix)) + self.prefixlen = prefixlen + + def encode(self): + return {'prefix': self.ip_prefix.packed, + 'len': self.prefixlen} + + +class VppIp4Prefix(VppIp6Prefix): + pass + + class VppIpMPrefix(): def __init__(self, saddr, gaddr, len): self.saddr = saddr @@ -202,32 +218,16 @@ class VppIpMPrefix(): if 6 is self.ip_saddr.version: prefix = { - 'af': IpAddressFamily.ADDRESS_IP6, - 'grp_address': { - 'ip6': { - 'address': self.ip_gaddr.packed - }, - }, - 'src_address': { - 'ip6': { - 'address': self.ip_saddr.packed - }, - }, + 'af': VppEnum.vl_api_address_family_t.ADDRESS_IP6, + 'grp_address': {'ip6': self.ip_gaddr.packed}, + 'src_address': {'ip6': self.ip_saddr.packed}, 'grp_address_length': self.len, } else: prefix = { - 'af': IpAddressFamily.ADDRESS_IP4, - 'grp_address': { - 'ip4': { - 'address': self.ip_gaddr.packed - }, - }, - 'src_address': { - 'ip4': { - 'address': self.ip_saddr.packed - }, - }, + 'af': VppEnum.vl_api_address_family_t.ADDRESS_IP4, + 'grp_address': {'ip4': self.ip_gaddr.packed}, + 'src_address': {'ip4': self.ip_saddr.packed}, 'grp_address_length': self.len, } return prefix