Ejemplo n.º 1
0
	def _prepare_cmd(self):
		if self._nl_cmd == None:
			raise Exception("sub-class must set _nl_cmd")

		flags = nlc.NLM_F_REQUEST | nlc.NLM_F_ACK
		self._nl_msg = self._access.alloc_genlmsg(self._nl_cmd, flags)
		nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_IFINDEX, self._ifidx)
Ejemplo n.º 2
0
	def send_rlocs_list_for_eid(self, seq_nb, token, nb_of_rlocs):
		logger.info("Sending rlocs nb of '%d' for token %d with seq nb %d"%(nb_of_rlocs,token,seq_nb))
		msg = nl.nlmsg_alloc()

		# returns void*
		genl.genlmsg_put(msg,
						0, # port
						0, # seq nb
						self.family_id, # family_id
						0, # length of user header
						0, # optional flags
						ELC_RESULTS, 	 # cmd
						LIG_GENL_VERSION # version
						)

		nl.nla_put_u32(msg, ELA_RLOCS_NUMBER, nb_of_rlocs );
		nl.nla_put_u32(msg, ELA_MPTCP_TOKEN , token );

		err = nl.nl_send_auto_complete(self.sk, msg);
		if err < 0:
			logger.error("Error while sending answer")
			nl.nlmsg_free(msg)
			return False

		nl.nlmsg_free(msg)
		return True
Ejemplo n.º 3
0
    def _prepare_cmd(self):
        if self._nl_cmd == None:
            raise Exception("sub-class must set _nl_cmd")

        flags = nlc.NLM_F_REQUEST | nlc.NLM_F_ACK
        self._nl_msg = self._access.alloc_genlmsg(self._nl_cmd, flags)
        nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_IFINDEX, self._ifidx)
Ejemplo n.º 4
0
 def __init__(self, ifidx, access=None, kind=NL_CB_DEFAULT):
     self._station = []
     self._ifidx = ifidx
     if access == None:
         access = access80211(kind)
     flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_DUMP
     m = access.alloc_genlmsg(nl80211.CMD_GET_STATION, flags)
     nla_put_u32(m._msg, nl80211.ATTR_IFINDEX, ifidx)
     self._access = access
     access.send(m, self)
Ejemplo n.º 5
0
	def __init__(self, ifidx, access=None, kind=NL_CB_DEFAULT):
		self._station = []
		self._ifidx = ifidx
		if access == None:
			access = access80211(kind)
		flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_DUMP
		m = access.alloc_genlmsg(nl80211.CMD_GET_STATION, flags)
		nla_put_u32(m._msg, nl80211.ATTR_IFINDEX, ifidx)
		self._access = access
		access.send(m, self)
Ejemplo n.º 6
0
	def _add_scan_attrs(self):
		if self._ssids:
			i = 0
			nest = nl.nla_nest_start(self._nl_msg._msg, nl80211.ATTR_SCAN_SSIDS)
			for ssid in self._ssids:
				nl.nla_put(self._nl_msg._msg, i, ssid)
				i += 1
			nl.nla_nest_end(self._nl_msg._msg, nest)
		if self._freqs:
			i = 0
			nest = nl.nla_nest_start(self._nl_msg._msg, nl80211.ATTR_SCAN_FREQUENCIES)
			for freq in self._freqs:
				nl.nla_put_u32(self._nl_msg._msg, i, freq)
				i += 1
			nl.nla_nest_end(self._nl_msg._msg, nest)
		if self._flags != 0:
			nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_SCAN_FLAGS, self._flags)
		if self._ies:
			nl.nla_put(self._nl_msg._msg, nl80211.ATTR_IE, self._ies)
