mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2025-01-18 00:12:34 +01:00
network: remove BasicServiceSet DBus registration code
This was moved into station.
This commit is contained in:
parent
c639bf0b19
commit
6d94599977
100
src/network.c
100
src/network.c
@ -75,7 +75,6 @@ struct network {
|
||||
struct l_ecc_point *sae_pt_20; /* SAE PT for Group 20 */
|
||||
unsigned int agent_request;
|
||||
struct l_queue *bss_list;
|
||||
struct l_queue *old_bss_list;
|
||||
struct l_settings *settings;
|
||||
struct l_queue *secrets;
|
||||
struct l_queue *blacklist; /* temporary blacklist for BSS's */
|
||||
@ -1147,101 +1146,20 @@ const char *network_bss_get_path(const struct network *network,
|
||||
return __network_path_append_bss(network->object_path, bss);
|
||||
}
|
||||
|
||||
static bool network_unregister_bss(void *a, void *user_data)
|
||||
{
|
||||
struct scan_bss *bss = a;
|
||||
struct network *network = user_data;
|
||||
|
||||
l_dbus_unregister_object(dbus_get_bus(),
|
||||
network_bss_get_path(network, bss));
|
||||
|
||||
l_dbus_property_changed(dbus_get_bus(), network->object_path,
|
||||
IWD_NETWORK_INTERFACE, "ExtendedServiceSet");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool network_register_bss(struct network *network, struct scan_bss *bss)
|
||||
{
|
||||
const char *path = network_bss_get_path(network, bss);
|
||||
struct scan_bss *old;
|
||||
|
||||
/*
|
||||
* If we find this path in the object tree update the data to the new
|
||||
* scan_bss pointer, as this one will be freed soon.
|
||||
*/
|
||||
old = l_dbus_object_get_data(dbus_get_bus(), path, IWD_BSS_INTERFACE);
|
||||
if (old)
|
||||
return l_dbus_object_set_data(dbus_get_bus(), path,
|
||||
IWD_BSS_INTERFACE, bss);
|
||||
|
||||
if (!l_dbus_object_add_interface(dbus_get_bus(), path,
|
||||
IWD_BSS_INTERFACE, bss))
|
||||
return false;
|
||||
|
||||
if (!l_dbus_object_add_interface(dbus_get_bus(), path,
|
||||
L_DBUS_INTERFACE_PROPERTIES, bss))
|
||||
return false;
|
||||
|
||||
l_dbus_property_changed(dbus_get_bus(), network->object_path,
|
||||
IWD_NETWORK_INTERFACE, "ExtendedServiceSet");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void network_bss_start_update(struct network *network)
|
||||
{
|
||||
network->old_bss_list = network->bss_list;
|
||||
l_queue_destroy(network->bss_list, NULL);
|
||||
network->bss_list = l_queue_new();
|
||||
}
|
||||
|
||||
void network_bss_stop_update(struct network *network,
|
||||
const struct scan_freq_set *limit_freqs)
|
||||
{
|
||||
const struct l_queue_entry *e;
|
||||
|
||||
/*
|
||||
* Update has finished, clean up any BSS's from the old list that have
|
||||
* been registered on DBus.
|
||||
*/
|
||||
for (e = l_queue_get_entries(network->old_bss_list); e; e = e->next) {
|
||||
const struct scan_bss *old = e->data;
|
||||
const struct scan_bss *bss;
|
||||
const char *path = network_bss_get_path(network, old);
|
||||
|
||||
bss = l_dbus_object_get_data(dbus_get_bus(), path,
|
||||
IWD_BSS_INTERFACE);
|
||||
|
||||
/*
|
||||
* Don't remove BSS's who's frequencies were not in the set.
|
||||
* This happens due to scan subsets (i.e. from station) so some
|
||||
* BSS's won't be seen since the frequency is not being scanned.
|
||||
* These BSS's will get cleared out eventually if they have
|
||||
* actually disappeared.
|
||||
*/
|
||||
if (!scan_freq_set_contains(limit_freqs, bss->frequency))
|
||||
continue;
|
||||
|
||||
/*
|
||||
* The lookup matched the user data of an old BSS. This should
|
||||
* be unregistered from DBus
|
||||
*/
|
||||
if (bss && bss == old)
|
||||
l_dbus_object_remove_interface(dbus_get_bus(), path,
|
||||
IWD_BSS_INTERFACE);
|
||||
}
|
||||
|
||||
l_queue_destroy(network->old_bss_list, NULL);
|
||||
network->old_bss_list = NULL;
|
||||
}
|
||||
|
||||
bool network_bss_add(struct network *network, struct scan_bss *bss)
|
||||
{
|
||||
if (!l_queue_insert(network->bss_list, bss, scan_bss_rank_compare,
|
||||
NULL))
|
||||
return false;
|
||||
|
||||
network_register_bss(network, bss);
|
||||
l_dbus_property_changed(dbus_get_bus(), network->object_path,
|
||||
IWD_NETWORK_INTERFACE, "ExtendedServiceSet");
|
||||
|
||||
/* Done if BSS is not HS20 or we already have network_info set */
|
||||
if (!bss->hs20_capable)
|
||||
@ -1276,8 +1194,6 @@ bool network_bss_update(struct network *network, struct scan_bss *bss)
|
||||
|
||||
l_queue_insert(network->bss_list, bss, scan_bss_rank_compare, NULL);
|
||||
|
||||
network_register_bss(network, bss);
|
||||
|
||||
/* Sync frequency for already known networks */
|
||||
if (network->info) {
|
||||
known_network_add_frequency(network->info, bss->frequency);
|
||||
@ -1294,12 +1210,7 @@ bool network_bss_list_isempty(struct network *network)
|
||||
|
||||
struct scan_bss *network_bss_list_pop(struct network *network)
|
||||
{
|
||||
struct scan_bss *bss = l_queue_pop_head(network->bss_list);
|
||||
|
||||
if (bss)
|
||||
network_unregister_bss(bss, network);
|
||||
|
||||
return bss;
|
||||
return l_queue_pop_head(network->bss_list);
|
||||
}
|
||||
|
||||
struct scan_bss *network_bss_find_by_addr(struct network *network,
|
||||
@ -2030,9 +1941,6 @@ static void network_unregister(struct network *network, int reason)
|
||||
|
||||
void network_remove(struct network *network, int reason)
|
||||
{
|
||||
l_queue_foreach_remove(network->bss_list,
|
||||
network_unregister_bss, network);
|
||||
|
||||
if (network->object_path)
|
||||
network_unregister(network, reason);
|
||||
|
||||
|
@ -69,8 +69,6 @@ int network_can_connect_bss(struct network *network,
|
||||
int network_autoconnect(struct network *network, struct scan_bss *bss);
|
||||
void network_connect_failed(struct network *network, bool in_handshake);
|
||||
void network_bss_start_update(struct network *network);
|
||||
void network_bss_stop_update(struct network *network,
|
||||
const struct scan_freq_set *freqs);
|
||||
bool network_bss_add(struct network *network, struct scan_bss *bss);
|
||||
bool network_bss_update(struct network *network, struct scan_bss *bss);
|
||||
const char *network_bss_get_path(const struct network *network,
|
||||
|
Loading…
Reference in New Issue
Block a user