Example #1
0
	def unpack_message (cls, data, negotiated):  # pylint: disable=W0613
		what = Type(unpack('!H',data[0:2])[0])
		length = unpack('!H',data[2:4])[0]

		decode,klass = cls.registered_operational.get(what,('unknown',None))

		if decode == 'advisory':
			afi = unpack('!H',data[4:6])[0]
			safi = ordinal(data[6])
			data = data[7:length+4]
			return klass(afi,safi,data)
		elif decode == 'query':
			afi = unpack('!H',data[4:6])[0]
			safi = ordinal(data[6])
			routerid = RouterID.unpack(data[7:11])
			sequence = unpack('!L',data[11:15])[0]
			return klass(afi,safi,routerid,sequence)
		elif decode == 'counter':
			afi = unpack('!H',data[4:6])[0]
			safi = ordinal(data[6])
			routerid = RouterID.unpack(data[7:11])
			sequence = unpack('!L',data[11:15])[0]
			counter = unpack('!L',data[15:19])[0]
			return klass(afi,safi,routerid,sequence,counter)
		else:
			print('ignoring ATM this kind of message')
Example #2
0
    def unpack_message(cls, data, negotiated):  # pylint: disable=W0613
        what = Type(unpack('!H', data[0:2])[0])
        length = unpack('!H', data[2:4])[0]

        decode, klass = cls.registered_operational.get(what, ('unknown', None))

        if decode == 'advisory':
            afi = unpack('!H', data[4:6])[0]
            safi = ordinal(data[6])
            data = data[7:length + 4]
            return klass(afi, safi, data)
        elif decode == 'query':
            afi = unpack('!H', data[4:6])[0]
            safi = ordinal(data[6])
            routerid = RouterID.unpack(data[7:11])
            sequence = unpack('!L', data[11:15])[0]
            return klass(afi, safi, routerid, sequence)
        elif decode == 'counter':
            afi = unpack('!H', data[4:6])[0]
            safi = ordinal(data[6])
            routerid = RouterID.unpack(data[7:11])
            sequence = unpack('!L', data[11:15])[0]
            counter = unpack('!L', data[15:19])[0]
            return klass(afi, safi, routerid, sequence, counter)
        else:
            print('ignoring ATM this kind of message')