mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-27 19:22:34 +01:00
netdev: add netdev_get_all_stations
This is a nl80211 dump version of netdev_get_station aimed at AP mode. This will dump all stations, parse into netdev_station_info structs, and call the callback for each individual station found. Once the dump is completed the destroy callback is called.
This commit is contained in:
parent
8620698b66
commit
8e03d56688
26
src/netdev.c
26
src/netdev.c
@ -4240,6 +4240,32 @@ int netdev_get_current_station(struct netdev *netdev,
|
||||
user_data, destroy);
|
||||
}
|
||||
|
||||
int netdev_get_all_stations(struct netdev *netdev, netdev_get_station_cb_t cb,
|
||||
void *user_data, netdev_destroy_func_t destroy)
|
||||
{
|
||||
struct l_genl_msg *msg;
|
||||
|
||||
if (netdev->get_station_cmd_id)
|
||||
return -EBUSY;
|
||||
|
||||
msg = l_genl_msg_new_sized(NL80211_CMD_GET_STATION, 64);
|
||||
l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &netdev->index);
|
||||
|
||||
netdev->get_station_cmd_id = l_genl_family_dump(nl80211, msg,
|
||||
netdev_get_station_cb, netdev,
|
||||
netdev_get_station_destroy);
|
||||
if (!netdev->get_station_cmd_id) {
|
||||
l_genl_msg_unref(msg);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
netdev->get_station_cb = cb;
|
||||
netdev->get_station_data = user_data;
|
||||
netdev->get_station_destroy = destroy;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int netdev_cqm_rssi_update(struct netdev *netdev)
|
||||
{
|
||||
struct l_genl_msg *msg;
|
||||
|
@ -211,6 +211,8 @@ int netdev_get_station(struct netdev *netdev, const uint8_t *mac,
|
||||
int netdev_get_current_station(struct netdev *netdev,
|
||||
netdev_get_station_cb_t cb, void *user_data,
|
||||
netdev_destroy_func_t destroy);
|
||||
int netdev_get_all_stations(struct netdev *netdev, netdev_get_station_cb_t cb,
|
||||
void *user_data, netdev_destroy_func_t destroy);
|
||||
|
||||
void netdev_handshake_failed(struct handshake_state *hs, uint16_t reason_code);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user