diff --git a/src/device.c b/src/device.c index 6462274a..cbd30dea 100644 --- a/src/device.c +++ b/src/device.c @@ -78,18 +78,6 @@ static uint32_t netdev_watch; static void device_netdev_event(struct netdev *netdev, enum netdev_event event, void *user_data); -void __iwd_device_foreach(iwd_device_foreach_func func, void *user_data) -{ - const struct l_queue_entry *device_entry; - - for (device_entry = l_queue_get_entries(device_list); device_entry; - device_entry = device_entry->next) { - struct device *device = device_entry->data; - - func(device, user_data); - } -} - void device_set_scan_results(struct device *device, struct l_queue *bss_list, bool add_to_autoconnect) { diff --git a/src/iwd.h b/src/iwd.h index 763e3cd5..788c0e14 100644 --- a/src/iwd.h +++ b/src/iwd.h @@ -23,12 +23,6 @@ #define uninitialized_var(x) x = x struct l_genl_family; -struct device; -struct station; - -typedef void (*iwd_device_foreach_func)(struct device *, void *data); - -void __iwd_device_foreach(iwd_device_foreach_func func, void *user_data); const struct l_settings *iwd_get_config(void); diff --git a/src/network.c b/src/network.c index b8c2dcd9..6705d076 100644 --- a/src/network.c +++ b/src/network.c @@ -1291,12 +1291,12 @@ void network_rank_update(struct network *network, bool connected) network->rank = rank; } -static void emit_known_network_changed(struct device *device, void *user_data) +static void emit_known_network_changed(struct station *station, void *user_data) { struct network_info *info = user_data; struct network *network; - network = device_network_find(device, info->ssid, info->type); + network = station_network_find(station, info->ssid, info->type); if (!network) return; @@ -1319,7 +1319,7 @@ struct network_info *network_info_add_known(const char *ssid, if (network) { /* Promote network to is_known */ network->is_known = true; - __iwd_device_foreach(emit_known_network_changed, network); + station_foreach(emit_known_network_changed, network); return network; } @@ -1331,12 +1331,13 @@ struct network_info *network_info_add_known(const char *ssid, return network; } -static void disconnect_no_longer_known(struct device *device, void *user_data) +static void disconnect_no_longer_known(struct station *station, void *user_data) { struct network_info *info = user_data; + struct device *device = netdev_get_device(station_get_netdev(station)); struct network *network; - network = device_get_connected_network(device); + network = station_get_connected_network(station); if (network && network->info == info) device_disconnect(device); @@ -1346,8 +1347,8 @@ void network_info_forget_known(struct network_info *network) { network->is_known = false; - __iwd_device_foreach(emit_known_network_changed, network); - __iwd_device_foreach(disconnect_no_longer_known, network); + station_foreach(emit_known_network_changed, network); + station_foreach(disconnect_no_longer_known, network); /* * Network is no longer a Known Network, see if we still need to diff --git a/src/network.h b/src/network.h index 40bcadfa..57b254f0 100644 --- a/src/network.h +++ b/src/network.h @@ -25,6 +25,7 @@ enum security; struct device; +struct station; struct network; struct scan_bss; diff --git a/src/station.c b/src/station.c index 84abf99d..82cda211 100644 --- a/src/station.c +++ b/src/station.c @@ -1126,6 +1126,18 @@ void station_ok_rssi(struct station *station) station->signal_low = false; } +void station_foreach(station_foreach_func_t func, void *user_data) +{ + const struct l_queue_entry *entry; + + for (entry = l_queue_get_entries(station_list); entry; + entry = entry->next) { + struct station *station = entry->data; + + func(station, user_data); + } +} + struct station *station_find(uint32_t ifindex) { const struct l_queue_entry *entry; diff --git a/src/station.h b/src/station.h index fad18d69..f1e55d89 100644 --- a/src/station.h +++ b/src/station.h @@ -24,6 +24,7 @@ struct wiphy; struct netdev; +struct station; enum security; struct scan_bss; struct network; @@ -37,6 +38,7 @@ enum station_state { STATION_STATE_ROAMING }; +typedef void (*station_foreach_func_t)(struct station *, void *data); typedef void (*station_state_watch_func_t)(enum station_state, void *userdata); typedef void (*station_destroy_func_t)(void *userdata); @@ -108,5 +110,8 @@ void station_low_rssi(struct station *station); void station_ok_rssi(struct station *station); struct station *station_find(uint32_t ifindex); + + +void station_foreach(station_foreach_func_t func, void *user_data); struct station *station_create(struct wiphy *wiphy, struct netdev *netdev); void station_free(struct station *station);