mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-10-31 04:57:25 +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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 James Prestwood
						James Prestwood