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)
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
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)
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)
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)
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
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
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)
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)
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)
def _add_attrs(self): nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_IFINDEX, self._ifidx)
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)
def put_obj_id(self, msg): nl.nla_put_u32(msg._msg, nl80211.ATTR_WIPHY, self.phynum)
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)
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)
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)
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)
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)
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)
def _add_attrs(self): nla_put_u32(self._nl_msg, nl80211.ATTR_IFINDEX, self._ifidx)