Example #1
0
	def handle(self, msg, arg):
		genlh = genl.genlmsg_hdr(nl.nlmsg_hdr(msg))

		# A schedule scan is complete immediately when it gets started
		if genlh.cmd in [ nl80211.CMD_START_SCHED_SCAN ]:
			self.scan_busy = False
			return nl.NL_SKIP
Example #2
0
    def handle(self, msg, arg):
        genlh = genlmsg_hdr(nlmsg_hdr(msg))

        # A schedule scan is complete immediately when it gets started
        if genlh.cmd in [nl80211.CMD_START_SCHED_SCAN]:
            self.scan_busy = False
        return NL_SKIP
Example #3
0
	def handle(self, msg, arg):
		genlh = genl.genlmsg_hdr(nl.nlmsg_hdr(msg))

		# A regular scan is complete when we get scan results
		if genlh.cmd in [ nl80211.CMD_SCAN_ABORTED, nl80211.CMD_NEW_SCAN_RESULTS ]:
			self.scan_busy = False
		return nl.NL_SKIP
Example #4
0
    def handle(self, msg, arg):
        genlh = genlmsg_hdr(nlmsg_hdr(msg))

        # A regular scan is complete when we get scan results
        if genlh.cmd in [
                nl80211.CMD_SCAN_ABORTED, nl80211.CMD_NEW_SCAN_RESULTS
        ]:
            self.scan_busy = False
        return NL_SKIP
Example #5
0
 def handle(self, msg, arg):
     genlh = genlmsg_hdr(nlmsg_hdr(msg))
     if genlh.cmd in [nl80211.CMD_SCHED_SCAN_STOPPED]:
         self.scan_busy = False
     return NL_SKIP
Example #6
0
 def __init__(self, msg, errno):
     self._cmd = genl.genlmsg_hdr(msg.hdr).cmd
     self._errno = errno
Example #7
0
	def handle(self, msg, arg):
		genlh = genl.genlmsg_hdr(nl.nlmsg_hdr(msg))
		if genlh.cmd in [ nl80211.CMD_SCHED_SCAN_STOPPED ]:
			self.scan_busy = False
		return nl.NL_SKIP
Example #8
0
	def __init__(self, msg, errno):
		self._cmd = genlmsg_hdr(nlmsg_hdr(msg)).cmd
		self._errno = errno
Example #9
0
	def handle(self, m):


		logger.debug("Handle Msg from class")
		print("m",m)
		try:
			logger.debug("getting msg header")
			nlmsghdr = nl.nlmsg_hdr(m)
			# print("nlmsghdr: flags:", nlmsghdr.nlmsg_flags , "seq:", nlmsghdr.nlmsg_seq )
			logger.debug("getting genlmsg header")
			genlhdr = genl.genlmsg_hdr( nlmsghdr )

			# logger.debug("Generic Command", genlhdr.cmd)

			if not genlhdr:
				logger.error("Could not get generic header")
				return nl.NL_STOP


			if genlhdr.cmd == ELC_REQUEST_RLOCS_FOR_EID:
				logger.info("Request RLOC for an EID")

				
				# attrs = None
				# print("Message handler got called");
				err, attrs = genl.py_genlmsg_parse(
						nlmsghdr, 
						0, # will be returned as an attribute
		 				ELA_MAX, 
		 				None
		 				)

				if err < 0:
					logger.error("An error happened while parsing attributes")
					return nl.NL_STOP;


				logger.info("Looking for ELA")
				if ELA_EID in attrs:
					# logger.debug ("hello", attrs[ELA_EID])
					eid 	= nl.nla_get_u32(attrs[ELA_EID]);
					# logger.info ("eid", eid)

					# logger.debug ("token", attrs[ELA_MPTCP_TOKEN])
					token 	= nl.nla_get_u32(attrs[ELA_MPTCP_TOKEN]);
					# logger.info("token", token)

					# print("Requested EID ",eid, " for token ",binascii.hexlify( token ))

					# I => unsigned int
					packed_value = struct.pack('I', eid)
					addr = socket.inet_ntoa(packed_value)

					nb = self.retrieve_number_of_rlocs( addr )
					if nb < 0:
						logger.warning("An error happened while retrieveing nb of rlocs")
						return nl.NL_STOP
					else:
						#nlmsghdr.nlmsg_seq + 1
						self.send_rlocs_list_for_eid(  0, token, nb )
						return nl.NL_SKIP

				else:
					logger.error("Missing critical attribute in packet")

			else:
				logger.warning("Unhandled command %d"% genlhdr.cmd)

			# nlmsg_data returns void* so not usable straightaway

			# TODO need to retrieve command
			# print("e", err)

			return nl.NL_SKIP

		except Exception as e:
			(t,v,tb) = sys.exc_info()
			print( "test", v.message,e )
			traceback.print_tb(tb)

			return nl.NL_SKIP
Example #10
0
    def handle(self, m):

        logger.debug("Handle Msg from class")
        print("m", m)
        try:
            logger.debug("getting msg header")
            nlmsghdr = nl.nlmsg_hdr(m)
            # print("nlmsghdr: flags:", nlmsghdr.nlmsg_flags , "seq:", nlmsghdr.nlmsg_seq )
            logger.debug("getting genlmsg header")
            genlhdr = genl.genlmsg_hdr(nlmsghdr)

            # logger.debug("Generic Command", genlhdr.cmd)

            if not genlhdr:
                logger.error("Could not get generic header")
                return nl.NL_STOP

            if genlhdr.cmd == ELC_REQUEST_RLOCS_FOR_EID:
                logger.info("Request RLOC for an EID")

                # attrs = None
                # print("Message handler got called");
                err, attrs = genl.py_genlmsg_parse(
                    nlmsghdr,
                    0,  # will be returned as an attribute
                    ELA_MAX,
                    None)

                if err < 0:
                    logger.error("An error happened while parsing attributes")
                    return nl.NL_STOP

                logger.info("Looking for ELA")
                if ELA_EID in attrs:
                    # logger.debug ("hello", attrs[ELA_EID])
                    eid = nl.nla_get_u32(attrs[ELA_EID])
                    # logger.info ("eid", eid)

                    # logger.debug ("token", attrs[ELA_MPTCP_TOKEN])
                    token = nl.nla_get_u32(attrs[ELA_MPTCP_TOKEN])
                    # logger.info("token", token)

                    # print("Requested EID ",eid, " for token ",binascii.hexlify( token ))

                    # I => unsigned int
                    packed_value = struct.pack('I', eid)
                    addr = socket.inet_ntoa(packed_value)

                    nb = self.retrieve_number_of_rlocs(addr)
                    if nb < 0:
                        logger.warning(
                            "An error happened while retrieveing nb of rlocs")
                        return nl.NL_STOP
                    else:
                        #nlmsghdr.nlmsg_seq + 1
                        self.send_rlocs_list_for_eid(0, token, nb)
                        return nl.NL_SKIP

                else:
                    logger.error("Missing critical attribute in packet")

            else:
                logger.warning("Unhandled command %d" % genlhdr.cmd)

            # nlmsg_data returns void* so not usable straightaway

            # TODO need to retrieve command
            # print("e", err)

            return nl.NL_SKIP

        except Exception as e:
            (t, v, tb) = sys.exc_info()
            print("test", v.message, e)
            traceback.print_tb(tb)

            return nl.NL_SKIP