+ @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)
+
+ def __eq__(self, other):
+ if isinstance(other, self.__class__):
+ return (self.len == other.len and self.addr == other.addr)
+ elif hasattr(other, "address") and hasattr(other, "address_length"):
+ # vl_api_prefix_t
+ return self.len == other.address_length and \
+ self.addr == other.address
+ else:
+ raise Exception("Comparing VppIpPrefix:%s with unknown type: %s" %
+ (self, other))
+ 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
+