From patchwork Tue Dec 19 18:08:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13498822 Received: from mail-oi1-f182.google.com (mail-oi1-f182.google.com [209.85.167.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 739C537D06 for ; Tue, 19 Dec 2023 18:08:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iB3pvJ//" Received: by mail-oi1-f182.google.com with SMTP id 5614622812f47-3ba084395d9so3372304b6e.0 for ; Tue, 19 Dec 2023 10:08:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703009309; x=1703614109; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=aiApK1YSInACtcDzvMZY/WjaeNQq3mzQCB0iF5xGVkE=; b=iB3pvJ//Z0J9GneXJ8nuhwvhALUEDMiui2dT5U6MqZnc692oRx6ODeGpLPvelkAWY+ DlshAeZB0ipsLBv5krntM78oIutqpzaPBJSCDyKmjg9yeET1ydxhXm2sGUY3z/U5VmyX rpUryElUONcFXtralKKW6BFTxogWwOcPuuZOow6te667A4slIQ0W+Bfi3hd8dYwx76kY dcSoXEbXsstMEwXrF0OpfS30rKwU0pZZKlUUZoZ5b1VsZJv5eOu/flhZrmY+At2IgYjN wgSWZrIX4zfVPGyjs15sQuQVeTr3AE+0NoSSevfpNWmae0iuHzLP3CcFX8AehdYaYmx2 f2oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703009309; x=1703614109; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aiApK1YSInACtcDzvMZY/WjaeNQq3mzQCB0iF5xGVkE=; b=Mg62vT4kH/I5sutNwthOGTOZdWfKvif4pVXe05cURzM/5MzuCtVKhpovEVP3mkmAvE 0U3afSv2D6VWEsHhz0bIFTpRkWumLrk//pBZOyBhWST1qicDa/oehHupzQbNTh+nhbVs IAsSKoYEOmQVsCHuiJ7pm0CkyHna9N1kM6ScPoZ0UnwgW8SlmI5svs777FObEEQPR8sZ IemwVDJLI9Hxb4GiCJrI6YnOyU0Mhnc18WzGFrkM3mhyEGlob2d6N95+mOQ7m6KW9y+8 a0iQEdTijTTR4mQTc+kGzEBcP1n1ovFkRj9rG+YqiwhVAJiZfmY/YO1LT16jp//rxloC EExw== X-Gm-Message-State: AOJu0Yx3OHe6kPDabW7MiQ+Oyxd/lQ6sHmo7p/JoK57xkpOiWPJCpPWs X743Fv9mfdo8tJIzaxstr1qjdfRFKYI= X-Google-Smtp-Source: AGHT+IECJfnN22zvp2TvRGqNoVavm5EYFt5hi5CzihDXGTW2rIPCBMQDGxMLC8h86solERsYizcb5Q== X-Received: by 2002:a05:6808:218a:b0:3b9:e64c:dfc9 with SMTP id be10-20020a056808218a00b003b9e64cdfc9mr22984962oib.22.1703009309212; Tue, 19 Dec 2023 10:08:29 -0800 (PST) Received: from LOCLAP699.barrett-olive-branch.locus ([50.222.209.222]) by smtp.gmail.com with ESMTPSA id z25-20020a056808049900b003ba322fa9a8sm2095130oid.43.2023.12.19.10.08.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Dec 2023 10:08:29 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v3 1/4] knownnetworks: Add UPDATED event Date: Tue, 19 Dec 2023 10:08:23 -0800 Message-Id: <20231219180826.201540-1-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 If a known network is modified on disk known networks does not have any way of notifying other modules. This will be needed to support a corner case in DPP if a profile exists but is overwritten after DPP configuration. Add this event to known networks and handle it in network.c (though nothing needs to be done in that case). --- src/knownnetworks.c | 4 ++++ src/knownnetworks.h | 1 + src/network.c | 2 ++ 3 files changed, 7 insertions(+) v3: * Removed bulk of this change, just emit UPDATED to let DPP know the profile was seen by knownnetworks diff --git a/src/knownnetworks.c b/src/knownnetworks.c index d4d50a6f..04ce74ec 100644 --- a/src/knownnetworks.c +++ b/src/knownnetworks.c @@ -468,6 +468,10 @@ void known_network_update(struct network_info *network, known_network_set_autoconnect(network, new->is_autoconnectable); memcpy(&network->config, new, sizeof(struct network_config)); + + WATCHLIST_NOTIFY(&known_network_watches, + known_networks_watch_func_t, + KNOWN_NETWORKS_EVENT_UPDATED, network); } bool known_networks_foreach(known_networks_foreach_func_t function, diff --git a/src/knownnetworks.h b/src/knownnetworks.h index 0a5c9e25..e8ffac0b 100644 --- a/src/knownnetworks.h +++ b/src/knownnetworks.h @@ -35,6 +35,7 @@ struct network_info; enum known_networks_event { KNOWN_NETWORKS_EVENT_ADDED, KNOWN_NETWORKS_EVENT_REMOVED, + KNOWN_NETWORKS_EVENT_UPDATED, }; struct network_info_ops { diff --git a/src/network.c b/src/network.c index 3918ae08..4723334e 100644 --- a/src/network.c +++ b/src/network.c @@ -2033,6 +2033,8 @@ static void known_networks_changed(enum known_networks_event event, case KNOWN_NETWORKS_EVENT_REMOVED: station_foreach(emit_known_network_removed, (void *) info); break; + case KNOWN_NETWORKS_EVENT_UPDATED: + break; } } From patchwork Tue Dec 19 18:08:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13498823 Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87C8A37D0B for ; Tue, 19 Dec 2023 18:08:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VHrxczRq" Received: by mail-oi1-f176.google.com with SMTP id 5614622812f47-3ba46a19689so3806701b6e.3 for ; Tue, 19 Dec 2023 10:08:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703009310; x=1703614110; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=thvZKJ7fXvOT8jzlQycsItnR9D9ytuucdRNXiGG+QU4=; b=VHrxczRqcaCpyQIrqBM1lX2c546ftQAE4ruvDY6JZ5gYV9UGJsuLsgeYHrr3j2miOr E4vGAWB9kEBP0X2nTTnrZrR9DLMtKGj0+RR4XFipNZsadHzynYs3G0gbVLvtUuhTPEhC WXYVw/UOy+zMFhfxpRX2REh/9gFzUPwjpbEhsnGvbY+U5eApMIkSzxf2u0NYvjLR+tpu nv2s6pKGTN8KqVbRnQmLoxDssArcZk7Bn8cr8dQaBs5hNmU+pfK+9EOXLByFh/ZRR0Ta 4af0usq6sOkU6UcZ/JhIecjQ+wiAW+iS18nTYfd13HeNw+N5b64uiNOK10Zwz4g80la5 JaBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703009310; x=1703614110; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=thvZKJ7fXvOT8jzlQycsItnR9D9ytuucdRNXiGG+QU4=; b=NTcWa9rJ2CKZCcyOD69MAmK5pLjcR/8gdiGaqcBCHWqXsw7wyQrZeKNHuOml5Q+LGC VZQezZ/0Dzqd6/0qgQjnI4JbEIYRf/REZt4BX+BycqdLDHWKWs3zSsMCS7nN9GuFXIZ/ 1hpN1at8hBs68LgoVYZsgP30R+t6+QnmT/3SoKeVy0AUg7vvuri6fXPcVl2GvITvExSw PfzdnWIq46MRcgLBR8iqij/08ROjcHrhAXQ4Ng0ggpPvyskVGglis/eKPBc7HHT803Nd cWU0UHZTG4HzoBv6oXg89bjRDfEcXjSL6CCnmNLppYXn2vwZQUuZWckft9dxSCxur8dt kwuA== X-Gm-Message-State: AOJu0Ywf5KHy1WSSpHr0AwrM6kXuLT5WNc0WIisep8rg72MpLUCAUYCY 9fhLOLGeDMHjzWiOAXilV/wLHkrr7uQ= X-Google-Smtp-Source: AGHT+IH+nUEsngJ/Eec2pJ1F5Ms2PHj0v0wq/l/nNLU7cuDQqJFa/FQxWk38Bg/mvVDVqCQXnb3k3A== X-Received: by 2002:a05:6808:209b:b0:3b9:dd70:7666 with SMTP id s27-20020a056808209b00b003b9dd707666mr25200838oiw.45.1703009310159; Tue, 19 Dec 2023 10:08:30 -0800 (PST) Received: from LOCLAP699.barrett-olive-branch.locus ([50.222.209.222]) by smtp.gmail.com with ESMTPSA id z25-20020a056808049900b003ba322fa9a8sm2095130oid.43.2023.12.19.10.08.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Dec 2023 10:08:29 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v3 2/4] dpp: fix extra settings not being used when connecting Date: Tue, 19 Dec 2023 10:08:24 -0800 Message-Id: <20231219180826.201540-2-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231219180826.201540-1-prestwoj@gmail.com> References: <20231219180826.201540-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Before this change DPP was writing the credentials both to disk and into the network object directly. This allowed the connection to work fine but additional settings were not picked up due to network_set_passphrase/psk loading the settings before they were written. Instead DPP can avoid setting the credentials to the network object entirely and just write them to disk. Then, wait for known networks to notify that the profile was either created or updated then DPP can proceed to connecting. network_autoconnect() will take care of loading the profile that DPP wrote and remove the need for DPP to touch the network object at all. One thing to note is that an idle callback is still needed from within the known networks callback. This is because a new profile requires network.c to set the network_info which is done in the known networks callback. Rather than assume that network.c will be called into before dpp.c an l_idle was added. --- src/dpp.c | 124 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 93 insertions(+), 31 deletions(-) diff --git a/src/dpp.c b/src/dpp.c index 1ff4b99e..af6574fb 100644 --- a/src/dpp.c +++ b/src/dpp.c @@ -53,6 +53,7 @@ #include "src/network.h" #include "src/handshake.h" #include "src/nl80211util.h" +#include "src/knownnetworks.h" #define DPP_FRAME_MAX_RETRIES 5 #define DPP_FRAME_RETRY_TIMEOUT 1 @@ -101,6 +102,7 @@ struct dpp_sm { uint8_t role; int refcount; uint32_t station_watch; + uint32_t known_network_watch; uint64_t wdev_id; @@ -168,6 +170,8 @@ struct dpp_sm { struct l_dbus_message *pending; + struct l_idle *connect_idle; + /* PKEX-specific values */ char *pkex_id; char *pkex_key; @@ -515,6 +519,11 @@ static void dpp_reset(struct dpp_sm *dpp) dpp->pkex_scan_id = 0; } + if (dpp->connect_idle) { + l_idle_remove(dpp->connect_idle); + dpp->connect_idle = NULL; + } + dpp->state = DPP_STATE_NOTHING; dpp->new_freq = 0; dpp->frame_retry = 0; @@ -570,6 +579,8 @@ static void dpp_free(struct dpp_sm *dpp) if (station) station_remove_state_watch(station, dpp->station_watch); + known_networks_watch_remove(dpp->known_network_watch); + l_free(dpp); } @@ -812,8 +823,6 @@ static void dpp_write_config(struct dpp_configuration *config, { _auto_(l_settings_free) struct l_settings *settings = l_settings_new(); _auto_(l_free) char *path; - _auto_(l_free) uint8_t *psk = NULL; - size_t psk_len; path = storage_get_network_file_path(SECURITY_PSK, config->ssid); @@ -822,22 +831,13 @@ static void dpp_write_config(struct dpp_configuration *config, l_settings_remove_group(settings, "Security"); } - if (config->passphrase) { + if (config->passphrase) l_settings_set_string(settings, "Security", "Passphrase", config->passphrase); - if (network) - network_set_passphrase(network, config->passphrase); - - } else if (config->psk) { + else if (config->psk) l_settings_set_string(settings, "Security", "PreSharedKey", config->psk); - psk = l_util_from_hexstring(config->psk, &psk_len); - - if (network) - network_set_psk(network, psk); - } - if (config->send_hostname) l_settings_set_bool(settings, "IPv4", "SendHostname", true); @@ -856,14 +856,39 @@ static void dpp_scan_triggered(int err, void *user_data) l_error("Failed to trigger DPP scan"); } +static void dpp_start_connect(struct l_idle *idle, void *user_data) +{ + struct dpp_sm *dpp = user_data; + struct station *station = station_find(netdev_get_ifindex(dpp->netdev)); + struct scan_bss *bss; + struct network *network; + int ret; + + network = station_network_find(station, dpp->config->ssid, + SECURITY_PSK); + + dpp_reset(dpp); + + if (!network) { + l_debug("Network was not found!"); + return; + } + + l_debug("connecting to %s from DPP", network_get_ssid(network)); + + bss = network_bss_select(network, true); + ret = network_autoconnect(network, bss); + if (ret < 0) + l_warn("failed to connect after DPP (%d) %s", ret, + strerror(-ret)); +} + static bool dpp_scan_results(int err, struct l_queue *bss_list, const struct scan_freq_set *freqs, void *userdata) { struct dpp_sm *dpp = userdata; struct station *station = station_find(netdev_get_ifindex(dpp->netdev)); - struct scan_bss *bss; - struct network *network; if (err < 0) goto reset; @@ -880,18 +905,7 @@ static bool dpp_scan_results(int err, struct l_queue *bss_list, station_set_scan_results(station, bss_list, freqs, false); - network = station_network_find(station, dpp->config->ssid, - SECURITY_PSK); - - dpp_reset(dpp); - - if (!network) { - l_debug("Network was not found after scanning"); - return true; - } - - bss = network_bss_select(network, true); - network_autoconnect(network, bss); + dpp_start_connect(NULL, dpp); return true; @@ -907,6 +921,51 @@ static void dpp_scan_destroy(void *userdata) dpp_reset(dpp); } +static void dpp_known_network_watch(enum known_networks_event event, + const struct network_info *info, + void *user_data) +{ + struct dpp_sm *dpp = user_data; + + /* + * Check the following + * - DPP is enrolling + * - DPP finished (dpp->config is set) + * - This is for the network DPP just configured + * - DPP isn't already trying to connect (e.g. if the profile was + * immediately modified after DPP synced it). + * - DPP didn't start a scan for the network. + */ + if (dpp->role != DPP_CAPABILITY_ENROLLEE) + return; + if (!dpp->config) + return; + if (strcmp(info->ssid, dpp->config->ssid)) + return; + if (dpp->connect_idle) + return; + if (dpp->connect_scan_id) + return; + + switch (event) { + case KNOWN_NETWORKS_EVENT_ADDED: + case KNOWN_NETWORKS_EVENT_UPDATED: + /* + * network.c takes care of updating the settings for the + * network. This callback just tells us to begin the connection. + * We do have use an idle here because there is no strict + * guarantee of ordering between known network events, e.g. DPP + * could have been called into prior to network and the network + * object isn't updated yet. + */ + dpp->connect_idle = l_idle_create(dpp_start_connect, dpp, NULL); + break; + case KNOWN_NETWORKS_EVENT_REMOVED: + l_warn("profile was removed before DPP could connect"); + break; + } +} + static void dpp_handle_config_response_frame(const struct mmpdu_header *frame, const void *body, size_t body_len, int rssi, void *user_data) @@ -1074,10 +1133,11 @@ static void dpp_handle_config_response_frame(const struct mmpdu_header *frame, offchannel_cancel(dpp->wdev_id, dpp->offchannel_id); - if (network && bss) - __station_connect_network(station, network, bss, - STATION_STATE_CONNECTING); - else if (station) { + if (network && bss) { + l_debug("delaying connect until settings are synced"); + dpp->config = config; + return; + } else if (station) { struct scan_parameters params = {0}; params.ssid = (void *) config->ssid; @@ -3780,6 +3840,8 @@ static void dpp_create(struct netdev *netdev) dpp->station_watch = station_add_state_watch(station, dpp_station_state_watch, dpp, NULL); + dpp->known_network_watch = known_networks_watch_add( + dpp_known_network_watch, dpp, NULL); l_queue_push_tail(dpp_list, dpp); } From patchwork Tue Dec 19 18:08:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13498824 Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com [209.85.167.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1017337D00 for ; Tue, 19 Dec 2023 18:08:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e3kdcKJM" Received: by mail-oi1-f177.google.com with SMTP id 5614622812f47-3b9d8bfe845so3845749b6e.0 for ; Tue, 19 Dec 2023 10:08:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703009311; x=1703614111; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ktMfj5r61bwoR24AusaRFVdEJJxbR0slS7FZOpl5xPo=; b=e3kdcKJMJABd0ILvT70yJ63bhFAovcZ/Y3oDacgVXBVW1ciytnUgA5Y9AodNvTASE7 40jLIz+shxG4AQLmMtECnmkSQF8yga2bCejFY1Q0ajFK9DBIEKKeQVZDTNgXZIzLLSY9 JnFwiw7XA0jkl1ioFqXvtLcJFisjx9j15uAwGfYz7bDEa7t016HRHq3jePnRbzug9MOF gQU/c4Ca9HZcBv/u6hQFiNVj0nXLDjZsO4EFdXyJx8uYeoOJEWDhiDspd7gBm9tutHRA m3qvhC7DNr0CAT64yLSphnAJIniLGzkpHriVXaCCkbEPCIcM+wC48iuivhYdCgwMRH9M 0KZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703009311; x=1703614111; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ktMfj5r61bwoR24AusaRFVdEJJxbR0slS7FZOpl5xPo=; b=h67uFYzAdTsxNbl/qkznseWL1tOTC8bxyuXJKQtv1+1DyBtsoEo+2qvSeWcNxCO4TI GaSfRGWqjSoG/yjg22DZK7MU9gdjKp/63eMCEXz0yVu3O69dUZmPgaEmRuOps6DCJLkU CLPKjQQR2R2bAd4agNgnoJHQT9jIqFBL+kpvZ0patJ63p0rLXzR4YQYVh+T2uR87y8SV j44LLEUF7p54bB6QsO9lNRyI0uSLue7gatPPSVu6fsw9N0MbZLxfwzmlYR25kN4K8Uxd Akbj3xFlSIw0L+7Q3LS9IkpGaJFw90umwHkEGEfADYfNpzGM1ecPayBsceEPOX/23Rof mTXA== X-Gm-Message-State: AOJu0YyWKZ6hSK5HwM1UmFoHdvJ4F9R3A/eQ6h2rZbFM0ZJ8iGj64nQ5 iRW11yLgNx8AshTjjk/3ao9lqlYB+Ak= X-Google-Smtp-Source: AGHT+IGr/Z3w+SBoi1sBvaLajXjviBI8t3j7jDWTfW+sbLWAFQh1fh0BMGHhX0h78t4kfF9QF0q0bw== X-Received: by 2002:a05:6808:189d:b0:3bb:6abf:a522 with SMTP id bi29-20020a056808189d00b003bb6abfa522mr390835oib.72.1703009311001; Tue, 19 Dec 2023 10:08:31 -0800 (PST) Received: from LOCLAP699.barrett-olive-branch.locus ([50.222.209.222]) by smtp.gmail.com with ESMTPSA id z25-20020a056808049900b003ba322fa9a8sm2095130oid.43.2023.12.19.10.08.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Dec 2023 10:08:30 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v3 3/4] auto-t: add DPP tests to check extra settings are applied Date: Tue, 19 Dec 2023 10:08:25 -0800 Message-Id: <20231219180826.201540-3-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231219180826.201540-1-prestwoj@gmail.com> References: <20231219180826.201540-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In order to test that extra settings are applied prior to connecting two tests were added for hidden networks as well as one testing if there is already an existing profile after DPP. The reason hidden networks were used was due to the requirement of the "Hidden" settings in the profile. If this setting doesn't get sync'ed to disk the connection will fail. --- autotests/testDPP/existingProfile.psk | 2 + autotests/testDPP/hw.conf | 5 +- autotests/testDPP/pkex_test.py | 72 ++++++++++++++++++++++++++- autotests/testDPP/ssidHidden.conf | 9 ++++ autotests/testDPP/ssidHidden.psk | 5 ++ 5 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 autotests/testDPP/existingProfile.psk create mode 100644 autotests/testDPP/ssidHidden.conf create mode 100644 autotests/testDPP/ssidHidden.psk diff --git a/autotests/testDPP/existingProfile.psk b/autotests/testDPP/existingProfile.psk new file mode 100644 index 00000000..d0689078 --- /dev/null +++ b/autotests/testDPP/existingProfile.psk @@ -0,0 +1,2 @@ +[Security] +Passphrase=IncorrectPassphrase diff --git a/autotests/testDPP/hw.conf b/autotests/testDPP/hw.conf index a2b1470e..85f33777 100644 --- a/autotests/testDPP/hw.conf +++ b/autotests/testDPP/hw.conf @@ -1,5 +1,5 @@ [SETUP] -num_radios=4 +num_radios=5 start_iwd=0 hwsim_medium=yes @@ -8,6 +8,7 @@ rad0=wpas.conf [HOSTAPD] rad1=hostapd.conf +rad2=ssidHidden.conf [NameSpaces] -ns0=rad2 +ns0=rad3 diff --git a/autotests/testDPP/pkex_test.py b/autotests/testDPP/pkex_test.py index 9e0b5dd8..db355225 100644 --- a/autotests/testDPP/pkex_test.py +++ b/autotests/testDPP/pkex_test.py @@ -26,11 +26,11 @@ class Test(unittest.TestCase): self.wpas.dpp_stop_listen() self.wpas.dpp_configurator_remove() - def start_iwd_pkex_configurator(self, device, agent=False): + def start_iwd_pkex_configurator(self, device, agent=False, profile='ssidCCMP.psk'): self.hapd.reload() self.hapd.wait_for_event('AP-ENABLED') - IWD.copy_to_storage('ssidCCMP.psk') + IWD.copy_to_storage(profile) device.autoconnect = True condition = 'obj.state == DeviceState.connected' @@ -186,6 +186,71 @@ class Test(unittest.TestCase): self.agent = None + def test_existing_network(self): + self.hapd.reload() + self.hapd.wait_for_event('AP-ENABLED') + IWD.copy_to_storage("existingProfile.psk", "/tmp/ns0/", "ssidCCMP.psk") + + # Scan first so a network object exists, and its a known network + self.device[1].scan() + self.wd.wait_for_object_condition(self.device[1], 'obj.scanning == True') + self.wd.wait_for_object_condition(self.device[1], 'obj.scanning == False') + + self.start_iwd_pkex_configurator(self.device[0]) + + self.device[1].dpp_pkex_enroll('secret123', identifier="test") + self.device[1].autoconnect = False + + condition = 'obj.state == DeviceState.connected' + self.wd.wait_for_object_condition(self.device[1], condition) + + # Check additional settings were carried over + with open('/tmp/ns0/ssidCCMP.psk', 'r') as f: + settings = f.read() + + self.assertIn("SendHostname=true", settings) + + def test_existing_hidden_network(self): + self.hapd_hidden.reload() + self.hapd_hidden.wait_for_event('AP-ENABLED') + IWD.copy_to_storage("existingProfile.psk", "/tmp/ns0/", "ssidHidden.psk") + + # Scan first so a network object exists, and its a known network + self.device[1].scan() + self.wd.wait_for_object_condition(self.device[1], 'obj.scanning == True') + self.wd.wait_for_object_condition(self.device[1], 'obj.scanning == False') + + self.start_iwd_pkex_configurator(self.device[0], profile='ssidHidden.psk') + + self.device[1].dpp_pkex_enroll('secret123', identifier="test") + self.device[1].autoconnect = False + + condition = 'obj.state == DeviceState.connected' + self.wd.wait_for_object_condition(self.device[1], condition) + + # Check additional settings were carried over + with open('/tmp/ns0/ssidHidden.psk', 'r') as f: + settings = f.read() + + self.assertIn("Hidden=true", settings) + + def test_hidden_network(self): + self.hapd_hidden.reload() + self.hapd_hidden.wait_for_event('AP-ENABLED') + self.start_iwd_pkex_configurator(self.device[0], profile='ssidHidden.psk') + + self.device[1].dpp_pkex_enroll('secret123', identifier="test") + self.device[1].autoconnect = False + + condition = 'obj.state == DeviceState.connected' + self.wd.wait_for_object_condition(self.device[1], condition) + + # Check additional settings were carried over + with open('/tmp/ns0/ssidHidden.psk', 'r') as f: + settings = f.read() + + self.assertIn("Hidden=true", settings) + def setUp(self): ns0 = ctx.get_namespace('ns0') self.wpas = Wpas('wpas.conf') @@ -197,6 +262,8 @@ class Test(unittest.TestCase): self.device.append(self.wd_ns0.list_devices(1)[0]) self.hapd = HostapdCLI('hostapd.conf') self.hapd.disable() + self.hapd_hidden = HostapdCLI('ssidHidden.conf') + self.hapd_hidden.disable() self.hwsim = Hwsim() self.rule_xchg_resp = self.hwsim.rules.create() @@ -240,6 +307,7 @@ class Test(unittest.TestCase): self.hapd = None self.rule_xchg_resp = None IWD.clear_storage() + IWD.clear_storage('/tmp/ns0') @classmethod def setUpClass(cls): diff --git a/autotests/testDPP/ssidHidden.conf b/autotests/testDPP/ssidHidden.conf new file mode 100644 index 00000000..1055fb9c --- /dev/null +++ b/autotests/testDPP/ssidHidden.conf @@ -0,0 +1,9 @@ +hw_mode=g +channel=6 +ssid=ssidHidden + +wpa=1 +wpa_pairwise=TKIP +wpa_passphrase=secret123 + +ignore_broadcast_ssid=1 diff --git a/autotests/testDPP/ssidHidden.psk b/autotests/testDPP/ssidHidden.psk new file mode 100644 index 00000000..9917294e --- /dev/null +++ b/autotests/testDPP/ssidHidden.psk @@ -0,0 +1,5 @@ +[Security] +Passphrase=secret123 + +[Settings] +Hidden=true From patchwork Tue Dec 19 18:08:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13498825 Received: from mail-oi1-f181.google.com (mail-oi1-f181.google.com [209.85.167.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 06CCD37D14 for ; Tue, 19 Dec 2023 18:08:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XgzwSssJ" Received: by mail-oi1-f181.google.com with SMTP id 5614622812f47-3ba2e4ff6e1so3749524b6e.3 for ; Tue, 19 Dec 2023 10:08:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703009312; x=1703614112; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=17kjngjl4clw+g5Gdna9lJMGodPIyyvLG/4MzZRUlT8=; b=XgzwSssJv2+gcioEaBmEJoQK/FJlVxVyxxGWak3v/h6chrsV8wc3t2+SewDsV+jqHa NFwYJXxE3p4xyTLu8bguwQCdZmqDi48CFBHYo4lH0A1SwWavIlhzk4b51fv4ZDHwUCbb YKpfchjh1fDXzKKz1pniFFmjtTSW4E1qonlV/e+l13v/45J6k6nlGbJM6Id13bVffWkE qHliwsundwrYH7k8N2/R/hMhhAH0yzithbBx8b1/ie9RXNEFdaZcFyZ2E9PpfFxR+wCN 7EIygXRnKej0KKwiJFAAw1I4PTS/ZL8egf1w10u7cl12e+M1LBgjEUl+86eVW9LNGXUt oMtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703009312; x=1703614112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=17kjngjl4clw+g5Gdna9lJMGodPIyyvLG/4MzZRUlT8=; b=D6ABse00s5B504fTtDoEpwLElWDD1GCUOIDYMarNd2wTCbyOzLcehJByQ8VUQdcOnc Hpfisi27BqTkkhJFYwR0oGmQfzvrpifpOfPGO4GAHnaCBqAAFGEAepBFeIqn08wCfs/o xemgJ3LRi9Bdp1DFEEg4P/d1l0Ol9WjTtlBmziJqr6wVjJ8bAw75d2UGPWYstM4PmsQm 6k68NhTKVO79TCywpgdIz1ckFdj82LIVXL4m9x7zl8+jTUSW4V6oc+NU6/JfgkjlFuQ6 J2gwkS6+5yR1ho3P19RHV5xaFP5/ULomohlIXTQnvdZvakqPx/gsScWn9NoXmsOiNbST Tlww== X-Gm-Message-State: AOJu0YzPPTVXbKhWVmHrCQYpOSTsik2oUw7vMiXmi6jKZfeq4n6/0VVJ O3yU+rOxFOI7QAHVT+Rw4QxeH67r8WE= X-Google-Smtp-Source: AGHT+IGxeNVUWCfrSBiLYjtjy6OsZ0zM1GfIS+uehFEPaDIxpHjm6TqSXvyRNi/9u+81TfG0HfOaHQ== X-Received: by 2002:a05:6808:e87:b0:3b8:b063:9b7b with SMTP id k7-20020a0568080e8700b003b8b0639b7bmr21743694oil.109.1703009311912; Tue, 19 Dec 2023 10:08:31 -0800 (PST) Received: from LOCLAP699.barrett-olive-branch.locus ([50.222.209.222]) by smtp.gmail.com with ESMTPSA id z25-20020a056808049900b003ba322fa9a8sm2095130oid.43.2023.12.19.10.08.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Dec 2023 10:08:31 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v3 4/4] auto-t: increase RAM when running with valgrind (UML) Date: Tue, 19 Dec 2023 10:08:26 -0800 Message-Id: <20231219180826.201540-4-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231219180826.201540-1-prestwoj@gmail.com> References: <20231219180826.201540-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This was done for QEMU but not for UML. Running more than a few tests with --valgrind will generally thrown an OOM error pretty quick. --- tools/runner.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/runner.py b/tools/runner.py index 03f44611..e50ba9c0 100644 --- a/tools/runner.py +++ b/tools/runner.py @@ -552,7 +552,12 @@ class UmlRunner(RunnerAbstract): kern_log = "ignore_loglevel" if "kernel" in args.verbose else "quiet" - cmd = [args.kernel, 'rootfstype=hostfs', 'ro', 'mem=256M', 'mac80211_hwsim.radios=0', + if self.args.valgrind: + ram = 512 + else: + ram = 256 + + cmd = [args.kernel, 'rootfstype=hostfs', 'ro', f'mem={ram}M', 'mac80211_hwsim.radios=0', 'time-travel=inf-cpu', 'eth0=mcast', 'eth1=mcast', '%s' % kern_log, 'init=%s' % self.init] cmd.extend(args.to_cmd().split(' '))