コード例 #1
0
ファイル: __init__.py プロジェクト: fobser/exabgp
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: __init__.py プロジェクト: ajufrancis/exabgp
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)