Ejemplo n.º 7
0
 def _add_attrs(self):
     super(scan_start_base, self)._add_attrs()
     if self._ssids:
         i = 0
         nest = nla_nest_start(self._nl_msg, nl80211.ATTR_SCAN_SSIDS)
         for ssid in self._ssids:
             nla_put(self._nl_msg, i, ssid)
             i += 1
         nla_nest_end(self._nl_msg, nest)
     if self._freqs:
         i = 0
         nest = nla_nest_start(self._nl_msg, nl80211.ATTR_SCAN_FREQUENCIES)
         for freq in self._freqs:
             nla_put_u32(self._nl_msg, i, freq)
             i += 1
         nla_nest_end(self._nl_msg, nest)
     if self._flags != 0:
         nla_put_u32(self._nl_msg, nl80211.ATTR_SCAN_FLAGS, self._flags)
     if self._ies:
         nla_put(self._nl_msg, nl80211.ATTR_IE, self._ies)
Ejemplo n.º 8
0
    def send_rlocs_list_for_eid(self, seq_nb, token, nb_of_rlocs):
        logger.info("Sending rlocs nb of '%d' for token %d with seq nb %d" %
                    (nb_of_rlocs, token, seq_nb))

        # Remplacer ca par la classe Netlink associée
        msg = nl.nlmsg_alloc()

        # returns void*
        msg_header = genl.genlmsg_put(
            msg,
            0,  # port
            0,  # seq nb
            self.family_id,  # family_id
            0,  # length of user header
            0,  # optional flags
            ELC_RESULTS,  # cmd
            LIG_GENL_VERSION  # version
        )
        if not msg_header:
            logger.error("Could not create header")
            return False

        nl.nla_put_u32(msg, ELA_MPTCP_TOKEN, token)
        nl.nla_put_u8(msg, ELA_RLOCS_NUMBER, nb_of_rlocs)

        logger.debug("sEnding autocomplete")
        # rc = genlmsg_end(skb, msg_header);

        err = nl.nl_send_auto_complete(self.sk, msg)
        if err < 0:
            logger.error("Error while sending answer")
            nl.nlmsg_free(msg)
            return False

        # nl.nlmsg_free(msg)
        logger.debug("Message successfully sent")
        return True
Ejemplo n.º 9
0
	def send_rlocs_list_for_eid(self, seq_nb, token, nb_of_rlocs):
		logger.info("Sending rlocs nb of '%d' for token %d with seq nb %d"%(nb_of_rlocs,token,seq_nb))
		
		# Remplacer ca par la classe Netlink associée
		msg = nl.nlmsg_alloc()

		# returns void*
		msg_header = genl.genlmsg_put(msg,
						0, # port
						0, # seq nb
						self.family_id, # family_id
						0, # length of user header
						0, # optional flags
						ELC_RESULTS, 	 # cmd
						LIG_GENL_VERSION # version
						)
		if not msg_header:
			logger.error("Could not create header")
			return False


		
		nl.nla_put_u32(msg, ELA_MPTCP_TOKEN , token );
		nl.nla_put_u8(msg, ELA_RLOCS_NUMBER, nb_of_rlocs );

		logger.debug("sEnding autocomplete")
		# rc = genlmsg_end(skb, msg_header);

		err = nl.nl_send_auto_complete(self.sk, msg);
		if err < 0:
			logger.error("Error while sending answer")
			nl.nlmsg_free(msg)
			return False

		# nl.nlmsg_free(msg)
		logger.debug("Message successfully sent")
		return True
Ejemplo n.º 10
0
 def _add_attrs(self):
     super(sched_scan_start, self)._add_attrs()
     self._add_matches_attrs()
     if self._interval != None:
         nla_put_u32(self._nl_msg, nl80211.ATTR_SCHED_SCAN_INTERVAL,
                     self._interval)
Ejemplo n.º 11
0
try:
    cbd = test_class()
    tx_cb = nl.nl_cb_alloc(nl.NL_CB_DEFAULT)
    rx_cb = nl.nl_cb_clone(tx_cb)
    s = nl.nl_socket_alloc_cb(tx_cb)
    nl.py_nl_cb_err(rx_cb, nl.NL_CB_CUSTOM, error_handler, cbd)
    nl.py_nl_cb_set(rx_cb, nl.NL_CB_FINISH, nl.NL_CB_CUSTOM, finish_handler,
                    cbd)
    nl.py_nl_cb_set(rx_cb, nl.NL_CB_ACK, nl.NL_CB_CUSTOM, ack_handler, cbd)
    nl.py_nl_cb_set(rx_cb, nl.NL_CB_VALID, nl.NL_CB_CUSTOM, msg_handler, cbd)

    genl.genl_connect(s)
    family = genl.genl_ctrl_resolve(s, 'nl80211')
    m = nl.nlmsg_alloc()
    genl.genlmsg_put(m, 0, 0, family, 0, 0, nl80211.NL80211_CMD_GET_INTERFACE,
                     0)
    nl.nla_put_u32(m, nl80211.NL80211_ATTR_IFINDEX, nl.if_nametoindex('wlan0'))

    err = nl.nl_send_auto_complete(s, m)
    if err < 0:
        nl.nlmsg_free(msg)

    while cbd.done > 0 and not err < 0:
        err = nl.nl_recvmsgs(s, rx_cb)

