diff options
author | Thomas Haller <thaller@redhat.com> | 2021-03-03 08:30:10 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-03-05 11:09:13 +0100 |
commit | 367be3585fa45e6733ee5df7a582ab7776b38b79 (patch) | |
tree | b534fd8b29c1bbc740999ac760f008ba188d7311 | |
parent | 096ee5ed6ebc892096a059ed9865f5d7f93b332d (diff) | |
download | NetworkManager-367be3585fa45e6733ee5df7a582ab7776b38b79.tar.gz |
libnm-base: add internal _NMDeviceWifiCapabilities type
-rw-r--r-- | src/libnm-base/nm-base.h | 18 | ||||
-rw-r--r-- | src/libnm-core-impl/tests/test-general.c | 54 |
2 files changed, 72 insertions, 0 deletions
diff --git a/src/libnm-base/nm-base.h b/src/libnm-base/nm-base.h index 8bacfa6e73..399c0f53be 100644 --- a/src/libnm-base/nm-base.h +++ b/src/libnm-base/nm-base.h @@ -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 { diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c index 305f821345..c3141e3c21 100644 --- a/src/libnm-core-impl/tests/test-general.c +++ b/src/libnm-core-impl/tests/test-general.c @@ -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); |