mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 04:32:37 +01:00
dpp: allow config response handling without station
If the device is not in station mode DPP can still write out the credentials and finish without attempting to connect or scan.
This commit is contained in:
parent
e6ecc078a1
commit
82818d7454
20
src/dpp.c
20
src/dpp.c
@ -496,7 +496,7 @@ static void dpp_handle_config_response_frame(const struct mmpdu_header *frame,
|
||||
_auto_(l_free) uint8_t *unwrapped = NULL;
|
||||
struct dpp_configuration *config;
|
||||
struct station *station = station_find(netdev_get_ifindex(dpp->netdev));
|
||||
struct network *network;
|
||||
struct network *network = NULL;
|
||||
struct scan_bss *bss = NULL;
|
||||
char ssid[33];
|
||||
|
||||
@ -622,18 +622,24 @@ static void dpp_handle_config_response_frame(const struct mmpdu_header *frame,
|
||||
return;
|
||||
}
|
||||
|
||||
memcpy(ssid, config->ssid, config->ssid_len);
|
||||
ssid[config->ssid_len] = '\0';
|
||||
/*
|
||||
* We should have a station device, but if not DPP can write the
|
||||
* credentials out and be done
|
||||
*/
|
||||
if (station) {
|
||||
memcpy(ssid, config->ssid, config->ssid_len);
|
||||
ssid[config->ssid_len] = '\0';
|
||||
|
||||
network = station_network_find(station, ssid, SECURITY_PSK);
|
||||
if (network)
|
||||
bss = network_bss_select(network, true);
|
||||
network = station_network_find(station, ssid, SECURITY_PSK);
|
||||
if (network)
|
||||
bss = network_bss_select(network, true);
|
||||
}
|
||||
|
||||
dpp_write_config(config, network);
|
||||
|
||||
if (network && bss)
|
||||
__station_connect_network(station, network, bss);
|
||||
else {
|
||||
else if (station) {
|
||||
dpp->connect_scan_id = scan_active(dpp->wdev_id, NULL, 0,
|
||||
dpp_scan_triggered,
|
||||
dpp_scan_results, dpp,
|
||||
|
Loading…
Reference in New Issue
Block a user