except Exception as e:
    (t, v, tb) = sys.exc_info()
    print v.message
    traceback.print_tb(tb)
Ejemplo n.º 12
0
	a.done = 0
	return nl.NL_STOP

try:
	cbd = test_class()
	tx_cb = nl.nl_cb_alloc(nl.NL_CB_DEFAULT)
	rx_cb = nl.nl_cb_clone(tx_cb)
	s = nl.nl_socket_alloc_cb(tx_cb)
	nl.py_nl_cb_err(rx_cb, nl.NL_CB_CUSTOM, error_handler, cbd);
	# nl.py_nl_cb_set(rx_cb, nl.NL_CB_FINISH, nl.NL_CB_CUSTOM, finish_handler, cbd);
	nl.py_nl_cb_set(rx_cb, nl.NL_CB_ACK, nl.NL_CB_CUSTOM, ack_handler, cbd);
	nl.py_nl_cb_set(rx_cb, nl.NL_CB_VALID, nl.NL_CB_CUSTOM, msg_handler, cbd);

	genl.genl_connect(s)
	family = genl.genl_ctrl_resolve(s, 'nl80211')
	m = nl.nlmsg_alloc()
	genl.genlmsg_put(m, 0, 0, family, 0, 0, nl80211.NL80211_CMD_GET_INTERFACE, 0)
	nl.nla_put_u32(m, nl80211.NL80211_ATTR_IFINDEX, nl.if_nametoindex('wlan0'))

	err = nl.nl_send_auto_complete(s, m);
	if err < 0:
		nl.nlmsg_free(msg)

	while cbd.done > 0 and not err < 0:
		err = nl.nl_recvmsgs(s, rx_cb)

except Exception as e:
	(t, v, tb) = sys.exc_info()
	print v.message
	traceback.print_tb(tb)
Ejemplo n.º 13
0
 def _add_attrs(self):
     nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_IFINDEX, self._ifidx)
Ejemplo n.º 14
0
 def put_obj_id(self, msg):
     nla_put_u32(msg._msg, nl80211.ATTR_IFINDEX, self._ifidx)
     nla_put(msg._msg, nl80211.ATTR_MAC, self._mac)
Ejemplo n.º 15
0
	def put_obj_id(self, msg):
		nla_put_u32(msg._msg, nl80211.ATTR_IFINDEX, self._ifidx)
		nla_put(msg._msg, nl80211.ATTR_MAC, self._mac)
Ejemplo n.º 16
0
	def put_obj_id(self, msg):
		nl.nla_put_u32(msg._msg, nl80211.ATTR_WIPHY, self.phynum)
Ejemplo n.º 17
0
 def put_obj_id(self, msg):
     nl.nla_put_u32(msg._msg, nl80211.ATTR_WIPHY, self.phynum)
Ejemplo n.º 18
0
	def refresh(self):
		self._bss = []
		flags = nlc.NLM_F_REQUEST | nlc.NLM_F_ACK | nlc.NLM_F_DUMP
		m = self._access.alloc_genlmsg(nl80211.CMD_GET_SCAN, flags)
		nl.nla_put_u32(m._msg, nl80211.ATTR_IFINDEX, self._ifidx)
		self._access.send(m, self)
Ejemplo n.º 19
0
	def _add_scan_attrs(self):
		super(sched_scan_start, self)._add_scan_attrs()
		if self._interval != None:
			nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_SCHED_SCAN_INTERVAL, self._interval)
