static int handle_bitrates(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
struct nlattr *nl_rates, *nl_band;
int i;
#include "iw.h"
static int iw_conn(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
char *end;
unsigned char bssid[6];
static int disconnect(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
return 0;
}
"Disconnect from the current network.");
static int iw_connect(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
char **conn_argv, *dev = argv[0];
static const __u32 cmds[] = {
#include "iw.h"
static int iw_cqm_rssi(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
struct nl_msg *cqm = NULL;
int thold = 0;
static int print_events(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
struct print_event_args args;
int ret;
}
static int handle_hwsim_getps(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
struct nlattr *tmdata;
COMMAND(hwsim, getps, "", NL80211_CMD_TESTMODE, 0, CIB_PHY, handle_hwsim_getps, "");
static int handle_hwsim_setps(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
struct nlattr *tmdata;
__u32 ps;
COMMAND(hwsim, setps, "<value>", NL80211_CMD_TESTMODE, 0, CIB_PHY, handle_hwsim_setps, "");
static int handle_hwsim_stop_queues(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
struct nlattr *tmdata;
COMMAND(hwsim, stopqueues, "", NL80211_CMD_TESTMODE, 0, CIB_PHY, handle_hwsim_stop_queues, "");
static int handle_hwsim_wake_queues(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
struct nlattr *tmdata;
static int join_ibss(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char *end;
unsigned char abssid[6];
static int leave_ibss(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
return 0;
}
static int handle_info(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_phy_handler, NULL);
static int handle_interface_add(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char *name;
char *mesh_id = NULL;
static int handle_interface_del(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
return 0;
}
static int handle_interface_info(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_iface_handler, NULL);
return 0;
static int handle_interface_set(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
if (!argc)
return 1;
static int handle_interface_meshid(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char *mesh_id = NULL;
static int handle_dev_dump(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
dev_dump_wiphy = -1;
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_iface_handler, &dev_dump_wiphy);
static int handle_interface_type(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
enum nl80211_iftype type;
int tpset;
IFACE_TYPES);
static int handle_interface_4addr(struct nl80211_state *state,
- struct nl_cb *cb,
- struct nl_msg *msg,
- int argc, char **argv)
+ struct nl_cb *cb,
+ struct nl_msg *msg,
+ int argc, char **argv,
+ enum id_input id)
{
if (argc != 1)
return 1;
static int handle_interface_noack_map(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
uint16_t noack_map;
char *end;
static int handle_interface_wds_peer(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned char mac_addr[ETH_ALEN];
static int print_help(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
exit(3);
}
if (!cmd->cmd) {
argc = o_argc;
argv = o_argv;
- return cmd->handler(state, NULL, NULL, argc, argv);
+ return cmd->handler(state, NULL, NULL, argc, argv, idby);
}
msg = nlmsg_alloc();
break;
}
- err = cmd->handler(state, cb, msg, argc, argv);
+ err = cmd->handler(state, cb, msg, argc, argv, idby);
if (err)
goto out;
int (*handler)(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv);
+ int argc, char **argv,
+ enum id_input id);
const struct cmd *(*selector)(int argc, char **argv);
const struct cmd *parent;
};
static int handle_scan_for_link(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
if (argc > 0)
return 1;
static int handle_link_sta(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned char mac_addr[ETH_ALEN];
}
static int handle_link(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
char *link_argv[] = {
NULL,
static int set_interface_meshparam(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
const struct mesh_param_descr *mdescr;
struct nlattr *container;
static int get_interface_meshparam(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
const struct mesh_param_descr *mdescr = NULL;
"Retrieve mesh parameter (run command without any to see available ones).");
static int join_mesh(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
struct nlattr *container;
float rate;
if (!argc)
return 0;
- return set_interface_meshparam(state, cb, msg, argc, argv);
+ return set_interface_meshparam(state, cb, msg, argc, argv, id);
nla_put_failure:
return -ENOBUFS;
}
"Join a mesh with the given mesh ID with mcast-rate and mesh parameters.");
static int leave_mesh(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
if (argc)
return 1;
static int handle_mpath_get(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned char dst[ETH_ALEN];
static int handle_mpath_set(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned char dst[ETH_ALEN];
unsigned char next_hop[ETH_ALEN];
static int handle_mpath_dump(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
printf("DEST ADDR NEXT HOP IFACE\tSN\tMETRIC\tQLEN\t"
"EXPTIME\t\tDTIM\tDRET\tFLAGS\n");
#include "iw.h"
static int offchannel(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
char *end;
static int handle_name(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
if (argc != 1)
return 1;
static int handle_freq(struct nl80211_state *state,
struct nl_cb *cb, struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
return handle_freqchan(msg, false, argc, argv);
}
static int handle_chan(struct nl80211_state *state,
struct nl_cb *cb, struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
return handle_freqchan(msg, true, argc, argv);
}
static int handle_fragmentation(struct nl80211_state *state,
struct nl_cb *cb, struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned int frag;
static int handle_rts(struct nl80211_state *state,
struct nl_cb *cb, struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned int rts;
static int handle_netns(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char *end;
static int handle_coverage(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char *end;
unsigned int coverage;
static int handle_distance(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char *end;
unsigned int distance, coverage;
static int handle_txpower(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
enum nl80211_tx_power_setting type;
int mbm;
static int handle_antenna(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char *end;
uint32_t tx_ant = 0, rx_ant = 0;
static int set_power_save(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
enum nl80211_ps_state ps_state;
static int get_power_save(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM,
print_power_save_handler, NULL);
static int handle_reg_set(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char alpha2[3];
static int handle_reg_get(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_reg_handler, NULL);
return 0;
SECTION(roc);
static int handle_roc_start(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
char *end;
int freq, time;
static int handle_scan(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
struct nl_msg *ssids = NULL, *freqs = NULL;
char *eptr;
static int handle_scan_dump(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
if (argc > 1)
return 1;
static int handle_scan_combined(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
char **trig_argv;
static char *dump_argv[] = {
static int handle_station_get(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned char mac_addr[ETH_ALEN];
static int handle_station_set_plink(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
unsigned char plink_action;
unsigned char mac_addr[ETH_ALEN];
select_station_cmd, station_set_plink);
static int handle_station_set_vlan(struct nl80211_state *state,
- struct nl_cb *cb,
- struct nl_msg *msg,
- int argc, char **argv)
+ struct nl_cb *cb,
+ struct nl_msg *msg,
+ int argc, char **argv,
+ enum id_input id)
{
unsigned char mac_addr[ETH_ALEN];
unsigned long sta_vlan = 0;
static int handle_station_dump(struct nl80211_state *state,
struct nl_cb *cb,
struct nl_msg *msg,
- int argc, char **argv)
+ int argc, char **argv,
+ enum id_input id)
{
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_sta_handler, NULL);
return 0;
}
static int handle_survey_dump(struct nl80211_state *state,
- struct nl_cb *cb,
- struct nl_msg *msg,
- int argc, char **argv)
+ struct nl_cb *cb,
+ struct nl_msg *msg,
+ int argc, char **argv,
+ enum id_input id)
{
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_survey_handler, NULL);
return 0;
SECTION(wowlan);
static int handle_wowlan_enable(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
struct nlattr *wowlan, *pattern;
struct nl_msg *patterns = NULL;
static int handle_wowlan_disable(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
/* just a set w/o wowlan attribute */
return 0;
}
static int handle_wowlan_show(struct nl80211_state *state, struct nl_cb *cb,
- struct nl_msg *msg, int argc, char **argv)
+ struct nl_msg *msg, int argc, char **argv,
+ enum id_input id)
{
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM,
print_wowlan_handler, NULL);