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')
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')