wifi: fix parsing Microsoft Network Cost IE

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/734

Fixes: 5307b1ed73 ('wifi: guess metered flag based on Network Cost information element')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/879
(cherry picked from commit 8327312c51)
(cherry picked from commit a4d2106ace)
This commit is contained in:
Thomas Haller 2021-06-01 19:46:13 +02:00
parent 14ed2386ae
commit eece6fc684
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -5070,9 +5070,12 @@ nm_wifi_utils_parse_ies(const guint8 *bytes,
case WLAN_EID_VENDOR_SPECIFIC:
if (len == 8 && bytes[0] == 0x00 /* OUI: Microsoft */
&& bytes[1] == 0x50 && bytes[2] == 0xf2
&& bytes[3] == 0x11) /* OUI type: Network cost */
NM_SET_OUT(out_metered, (bytes[7] > 1)); /* Cost level > 1 */
if (elem_len >= 10 && bytes[0] == 0x50 /* OUI: WiFi Alliance */
&& bytes[3] == 0x11) /* OUI type: Network cost */
{
/* https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nct/ */
NM_SET_OUT(out_metered, (bytes[4] > 1)); /* Cost level > 1 */
}
if (elem_len >= 10 && bytes[0] == 0x50 /* OUI: WiFi Alliance */
&& bytes[1] == 0x6f && bytes[2] == 0x9a
&& bytes[3] == 0x1c) /* OUI type: OWE Transition Mode */
NM_SET_OUT(out_owe_transition_mode, TRUE);