mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-27 10:30:13 +01:00
wifi: merge branch 'th/ssids-options-to-ptrarray'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/385
This commit is contained in:
commit
5080dfa46f
5 changed files with 129 additions and 36 deletions
34
Makefile.am
34
Makefile.am
|
|
@ -3606,9 +3606,9 @@ EXTRA_DIST += \
|
|||
|
||||
if WITH_WIFI
|
||||
|
||||
core_plugins += src/devices/wifi/libnm-device-plugin-wifi.la
|
||||
noinst_LTLIBRARIES += src/devices/wifi/libnm-wifi-base.la
|
||||
|
||||
src_devices_wifi_libnm_device_plugin_wifi_la_SOURCES = \
|
||||
src_devices_wifi_libnm_wifi_base_la_SOURCES = \
|
||||
src/devices/wifi/nm-device-olpc-mesh.c \
|
||||
src/devices/wifi/nm-device-olpc-mesh.h \
|
||||
src/devices/wifi/nm-device-wifi-p2p.c \
|
||||
|
|
@ -3619,7 +3619,6 @@ src_devices_wifi_libnm_device_plugin_wifi_la_SOURCES = \
|
|||
src/devices/wifi/nm-wifi-ap.h \
|
||||
src/devices/wifi/nm-wifi-common.c \
|
||||
src/devices/wifi/nm-wifi-common.h \
|
||||
src/devices/wifi/nm-wifi-factory.c \
|
||||
src/devices/wifi/nm-wifi-p2p-peer.c \
|
||||
src/devices/wifi/nm-wifi-p2p-peer.h \
|
||||
src/devices/wifi/nm-wifi-utils.c \
|
||||
|
|
@ -3627,7 +3626,7 @@ src_devices_wifi_libnm_device_plugin_wifi_la_SOURCES = \
|
|||
$(NULL)
|
||||
|
||||
if WITH_IWD
|
||||
src_devices_wifi_libnm_device_plugin_wifi_la_SOURCES += \
|
||||
src_devices_wifi_libnm_wifi_base_la_SOURCES += \
|
||||
src/devices/wifi/nm-device-iwd.c \
|
||||
src/devices/wifi/nm-device-iwd.h \
|
||||
src/devices/wifi/nm-iwd-manager.c \
|
||||
|
|
@ -3635,6 +3634,19 @@ src_devices_wifi_libnm_device_plugin_wifi_la_SOURCES += \
|
|||
$(NULL)
|
||||
endif
|
||||
|
||||
src_devices_wifi_libnm_wifi_base_la_CPPFLAGS = $(src_cppflags_device_plugin)
|
||||
|
||||
src_devices_wifi_libnm_wifi_base_la_LIBADD = \
|
||||
$(GLIB_LIBS)
|
||||
|
||||
$(src_devices_wifi_libnm_wifi_base_la_OBJECTS): $(libnm_core_lib_h_pub_mkenums)
|
||||
|
||||
core_plugins += src/devices/wifi/libnm-device-plugin-wifi.la
|
||||
|
||||
src_devices_wifi_libnm_device_plugin_wifi_la_SOURCES = \
|
||||
src/devices/wifi/nm-wifi-factory.c \
|
||||
$(NULL)
|
||||
|
||||
src_devices_wifi_libnm_device_plugin_wifi_la_CPPFLAGS = $(src_cppflags_device_plugin)
|
||||
|
||||
src_devices_wifi_libnm_device_plugin_wifi_la_LDFLAGS = \
|
||||
|
|
@ -3642,8 +3654,11 @@ src_devices_wifi_libnm_device_plugin_wifi_la_LDFLAGS = \
|
|||
-Wl,--version-script="$(srcdir)/linker-script-devices.ver"
|
||||
|
||||
src_devices_wifi_libnm_device_plugin_wifi_la_LIBADD = \
|
||||
src/devices/wifi/libnm-wifi-base.la \
|
||||
$(GLIB_LIBS)
|
||||
|
||||
$(src_devices_wifi_libnm_device_plugin_wifi_la_OBJECTS): $(libnm_core_lib_h_pub_mkenums)
|
||||
|
||||
check-local-devices-wifi: src/devices/wifi/libnm-device-plugin-wifi.la
|
||||
$(srcdir)/tools/check-exports.sh $(builddir)/src/devices/wifi/.libs/libnm-device-plugin-wifi.so "$(srcdir)/linker-script-devices.ver"
|
||||
$(call check_so_symbols,$(builddir)/src/devices/wifi/.libs/libnm-device-plugin-wifi.so)
|
||||
|
|
@ -3654,14 +3669,15 @@ check_programs += src/devices/wifi/tests/test-devices-wifi
|
|||
|
||||
src_devices_wifi_tests_test_devices_wifi_SOURCES = \
|
||||
src/devices/wifi/tests/test-devices-wifi.c \
|
||||
src/devices/wifi/nm-wifi-ap.c \
|
||||
src/devices/wifi/nm-wifi-ap.h \
|
||||
src/devices/wifi/nm-wifi-utils.c \
|
||||
src/devices/wifi/nm-wifi-utils.h
|
||||
$(NULL)
|
||||
|
||||
src_devices_wifi_tests_test_devices_wifi_CPPFLAGS = $(src_cppflags_base_test)
|
||||
|
||||
src_devices_wifi_tests_test_devices_wifi_LDADD = src/libNetworkManagerTest.la
|
||||
src_devices_wifi_tests_test_devices_wifi_LDADD = \
|
||||
src/libNetworkManagerTest.la \
|
||||
src/devices/wifi/libnm-wifi-base.la \
|
||||
$(NULL)
|
||||
|
||||
src_devices_wifi_tests_test_devices_wifi_LDFLAGS = $(SANITIZER_EXEC_LDFLAGS)
|
||||
|
||||
$(src_devices_wifi_tests_test_devices_wifi_OBJECTS): $(libnm_core_lib_h_pub_mkenums)
|
||||
|
|
|
|||
|
|
@ -1,28 +1,36 @@
|
|||
common_sources = files(
|
||||
'nm-wifi-ap.c',
|
||||
'nm-wifi-p2p-peer.c',
|
||||
'nm-wifi-utils.c',
|
||||
)
|
||||
|
||||
sources = common_sources + files(
|
||||
'nm-device-olpc-mesh.c',
|
||||
'nm-device-wifi-p2p.c',
|
||||
'nm-device-wifi.c',
|
||||
'nm-wifi-common.c',
|
||||
'nm-wifi-factory.c',
|
||||
)
|
||||
|
||||
iwd_sources = files()
|
||||
if enable_iwd
|
||||
sources += files(
|
||||
iwd_sources += files(
|
||||
'nm-device-iwd.c',
|
||||
'nm-iwd-manager.c',
|
||||
)
|
||||
endif
|
||||
|
||||
libnm_wifi_base = static_library(
|
||||
'nm-wifi-base',
|
||||
sources: files(
|
||||
'nm-device-olpc-mesh.c',
|
||||
'nm-device-wifi-p2p.c',
|
||||
'nm-device-wifi.c',
|
||||
'nm-wifi-ap.c',
|
||||
'nm-wifi-common.c',
|
||||
'nm-wifi-p2p-peer.c',
|
||||
'nm-wifi-utils.c',
|
||||
) + iwd_sources,
|
||||
dependencies: daemon_nm_default_dep,
|
||||
c_args: daemon_c_flags,
|
||||
)
|
||||
|
||||
libnm_wifi_base_dep = declare_dependency(
|
||||
link_with: libnm_wifi_base,
|
||||
)
|
||||
|
||||
libnm_device_plugin_wifi = shared_module(
|
||||
'nm-device-plugin-wifi',
|
||||
sources: sources,
|
||||
dependencies: daemon_nm_default_dep,
|
||||
sources: files(
|
||||
'nm-wifi-factory.c',
|
||||
),
|
||||
dependencies: [ daemon_nm_default_dep, libnm_wifi_base_dep ],
|
||||
c_args: daemon_c_flags,
|
||||
link_args: ldflags_linker_script_devices,
|
||||
link_depends: linker_script_devices,
|
||||
|
|
@ -43,8 +51,8 @@ if enable_tests
|
|||
|
||||
exe = executable(
|
||||
test_unit,
|
||||
['tests/' + test_unit + '.c'] + common_sources,
|
||||
dependencies: libnetwork_manager_test_dep,
|
||||
'tests/' + test_unit + '.c',
|
||||
dependencies: [ libnetwork_manager_test_dep, libnm_wifi_base_dep ],
|
||||
c_args: test_c_flags,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1074,11 +1074,11 @@ _hw_addr_set_scanning (NMDeviceWifi *self, gboolean do_reset)
|
|||
static GPtrArray *
|
||||
ssids_options_to_ptrarray (GVariant *value, GError **error)
|
||||
{
|
||||
GPtrArray *ssids = NULL;
|
||||
GVariant *v;
|
||||
const guint8 *bytes;
|
||||
gsize len;
|
||||
int num_ssids, i;
|
||||
gs_unref_ptrarray GPtrArray *ssids = NULL;
|
||||
gsize num_ssids;
|
||||
gsize i;
|
||||
|
||||
nm_assert (g_variant_is_of_type (value, G_VARIANT_TYPE ("aay")));
|
||||
|
||||
num_ssids = g_variant_n_children (value);
|
||||
if (num_ssids > 32) {
|
||||
|
|
@ -1092,21 +1092,31 @@ ssids_options_to_ptrarray (GVariant *value, GError **error)
|
|||
if (num_ssids) {
|
||||
ssids = g_ptr_array_new_full (num_ssids, (GDestroyNotify) g_bytes_unref);
|
||||
for (i = 0; i < num_ssids; i++) {
|
||||
gs_unref_variant GVariant *v = NULL;
|
||||
gsize len;
|
||||
const guint8 *bytes;
|
||||
|
||||
v = g_variant_get_child_value (value, i);
|
||||
bytes = g_variant_get_fixed_array (v, &len, sizeof (guint8));
|
||||
if (len > 32) {
|
||||
g_set_error (error,
|
||||
NM_DEVICE_ERROR,
|
||||
NM_DEVICE_ERROR_NOT_ALLOWED,
|
||||
"SSID at index %d more than 32 bytes", i);
|
||||
g_ptr_array_unref (ssids);
|
||||
"SSID at index %d more than 32 bytes", (int) i);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
g_ptr_array_add (ssids, g_bytes_new (bytes, len));
|
||||
}
|
||||
}
|
||||
return ssids;
|
||||
|
||||
return g_steal_pointer (&ssids);
|
||||
}
|
||||
|
||||
GPtrArray *
|
||||
nmtst_ssids_options_to_ptrarray (GVariant *value, GError **error)
|
||||
{
|
||||
return ssids_options_to_ptrarray (value, error);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -40,4 +40,6 @@ void _nm_device_wifi_request_scan (NMDeviceWifi *self,
|
|||
GVariant *options,
|
||||
GDBusMethodInvocation *invocation);
|
||||
|
||||
GPtrArray *nmtst_ssids_options_to_ptrarray (GVariant *value, GError **error);
|
||||
|
||||
#endif /* __NETWORKMANAGER_DEVICE_WIFI_H__ */
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include "nm-default.h"
|
||||
|
||||
#include "devices/wifi/nm-wifi-utils.h"
|
||||
#include "devices/wifi/nm-device-wifi.h"
|
||||
#include "nm-core-internal.h"
|
||||
|
||||
#include "nm-test-utils-core.h"
|
||||
|
|
@ -1337,6 +1338,60 @@ test_strength_all (void)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
do_test_ssids_options_to_ptrarray (const char *const*ssids)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
gs_unref_variant GVariant *variant = NULL;
|
||||
gs_unref_ptrarray GPtrArray *ssids_arr = NULL;
|
||||
gs_free_error GError *error = NULL;
|
||||
gsize len;
|
||||
gsize i;
|
||||
|
||||
g_assert (ssids);
|
||||
|
||||
len = NM_PTRARRAY_LEN (ssids);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay"));
|
||||
for (i = 0; i < len; i++) {
|
||||
const char *ssid = ssids[i];
|
||||
|
||||
g_variant_builder_add (&builder,
|
||||
"@ay",
|
||||
g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, ssid, strlen (ssid), 1));
|
||||
}
|
||||
variant = g_variant_builder_end (&builder);
|
||||
|
||||
if (nmtst_get_rand_bool ())
|
||||
g_variant_ref_sink (variant);
|
||||
|
||||
ssids_arr = nmtst_ssids_options_to_ptrarray (variant, &error);
|
||||
g_assert (!error);
|
||||
if (len == 0) {
|
||||
g_assert (!ssids_arr);
|
||||
return;
|
||||
}
|
||||
g_assert_cmpint (len, ==, ssids_arr->len);
|
||||
for (i = 0; i < len; i++) {
|
||||
const char *ssid = ssids[i];
|
||||
GBytes *bytes = ssids_arr->pdata[i];
|
||||
|
||||
g_assert (nm_utils_gbytes_equal_mem (bytes,
|
||||
ssid,
|
||||
strlen (ssid)));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
test_ssids_options_to_ptrarray (void)
|
||||
{
|
||||
do_test_ssids_options_to_ptrarray (NM_PTRARRAY_EMPTY (const char *));
|
||||
do_test_ssids_options_to_ptrarray (NM_MAKE_STRV ("ab"));
|
||||
do_test_ssids_options_to_ptrarray (NM_MAKE_STRV ("ab", "cd", "fsdfdsf"));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMTST_DEFINE ();
|
||||
|
||||
int
|
||||
|
|
@ -1501,5 +1556,7 @@ main (int argc, char **argv)
|
|||
g_test_add_func ("/wifi/strength/all",
|
||||
test_strength_all);
|
||||
|
||||
g_test_add_func ("/wifi/ssids_options_to_ptrarray", test_ssids_options_to_ptrarray);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue