class Open (Message): ID = Message.CODE.OPEN TYPE = chr(Message.CODE.OPEN) def __init__ (self, version, asn, router_id, capabilities, hold_time): self.version = Version(version) self.asn = ASN(asn) self.hold_time = HoldTime(hold_time) self.router_id = RouterID(router_id) self.capabilities = capabilities def message (self): return self._message("%s%s%s%s%s" % ( self.version.pack(), self.asn.trans(), self.hold_time.pack(), self.router_id.pack(), self.capabilities.pack() )) def __str__ (self): return "OPEN version=%d asn=%d hold_time=%s router_id=%s capabilities=[%s]" % (self.version, self.asn, self.hold_time, self.router_id,self.capabilities) @classmethod def unpack_message (cls, data, _): version = ord(data[0]) if version != 4: # Only version 4 is supported nowdays.. raise Notify(2,1,data[0]) asn = unpack('!H',data[1:3])[0] hold_time = unpack('!H',data[3:5])[0] numeric = unpack('!L',data[5:9])[0] router_id = "%d.%d.%d.%d" % (numeric >> 24,(numeric >> 16) & 0xFF,(numeric >> 8) & 0xFF,numeric & 0xFF) capabilities = Capabilities.unpack(data[9:]) return cls(version,asn,router_id,capabilities,hold_time)
class Open(Message): ID = Message.CODE.OPEN TYPE = chr(Message.CODE.OPEN) def __init__(self, version, asn, router_id, capabilities, hold_time): self.version = Version(version) self.asn = ASN(asn) self.hold_time = HoldTime(hold_time) self.router_id = RouterID(router_id) self.capabilities = capabilities def message(self, negotiated=None): return self._message( "%s%s%s%s%s" % (self.version.pack(), self.asn.trans(), self.hold_time.pack(), self.router_id.pack(), self.capabilities.pack())) def __str__(self): return "OPEN version=%d asn=%d hold_time=%s router_id=%s capabilities=[%s]" % ( self.version, self.asn, self.hold_time, self.router_id, self.capabilities) @classmethod def unpack_message(cls, data, _=None): version = ord(data[0]) if version != 4: # Only version 4 is supported nowdays.. raise Notify(2, 1, data[0]) asn = unpack('!H', data[1:3])[0] hold_time = unpack('!H', data[3:5])[0] numeric = unpack('!L', data[5:9])[0] router_id = "%d.%d.%d.%d" % (numeric >> 24, (numeric >> 16) & 0xFF, (numeric >> 8) & 0xFF, numeric & 0xFF) capabilities = Capabilities.unpack(data[9:]) return cls(version, asn, router_id, capabilities, hold_time)
class Open (Message): TYPE = chr(Message.Type.OPEN) def __init__ (self,version,asn,router_id,capabilities,hold_time): self.version = Version(version) self.asn = ASN(asn) self.hold_time = HoldTime(hold_time) self.router_id = RouterID(router_id) self.capabilities = capabilities def message (self): return self._message("%s%s%s%s%s" % ( self.version.pack(), self.asn.trans(), self.hold_time.pack(), self.router_id.pack(), self.capabilities.pack() )) def __str__ (self): return "OPEN version=%d asn=%d hold_time=%s router_id=%s capabilities=[%s]" % (self.version, self.asn, self.hold_time, self.router_id,self.capabilities)