Skip to content

Commit

Permalink
[gsupplicant] Handle GroupMgmt interface capability
Browse files Browse the repository at this point in the history
  • Loading branch information
monich committed Jan 16, 2023
1 parent 9d5835e commit 2193279
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
11 changes: 9 additions & 2 deletions include/gsupplicant_interface.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015-2020 Jolla Ltd.
* Copyright (C) 2015-2020 Slava Monich <slava.monich@jolla.com>
* Copyright (C) 2015-2023 Slava Monich <slava@monich.com>
*
* You may use this file under the terms of BSD license as follows:
*
Expand Down Expand Up @@ -104,7 +104,14 @@ typedef struct gsupplicant_interface_caps {
#define GSUPPLICANT_INTERFACE_CAPS_MODES_P2P (0x00000008)

gint max_scan_ssid;
guint caps_reserved[2];
guint group_mgmt; /* Used since 1.0.27 */

#define GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP (0x00000001)
#define GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP_GMAC_128 (0x00000002)
#define GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP_GMAC_256 (0x00000004)
#define GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP_CMAC_256 (0x00000008)

guint caps_reserved;
} GSupplicantInterfaceCaps;

typedef struct gsupplicant_signal_poll {
Expand Down
11 changes: 10 additions & 1 deletion src/gsupplicant_interface.c
Expand Up @@ -1491,7 +1491,7 @@ gsupplicant_interface_parse_cap(
scan_map, G_N_ELEMENTS(scan_map));
} else if (!g_strcmp0(name, "Modes")) {
static const GSupNameIntPair modes_map [] = {
{ "infrastructure", GSUPPLICANT_INTERFACE_CAPS_MODES_INFRA},
{ "infrastructure", GSUPPLICANT_INTERFACE_CAPS_MODES_INFRA },
{ "ad-hoc", GSUPPLICANT_INTERFACE_CAPS_MODES_AD_HOC },
{ "ap", GSUPPLICANT_INTERFACE_CAPS_MODES_AP },
{ "p2p", GSUPPLICANT_INTERFACE_CAPS_MODES_P2P }
Expand All @@ -1501,6 +1501,15 @@ gsupplicant_interface_parse_cap(
} else if (!g_strcmp0(name, "MaxScanSSID")) {
caps->max_scan_ssid = g_variant_get_int32(value);
GVERBOSE(" %s: %d", name, caps->max_scan_ssid);
} else if (!g_strcmp0(name, "GroupMgmt")) {
static const GSupNameIntPair group_mgmt_map [] = {
{"aes-128-cmac",GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP },
{"bip-gmac-128",GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP_GMAC_128},
{"bip-gmac-256",GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP_GMAC_256},
{"bip-cmac-256",GSUPPLICANT_INTERFACE_CAPS_GROUP_MGMT_BIP_CMAC_256}
};
caps->group_mgmt = gsupplicant_parse_bits_array(0, name, value,
group_mgmt_map, G_N_ELEMENTS(group_mgmt_map));
} else {
GWARN("Unexpected interface capability key %s", name);
}
Expand Down

0 comments on commit 2193279

Please sign in to comment.