- 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
- },
- },
- '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
- },
- },
- 'grp_address_length': self.len,
- }
- return prefix
+ @property
+ def length(self):
+ return self.glen
+
+ @property
+ def version(self):
+ return ip_address(self.gaddr).version
+
+ def __str__(self):
+ return "(%s,%s)/%d" % (self.saddr, self.gaddr, self.glen)
+
+ def __eq__(self, other):
+ if isinstance(other, self.__class__):
+ return (self.glen == other.glen and
+ self.saddr == other.gaddr and
+ self.saddr == other.saddr)
+ elif (hasattr(other, "grp_address_length") and
+ hasattr(other, "grp_address") and
+ hasattr(other, "src_address")):
+ # vl_api_mprefix_t
+ if 4 == self.version:
+ return (self.glen == other.grp_address_length and
+ self.gaddr == str(other.grp_address.ip4) and
+ self.saddr == str(other.src_address.ip4))
+ else:
+ return (self.glen == other.grp_address_length and
+ self.gaddr == str(other.grp_address.ip6) and
+ self.saddr == str(other.src_address.ip6))
+ return NotImplemented