def pack(self, addpath=None): if not self.has_label(): if addpath: return self.path_info.pack() + CIDR.pack(self) return CIDR.pack(self) length = len(self.labels) * 8 + len(self.rd) * 8 + self.mask if addpath: return self.path_info.pack() + chr(length) + self.labels.pack( ) + self.rd.pack() + CIDR.packed_ip(self) return chr(length) + self.labels.pack() + self.rd.pack( ) + CIDR.packed_ip(self)
def pack (self, addpath=None): if not self.has_label(): if addpath: return self.path_info.pack() + CIDR.pack(self) return CIDR.pack(self) length = len(self.labels)*8 + len(self.rd)*8 + self.mask if addpath: return self.path_info.pack() + chr(length) + self.labels.pack() + self.rd.pack() + CIDR.packed_ip(self) return chr(length) + self.labels.pack() + self.rd.pack() + CIDR.packed_ip(self)
class IPrefix6 (IPrefix,IComponent,IPv6): # not used, just present for simplying the nlri generation operations = 0x0 # NAME def __init__ (self,raw,netmask,offset): self.nlri = CIDR(raw,netmask) self.offset = offset def pack (self): raw = self.nlri.packed_ip() return "%s%s%s%s" % (chr(self.ID),chr(self.nlri.mask),chr(self.offset),raw) def __str__ (self): return "%s/%s" % (self.nlri,self.offset)
class IPrefix6(IPrefix, IComponent, IPv6): # not used, just present for simplying the nlri generation operations = 0x0 # NAME def __init__(self, raw, netmask, offset): self.nlri = CIDR(raw, netmask) self.offset = offset def pack(self): raw = self.nlri.packed_ip() return "%s%s%s%s" % (chr(self.ID), chr(self.nlri.mask), chr( self.offset), raw) def __str__(self): return "%s/%s" % (self.nlri, self.offset)
class IPrefix6 (IPrefix,IComponent,IPv6): # Must be defined in subclasses CODE = -1 NAME = '' # not used, just present for simplying the nlri generation operations = 0x0 def __init__ (self, raw, netmask, offset): self.nlri = CIDR(raw,netmask) self.offset = offset def pack (self): raw = self.nlri.packed_ip() # ID is defined in subclasses return "%s%s%s%s" % (chr(self.ID),chr(self.nlri.mask),chr(self.offset),raw) # pylint: disable=E1101 def __str__ (self): return "%s/%s" % (self.nlri,self.offset)