mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-06-19 07:48:30 +02:00
merge: branch 'lr/sae'
This adds support for SAE authentication as used for 802.11s Meshing, but also WPA3-Personal. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/9 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/65
This commit is contained in:
commit
d081aa1d84
25 changed files with 2794 additions and 2607 deletions
|
|
@ -4834,6 +4834,17 @@ add_new_connection (gboolean persistent,
|
|||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if ( !nm_connection_verify (connection, &error)
|
||||
|| !nm_connection_verify_secrets (connection, &error)) {
|
||||
g_simple_async_report_take_gerror_in_idle (G_OBJECT (client),
|
||||
callback,
|
||||
user_data,
|
||||
error);
|
||||
return;
|
||||
}
|
||||
|
||||
nm_client_add_connection_async (client, connection, persistent,
|
||||
NULL, callback, user_data);
|
||||
}
|
||||
|
|
@ -4844,6 +4855,18 @@ update_connection (gboolean persistent,
|
|||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if ( !nm_connection_verify (NM_CONNECTION (connection), &error)
|
||||
|| !nm_connection_verify_secrets (NM_CONNECTION (connection), &error)) {
|
||||
g_simple_async_report_take_gerror_in_idle (G_OBJECT (connection),
|
||||
callback,
|
||||
user_data,
|
||||
error);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
nm_remote_connection_commit_changes_async (connection, persistent,
|
||||
NULL, callback, user_data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,43 +44,39 @@
|
|||
static char *
|
||||
ap_wpa_rsn_flags_to_string (NM80211ApSecurityFlags flags)
|
||||
{
|
||||
char *flags_str[16]; /* Enough space for flags and terminating NULL */
|
||||
char *ret_str;
|
||||
char *flags_str[13];
|
||||
int i = 0;
|
||||
|
||||
if (flags & NM_802_11_AP_SEC_PAIR_WEP40)
|
||||
flags_str[i++] = g_strdup ("pair_wpe40");
|
||||
flags_str[i++] = "pair_wpe40";
|
||||
if (flags & NM_802_11_AP_SEC_PAIR_WEP104)
|
||||
flags_str[i++] = g_strdup ("pair_wpe104");
|
||||
flags_str[i++] = "pair_wpe104";
|
||||
if (flags & NM_802_11_AP_SEC_PAIR_TKIP)
|
||||
flags_str[i++] = g_strdup ("pair_tkip");
|
||||
flags_str[i++] = "pair_tkip";
|
||||
if (flags & NM_802_11_AP_SEC_PAIR_CCMP)
|
||||
flags_str[i++] = g_strdup ("pair_ccmp");
|
||||
flags_str[i++] = "pair_ccmp";
|
||||
if (flags & NM_802_11_AP_SEC_GROUP_WEP40)
|
||||
flags_str[i++] = g_strdup ("group_wpe40");
|
||||
flags_str[i++] = "group_wpe40";
|
||||
if (flags & NM_802_11_AP_SEC_GROUP_WEP104)
|
||||
flags_str[i++] = g_strdup ("group_wpe104");
|
||||
flags_str[i++] = "group_wpe104";
|
||||
if (flags & NM_802_11_AP_SEC_GROUP_TKIP)
|
||||
flags_str[i++] = g_strdup ("group_tkip");
|
||||
flags_str[i++] = "group_tkip";
|
||||
if (flags & NM_802_11_AP_SEC_GROUP_CCMP)
|
||||
flags_str[i++] = g_strdup ("group_ccmp");
|
||||
flags_str[i++] = "group_ccmp";
|
||||
if (flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|
||||
flags_str[i++] = g_strdup ("psk");
|
||||
flags_str[i++] = "psk";
|
||||
if (flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
|
||||
flags_str[i++] = g_strdup ("802.1X");
|
||||
flags_str[i++] = "802.1X";
|
||||
if (flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)
|
||||
flags_str[i++] = "sae";
|
||||
/* Make sure you grow flags_str when adding items here. */
|
||||
|
||||
if (i == 0)
|
||||
flags_str[i++] = g_strdup (_("(none)"));
|
||||
flags_str[i++] = _("(none)");
|
||||
|
||||
flags_str[i] = NULL;
|
||||
|
||||
ret_str = g_strjoinv (" ", flags_str);
|
||||
|
||||
i = 0;
|
||||
while (flags_str[i])
|
||||
g_free (flags_str[i++]);
|
||||
|
||||
return ret_str;
|
||||
return g_strjoinv (" ", flags_str);
|
||||
}
|
||||
|
||||
static NMMetaColor
|
||||
|
|
@ -1164,21 +1160,21 @@ fill_output_access_point (gpointer data, gpointer user_data)
|
|||
if ( (flags & NM_802_11_AP_FLAGS_PRIVACY)
|
||||
&& (wpa_flags == NM_802_11_AP_SEC_NONE)
|
||||
&& (rsn_flags == NM_802_11_AP_SEC_NONE)) {
|
||||
g_string_append (security_str, _("WEP"));
|
||||
g_string_append_c (security_str, ' ');
|
||||
g_string_append (security_str, "WEP ");
|
||||
}
|
||||
if (wpa_flags != NM_802_11_AP_SEC_NONE) {
|
||||
g_string_append (security_str, _("WPA1"));
|
||||
g_string_append_c (security_str, ' ');
|
||||
g_string_append (security_str, "WPA1 ");
|
||||
}
|
||||
if (rsn_flags != NM_802_11_AP_SEC_NONE) {
|
||||
g_string_append (security_str, _("WPA2"));
|
||||
g_string_append_c (security_str, ' ');
|
||||
if ( (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|
||||
|| (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
|
||||
g_string_append (security_str, "WPA2 ");
|
||||
}
|
||||
if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE) {
|
||||
g_string_append (security_str, "WPA3 ");
|
||||
}
|
||||
if ( (wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
|
||||
|| (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
|
||||
g_string_append (security_str, _("802.1X"));
|
||||
g_string_append_c (security_str, ' ');
|
||||
g_string_append (security_str, "802.1X ");
|
||||
}
|
||||
|
||||
if (security_str->len > 0)
|
||||
|
|
@ -3468,7 +3464,8 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
|
|||
/* WEP */
|
||||
con_password = nm_setting_wireless_security_get_wep_key (s_wsec, 0);
|
||||
} else if ( (ap_wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)) {
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)) {
|
||||
/* WPA PSK */
|
||||
con_password = nm_setting_wireless_security_get_psk (s_wsec);
|
||||
}
|
||||
|
|
@ -3498,7 +3495,8 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
|
|||
wep_passphrase ? NM_WEP_KEY_TYPE_PASSPHRASE: NM_WEP_KEY_TYPE_KEY,
|
||||
NULL);
|
||||
} else if ( (ap_wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)) {
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)) {
|
||||
/* WPA PSK */
|
||||
g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_PSK, password, NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4848,16 +4848,6 @@ _gobject_enum_pre_set_notify_fcn_wireless_security_wep_key_type (const NMMetaPro
|
|||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
_validate_fcn_wireless_security_psk (const char *value, char **out_to_free, GError **error)
|
||||
{
|
||||
if (!nm_utils_wpa_psk_valid (value)) {
|
||||
g_set_error (error, 1, 0, _("'%s' is not a valid PSK"), value);
|
||||
return NULL;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static gconstpointer
|
||||
|
|
@ -7657,7 +7647,7 @@ static const NMMetaPropertyInfo *const property_infos_WIRELESS_SECURITY[] = {
|
|||
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT,
|
||||
.property_type = &_pt_gobject_string,
|
||||
.property_typ_data = DEFINE_PROPERTY_TYP_DATA (
|
||||
.values_static = NM_MAKE_STRV ("none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap"),
|
||||
.values_static = NM_MAKE_STRV ("none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap", "sae"),
|
||||
),
|
||||
),
|
||||
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX,
|
||||
|
|
@ -7757,9 +7747,6 @@ static const NMMetaPropertyInfo *const property_infos_WIRELESS_SECURITY[] = {
|
|||
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK,
|
||||
.is_secret = TRUE,
|
||||
.property_type = &_pt_gobject_string,
|
||||
.property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
|
||||
.validate_fcn = _validate_fcn_wireless_security_psk,
|
||||
),
|
||||
),
|
||||
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS,
|
||||
.property_type = &_pt_gobject_secret_flags,
|
||||
|
|
|
|||
|
|
@ -281,8 +281,7 @@ add_wireless_secrets (RequestData *request,
|
|||
if (!key_mgmt)
|
||||
return FALSE;
|
||||
|
||||
if (NM_IN_STRSET (key_mgmt, "wpa-none",
|
||||
"wpa-psk")) {
|
||||
if (NM_IN_STRSET (key_mgmt, "wpa-none", "wpa-psk", "sae")) {
|
||||
secret = _secret_real_new (NM_SECRET_AGENT_SECRET_TYPE_SECRET,
|
||||
_("Password"),
|
||||
NM_SETTING (s_wsec),
|
||||
|
|
|
|||
|
|
@ -24,14 +24,14 @@
|
|||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_AUTH_ALG N_("When WEP is used (ie, key-mgmt = \"none\" or \"ieee8021x\") indicate the 802.11 authentication algorithm required by the AP here. One of \"open\" for Open System, \"shared\" for Shared Key, or \"leap\" for Cisco LEAP. When using Cisco LEAP (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\") the \"leap-username\" and \"leap-password\" properties must be specified.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_FILS N_("Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the connection. One of NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE (1) (disable FILS), NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL (2) (enable FILS if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED (3) (enable FILS and fail if not supported). When set to NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) and no global default is set, FILS will be optionally enabled.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_GROUP N_("A list of group/broadcast encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty. Each list element may be one of \"wep40\", \"wep104\", \"tkip\", or \"ccmp\".")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_KEY_MGMT N_("Key management used for the connection. One of \"none\" (WEP), \"ieee8021x\" (Dynamic WEP), \"wpa-none\" (Ad-Hoc WPA-PSK), \"wpa-psk\" (infrastructure WPA-PSK), or \"wpa-eap\" (WPA-Enterprise). This property must be set for any Wi-Fi connection that uses security.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_KEY_MGMT N_("Key management used for the connection. One of \"none\" (WEP), \"ieee8021x\" (Dynamic WEP), \"wpa-none\" (Ad-Hoc WPA-PSK), \"wpa-psk\" (infrastructure WPA-PSK), \"sae\" (SAE) or \"wpa-eap\" (WPA-Enterprise). This property must be set for any Wi-Fi connection that uses security.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD N_("The login password for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\").")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS N_("Flags indicating how to handle the \"leap-password\" property.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME N_("The login username for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\").")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PAIRWISE N_("A list of pairwise encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty. Each list element may be one of \"tkip\" or \"ccmp\".")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PMF N_("Indicates whether Protected Management Frames (802.11w) must be enabled for the connection. One of NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE (1) (disable PMF), NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL (2) (enable PMF if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED (3) (enable PMF and fail if not supported). When set to NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) and no global default is set, PMF will be optionally enabled.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PROTO N_("List of strings specifying the allowed WPA protocol versions to use. Each element may be one \"wpa\" (allow WPA) or \"rsn\" (allow WPA2/RSN). If not specified, both WPA and RSN connections are allowed.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PSK N_("Pre-Shared-Key for WPA networks. If the key is 64-characters long, it must contain only hexadecimal characters and is interpreted as a hexadecimal WPA key. Otherwise, the key must be between 8 and 63 ASCII characters (as specified in the 802.11i standard) and is interpreted as a WPA passphrase, and is hashed to derive the actual WPA-PSK used when connecting to the Wi-Fi network.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PSK N_("Pre-Shared-Key for WPA networks. For WPA-PSK, it's either an ASCII passphrase of 8 to 63 characters that is (as specified in the 802.11i standard) hashed to derive the actual key, or the key in form of 64 hexadecimal character. The WPA3-Personal networks use a passphrase of any length for SAE authentication.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS N_("Flags indicating how to handle the \"psk\" property.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS N_("Flags indicating how to handle the \"wep-key0\", \"wep-key1\", \"wep-key2\", and \"wep-key3\" properties.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE N_("Controls the interpretation of WEP keys. Allowed values are NM_WEP_KEY_TYPE_KEY (1), in which case the key is either a 10- or 26-character hexadecimal string, or a 5- or 13-character ASCII password; or NM_WEP_KEY_TYPE_PASSPHRASE (2), in which case the passphrase is provided as a string and will be hashed using the de-facto MD5 method to derive the actual WEP key.")
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
size: 395
|
||||
location: clients/tests/test-client.py:829:test_001()/1
|
||||
location: clients/tests/test-client.py:841:test_001()/1
|
||||
cmd: $NMCLI
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -15,7 +15,7 @@ Consult nmcli(1) and nmcli-examples(5) manual pages for complete usage details.
|
|||
|
||||
<<<
|
||||
size: 438
|
||||
location: clients/tests/test-client.py:829:test_001()/2
|
||||
location: clients/tests/test-client.py:841:test_001()/2
|
||||
cmd: $NMCLI
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -33,7 +33,7 @@ o użyciu.
|
|||
|
||||
<<<
|
||||
size: 188
|
||||
location: clients/tests/test-client.py:831:test_001()/3
|
||||
location: clients/tests/test-client.py:843:test_001()/3
|
||||
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
|
||||
lang: C
|
||||
returncode: 10
|
||||
|
|
@ -43,7 +43,7 @@ Error: Device 'wlan0' not found.
|
|||
|
||||
<<<
|
||||
size: 214
|
||||
location: clients/tests/test-client.py:831:test_001()/4
|
||||
location: clients/tests/test-client.py:843:test_001()/4
|
||||
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 10
|
||||
|
|
@ -53,7 +53,7 @@ Błąd: Nie odnaleziono urządzenia „wlan0”.
|
|||
|
||||
<<<
|
||||
size: 120
|
||||
location: clients/tests/test-client.py:833:test_001()/5
|
||||
location: clients/tests/test-client.py:845:test_001()/5
|
||||
cmd: $NMCLI c s
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -63,7 +63,7 @@ stdout: 1 bytes
|
|||
|
||||
<<<
|
||||
size: 130
|
||||
location: clients/tests/test-client.py:833:test_001()/6
|
||||
location: clients/tests/test-client.py:845:test_001()/6
|
||||
cmd: $NMCLI c s
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -73,7 +73,7 @@ stdout: 1 bytes
|
|||
|
||||
<<<
|
||||
size: 192
|
||||
location: clients/tests/test-client.py:835:test_001()/7
|
||||
location: clients/tests/test-client.py:847:test_001()/7
|
||||
cmd: $NMCLI bogus s
|
||||
lang: C
|
||||
returncode: 2
|
||||
|
|
@ -83,7 +83,7 @@ Error: argument 'bogus' not understood. Try passing --help instead.
|
|||
|
||||
<<<
|
||||
size: 221
|
||||
location: clients/tests/test-client.py:835:test_001()/8
|
||||
location: clients/tests/test-client.py:847:test_001()/8
|
||||
cmd: $NMCLI bogus s
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 2
|
||||
|
|
@ -93,7 +93,7 @@ Błąd: nie zrozumiano parametru „bogus”. Można użyć „--help” zamiast
|
|||
|
||||
<<<
|
||||
size: 1413
|
||||
location: clients/tests/test-client.py:838:test_001()/9
|
||||
location: clients/tests/test-client.py:850:test_001()/9
|
||||
cmd: $NMCLI general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -119,7 +119,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1441
|
||||
location: clients/tests/test-client.py:838:test_001()/10
|
||||
location: clients/tests/test-client.py:850:test_001()/10
|
||||
cmd: $NMCLI general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -145,7 +145,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1543
|
||||
location: clients/tests/test-client.py:838:test_001()/11
|
||||
location: clients/tests/test-client.py:850:test_001()/11
|
||||
cmd: $NMCLI --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -171,7 +171,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1570
|
||||
location: clients/tests/test-client.py:838:test_001()/12
|
||||
location: clients/tests/test-client.py:850:test_001()/12
|
||||
cmd: $NMCLI --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -197,7 +197,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1620
|
||||
location: clients/tests/test-client.py:838:test_001()/13
|
||||
location: clients/tests/test-client.py:850:test_001()/13
|
||||
cmd: $NMCLI --pretty general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -227,7 +227,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1677
|
||||
location: clients/tests/test-client.py:838:test_001()/14
|
||||
location: clients/tests/test-client.py:850:test_001()/14
|
||||
cmd: $NMCLI --pretty general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -257,7 +257,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1749
|
||||
location: clients/tests/test-client.py:838:test_001()/15
|
||||
location: clients/tests/test-client.py:850:test_001()/15
|
||||
cmd: $NMCLI --pretty --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -287,7 +287,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1806
|
||||
location: clients/tests/test-client.py:838:test_001()/16
|
||||
location: clients/tests/test-client.py:850:test_001()/16
|
||||
cmd: $NMCLI --pretty --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -317,7 +317,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1045
|
||||
location: clients/tests/test-client.py:838:test_001()/17
|
||||
location: clients/tests/test-client.py:850:test_001()/17
|
||||
cmd: $NMCLI --terse general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -342,7 +342,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 1055
|
||||
location: clients/tests/test-client.py:838:test_001()/18
|
||||
location: clients/tests/test-client.py:850:test_001()/18
|
||||
cmd: $NMCLI --terse general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -367,7 +367,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 1175
|
||||
location: clients/tests/test-client.py:838:test_001()/19
|
||||
location: clients/tests/test-client.py:850:test_001()/19
|
||||
cmd: $NMCLI --terse --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -392,7 +392,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 1185
|
||||
location: clients/tests/test-client.py:838:test_001()/20
|
||||
location: clients/tests/test-client.py:850:test_001()/20
|
||||
cmd: $NMCLI --terse --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -417,7 +417,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 1429
|
||||
location: clients/tests/test-client.py:838:test_001()/21
|
||||
location: clients/tests/test-client.py:850:test_001()/21
|
||||
cmd: $NMCLI --mode tabular general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -443,7 +443,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1456
|
||||
location: clients/tests/test-client.py:838:test_001()/22
|
||||
location: clients/tests/test-client.py:850:test_001()/22
|
||||
cmd: $NMCLI --mode tabular general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -469,7 +469,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1558
|
||||
location: clients/tests/test-client.py:838:test_001()/23
|
||||
location: clients/tests/test-client.py:850:test_001()/23
|
||||
cmd: $NMCLI --mode tabular --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -495,7 +495,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1585
|
||||
location: clients/tests/test-client.py:838:test_001()/24
|
||||
location: clients/tests/test-client.py:850:test_001()/24
|
||||
cmd: $NMCLI --mode tabular --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -521,7 +521,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1635
|
||||
location: clients/tests/test-client.py:838:test_001()/25
|
||||
location: clients/tests/test-client.py:850:test_001()/25
|
||||
cmd: $NMCLI --mode tabular --pretty general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -551,7 +551,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1692
|
||||
location: clients/tests/test-client.py:838:test_001()/26
|
||||
location: clients/tests/test-client.py:850:test_001()/26
|
||||
cmd: $NMCLI --mode tabular --pretty general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -581,7 +581,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1764
|
||||
location: clients/tests/test-client.py:838:test_001()/27
|
||||
location: clients/tests/test-client.py:850:test_001()/27
|
||||
cmd: $NMCLI --mode tabular --pretty --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -611,7 +611,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
|
|||
|
||||
<<<
|
||||
size: 1821
|
||||
location: clients/tests/test-client.py:838:test_001()/28
|
||||
location: clients/tests/test-client.py:850:test_001()/28
|
||||
cmd: $NMCLI --mode tabular --pretty --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -641,7 +641,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
|
|||
|
||||
<<<
|
||||
size: 1060
|
||||
location: clients/tests/test-client.py:838:test_001()/29
|
||||
location: clients/tests/test-client.py:850:test_001()/29
|
||||
cmd: $NMCLI --mode tabular --terse general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -666,7 +666,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 1070
|
||||
location: clients/tests/test-client.py:838:test_001()/30
|
||||
location: clients/tests/test-client.py:850:test_001()/30
|
||||
cmd: $NMCLI --mode tabular --terse general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -691,7 +691,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 1190
|
||||
location: clients/tests/test-client.py:838:test_001()/31
|
||||
location: clients/tests/test-client.py:850:test_001()/31
|
||||
cmd: $NMCLI --mode tabular --terse --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -716,7 +716,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 1200
|
||||
location: clients/tests/test-client.py:838:test_001()/32
|
||||
location: clients/tests/test-client.py:850:test_001()/32
|
||||
cmd: $NMCLI --mode tabular --terse --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -741,7 +741,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
|
|||
|
||||
<<<
|
||||
size: 2335
|
||||
location: clients/tests/test-client.py:838:test_001()/33
|
||||
location: clients/tests/test-client.py:850:test_001()/33
|
||||
cmd: $NMCLI --mode multiline general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -782,7 +782,7 @@ VALUE: unknown
|
|||
|
||||
<<<
|
||||
size: 2351
|
||||
location: clients/tests/test-client.py:838:test_001()/34
|
||||
location: clients/tests/test-client.py:850:test_001()/34
|
||||
cmd: $NMCLI --mode multiline general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -823,7 +823,7 @@ VALUE: nieznane
|
|||
|
||||
<<<
|
||||
size: 2464
|
||||
location: clients/tests/test-client.py:838:test_001()/35
|
||||
location: clients/tests/test-client.py:850:test_001()/35
|
||||
cmd: $NMCLI --mode multiline --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -864,7 +864,7 @@ VALUE: unknown
|
|||
|
||||
<<<
|
||||
size: 2480
|
||||
location: clients/tests/test-client.py:838:test_001()/36
|
||||
location: clients/tests/test-client.py:850:test_001()/36
|
||||
cmd: $NMCLI --mode multiline --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -905,7 +905,7 @@ VALUE: nieznane
|
|||
|
||||
<<<
|
||||
size: 3837
|
||||
location: clients/tests/test-client.py:838:test_001()/37
|
||||
location: clients/tests/test-client.py:850:test_001()/37
|
||||
cmd: $NMCLI --mode multiline --pretty general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -965,7 +965,7 @@ VALUE: unknown
|
|||
|
||||
<<<
|
||||
size: 3858
|
||||
location: clients/tests/test-client.py:838:test_001()/38
|
||||
location: clients/tests/test-client.py:850:test_001()/38
|
||||
cmd: $NMCLI --mode multiline --pretty general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -1025,7 +1025,7 @@ VALUE: nieznane
|
|||
|
||||
<<<
|
||||
size: 3966
|
||||
location: clients/tests/test-client.py:838:test_001()/39
|
||||
location: clients/tests/test-client.py:850:test_001()/39
|
||||
cmd: $NMCLI --mode multiline --pretty --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -1085,7 +1085,7 @@ VALUE: unknown
|
|||
|
||||
<<<
|
||||
size: 3987
|
||||
location: clients/tests/test-client.py:838:test_001()/40
|
||||
location: clients/tests/test-client.py:850:test_001()/40
|
||||
cmd: $NMCLI --mode multiline --pretty --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -1145,7 +1145,7 @@ VALUE: nieznane
|
|||
|
||||
<<<
|
||||
size: 1335
|
||||
location: clients/tests/test-client.py:838:test_001()/41
|
||||
location: clients/tests/test-client.py:850:test_001()/41
|
||||
cmd: $NMCLI --mode multiline --terse general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -1186,7 +1186,7 @@ VALUE:unknown
|
|||
|
||||
<<<
|
||||
size: 1345
|
||||
location: clients/tests/test-client.py:838:test_001()/42
|
||||
location: clients/tests/test-client.py:850:test_001()/42
|
||||
cmd: $NMCLI --mode multiline --terse general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -1227,7 +1227,7 @@ VALUE:unknown
|
|||
|
||||
<<<
|
||||
size: 1464
|
||||
location: clients/tests/test-client.py:838:test_001()/43
|
||||
location: clients/tests/test-client.py:850:test_001()/43
|
||||
cmd: $NMCLI --mode multiline --terse --color yes general permissions
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -1268,7 +1268,7 @@ VALUE:unknown
|
|||
|
||||
<<<
|
||||
size: 1474
|
||||
location: clients/tests/test-client.py:838:test_001()/44
|
||||
location: clients/tests/test-client.py:850:test_001()/44
|
||||
cmd: $NMCLI --mode multiline --terse --color yes general permissions
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
size: 377
|
||||
location: clients/tests/test-client.py:844:test_002()/1
|
||||
location: clients/tests/test-client.py:856:test_002()/1
|
||||
cmd: $NMCLI d
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -14,7 +14,7 @@ wlan1 wifi unavailable --
|
|||
|
||||
<<<
|
||||
size: 392
|
||||
location: clients/tests/test-client.py:844:test_002()/2
|
||||
location: clients/tests/test-client.py:856:test_002()/2
|
||||
cmd: $NMCLI d
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -29,7 +29,7 @@ wlan1 wifi niedostępne --
|
|||
|
||||
<<<
|
||||
size: 978
|
||||
location: clients/tests/test-client.py:846:test_002()/3
|
||||
location: clients/tests/test-client.py:858:test_002()/3
|
||||
cmd: $NMCLI -f all d
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -44,7 +44,7 @@ wlan1 wifi unavailable unknown unknown /org/freedesk
|
|||
|
||||
<<<
|
||||
size: 993
|
||||
location: clients/tests/test-client.py:846:test_002()/4
|
||||
location: clients/tests/test-client.py:858:test_002()/4
|
||||
cmd: $NMCLI -f all d
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -59,7 +59,7 @@ wlan1 wifi niedostępne nieznane nieznane /org/freedes
|
|||
|
||||
<<<
|
||||
size: 739
|
||||
location: clients/tests/test-client.py:848:test_002()/5
|
||||
location: clients/tests/test-client.py:860:test_002()/5
|
||||
cmd: $NMCLI
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -95,7 +95,7 @@ Consult nmcli(1) and nmcli-examples(5) manual pages for complete usage details.
|
|||
|
||||
<<<
|
||||
size: 812
|
||||
location: clients/tests/test-client.py:848:test_002()/6
|
||||
location: clients/tests/test-client.py:860:test_002()/6
|
||||
cmd: $NMCLI
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -132,12 +132,12 @@ Strony podręcznika nmcli(1) i nmcli-examples(5) zawierają pełne informacje
|
|||
o użyciu.
|
||||
|
||||
<<<
|
||||
size: 1260
|
||||
location: clients/tests/test-client.py:850:test_002()/7
|
||||
size: 1250
|
||||
location: clients/tests/test-client.py:862:test_002()/7
|
||||
cmd: $NMCLI -f AP -mode multiline d show wlan0
|
||||
lang: C
|
||||
returncode: 0
|
||||
stdout: 1107 bytes
|
||||
stdout: 1097 bytes
|
||||
>>>
|
||||
AP[1].IN-USE:
|
||||
AP[1].SSID: wlan0-ap-3
|
||||
|
|
@ -146,7 +146,7 @@ AP[1].CHAN: 1
|
|||
AP[1].RATE: 54 Mbit/s
|
||||
AP[1].SIGNAL: 55
|
||||
AP[1].BARS: **
|
||||
AP[1].SECURITY: WPA1 WPA2
|
||||
AP[1].SECURITY: WPA3
|
||||
AP[2].IN-USE:
|
||||
AP[2].SSID: wlan0-ap-1
|
||||
AP[2].MODE: Infra
|
||||
|
|
@ -154,7 +154,7 @@ AP[2].CHAN: 1
|
|||
AP[2].RATE: 54 Mbit/s
|
||||
AP[2].SIGNAL: 44
|
||||
AP[2].BARS: **
|
||||
AP[2].SECURITY: WPA1 WPA2
|
||||
AP[2].SECURITY: WPA1
|
||||
AP[3].IN-USE:
|
||||
AP[3].SSID: wlan0-ap-2
|
||||
AP[3].MODE: Infra
|
||||
|
|
@ -165,12 +165,12 @@ AP[3].BARS: **
|
|||
AP[3].SECURITY: WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 1297
|
||||
location: clients/tests/test-client.py:850:test_002()/8
|
||||
size: 1287
|
||||
location: clients/tests/test-client.py:862:test_002()/8
|
||||
cmd: $NMCLI -f AP -mode multiline d show wlan0
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
stdout: 1134 bytes
|
||||
stdout: 1124 bytes
|
||||
>>>
|
||||
AP[1].IN-USE:
|
||||
AP[1].SSID: wlan0-ap-3
|
||||
|
|
@ -179,7 +179,7 @@ AP[1].CHAN: 1
|
|||
AP[1].RATE: 54 Mb/s
|
||||
AP[1].SIGNAL: 55
|
||||
AP[1].BARS: **
|
||||
AP[1].SECURITY: WPA1 WPA2
|
||||
AP[1].SECURITY: WPA3
|
||||
AP[2].IN-USE:
|
||||
AP[2].SSID: wlan0-ap-1
|
||||
AP[2].MODE: Infrastruktura
|
||||
|
|
@ -187,7 +187,7 @@ AP[2].CHAN: 1
|
|||
AP[2].RATE: 54 Mb/s
|
||||
AP[2].SIGNAL: 44
|
||||
AP[2].BARS: **
|
||||
AP[2].SECURITY: WPA1 WPA2
|
||||
AP[2].SECURITY: WPA1
|
||||
AP[3].IN-USE:
|
||||
AP[3].SSID: wlan0-ap-2
|
||||
AP[3].MODE: Infrastruktura
|
||||
|
|
@ -198,12 +198,12 @@ AP[3].BARS: **
|
|||
AP[3].SECURITY: WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 1714
|
||||
location: clients/tests/test-client.py:851:test_002()/9
|
||||
size: 1704
|
||||
location: clients/tests/test-client.py:863:test_002()/9
|
||||
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
|
||||
lang: C
|
||||
returncode: 0
|
||||
stdout: 1558 bytes
|
||||
stdout: 1548 bytes
|
||||
>>>
|
||||
===============================================================================
|
||||
Device details (wlan0)
|
||||
|
|
@ -215,7 +215,7 @@ AP[1].CHAN: 1
|
|||
AP[1].RATE: 54 Mbit/s
|
||||
AP[1].SIGNAL: 55
|
||||
AP[1].BARS: **
|
||||
AP[1].SECURITY: WPA1 WPA2
|
||||
AP[1].SECURITY: WPA3
|
||||
-------------------------------------------------------------------------------
|
||||
AP[2].IN-USE:
|
||||
AP[2].SSID: wlan0-ap-1
|
||||
|
|
@ -224,7 +224,7 @@ AP[2].CHAN: 1
|
|||
AP[2].RATE: 54 Mbit/s
|
||||
AP[2].SIGNAL: 44
|
||||
AP[2].BARS: **
|
||||
AP[2].SECURITY: WPA1 WPA2
|
||||
AP[2].SECURITY: WPA1
|
||||
-------------------------------------------------------------------------------
|
||||
AP[3].IN-USE:
|
||||
AP[3].SSID: wlan0-ap-2
|
||||
|
|
@ -237,12 +237,12 @@ AP[3].SECURITY: WPA1 WPA2
|
|||
-------------------------------------------------------------------------------
|
||||
|
||||
<<<
|
||||
size: 1759
|
||||
location: clients/tests/test-client.py:851:test_002()/10
|
||||
size: 1749
|
||||
location: clients/tests/test-client.py:863:test_002()/10
|
||||
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
stdout: 1592 bytes
|
||||
stdout: 1582 bytes
|
||||
>>>
|
||||
===============================================================================
|
||||
Informacje o urządzeniu (wlan0)
|
||||
|
|
@ -254,7 +254,7 @@ AP[1].CHAN: 1
|
|||
AP[1].RATE: 54 Mb/s
|
||||
AP[1].SIGNAL: 55
|
||||
AP[1].BARS: **
|
||||
AP[1].SECURITY: WPA1 WPA2
|
||||
AP[1].SECURITY: WPA3
|
||||
-------------------------------------------------------------------------------
|
||||
AP[2].IN-USE:
|
||||
AP[2].SSID: wlan0-ap-1
|
||||
|
|
@ -263,7 +263,7 @@ AP[2].CHAN: 1
|
|||
AP[2].RATE: 54 Mb/s
|
||||
AP[2].SIGNAL: 44
|
||||
AP[2].BARS: **
|
||||
AP[2].SECURITY: WPA1 WPA2
|
||||
AP[2].SECURITY: WPA1
|
||||
-------------------------------------------------------------------------------
|
||||
AP[3].IN-USE:
|
||||
AP[3].SSID: wlan0-ap-2
|
||||
|
|
@ -276,12 +276,12 @@ AP[3].SECURITY: WPA1 WPA2
|
|||
-------------------------------------------------------------------------------
|
||||
|
||||
<<<
|
||||
size: 591
|
||||
location: clients/tests/test-client.py:852:test_002()/11
|
||||
size: 581
|
||||
location: clients/tests/test-client.py:864:test_002()/11
|
||||
cmd: $NMCLI -f AP -mode multiline -t d show wlan0
|
||||
lang: C
|
||||
returncode: 0
|
||||
stdout: 435 bytes
|
||||
stdout: 425 bytes
|
||||
>>>
|
||||
AP[1].IN-USE:
|
||||
AP[1].SSID:wlan0-ap-3
|
||||
|
|
@ -290,7 +290,7 @@ AP[1].CHAN:1
|
|||
AP[1].RATE:54 Mbit/s
|
||||
AP[1].SIGNAL:55
|
||||
AP[1].BARS:**
|
||||
AP[1].SECURITY:WPA1 WPA2
|
||||
AP[1].SECURITY:WPA3
|
||||
AP[2].IN-USE:
|
||||
AP[2].SSID:wlan0-ap-1
|
||||
AP[2].MODE:Infra
|
||||
|
|
@ -298,7 +298,7 @@ AP[2].CHAN:1
|
|||
AP[2].RATE:54 Mbit/s
|
||||
AP[2].SIGNAL:44
|
||||
AP[2].BARS:**
|
||||
AP[2].SECURITY:WPA1 WPA2
|
||||
AP[2].SECURITY:WPA1
|
||||
AP[3].IN-USE:
|
||||
AP[3].SSID:wlan0-ap-2
|
||||
AP[3].MODE:Infra
|
||||
|
|
@ -309,12 +309,12 @@ AP[3].BARS:**
|
|||
AP[3].SECURITY:WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 628
|
||||
location: clients/tests/test-client.py:852:test_002()/12
|
||||
size: 618
|
||||
location: clients/tests/test-client.py:864:test_002()/12
|
||||
cmd: $NMCLI -f AP -mode multiline -t d show wlan0
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
stdout: 462 bytes
|
||||
stdout: 452 bytes
|
||||
>>>
|
||||
AP[1].IN-USE:
|
||||
AP[1].SSID:wlan0-ap-3
|
||||
|
|
@ -323,7 +323,7 @@ AP[1].CHAN:1
|
|||
AP[1].RATE:54 Mb/s
|
||||
AP[1].SIGNAL:55
|
||||
AP[1].BARS:**
|
||||
AP[1].SECURITY:WPA1 WPA2
|
||||
AP[1].SECURITY:WPA3
|
||||
AP[2].IN-USE:
|
||||
AP[2].SSID:wlan0-ap-1
|
||||
AP[2].MODE:Infrastruktura
|
||||
|
|
@ -331,7 +331,7 @@ AP[2].CHAN:1
|
|||
AP[2].RATE:54 Mb/s
|
||||
AP[2].SIGNAL:44
|
||||
AP[2].BARS:**
|
||||
AP[2].SECURITY:WPA1 WPA2
|
||||
AP[2].SECURITY:WPA1
|
||||
AP[3].IN-USE:
|
||||
AP[3].SSID:wlan0-ap-2
|
||||
AP[3].MODE:Infrastruktura
|
||||
|
|
@ -343,33 +343,33 @@ AP[3].SECURITY:WPA1 WPA2
|
|||
|
||||
<<<
|
||||
size: 455
|
||||
location: clients/tests/test-client.py:853:test_002()/13
|
||||
location: clients/tests/test-client.py:865:test_002()/13
|
||||
cmd: $NMCLI -f AP -mode tabular d show wlan0
|
||||
lang: C
|
||||
returncode: 0
|
||||
stdout: 304 bytes
|
||||
>>>
|
||||
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
|
||||
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA1 WPA2
|
||||
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1 WPA2
|
||||
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA3
|
||||
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1
|
||||
AP[3] wlan0-ap-2 Infra 1 54 Mbit/s 34 ** WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 499
|
||||
location: clients/tests/test-client.py:853:test_002()/14
|
||||
location: clients/tests/test-client.py:865:test_002()/14
|
||||
cmd: $NMCLI -f AP -mode tabular d show wlan0
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
stdout: 338 bytes
|
||||
>>>
|
||||
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
|
||||
AP[1] wlan0-ap-3 Infrastruktura 1 54 Mb/s 55 ** WPA1 WPA2
|
||||
AP[2] wlan0-ap-1 Infrastruktura 1 54 Mb/s 44 ** WPA1 WPA2
|
||||
AP[1] wlan0-ap-3 Infrastruktura 1 54 Mb/s 55 ** WPA3
|
||||
AP[2] wlan0-ap-1 Infrastruktura 1 54 Mb/s 44 ** WPA1
|
||||
AP[3] wlan0-ap-2 Infrastruktura 1 54 Mb/s 34 ** WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 614
|
||||
location: clients/tests/test-client.py:854:test_002()/15
|
||||
location: clients/tests/test-client.py:866:test_002()/15
|
||||
cmd: $NMCLI -f AP -mode tabular -p d show wlan0
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -380,13 +380,13 @@ stdout: 460 bytes
|
|||
==========================
|
||||
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
|
||||
----------------------------------------------------------------------------
|
||||
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA1 WPA2
|
||||
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1 WPA2
|
||||
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA3
|
||||
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1
|
||||
AP[3] wlan0-ap-2 Infra 1 54 Mbit/s 34 ** WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 694
|
||||
location: clients/tests/test-client.py:854:test_002()/16
|
||||
location: clients/tests/test-client.py:866:test_002()/16
|
||||
cmd: $NMCLI -f AP -mode tabular -p d show wlan0
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -397,45 +397,45 @@ stdout: 530 bytes
|
|||
===================================
|
||||
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
|
||||
-----------------------------------------------------------------------------------
|
||||
AP[1] wlan0-ap-3 Infrastruktura 1 54 Mb/s 55 ** WPA1 WPA2
|
||||
AP[2] wlan0-ap-1 Infrastruktura 1 54 Mb/s 44 ** WPA1 WPA2
|
||||
AP[1] wlan0-ap-3 Infrastruktura 1 54 Mb/s 55 ** WPA3
|
||||
AP[2] wlan0-ap-1 Infrastruktura 1 54 Mb/s 44 ** WPA1
|
||||
AP[3] wlan0-ap-2 Infrastruktura 1 54 Mb/s 34 ** WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 319
|
||||
location: clients/tests/test-client.py:855:test_002()/17
|
||||
size: 309
|
||||
location: clients/tests/test-client.py:867:test_002()/17
|
||||
cmd: $NMCLI -f AP -mode tabular -t d show wlan0
|
||||
lang: C
|
||||
returncode: 0
|
||||
stdout: 165 bytes
|
||||
stdout: 155 bytes
|
||||
>>>
|
||||
AP[1]: :wlan0-ap-3:Infra:1:54 Mbit/s:55:** :WPA1 WPA2
|
||||
AP[2]: :wlan0-ap-1:Infra:1:54 Mbit/s:44:** :WPA1 WPA2
|
||||
AP[1]: :wlan0-ap-3:Infra:1:54 Mbit/s:55:** :WPA3
|
||||
AP[2]: :wlan0-ap-1:Infra:1:54 Mbit/s:44:** :WPA1
|
||||
AP[3]: :wlan0-ap-2:Infra:1:54 Mbit/s:34:** :WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 356
|
||||
location: clients/tests/test-client.py:855:test_002()/18
|
||||
size: 346
|
||||
location: clients/tests/test-client.py:867:test_002()/18
|
||||
cmd: $NMCLI -f AP -mode tabular -t d show wlan0
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
stdout: 192 bytes
|
||||
stdout: 182 bytes
|
||||
>>>
|
||||
AP[1]: :wlan0-ap-3:Infrastruktura:1:54 Mb/s:55:** :WPA1 WPA2
|
||||
AP[2]: :wlan0-ap-1:Infrastruktura:1:54 Mb/s:44:** :WPA1 WPA2
|
||||
AP[1]: :wlan0-ap-3:Infrastruktura:1:54 Mb/s:55:** :WPA3
|
||||
AP[2]: :wlan0-ap-1:Infrastruktura:1:54 Mb/s:44:** :WPA1
|
||||
AP[3]: :wlan0-ap-2:Infrastruktura:1:54 Mb/s:34:** :WPA1 WPA2
|
||||
|
||||
<<<
|
||||
size: 1973
|
||||
location: clients/tests/test-client.py:857:test_002()/19
|
||||
location: clients/tests/test-client.py:869:test_002()/19
|
||||
cmd: $NMCLI -f ALL d wifi
|
||||
lang: C
|
||||
returncode: 0
|
||||
stdout: 1840 bytes
|
||||
>>>
|
||||
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
|
||||
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infra 1 2412 MHz 54 Mbit/s 55 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/3
|
||||
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infra 1 2412 MHz 54 Mbit/s 44 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/1
|
||||
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infra 1 2412 MHz 54 Mbit/s 55 ** WPA3 (none) pair_tkip pair_ccmp group_tkip group_ccmp sae wlan0 no /org/freedesktop/NetworkManager/AccessPoint/3
|
||||
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infra 1 2412 MHz 54 Mbit/s 44 ** WPA1 pair_tkip pair_ccmp group_tkip group_ccmp psk (none) wlan0 no /org/freedesktop/NetworkManager/AccessPoint/1
|
||||
AP[3] wlan0-ap-2 776C616E302D61702D32 61:66:D2:E7:44:A2 Infra 1 2412 MHz 54 Mbit/s 34 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
|
||||
|
||||
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
|
||||
|
|
@ -445,15 +445,15 @@ NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA
|
|||
|
||||
<<<
|
||||
size: 2041
|
||||
location: clients/tests/test-client.py:857:test_002()/20
|
||||
location: clients/tests/test-client.py:869:test_002()/20
|
||||
cmd: $NMCLI -f ALL d wifi
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
stdout: 1898 bytes
|
||||
>>>
|
||||
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
|
||||
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infrastruktura 1 2412 MHz 54 Mb/s 55 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/3
|
||||
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infrastruktura 1 2412 MHz 54 Mb/s 44 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/1
|
||||
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infrastruktura 1 2412 MHz 54 Mb/s 55 ** WPA3 (brak) pair_tkip pair_ccmp group_tkip group_ccmp sae wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/3
|
||||
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infrastruktura 1 2412 MHz 54 Mb/s 44 ** WPA1 pair_tkip pair_ccmp group_tkip group_ccmp psk (brak) wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/1
|
||||
AP[3] wlan0-ap-2 776C616E302D61702D32 61:66:D2:E7:44:A2 Infrastruktura 1 2412 MHz 54 Mb/s 34 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
|
||||
|
||||
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
|
||||
|
|
@ -463,7 +463,7 @@ NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA
|
|||
|
||||
<<<
|
||||
size: 246
|
||||
location: clients/tests/test-client.py:859:test_002()/21
|
||||
location: clients/tests/test-client.py:871:test_002()/21
|
||||
cmd: $NMCLI c
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -474,7 +474,7 @@ con-1 5fcfd6d7-1e63-3332-8826-a7eda103792d ethernet --
|
|||
|
||||
<<<
|
||||
size: 256
|
||||
location: clients/tests/test-client.py:859:test_002()/22
|
||||
location: clients/tests/test-client.py:871:test_002()/22
|
||||
cmd: $NMCLI c
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
@ -485,7 +485,7 @@ con-1 5fcfd6d7-1e63-3332-8826-a7eda103792d ethernet --
|
|||
|
||||
<<<
|
||||
size: 1224
|
||||
location: clients/tests/test-client.py:861:test_002()/23
|
||||
location: clients/tests/test-client.py:873:test_002()/23
|
||||
cmd: $NMCLI c s con-1
|
||||
lang: C
|
||||
returncode: 0
|
||||
|
|
@ -517,7 +517,7 @@ connection.llmnr: -1 (default)
|
|||
|
||||
<<<
|
||||
size: 1236
|
||||
location: clients/tests/test-client.py:861:test_002()/24
|
||||
location: clients/tests/test-client.py:873:test_002()/24
|
||||
cmd: $NMCLI c s con-1
|
||||
lang: pl_PL.UTF-8
|
||||
returncode: 0
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -807,11 +807,23 @@ class TestNmcli(NmTestBase):
|
|||
iface = 'wlan1')
|
||||
|
||||
self.srv.op_AddObj('WifiAp',
|
||||
device = 'wlan0')
|
||||
device = 'wlan0',
|
||||
rsnf = 0x0)
|
||||
|
||||
self.srv.op_AddObj('WifiAp',
|
||||
device = 'wlan0')
|
||||
|
||||
NM_AP_FLAGS = getattr(NM, '80211ApSecurityFlags')
|
||||
rsnf = 0x0
|
||||
rsnf = rsnf | NM_AP_FLAGS.PAIR_TKIP
|
||||
rsnf = rsnf | NM_AP_FLAGS.PAIR_CCMP
|
||||
rsnf = rsnf | NM_AP_FLAGS.GROUP_TKIP
|
||||
rsnf = rsnf | NM_AP_FLAGS.GROUP_CCMP
|
||||
rsnf = rsnf | NM_AP_FLAGS.KEY_MGMT_SAE
|
||||
self.srv.op_AddObj('WifiAp',
|
||||
device = 'wlan0')
|
||||
device = 'wlan0',
|
||||
wpaf = 0x0,
|
||||
rsnf = rsnf)
|
||||
|
||||
self.srv.op_AddObj('WifiAp',
|
||||
device = 'wlan1')
|
||||
|
|
|
|||
|
|
@ -348,6 +348,8 @@ typedef enum { /*< underscore_name=nm_802_11_ap_flags, flags >*/
|
|||
* supported
|
||||
* @NM_802_11_AP_SEC_KEY_MGMT_802_1X: 802.1x authentication and key management
|
||||
* is supported
|
||||
* @NM_802_11_AP_SEC_KEY_MGMT_SAE: WPA/RSN Simultaneous Authentication of Equals is
|
||||
* supported
|
||||
*
|
||||
* 802.11 access point security and authentication flags. These flags describe
|
||||
* the current security requirements of an access point as determined from the
|
||||
|
|
@ -365,6 +367,7 @@ typedef enum { /*< underscore_name=nm_802_11_ap_security_flags, flags >*/
|
|||
NM_802_11_AP_SEC_GROUP_CCMP = 0x00000080,
|
||||
NM_802_11_AP_SEC_KEY_MGMT_PSK = 0x00000100,
|
||||
NM_802_11_AP_SEC_KEY_MGMT_802_1X = 0x00000200,
|
||||
NM_802_11_AP_SEC_KEY_MGMT_SAE = 0x00000400,
|
||||
} NM80211ApSecurityFlags;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -863,6 +863,15 @@ need_secrets (NMSetting *setting)
|
|||
goto no_secrets;
|
||||
}
|
||||
|
||||
/* SAE, used in MESH and WPA3-Personal */
|
||||
if (strcmp (priv->key_mgmt, "sae") == 0) {
|
||||
if (!priv->psk || !*priv->psk) {
|
||||
g_ptr_array_add (secrets, NM_SETTING_WIRELESS_SECURITY_PSK);
|
||||
return secrets;
|
||||
}
|
||||
goto no_secrets;
|
||||
}
|
||||
|
||||
/* LEAP */
|
||||
if ( priv->auth_alg
|
||||
&& !strcmp (priv->auth_alg, "leap")
|
||||
|
|
@ -894,7 +903,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
|
|||
{
|
||||
NMSettingWirelessSecurity *self = NM_SETTING_WIRELESS_SECURITY (setting);
|
||||
NMSettingWirelessSecurityPrivate *priv = NM_SETTING_WIRELESS_SECURITY_GET_PRIVATE (self);
|
||||
const char *valid_key_mgmt[] = { "none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap", NULL };
|
||||
const char *valid_key_mgmt[] = { "none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap", "sae", NULL };
|
||||
const char *valid_auth_algs[] = { "open", "shared", "leap", NULL };
|
||||
const char *valid_protos[] = { "wpa", "rsn", NULL };
|
||||
const char *valid_pairwise[] = { "tkip", "ccmp", NULL };
|
||||
|
|
@ -1072,14 +1081,12 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
|
|||
if ( NM_IN_SET (priv->pmf,
|
||||
NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL,
|
||||
NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED)
|
||||
&& !NM_IN_STRSET (priv->key_mgmt, "wpa-eap", "wpa-psk")) {
|
||||
&& !NM_IN_STRSET (priv->key_mgmt, "wpa-eap", "wpa-psk", "sae")) {
|
||||
g_set_error (error,
|
||||
NM_CONNECTION_ERROR,
|
||||
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
||||
_("'%s' can only be used with '%s=%s' or '%s=%s'"),
|
||||
priv->pmf == NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL ? "optional" : "required",
|
||||
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-eap",
|
||||
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk");
|
||||
_("'%s' can only be used with 'wpa-eap', 'wpa-psk' or 'sae' key management "),
|
||||
priv->pmf == NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL ? "optional" : "required");
|
||||
g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NM_SETTING_WIRELESS_SECURITY_PMF);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -1139,7 +1146,9 @@ verify_secrets (NMSetting *setting, NMConnection *connection, GError **error)
|
|||
return FALSE;
|
||||
|
||||
/* WPA-PSK */
|
||||
if (priv->psk && !nm_utils_wpa_psk_valid (priv->psk)) {
|
||||
if ( priv->psk
|
||||
&& strcmp (priv->key_mgmt, "sae") != 0
|
||||
&& !nm_utils_wpa_psk_valid (priv->psk)) {
|
||||
g_set_error_literal (error,
|
||||
NM_CONNECTION_ERROR,
|
||||
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
||||
|
|
@ -1447,8 +1456,8 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *klass)
|
|||
*
|
||||
* Key management used for the connection. One of "none" (WEP), "ieee8021x"
|
||||
* (Dynamic WEP), "wpa-none" (Ad-Hoc WPA-PSK), "wpa-psk" (infrastructure
|
||||
* WPA-PSK), or "wpa-eap" (WPA-Enterprise). This property must be set for
|
||||
* any Wi-Fi connection that uses security.
|
||||
* WPA-PSK), "sae" (SAE) or "wpa-eap" (WPA-Enterprise).
|
||||
* This property must be set for any Wi-Fi connection that uses security.
|
||||
**/
|
||||
/* ---ifcfg-rh---
|
||||
* property: key-mgmt
|
||||
|
|
@ -1722,12 +1731,11 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *klass)
|
|||
/**
|
||||
* NMSettingWirelessSecurity:psk:
|
||||
*
|
||||
* Pre-Shared-Key for WPA networks. If the key is 64-characters long, it
|
||||
* must contain only hexadecimal characters and is interpreted as a
|
||||
* hexadecimal WPA key. Otherwise, the key must be between 8 and 63 ASCII
|
||||
* characters (as specified in the 802.11i standard) and is interpreted as a
|
||||
* WPA passphrase, and is hashed to derive the actual WPA-PSK used when
|
||||
* connecting to the Wi-Fi network.
|
||||
* Pre-Shared-Key for WPA networks. For WPA-PSK, it's either an ASCII
|
||||
* passphrase of 8 to 63 characters that is (as specified in the 802.11i
|
||||
* standard) hashed to derive the actual key, or the key in form of 64
|
||||
* hexadecimal character. The WPA3-Personal networks use a passphrase
|
||||
* of any length for SAE authentication.
|
||||
**/
|
||||
/* ---ifcfg-rh---
|
||||
* property: psk
|
||||
|
|
|
|||
|
|
@ -1116,7 +1116,7 @@ managed=1
|
|||
<term><varname>options</varname></term>
|
||||
<listitem>
|
||||
<para>
|
||||
A list of of options to be passed to the hostname resolver.
|
||||
A list of options to be passed to the hostname resolver.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
|
|
|||
|
|
@ -425,6 +425,8 @@ security_from_vardict (GVariant *security)
|
|||
g_strv_contains (array, "wpa-fils-sha256") ||
|
||||
g_strv_contains (array, "wpa-fils-sha384"))
|
||||
flags |= NM_802_11_AP_SEC_KEY_MGMT_802_1X;
|
||||
if (g_strv_contains (array, "sae"))
|
||||
flags |= NM_802_11_AP_SEC_KEY_MGMT_SAE;
|
||||
g_free (array);
|
||||
}
|
||||
|
||||
|
|
@ -1390,7 +1392,8 @@ nm_wifi_ap_class_init (NMWifiAPClass *ap_class)
|
|||
| NM_802_11_AP_SEC_GROUP_TKIP \
|
||||
| NM_802_11_AP_SEC_GROUP_CCMP \
|
||||
| NM_802_11_AP_SEC_KEY_MGMT_PSK \
|
||||
| NM_802_11_AP_SEC_KEY_MGMT_802_1X )
|
||||
| NM_802_11_AP_SEC_KEY_MGMT_802_1X \
|
||||
| NM_802_11_AP_SEC_KEY_MGMT_SAE )
|
||||
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (ap_class);
|
||||
NMDBusObjectClass *dbus_object_class = NM_DBUS_OBJECT_CLASS (ap_class);
|
||||
|
|
|
|||
|
|
@ -739,6 +739,12 @@ nm_wifi_utils_complete_connection (GBytes *ap_ssid,
|
|||
* setting. Since there's so much configuration required for it, there's
|
||||
* no way it can be automatically completed.
|
||||
*/
|
||||
} else if ( (key_mgmt && !strcmp (key_mgmt, "sae"))
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)) {
|
||||
g_object_set (s_wsec,
|
||||
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae",
|
||||
NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "open",
|
||||
NULL);
|
||||
} else if ( (key_mgmt && !strcmp (key_mgmt, "wpa-psk"))
|
||||
|| (ap_wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|
||||
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)) {
|
||||
|
|
|
|||
|
|
@ -1753,6 +1753,9 @@ settings_connection_update (NMSettingsConnection *self,
|
|||
&error);
|
||||
if (!tmp)
|
||||
goto error;
|
||||
|
||||
if (!nm_connection_verify_secrets (tmp, &error))
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3612,7 +3612,7 @@ make_wpa_setting (shvarFile *ifcfg,
|
|||
gs_unref_object NMSettingWirelessSecurity *wsec = NULL;
|
||||
gs_free char *value = NULL;
|
||||
const char *v;
|
||||
gboolean wpa_psk = FALSE, wpa_eap = FALSE, ieee8021x = FALSE;
|
||||
gboolean wpa_psk = FALSE, wpa_sae = FALSE, wpa_eap = FALSE, ieee8021x = FALSE;
|
||||
int i_val;
|
||||
GError *local = NULL;
|
||||
|
||||
|
|
@ -3620,9 +3620,10 @@ make_wpa_setting (shvarFile *ifcfg,
|
|||
|
||||
v = svGetValueStr (ifcfg, "KEY_MGMT", &value);
|
||||
wpa_psk = nm_streq0 (v, "WPA-PSK");
|
||||
wpa_sae = nm_streq0 (v, "SAE");
|
||||
wpa_eap = nm_streq0 (v, "WPA-EAP");
|
||||
ieee8021x = nm_streq0 (v, "IEEE8021X");
|
||||
if (!wpa_psk && !wpa_eap && !ieee8021x)
|
||||
if (!wpa_psk && !wpa_sae && !wpa_eap && !ieee8021x)
|
||||
return NULL; /* Not WPA or Dynamic WEP */
|
||||
|
||||
/* WPS */
|
||||
|
|
@ -3636,7 +3637,7 @@ make_wpa_setting (shvarFile *ifcfg,
|
|||
NULL);
|
||||
|
||||
/* Pairwise and Group ciphers (only relevant for WPA/RSN) */
|
||||
if (wpa_psk || wpa_eap) {
|
||||
if (wpa_psk || wpa_sae || wpa_eap) {
|
||||
fill_wpa_ciphers (ifcfg, wsec, FALSE, adhoc);
|
||||
fill_wpa_ciphers (ifcfg, wsec, TRUE, adhoc);
|
||||
}
|
||||
|
|
@ -3659,7 +3660,7 @@ make_wpa_setting (shvarFile *ifcfg,
|
|||
nm_setting_wireless_security_add_proto (wsec, "rsn");
|
||||
}
|
||||
|
||||
if (wpa_psk) {
|
||||
if (wpa_psk || wpa_sae) {
|
||||
NMSettingSecretFlags psk_flags;
|
||||
|
||||
psk_flags = _secret_read_ifcfg_flags (ifcfg, "WPA_PSK_FLAGS");
|
||||
|
|
@ -3680,8 +3681,12 @@ make_wpa_setting (shvarFile *ifcfg,
|
|||
|
||||
if (adhoc)
|
||||
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-none", NULL);
|
||||
else
|
||||
else if (wpa_psk)
|
||||
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", NULL);
|
||||
else if (wpa_sae)
|
||||
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae", NULL);
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
} else if (wpa_eap || ieee8021x) {
|
||||
/* Adhoc mode is mutually exclusive with any 802.1x-based authentication */
|
||||
if (adhoc) {
|
||||
|
|
|
|||
|
|
@ -603,6 +603,10 @@ write_wireless_security_setting (NMConnection *connection,
|
|||
svSetValueStr (ifcfg, "KEY_MGMT", "WPA-PSK");
|
||||
wpa = TRUE;
|
||||
*no_8021x = TRUE;
|
||||
} else if (!strcmp (key_mgmt, "sae")) {
|
||||
svSetValueStr (ifcfg, "KEY_MGMT", "SAE");
|
||||
wpa = TRUE;
|
||||
*no_8021x = TRUE;
|
||||
} else if (!strcmp (key_mgmt, "ieee8021x")) {
|
||||
svSetValueStr (ifcfg, "KEY_MGMT", "IEEE8021X");
|
||||
dynamic_wep = TRUE;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
TYPE=Wireless
|
||||
DEVICE=wlan1
|
||||
ESSID=blahblah
|
||||
MODE=Managed
|
||||
KEY_MGMT=SAE
|
||||
|
|
@ -0,0 +1 @@
|
|||
WPA_PSK="The king is dead."
|
||||
|
|
@ -2966,6 +2966,45 @@ test_read_wifi_wpa_psk (void)
|
|||
g_object_unref (connection);
|
||||
}
|
||||
|
||||
static void
|
||||
test_read_wifi_sae (void)
|
||||
{
|
||||
gs_unref_object NMConnection *connection = NULL;
|
||||
NMSettingConnection *s_con;
|
||||
NMSettingWireless *s_wireless;
|
||||
NMSettingWirelessSecurity *s_wsec;
|
||||
GBytes *ssid;
|
||||
const char *expected_ssid = "blahblah";
|
||||
|
||||
connection = _connection_from_file (TEST_IFCFG_DIR"/ifcfg-test-wifi-sae",
|
||||
NULL, TYPE_WIRELESS, NULL);
|
||||
|
||||
s_con = nm_connection_get_setting_connection (connection);
|
||||
g_assert (s_con);
|
||||
g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "System blahblah (test-wifi-sae)");
|
||||
|
||||
g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, 0);
|
||||
g_assert (nm_setting_connection_get_autoconnect (s_con));
|
||||
|
||||
s_wireless = nm_connection_get_setting_wireless (connection);
|
||||
g_assert (s_wireless);
|
||||
|
||||
g_assert_cmpint (nm_setting_wireless_get_mtu (s_wireless), ==, 0);
|
||||
|
||||
ssid = nm_setting_wireless_get_ssid (s_wireless);
|
||||
g_assert (ssid);
|
||||
g_assert_cmpmem (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid), expected_ssid, strlen (expected_ssid));
|
||||
|
||||
g_assert (!nm_setting_wireless_get_bssid (s_wireless));
|
||||
g_assert_cmpstr (nm_setting_wireless_get_mode (s_wireless), ==, "infrastructure");
|
||||
|
||||
s_wsec = nm_connection_get_setting_wireless_security (connection);
|
||||
g_assert (s_wsec);
|
||||
g_assert_cmpstr (nm_setting_wireless_security_get_key_mgmt (s_wsec), ==, "sae");
|
||||
g_assert_cmpstr (nm_setting_wireless_security_get_psk (s_wsec), ==, "The king is dead.");
|
||||
g_assert (!nm_setting_wireless_security_get_auth_alg (s_wsec));
|
||||
}
|
||||
|
||||
static void
|
||||
test_read_wifi_wpa_psk_2 (void)
|
||||
{
|
||||
|
|
@ -10081,6 +10120,7 @@ int main (int argc, char **argv)
|
|||
g_test_add_func (TPATH "wifi/read/wpa-psk/unquoted2", test_read_wifi_wpa_psk_unquoted2);
|
||||
g_test_add_func (TPATH "wifi/read/wpa-psk/adhoc", test_read_wifi_wpa_psk_adhoc);
|
||||
g_test_add_func (TPATH "wifi/read/wpa-psk/hex", test_read_wifi_wpa_psk_hex);
|
||||
g_test_add_func (TPATH "wifi/read/sae", test_read_wifi_sae);
|
||||
g_test_add_func (TPATH "wifi/read/dynamic-wep/leap", test_read_wifi_dynamic_wep_leap);
|
||||
g_test_add_func (TPATH "wifi/read/wpa/eap/tls", test_read_wifi_wpa_eap_tls);
|
||||
g_test_add_func (TPATH "wifi/read/wpa/eap/ttls/tls", test_read_wifi_wpa_eap_ttls_tls);
|
||||
|
|
|
|||
|
|
@ -807,7 +807,22 @@ nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
|
|||
if (psk) {
|
||||
size_t psk_len = strlen (psk);
|
||||
|
||||
if (psk_len == 64) {
|
||||
|
||||
if (psk_len >= 8 && psk_len <= 63) {
|
||||
/* Use TYPE_STRING here so that it gets pushed to the
|
||||
* supplicant as a string, and therefore gets quoted,
|
||||
* and therefore the supplicant will interpret it as a
|
||||
* passphrase and not a hex key.
|
||||
*/
|
||||
if (!nm_supplicant_config_add_option_with_type (self, "psk", psk, -1, TYPE_STRING, "<hidden>", error))
|
||||
return FALSE;
|
||||
} else if (nm_streq (key_mgmt, "sae")) {
|
||||
/* If the SAE password doesn't comply with WPA-PSK limitation,
|
||||
* we need to call it "sae_password" instead of "psk".
|
||||
*/
|
||||
if (!nm_supplicant_config_add_option_with_type (self, "sae_password", psk, -1, TYPE_STRING, "<hidden>", error))
|
||||
return FALSE;
|
||||
} else if (psk_len == 64) {
|
||||
guint8 buffer[32];
|
||||
|
||||
/* Hex PSK */
|
||||
|
|
@ -827,14 +842,6 @@ nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
|
|||
"<hidden>",
|
||||
error))
|
||||
return FALSE;
|
||||
} else if (psk_len >= 8 && psk_len <= 63) {
|
||||
/* Use TYPE_STRING here so that it gets pushed to the
|
||||
* supplicant as a string, and therefore gets quoted,
|
||||
* and therefore the supplicant will interpret it as a
|
||||
* passphrase and not a hex key.
|
||||
*/
|
||||
if (!nm_supplicant_config_add_option_with_type (self, "psk", psk, -1, TYPE_STRING, "<hidden>", error))
|
||||
return FALSE;
|
||||
} else {
|
||||
g_set_error (error, NM_SUPPLICANT_ERROR, NM_SUPPLICANT_ERROR_CONFIG,
|
||||
"Cannot add psk to supplicant config due to invalid PSK length %u (not between 8 and 63 characters)",
|
||||
|
|
@ -861,7 +868,8 @@ nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
|
|||
/* Only WPA-specific things when using WPA */
|
||||
if ( !strcmp (key_mgmt, "wpa-none")
|
||||
|| !strcmp (key_mgmt, "wpa-psk")
|
||||
|| !strcmp (key_mgmt, "wpa-eap")) {
|
||||
|| !strcmp (key_mgmt, "wpa-eap")
|
||||
|| !strcmp (key_mgmt, "sae")) {
|
||||
if (!ADD_STRING_LIST_VAL (self, setting, wireless_security, proto, protos, "proto", ' ', TRUE, NULL, error))
|
||||
return FALSE;
|
||||
if (!ADD_STRING_LIST_VAL (self, setting, wireless_security, pairwise, pairwise, "pairwise", ' ', TRUE, NULL, error))
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ const char * proto_allowed[] = { "WPA", "RSN", NULL };
|
|||
const char * key_mgmt_allowed[] = { "WPA-PSK", "WPA-PSK-SHA256",
|
||||
"WPA-EAP", "WPA-EAP-SHA256",
|
||||
"FILS-SHA256", "FILS-SHA384",
|
||||
"IEEE8021X", "WPA-NONE",
|
||||
"IEEE8021X", "WPA-NONE", "SAE",
|
||||
"NONE", NULL };
|
||||
const char * auth_alg_allowed[] = { "OPEN", "SHARED", "LEAP", NULL };
|
||||
const char * eap_allowed[] = { "LEAP", "MD5", "TLS", "PEAP", "TTLS", "SIM",
|
||||
|
|
|
|||
|
|
@ -388,6 +388,76 @@ test_wifi_wpa_psk (const char *detail,
|
|||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
static void
|
||||
test_wifi_sae_psk (const char *psk)
|
||||
{
|
||||
gs_unref_object NMConnection *connection = NULL;
|
||||
gs_unref_variant GVariant *config_dict = NULL;
|
||||
NMSettingWirelessSecurity *s_wsec;
|
||||
gboolean success;
|
||||
GError *error = NULL;
|
||||
const unsigned char ssid_data[] = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x53, 0x49, 0x44 };
|
||||
gs_unref_bytes GBytes *ssid = g_bytes_new (ssid_data, sizeof (ssid_data));
|
||||
const char *bssid_str = "11:22:33:44:55:66";
|
||||
int short_psk = strlen (psk) < 8;
|
||||
|
||||
connection = new_basic_connection ("Test Wifi SAE", ssid, bssid_str);
|
||||
|
||||
/* Wifi Security setting */
|
||||
s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
|
||||
nm_connection_add_setting (connection, NM_SETTING (s_wsec));
|
||||
g_object_set (s_wsec,
|
||||
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae",
|
||||
NM_SETTING_WIRELESS_SECURITY_PSK, psk,
|
||||
NULL);
|
||||
nm_setting_wireless_security_add_proto (s_wsec, "rsn");
|
||||
nm_setting_wireless_security_add_pairwise (s_wsec, "tkip");
|
||||
nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp");
|
||||
nm_setting_wireless_security_add_group (s_wsec, "tkip");
|
||||
nm_setting_wireless_security_add_group (s_wsec, "ccmp");
|
||||
|
||||
success = nm_connection_verify (connection, &error);
|
||||
g_assert_no_error (error);
|
||||
g_assert (success);
|
||||
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'ssid' value 'Test SSID'*");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'scan_ssid' value '1'*");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'bssid' value '11:22:33:44:55:66'*");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'freq_list' value *");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'key_mgmt' value 'SAE'");
|
||||
if (short_psk)
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'sae_password' value *");
|
||||
else
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'psk' value *");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'proto' value 'RSN'");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'pairwise' value 'TKIP CCMP'");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'group' value 'TKIP CCMP'");
|
||||
NMTST_EXPECT_NM_INFO ("Config: added 'ieee80211w' value '0'");
|
||||
config_dict = build_supplicant_config (connection, 1500, 0, TRUE, TRUE);
|
||||
|
||||
g_test_assert_expected_messages ();
|
||||
g_assert (config_dict);
|
||||
|
||||
validate_opt ("wifi-sae", config_dict, "scan_ssid", TYPE_INT, GINT_TO_POINTER (1));
|
||||
validate_opt ("wifi-sae", config_dict, "ssid", TYPE_BYTES, ssid);
|
||||
validate_opt ("wifi-sae", config_dict, "bssid", TYPE_KEYWORD, bssid_str);
|
||||
validate_opt ("wifi-sae", config_dict, "key_mgmt", TYPE_KEYWORD, "SAE");
|
||||
validate_opt ("wifi-sae", config_dict, "proto", TYPE_KEYWORD, "RSN");
|
||||
validate_opt ("wifi-sae", config_dict, "pairwise", TYPE_KEYWORD, "TKIP CCMP");
|
||||
validate_opt ("wifi-sae", config_dict, "group", TYPE_KEYWORD, "TKIP CCMP");
|
||||
if (short_psk)
|
||||
validate_opt ("wifi-sae", config_dict, "sae_password", TYPE_KEYWORD, psk);
|
||||
else
|
||||
validate_opt ("wifi-sae", config_dict, "psk", TYPE_KEYWORD, psk);
|
||||
}
|
||||
|
||||
static void
|
||||
test_wifi_sae (void)
|
||||
{
|
||||
test_wifi_sae_psk ("Moo");
|
||||
test_wifi_sae_psk ("Hello World!");
|
||||
}
|
||||
|
||||
static void
|
||||
test_wifi_wpa_psk_types (void)
|
||||
{
|
||||
|
|
@ -580,6 +650,7 @@ int main (int argc, char **argv)
|
|||
g_test_add_func ("/supplicant-config/wifi-eap/locked-bssid", test_wifi_eap_locked_bssid);
|
||||
g_test_add_func ("/supplicant-config/wifi-eap/unlocked-bssid", test_wifi_eap_unlocked_bssid);
|
||||
g_test_add_func ("/supplicant-config/wifi-eap/fils-disabled", test_wifi_eap_fils_disabled);
|
||||
g_test_add_func ("/supplicant-config/wifi-sae", test_wifi_sae);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -861,12 +861,23 @@ class WifiAp(ExportedObj):
|
|||
|
||||
ExportedObj.__init__(self, ExportedObj.create_path(WifiAp), ident)
|
||||
|
||||
NM_AP_FLAGS = getattr(NM, '80211ApSecurityFlags')
|
||||
if flags is None:
|
||||
flags = 0x1
|
||||
if wpaf is None:
|
||||
wpaf = 0x1cc
|
||||
wpaf = 0x0
|
||||
wpaf = wpaf | NM_AP_FLAGS.PAIR_TKIP
|
||||
wpaf = wpaf | NM_AP_FLAGS.PAIR_CCMP
|
||||
wpaf = wpaf | NM_AP_FLAGS.GROUP_TKIP
|
||||
wpaf = wpaf | NM_AP_FLAGS.GROUP_CCMP
|
||||
wpaf = wpaf | NM_AP_FLAGS.KEY_MGMT_PSK
|
||||
if rsnf is None:
|
||||
rsnf = 0x1cc
|
||||
rsnf = 0x0
|
||||
rsnf = rsnf | NM_AP_FLAGS.PAIR_TKIP
|
||||
rsnf = rsnf | NM_AP_FLAGS.PAIR_CCMP
|
||||
rsnf = rsnf | NM_AP_FLAGS.GROUP_TKIP
|
||||
rsnf = rsnf | NM_AP_FLAGS.GROUP_CCMP
|
||||
rsnf = rsnf | NM_AP_FLAGS.KEY_MGMT_PSK
|
||||
if freq is None:
|
||||
freq = 2412
|
||||
if bssid is None:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue