nl80211: Add nl80211_*_msg() helpers
These new functions can be used to both allocate and build a header for most nl80211 commands. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
a862e4a38f
commit
07c7757cb1
2 changed files with 55 additions and 0 deletions
|
@ -439,6 +439,57 @@ void * nl80211_cmd(struct wpa_driver_nl80211_data *drv,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct nl_msg * nl80211_cmd_msg(struct i802_bss *bss, int flags, uint8_t cmd)
|
||||||
|
{
|
||||||
|
struct nl_msg *msg;
|
||||||
|
|
||||||
|
msg = nlmsg_alloc();
|
||||||
|
if (!msg)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!nl80211_cmd(bss->drv, msg, flags, cmd) ||
|
||||||
|
nl80211_set_iface_id(msg, bss) < 0) {
|
||||||
|
nlmsg_free(msg);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static struct nl_msg *
|
||||||
|
nl80211_ifindex_msg(struct wpa_driver_nl80211_data *drv, int ifindex,
|
||||||
|
int flags, uint8_t cmd)
|
||||||
|
{
|
||||||
|
struct nl_msg *msg;
|
||||||
|
|
||||||
|
msg = nlmsg_alloc();
|
||||||
|
if (!msg)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!nl80211_cmd(drv, msg, flags, cmd) ||
|
||||||
|
nla_put_u32(msg, NL80211_ATTR_IFINDEX, ifindex)) {
|
||||||
|
nlmsg_free(msg);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct nl_msg * nl80211_drv_msg(struct wpa_driver_nl80211_data *drv, int flags,
|
||||||
|
uint8_t cmd)
|
||||||
|
{
|
||||||
|
return nl80211_ifindex_msg(drv, drv->ifindex, flags, cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct nl_msg * nl80211_bss_msg(struct i802_bss *bss, int flags, uint8_t cmd)
|
||||||
|
{
|
||||||
|
return nl80211_ifindex_msg(bss->drv, bss->ifindex, flags, cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct wiphy_idx_data {
|
struct wiphy_idx_data {
|
||||||
int wiphy_idx;
|
int wiphy_idx;
|
||||||
enum nl80211_iftype nlmode;
|
enum nl80211_iftype nlmode;
|
||||||
|
|
|
@ -186,6 +186,10 @@ struct nl_msg;
|
||||||
int nl80211_set_iface_id(struct nl_msg *msg, struct i802_bss *bss);
|
int nl80211_set_iface_id(struct nl_msg *msg, struct i802_bss *bss);
|
||||||
void * nl80211_cmd(struct wpa_driver_nl80211_data *drv,
|
void * nl80211_cmd(struct wpa_driver_nl80211_data *drv,
|
||||||
struct nl_msg *msg, int flags, uint8_t cmd);
|
struct nl_msg *msg, int flags, uint8_t cmd);
|
||||||
|
struct nl_msg * nl80211_cmd_msg(struct i802_bss *bss, int flags, uint8_t cmd);
|
||||||
|
struct nl_msg * nl80211_drv_msg(struct wpa_driver_nl80211_data *drv, int flags,
|
||||||
|
uint8_t cmd);
|
||||||
|
struct nl_msg * nl80211_bss_msg(struct i802_bss *bss, int flags, uint8_t cmd);
|
||||||
int send_and_recv_msgs(struct wpa_driver_nl80211_data *drv, struct nl_msg *msg,
|
int send_and_recv_msgs(struct wpa_driver_nl80211_data *drv, struct nl_msg *msg,
|
||||||
int (*valid_handler)(struct nl_msg *, void *),
|
int (*valid_handler)(struct nl_msg *, void *),
|
||||||
void *valid_data);
|
void *valid_data);
|
||||||
|
|
Loading…
Reference in a new issue