Ejemplo n.º 20
0
 def refresh(self):
     self._bss = []
     flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_DUMP
     m = self._access.alloc_genlmsg(nl80211.CMD_GET_SCAN, flags)
     nla_put_u32(m, nl80211.ATTR_IFINDEX, self._ifidx)
     self._access.send(m, self)
Ejemplo n.º 21
0
    return nl.NL_STOP


try:
    cbd = test_class()
    tx_cb = nl.nl_cb_alloc(nl.NL_CB_DEFAULT)
    rx_cb = nl.nl_cb_clone(tx_cb)
    s = nl.nl_socket_alloc_cb(tx_cb)
    nl.py_nl_cb_err(rx_cb, nl.NL_CB_CUSTOM, error_handler, cbd)
    nl.py_nl_cb_set(rx_cb, nl.NL_CB_FINISH, nl.NL_CB_CUSTOM, finish_handler,
                    cbd)
    nl.py_nl_cb_set(rx_cb, nl.NL_CB_ACK, nl.NL_CB_CUSTOM, ack_handler, cbd)
    nl.py_nl_cb_set(rx_cb, nl.NL_CB_VALID, nl.NL_CB_CUSTOM, msg_handler, cbd)

    genl.genl_connect(s)
    family = genl.genl_ctrl_resolve(s, 'nl80211')
    m = nl.nlmsg_alloc()
    genl.genlmsg_put(m, 0, 0, family, 0, 0, nl80211.NL80211_CMD_GET_WIPHY, 0)
    nl.nla_put_u32(m, nl80211.NL80211_ATTR_WIPHY, 0)

    err = nl.nl_send_auto_complete(s, m)
    if err < 0:
        nl.nlmsg_free(msg)

    while cbd.done > 0 and not err < 0:
        err = nl.nl_recvmsgs(s, rx_cb)
except Exception as e:
    (t, v, tb) = sys.exc_info()
    print v.message
    traceback.print_tb(tb)
Ejemplo n.º 22
0
 def put_obj_id(self, msg):
     nla_put_u32(msg._msg, nl80211.ATTR_WIPHY, self.phynum)
     nla_put_flag(msg._msg, nl80211.ATTR_SPLIT_WIPHY_DUMP)
Ejemplo n.º 23
0
def ack_handler(m, a):
	a.done = 0
	return nl.NL_STOP

try:
	cbd = test_class()
	tx_cb = nl.nl_cb_alloc(nl.NL_CB_DEFAULT)
	rx_cb = nl.nl_cb_clone(tx_cb)
	s = nl.nl_socket_alloc_cb(tx_cb)
	nl.py_nl_cb_err(rx_cb, nl.NL_CB_CUSTOM, error_handler, cbd);
	nl.py_nl_cb_set(rx_cb, nl.NL_CB_FINISH, nl.NL_CB_CUSTOM, finish_handler, cbd);
	nl.py_nl_cb_set(rx_cb, nl.NL_CB_ACK, nl.NL_CB_CUSTOM, ack_handler, cbd);
	nl.py_nl_cb_set(rx_cb, nl.NL_CB_VALID, nl.NL_CB_CUSTOM, msg_handler, cbd);

	genl.genl_connect(s)
	family = genl.genl_ctrl_resolve(s, 'nl80211')
	m = nl.nlmsg_alloc()
	genl.genlmsg_put(m, 0, 0, family, 0, 0, nl80211.NL80211_CMD_GET_WIPHY, 0)
	nl.nla_put_u32(m, nl80211.NL80211_ATTR_WIPHY, 0)

	err = nl.nl_send_auto_complete(s, m);
	if err < 0:
		nl.nlmsg_free(msg)

	while cbd.done > 0 and not err < 0:
		err = nl.nl_recvmsgs(s, rx_cb)
except Exception as e:
	(t, v, tb) = sys.exc_info()
	print v.message
	traceback.print_tb(tb)
Ejemplo n.º 24
0
	def _add_attrs(self):
		nla_put_u32(self._nl_msg, nl80211.ATTR_IFINDEX, self._ifidx)