libnm-base: add internal _NMDeviceWifiCapabilities type

This commit is contained in:
Thomas Haller 2021-03-03 08:30:10 +01:00
parent 096ee5ed6e
commit 367be3585f
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 72 additions and 0 deletions

View file

@ -190,6 +190,24 @@ typedef enum {
_NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT | _NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE,
} _NMSettingWirelessWakeOnWLan;
typedef enum {
/* Mirrors libnm's NMDeviceWifiCapabilities */
_NM_WIFI_DEVICE_CAP_NONE = 0x00000000,
_NM_WIFI_DEVICE_CAP_CIPHER_WEP40 = 0x00000001,
_NM_WIFI_DEVICE_CAP_CIPHER_WEP104 = 0x00000002,
_NM_WIFI_DEVICE_CAP_CIPHER_TKIP = 0x00000004,
_NM_WIFI_DEVICE_CAP_CIPHER_CCMP = 0x00000008,
_NM_WIFI_DEVICE_CAP_WPA = 0x00000010,
_NM_WIFI_DEVICE_CAP_RSN = 0x00000020,
_NM_WIFI_DEVICE_CAP_AP = 0x00000040,
_NM_WIFI_DEVICE_CAP_ADHOC = 0x00000080,
_NM_WIFI_DEVICE_CAP_FREQ_VALID = 0x00000100,
_NM_WIFI_DEVICE_CAP_FREQ_2GHZ = 0x00000200,
_NM_WIFI_DEVICE_CAP_FREQ_5GHZ = 0x00000400,
_NM_WIFI_DEVICE_CAP_MESH = 0x00001000,
_NM_WIFI_DEVICE_CAP_IBSS_RSN = 0x00002000,
} _NMDeviceWifiCapabilities;
/*****************************************************************************/
typedef enum {

View file

@ -210,6 +210,59 @@ test_wireless_wake_on_wlan_enum(void)
/*****************************************************************************/
static void
test_device_wifi_capabilities(void)
{
nm_auto_unref_gtypeclass GFlagsClass *flags_class = NULL;
gs_unref_hashtable GHashTable *vals = g_hash_table_new(nm_direct_hash, NULL);
guint i;
G_STATIC_ASSERT_EXPR(sizeof(NMDeviceWifiCapabilities) == sizeof(_NMDeviceWifiCapabilities));
G_STATIC_ASSERT_EXPR(sizeof(NMDeviceWifiCapabilities) < sizeof(gint64));
G_STATIC_ASSERT_EXPR(sizeof(NMDeviceWifiCapabilities) < sizeof(gint64));
g_assert((((gint64)((NMDeviceWifiCapabilities) -1)) < 0)
== (((gint64)((_NMDeviceWifiCapabilities) -1)) < 0));
#define _E(n) \
G_STMT_START \
{ \
G_STATIC_ASSERT_EXPR(n == (gint64) _##n); \
G_STATIC_ASSERT_EXPR(_##n == (gint64) n); \
if (!g_hash_table_add(vals, GUINT_TO_POINTER(n))) \
g_assert_not_reached(); \
} \
G_STMT_END
_E(NM_WIFI_DEVICE_CAP_NONE);
_E(NM_WIFI_DEVICE_CAP_CIPHER_WEP40);
_E(NM_WIFI_DEVICE_CAP_CIPHER_WEP104);
_E(NM_WIFI_DEVICE_CAP_CIPHER_TKIP);
_E(NM_WIFI_DEVICE_CAP_CIPHER_CCMP);
_E(NM_WIFI_DEVICE_CAP_WPA);
_E(NM_WIFI_DEVICE_CAP_RSN);
_E(NM_WIFI_DEVICE_CAP_AP);
_E(NM_WIFI_DEVICE_CAP_ADHOC);
_E(NM_WIFI_DEVICE_CAP_FREQ_VALID);
_E(NM_WIFI_DEVICE_CAP_FREQ_2GHZ);
_E(NM_WIFI_DEVICE_CAP_FREQ_5GHZ);
_E(NM_WIFI_DEVICE_CAP_MESH);
_E(NM_WIFI_DEVICE_CAP_IBSS_RSN);
#undef _E
flags_class = G_FLAGS_CLASS(g_type_class_ref(NM_TYPE_DEVICE_WIFI_CAPABILITIES));
for (i = 0; i < flags_class->n_values; i++) {
const GFlagsValue *value = &flags_class->values[i];
if (!g_hash_table_contains(vals, GUINT_TO_POINTER(value->value))) {
g_error("The enum value %s from NMDeviceWifiCapabilities is not checked for "
"_NMDeviceWifiCapabilities",
value->value_name);
}
}
}
/*****************************************************************************/
typedef struct _nm_packed {
int v0;
char v1;
@ -10382,6 +10435,7 @@ main(int argc, char **argv)
g_test_add_func("/core/general/test_wired_wake_on_lan_enum", test_wired_wake_on_lan_enum);
g_test_add_func("/core/general/test_wireless_wake_on_wlan_enum",
test_wireless_wake_on_wlan_enum);
g_test_add_func("/core/general/test_device_wifi_capabilities", test_device_wifi_capabilities);
g_test_add_func("/core/general/test_nm_hash", test_nm_hash);
g_test_add_func("/core/general/test_nm_g_slice_free_fcn", test_nm_g_slice_free_fcn);
g_test_add_func("/core/general/test_c_list_sort", test_c_list_sort);