From 358d4c691d4e10d54b1f373b57ce003f22de3286 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 20 Oct 2022 16:33:30 +0200 Subject: [PATCH 1/6] glib-aux: add nm_auto_unref_gdatetime cleanup macro --- src/libnm-glib-aux/nm-macros-internal.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libnm-glib-aux/nm-macros-internal.h b/src/libnm-glib-aux/nm-macros-internal.h index 60f8aa0ee6..ae132e8737 100644 --- a/src/libnm-glib-aux/nm-macros-internal.h +++ b/src/libnm-glib-aux/nm-macros-internal.h @@ -131,6 +131,9 @@ NM_AUTO_DEFINE_FCN_VOID0(void *, _nm_auto_unref_gtypeclass, g_type_class_unref); NM_AUTO_DEFINE_FCN0(GByteArray *, _nm_auto_unref_bytearray, g_byte_array_unref); #define nm_auto_unref_bytearray nm_auto(_nm_auto_unref_bytearray) +NM_AUTO_DEFINE_FCN0(GDateTime *, _nm_auto_unref_gdatetime, g_date_time_unref); +#define nm_auto_unref_gdatetime nm_auto(_nm_auto_unref_gdatetime) + static inline void _nm_auto_free_gstring(GString **str) { From 3654fc814512bbbea355ad43ec851f790362c23d Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 25 Oct 2022 19:22:12 +0200 Subject: [PATCH 2/6] platform/tests: make "external_command" int type The variable is passed to nmtstp_run_command_check_external(), which accepts -1 to mean choose randomly. Change the function signature to reflect that. --- src/core/platform/tests/test-common.c | 43 +++++++++++++-------------- src/core/platform/tests/test-common.h | 37 +++++++++++------------ 2 files changed, 38 insertions(+), 42 deletions(-) diff --git a/src/core/platform/tests/test-common.c b/src/core/platform/tests/test-common.c index 0a7b337762..09e7bd6c9a 100644 --- a/src/core/platform/tests/test-common.c +++ b/src/core/platform/tests/test-common.c @@ -1029,7 +1029,7 @@ nmtstp_ip_address_assert_lifetime(const NMPlatformIPAddress *addr, static void _ip_address_add(NMPlatform *platform, - gboolean external_command, + int external_command, gboolean is_v4, int ifindex, const NMIPAddr *address, @@ -1181,7 +1181,7 @@ _ip_address_add(NMPlatform *platform, void nmtstp_ip4_address_add(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, in_addr_t address, int plen, @@ -1206,7 +1206,7 @@ nmtstp_ip4_address_add(NMPlatform *platform, void nmtstp_ip6_address_add(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, struct in6_addr address, int plen, @@ -1284,7 +1284,7 @@ nmtstp_ip6_route_add(NMPlatform *platform, static void _ip_address_del(NMPlatform *platform, - gboolean external_command, + int external_command, gboolean is_v4, int ifindex, const NMIPAddr *address, @@ -1383,7 +1383,7 @@ _ip_address_del(NMPlatform *platform, void nmtstp_ip4_address_del(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, in_addr_t address, int plen, @@ -1400,7 +1400,7 @@ nmtstp_ip4_address_del(NMPlatform *platform, void nmtstp_ip6_address_del(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, struct in6_addr address, int plen) @@ -1470,7 +1470,7 @@ nmtstp_link_bridge_normalize_jiffies_time(const NMPlatformLnkBridge *requested, const NMPlatformLink * nmtstp_link_bridge_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkBridge *lnk) { @@ -1625,10 +1625,7 @@ nmtstp_link_bridge_add(NMPlatform *platform, return pllink; } const NMPlatformLink * -nmtstp_link_veth_add(NMPlatform *platform, - gboolean external_command, - const char *name, - const char *peer) +nmtstp_link_veth_add(NMPlatform *platform, int external_command, const char *name, const char *peer) { const NMPlatformLink *pllink = NULL; gboolean success = FALSE; @@ -1673,7 +1670,7 @@ again: } const NMPlatformLink * -nmtstp_link_dummy_add(NMPlatform *platform, gboolean external_command, const char *name) +nmtstp_link_dummy_add(NMPlatform *platform, int external_command, const char *name) { const NMPlatformLink *pllink = NULL; gboolean success; @@ -1698,7 +1695,7 @@ nmtstp_link_dummy_add(NMPlatform *platform, gboolean external_command, const cha const NMPlatformLink * nmtstp_link_gre_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkGre *lnk) { @@ -1749,7 +1746,7 @@ nmtstp_link_gre_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_ip6tnl_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkIp6Tnl *lnk) { @@ -1815,7 +1812,7 @@ nmtstp_link_ip6tnl_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_ip6gre_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkIp6Tnl *lnk) { @@ -1874,7 +1871,7 @@ nmtstp_link_ip6gre_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_ipip_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkIpIp *lnk) { @@ -1917,7 +1914,7 @@ nmtstp_link_ipip_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_macvlan_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, int parent, const NMPlatformLnkMacvlan *lnk) @@ -1966,7 +1963,7 @@ nmtstp_link_macvlan_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_sit_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkSit *lnk) { @@ -2013,7 +2010,7 @@ nmtstp_link_sit_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_tun_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkTun *lnk, int *out_fd) @@ -2078,7 +2075,7 @@ nmtstp_link_tun_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_vrf_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkVrf *lnk, gboolean *out_not_supported) @@ -2115,7 +2112,7 @@ nmtstp_link_vrf_add(NMPlatform *platform, const NMPlatformLink * nmtstp_link_vxlan_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkVxlan *lnk) { @@ -2231,7 +2228,7 @@ nmtstp_link_get(NMPlatform *platform, int ifindex, const char *name) void nmtstp_link_delete(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, const char *name, gboolean require_exist) @@ -2283,7 +2280,7 @@ nmtstp_link_delete(NMPlatform *platform, /*****************************************************************************/ void -nmtstp_link_set_updown(NMPlatform *platform, gboolean external_command, int ifindex, gboolean up) +nmtstp_link_set_updown(NMPlatform *platform, int external_command, int ifindex, gboolean up) { const NMPlatformLink *plink; gint64 end_time; diff --git a/src/core/platform/tests/test-common.h b/src/core/platform/tests/test-common.h index da30b0ed2f..cd5b8e8638 100644 --- a/src/core/platform/tests/test-common.h +++ b/src/core/platform/tests/test-common.h @@ -261,7 +261,7 @@ void nmtstp_ip_address_assert_lifetime(const NMPlatformIPAddress *addr, guint32 expected_preferred); void nmtstp_ip4_address_add(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, in_addr_t address, int plen, @@ -271,7 +271,7 @@ void nmtstp_ip4_address_add(NMPlatform *platform, guint32 flags, const char *label); void nmtstp_ip6_address_add(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, struct in6_addr address, int plen, @@ -280,13 +280,13 @@ void nmtstp_ip6_address_add(NMPlatform *platform, guint32 preferred, guint32 flags); void nmtstp_ip4_address_del(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, in_addr_t address, int plen, in_addr_t peer_address); void nmtstp_ip6_address_del(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, struct in6_addr address, int plen); @@ -452,8 +452,7 @@ const NMPlatformLink *nmtstp_link_get(NMPlatform *platform, int ifindex, const c gboolean nmtstp_kernel_support_get(NMPlatformKernelSupportType type); -void -nmtstp_link_set_updown(NMPlatform *platform, gboolean external_command, int ifindex, gboolean up); +void nmtstp_link_set_updown(NMPlatform *platform, int external_command, int ifindex, gboolean up); const NMPlatformLnkBridge * nmtstp_link_bridge_normalize_jiffies_time(const NMPlatformLnkBridge *requested, @@ -461,57 +460,57 @@ nmtstp_link_bridge_normalize_jiffies_time(const NMPlatformLnkBridge *requested, NMPlatformLnkBridge *dst); const NMPlatformLink *nmtstp_link_bridge_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkBridge *lnk); const NMPlatformLink *nmtstp_link_veth_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const char *peer); const NMPlatformLink * -nmtstp_link_dummy_add(NMPlatform *platform, gboolean external_command, const char *name); +nmtstp_link_dummy_add(NMPlatform *platform, int external_command, const char *name); const NMPlatformLink *nmtstp_link_gre_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkGre *lnk); const NMPlatformLink *nmtstp_link_ip6tnl_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkIp6Tnl *lnk); const NMPlatformLink *nmtstp_link_ip6gre_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkIp6Tnl *lnk); const NMPlatformLink *nmtstp_link_ipip_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkIpIp *lnk); const NMPlatformLink *nmtstp_link_macvlan_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, int parent, const NMPlatformLnkMacvlan *lnk); const NMPlatformLink *nmtstp_link_sit_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkSit *lnk); const NMPlatformLink *nmtstp_link_tun_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkTun *lnk, int *out_fd); const NMPlatformLink *nmtstp_link_vrf_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkVrf *lnk, gboolean *out_not_supported); const NMPlatformLink *nmtstp_link_vxlan_add(NMPlatform *platform, - gboolean external_command, + int external_command, const char *name, const NMPlatformLnkVxlan *lnk); void nmtstp_link_delete(NMPlatform *platform, - gboolean external_command, + int external_command, int ifindex, const char *name, gboolean require_exist); From 06cf1f5e2d3e091281882940da395963bc647df2 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 20 Oct 2022 16:01:19 +0200 Subject: [PATCH 3/6] platform/tests: extend monitor tool to dump the state of NMPlatform This is useful for manual testing ("manual", in the sense that you can write a script that tests the behavior of the platform cache, without humanly reading the logfile). Usage: To write the content of the platform cache once: ./src/core/platform/tests/monitor -P -S './statefile' To keep monitor running, and update the state file: ./src/core/platform/tests/monitor -S './statefile' --- src/core/platform/tests/monitor.c | 161 ++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/src/core/platform/tests/monitor.c b/src/core/platform/tests/monitor.c index 8d0e01074a..5030e25279 100644 --- a/src/core/platform/tests/monitor.c +++ b/src/core/platform/tests/monitor.c @@ -8,6 +8,8 @@ #include #include +#include "libnm-glib-aux/nm-str-buf.h" +#include "libnm-glib-aux/nm-io-utils.h" #include "libnm-platform/nm-linux-platform.h" #include "libnm-platform/nmp-object.h" @@ -17,10 +19,25 @@ NMTST_DEFINE(); static struct { gboolean persist; + char *state_file; } global_opt = { .persist = TRUE, }; +const char *const *const ip_argv_rule6 = NM_MAKE_STRV("ip", "-d", "-6", "rule"); + +static const struct { + NMPObjectType obj_type; + const char *const *ip_argv; +} dump_obj_types[] = { + {NMP_OBJECT_TYPE_LINK, NM_MAKE_STRV("ip", "-d", "link")}, + {NMP_OBJECT_TYPE_IP4_ADDRESS, NM_MAKE_STRV("ip", "-d", "-4", "address")}, + {NMP_OBJECT_TYPE_IP6_ADDRESS, NM_MAKE_STRV("ip", "-d", "-6", "address")}, + {NMP_OBJECT_TYPE_IP4_ROUTE, NM_MAKE_STRV("ip", "-d", "-4", "route")}, + {NMP_OBJECT_TYPE_IP6_ROUTE, NM_MAKE_STRV("ip", "-d", "-6", "route")}, + {NMP_OBJECT_TYPE_ROUTING_RULE, NM_MAKE_STRV("ip", "-d", "-4", "rule")}, +}; + static gboolean read_argv(int *argc, char ***argv) { @@ -33,6 +50,13 @@ read_argv(int *argc, char ***argv) &global_opt.persist, "Exit after processing netlink messages", NULL}, + {"state-file", + 'S', + 0, + G_OPTION_ARG_FILENAME, + &global_opt.state_file, + N_("Dump the platform cache to this file"), + N_("FILE")}, {0}, }; gs_free_error GError *error = NULL; @@ -63,6 +87,123 @@ mptcp_addr_dump(NMPlatform *platform) /*****************************************************************************/ +static void +_dump_state(NMPlatform *platform, const char *state_file) +{ + nm_auto_str_buf NMStrBuf sbuf = NM_STR_BUF_INIT_A(NM_UTILS_GET_NEXT_REALLOC_SIZE_488, FALSE); + nm_auto_unref_gdatetime GDateTime *time_datetime = NULL; + gs_free char *time_str = NULL; + int i_obj_type; + + if (!state_file) + return; + + time_datetime = g_date_time_new_now_local(); + time_str = g_date_time_format(time_datetime, "%C%y-%m-%dT%H:%M:%S.%f"); + + nm_log_dbg(LOGD_PLATFORM, "dump to file \"%s\", at %s", state_file, time_str); + + nm_str_buf_append_printf(&sbuf, "time: %s\n", time_str); + nm_str_buf_append_printf(&sbuf, "pid: %lld\n", (long long) getpid()); + + for (i_obj_type = 0; i_obj_type < (int) G_N_ELEMENTS(dump_obj_types); i_obj_type++) { + NMPObjectType obj_type = dump_obj_types[i_obj_type].obj_type; + const char *const *ip_argv = dump_obj_types[i_obj_type].ip_argv; + const NMDedupMultiHeadEntry *pl_head_entry; + NMDedupMultiIter pl_iter; + const NMPObject *obj; + guint i; + char buf1[1000]; + + pl_head_entry = nm_platform_lookup_obj_type(platform, obj_type); + + nm_str_buf_append_printf(&sbuf, + "\n%s: %u\n", + nmp_class_from_type(obj_type)->obj_type_name, + pl_head_entry ? pl_head_entry->len : 0u); + + i = 0; + nmp_cache_iter_for_each (&pl_iter, pl_head_entry, &obj) { + nmp_object_to_string(obj, NMP_OBJECT_TO_STRING_PUBLIC, buf1, sizeof(buf1)); + nm_str_buf_append_printf(&sbuf, + "%s[%u]: %s\n", + nmp_class_from_type(obj_type)->obj_type_name, + i, + buf1); + g_assert(strlen(buf1) < sizeof(buf1) - 1u); + i++; + } + +ip_again: + if (ip_argv) { + gs_free_error GError *error = NULL; + gs_free char *ip_argv_ss = NULL; + gs_free char *s_stdout = NULL; + gs_free char *s_stderr = NULL; + int exit_code; + + g_spawn_sync(NULL, + (char **) ip_argv, + NULL, + G_SPAWN_SEARCH_PATH, + NULL, + NULL, + &s_stdout, + &s_stderr, + &exit_code, + &error); + + nm_str_buf_append_printf(&sbuf, + "%s: call %s: ", + nmp_class_from_type(obj_type)->obj_type_name, + ip_argv_ss = g_strjoinv(" ", (char **) ip_argv)); + if (error) { + nm_str_buf_append_printf(&sbuf, "FAILED: %s\n", error->message); + } else if (WIFEXITED(exit_code) && WEXITSTATUS(exit_code) == 0) + nm_str_buf_append_printf(&sbuf, "SUCCESS\n"); + else { + nm_str_buf_append_printf( + &sbuf, + "ERROR: %s\n", + nm_utils_get_process_exit_status_desc_buf(exit_code, buf1, sizeof(buf1))); + } + if (!nm_str_is_empty(s_stdout)) + nm_str_buf_append_printf(&sbuf, "STDOUT>\n%s<\n", s_stdout); + if (!nm_str_is_empty(s_stderr)) + nm_str_buf_append_printf(&sbuf, "STDERR>\n%s<\n", s_stderr); + + if (obj_type == NMP_OBJECT_TYPE_ROUTING_RULE + && ip_argv == dump_obj_types[i_obj_type].ip_argv) { + ip_argv = ip_argv_rule6; + goto ip_again; + } + } + } + + nm_utils_file_set_contents(state_file, + nm_str_buf_get_str_unsafe(&sbuf), + sbuf.len, + 00644, + NULL, + NULL, + NULL); + + nm_log_dbg(LOGD_PLATFORM, "dump to file complete"); +} + +static void +_dump_state_platform_cb(NMPlatform *platform, + int obj_type_i, + int ifindex, + gconstpointer platform_object, + int change_type_i, + gpointer unused_user_data) +{ + _dump_state(platform, global_opt.state_file); +} + +/*****************************************************************************/ + int main(int argc, char **argv) { @@ -82,12 +223,32 @@ main(int argc, char **argv) nm_linux_platform_setup(); + if (global_opt.state_file) { + int i_obj_type; + + for (i_obj_type = 0; i_obj_type < (int) G_N_ELEMENTS(dump_obj_types); i_obj_type++) { + NMPObjectType obj_type = dump_obj_types[i_obj_type].obj_type; + + g_signal_connect(NM_PLATFORM_GET, + nmp_class_from_type(obj_type)->signal_type, + G_CALLBACK(_dump_state_platform_cb), + NULL); + } + } + mptcp_addr_dump(NM_PLATFORM_GET); + _dump_state(NM_PLATFORM_GET, global_opt.state_file); + if (global_opt.persist) g_main_loop_run(loop); g_main_loop_unref(loop); + g_signal_handlers_disconnect_by_func(NM_PLATFORM_GET, + G_CALLBACK(_dump_state_platform_cb), + NULL); + g_object_unref(NM_PLATFORM_GET); + return EXIT_SUCCESS; } From 2786a30a7c2c31ba98b7aac49ed9a1f82217b732 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 25 Oct 2022 19:33:45 +0200 Subject: [PATCH 4/6] platform/tests: rename nmtst_inet6_from_string() to nmtst_inet6_from_string_p() This helper returns a pointer (to a thread local variable). --- src/core/nm-test-utils-core.h | 10 +++++----- src/core/platform/nm-fake-platform.c | 2 +- src/core/platform/tests/test-link.c | 24 ++++++++++++------------ src/core/platform/tests/test-route.c | 22 +++++++++++----------- src/core/tests/test-core.c | 4 ++-- src/core/tests/test-l3cfg.c | 4 ++-- src/libnm-core-impl/tests/test-general.c | 2 +- src/libnm-glib-aux/nm-test-utils.h | 6 +++--- 8 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/core/nm-test-utils-core.h b/src/core/nm-test-utils-core.h index 467f9bb272..0ea41ba4bd 100644 --- a/src/core/nm-test-utils-core.h +++ b/src/core/nm-test-utils-core.h @@ -72,8 +72,8 @@ nmtst_platform_ip6_address(const char *address, const char *peer_address, guint g_assert(plen <= 128); memset(&addr, 0, sizeof(addr)); - addr.address = *nmtst_inet6_from_string(address); - addr.peer_address = *nmtst_inet6_from_string(peer_address); + addr.address = *nmtst_inet6_from_string_p(address); + addr.peer_address = *nmtst_inet6_from_string_p(peer_address); addr.plen = plen; return &addr; @@ -148,10 +148,10 @@ nmtst_platform_ip6_route(const char *network, guint plen, const char *gateway, c nm_assert(plen <= 128); memset(&route, 0, sizeof(route)); - route.network = *nmtst_inet6_from_string(network); + route.network = *nmtst_inet6_from_string_p(network); route.plen = plen; - route.gateway = *nmtst_inet6_from_string(gateway); - route.pref_src = *nmtst_inet6_from_string(pref_src); + route.gateway = *nmtst_inet6_from_string_p(gateway); + route.pref_src = *nmtst_inet6_from_string_p(pref_src); return &route; } diff --git a/src/core/platform/nm-fake-platform.c b/src/core/platform/nm-fake-platform.c index 49aa07e0d1..269fca6635 100644 --- a/src/core/platform/nm-fake-platform.c +++ b/src/core/platform/nm-fake-platform.c @@ -271,7 +271,7 @@ link_add_pre(NMPlatform *platform, g_assert(address_len == 0); device->obj = o; - device->ip6_lladdr = *nmtst_inet6_from_string(ip6_lladdr); + device->ip6_lladdr = *nmtst_inet6_from_string_p(ip6_lladdr); return device; } diff --git a/src/core/platform/tests/test-link.c b/src/core/platform/tests/test-link.c index 5e13ec13f3..ad2bee2c4b 100644 --- a/src/core/platform/tests/test-link.c +++ b/src/core/platform/tests/test-link.c @@ -1203,7 +1203,7 @@ _test_wireguard_change(NMPlatform *platform, int ifindex, int test_mode) .in6 = { .sin6_family = AF_INET6, - .sin6_addr = *nmtst_inet6_from_string( + .sin6_addr = *nmtst_inet6_from_string_p( nm_sprintf_buf(s_addr, "a:b:c:e::1:%d", i)), .sin6_port = htons(16000 + i), }, @@ -1225,7 +1225,7 @@ _test_wireguard_change(NMPlatform *platform, int ifindex, int test_mode) nm_sprintf_buf(s_addr, "10.%u.%u.0", i, i_allowed_ips)); aip->mask = 32 - (i_allowed_ips % 8); } else { - aip->addr.addr6 = *nmtst_inet6_from_string( + aip->addr.addr6 = *nmtst_inet6_from_string_p( nm_sprintf_buf(s_addr, "a:d:f:%02x:%02x::", i, i_allowed_ips)); aip->mask = 128 - (i_allowed_ips % 10); } @@ -1412,8 +1412,8 @@ test_software_detect(gconstpointer user_data) switch (test_data->test_mode) { case 0: - lnk_ip6tnl.local = *nmtst_inet6_from_string("fd01::15"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string("fd01::16"); + lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fd01::15"); + lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fd01::16"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.tclass = 20; lnk_ip6tnl.encap_limit = 6; @@ -1421,8 +1421,8 @@ test_software_detect(gconstpointer user_data) lnk_ip6tnl.proto = IPPROTO_IPV6; break; case 1: - lnk_ip6tnl.local = *nmtst_inet6_from_string("fd01::17"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string("fd01::18"); + lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fd01::17"); + lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fd01::18"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.tclass = 0; lnk_ip6tnl.encap_limit = 0; @@ -1452,8 +1452,8 @@ test_software_detect(gconstpointer user_data) gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_gre", NULL) != 0; } - lnk_ip6tnl.local = *nmtst_inet6_from_string("fd01::42"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string("fd01::aaaa"); + lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fd01::42"); + lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fd01::aaaa"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.tclass = 21; lnk_ip6tnl.flow_label = 1338; @@ -1479,8 +1479,8 @@ test_software_detect(gconstpointer user_data) gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_gre", NULL) != 0; } - lnk_ip6tnl.local = *nmtst_inet6_from_string("fe80::abcd"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string("fc01::bbbb"); + lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fe80::abcd"); + lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fc01::bbbb"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.ttl = 10; lnk_ip6tnl.tclass = 22; @@ -1608,8 +1608,8 @@ test_software_detect(gconstpointer user_data) case 1: lnk_vxlan.parent_ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, PARENT_NAME); lnk_vxlan.id = 11214423; - lnk_vxlan.local6 = *nmtst_inet6_from_string("1:2:3:4:334:23::23"); - lnk_vxlan.group6 = *nmtst_inet6_from_string("ff0e::115"); + lnk_vxlan.local6 = *nmtst_inet6_from_string_p("1:2:3:4:334:23::23"); + lnk_vxlan.group6 = *nmtst_inet6_from_string_p("ff0e::115"); lnk_vxlan.ttl = 32; lnk_vxlan.dst_port = 57412; lnk_vxlan.src_port_min = 1000; diff --git a/src/core/platform/tests/test-route.c b/src/core/platform/tests/test-route.c index f007d2bb77..3b3a3298f8 100644 --- a/src/core/platform/tests/test-route.c +++ b/src/core/platform/tests/test-route.c @@ -746,7 +746,7 @@ test_ip6_route_get(void) nmtstp_wait_for_signal(NM_PLATFORM_GET, 10); if (nmtstp_ip6_route_get(NM_PLATFORM_GET, ifindex, - nmtst_inet6_from_string("fd01:abcd::"), + nmtst_inet6_from_string_p("fd01:abcd::"), 64, NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6, NULL, @@ -754,7 +754,7 @@ test_ip6_route_get(void) break; }); - a = nmtst_inet6_from_string("fd01:abcd::42"); + a = nmtst_inet6_from_string_p("fd01:abcd::42"); result = nm_platform_ip_route_get(NM_PLATFORM_GET, AF_INET6, a, @@ -796,7 +796,7 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = NM_IP_CONFIG_SOURCE_USER, - .network = *nmtst_inet6_from_string("2001:db8:a:b:0:0:0:0"), + .network = *nmtst_inet6_from_string_p("2001:db8:a:b:0:0:0:0"), .plen = 64, .gateway = in6addr_any, .metric = 1024, @@ -811,7 +811,7 @@ test_ip6_route_options(gconstpointer test_data) case 2: addr[addr_n++] = ((NMPlatformIP6Address){ .ifindex = IFINDEX, - .address = *nmtst_inet6_from_string("2000::2"), + .address = *nmtst_inet6_from_string_p("2000::2"), .plen = 128, .peer_address = in6addr_any, .lifetime = NM_PLATFORM_LIFETIME_PERMANENT, @@ -821,17 +821,17 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = NM_IP_CONFIG_SOURCE_USER, - .network = *nmtst_inet6_from_string("1010::1"), + .network = *nmtst_inet6_from_string_p("1010::1"), .plen = 128, .gateway = in6addr_any, .metric = 256, - .pref_src = *nmtst_inet6_from_string("2000::2"), + .pref_src = *nmtst_inet6_from_string_p("2000::2"), }); break; case 3: addr[addr_n++] = ((NMPlatformIP6Address){ .ifindex = IFINDEX, - .address = *nmtst_inet6_from_string("2001:db8:8086::5"), + .address = *nmtst_inet6_from_string_p("2001:db8:8086::5"), .plen = 128, .peer_address = in6addr_any, .lifetime = NM_PLATFORM_LIFETIME_PERMANENT, @@ -841,7 +841,7 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER), - .network = *nmtst_inet6_from_string("2001:db8:8086::"), + .network = *nmtst_inet6_from_string_p("2001:db8:8086::"), .plen = 110, .metric = 10021, .mss = 0, @@ -849,9 +849,9 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER), - .network = *nmtst_inet6_from_string("2001:db8:abad:c0de::"), + .network = *nmtst_inet6_from_string_p("2001:db8:abad:c0de::"), .plen = 64, - .gateway = *nmtst_inet6_from_string("2001:db8:8086::1"), + .gateway = *nmtst_inet6_from_string_p("2001:db8:8086::1"), .metric = 21, .mss = 0, }); @@ -1330,7 +1330,7 @@ _rule_create_random(NMPlatform *platform) p_addr->addr4 = nmtst_inet4_from_string(nm_sprintf_buf(saddr, "192.192.5.%u", (~p) % 256u)); else - p_addr->addr6 = *nmtst_inet6_from_string( + p_addr->addr6 = *nmtst_inet6_from_string_p( nm_sprintf_buf(saddr, "1:2:3:4::f:%02x", (~p) % 256u)); } else if ((p % 3u) == 1) nmtst_rand_buf(NULL, p_addr, addr_size); diff --git a/src/core/tests/test-core.c b/src/core/tests/test-core.c index 07309518f1..7c29c6fcad 100644 --- a/src/core/tests/test-core.c +++ b/src/core/tests/test-core.c @@ -152,8 +152,8 @@ test_logging_error(void) static void _test_same_prefix(const char *a1, const char *a2, guint8 plen) { - struct in6_addr a = *nmtst_inet6_from_string(a1); - struct in6_addr b = *nmtst_inet6_from_string(a2); + struct in6_addr a = *nmtst_inet6_from_string_p(a1); + struct in6_addr b = *nmtst_inet6_from_string_p(a2); g_assert(nm_ip6_addr_same_prefix(&a, &b, plen)); } diff --git a/src/core/tests/test-l3cfg.c b/src/core/tests/test-l3cfg.c index 29ccb27e24..652aa8b6e5 100644 --- a/src/core/tests/test-l3cfg.c +++ b/src/core/tests/test-l3cfg.c @@ -418,7 +418,7 @@ test_l3cfg(gconstpointer test_data) nm_l3_config_data_add_address_6( l3cd, - NM_PLATFORM_IP6_ADDRESS_INIT(.address = *nmtst_inet6_from_string("1:2:3:4::45"), + NM_PLATFORM_IP6_ADDRESS_INIT(.address = *nmtst_inet6_from_string_p("1:2:3:4::45"), .plen = 64, )); if (nmtst_get_rand_one_case_in(2)) @@ -985,7 +985,7 @@ test_l3_ipv6ll(gconstpointer test_data) nmtstp_ip6_address_add(tdata->f->platform, -1, tdata->f->ifindex1, - *nmtst_inet6_from_string(_LLADDR_TEST1), + *nmtst_inet6_from_string_p(_LLADDR_TEST1), 64, in6addr_any, NM_PLATFORM_LIFETIME_PERMANENT, diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c index 6a85fe4c79..fa2a3823c9 100644 --- a/src/libnm-core-impl/tests/test-general.c +++ b/src/libnm-core-impl/tests/test-general.c @@ -10430,7 +10430,7 @@ static void test_nm_ip_addr_zero(void) { in_addr_t a4 = nmtst_inet4_from_string("0.0.0.0"); - struct in6_addr a6 = *nmtst_inet6_from_string("::"); + struct in6_addr a6 = *nmtst_inet6_from_string_p("::"); char buf[NM_INET_ADDRSTRLEN]; NMIPAddr a = NM_IP_ADDR_INIT; diff --git a/src/libnm-glib-aux/nm-test-utils.h b/src/libnm-glib-aux/nm-test-utils.h index 6b4ed18916..bda021ba1e 100644 --- a/src/libnm-glib-aux/nm-test-utils.h +++ b/src/libnm-glib-aux/nm-test-utils.h @@ -1589,7 +1589,7 @@ nmtst_inet4_from_string(const char *str) } static inline const struct in6_addr * -nmtst_inet6_from_string(const char *str) +nmtst_inet6_from_string_p(const char *str) { static _nm_thread_local struct in6_addr addr; int success; @@ -1614,7 +1614,7 @@ nmtst_inet_from_string(int addr_family, const char *str) return &a; } if (addr_family == AF_INET6) - return nmtst_inet6_from_string(str); + return nmtst_inet6_from_string_p(str); g_assert_not_reached(); return NULL; @@ -1673,7 +1673,7 @@ _nmtst_assert_ip6_address(const char *file, if (!addr) addr = &any; - if (memcmp(nmtst_inet6_from_string(str_expected), addr, sizeof(*addr)) != 0) { + if (memcmp(nmtst_inet6_from_string_p(str_expected), addr, sizeof(*addr)) != 0) { char buf[100]; g_error("%s:%d: Unexpected IPv6 address: expected %s, got %s", From edfb4e578e929f50e641d476d74b64749d0704bf Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 25 Oct 2022 19:32:45 +0200 Subject: [PATCH 5/6] platform/tests: add nmtst_inet6_from_string() helper This returns a struct (not a pointer like nmtst_inet6_from_string_p()). It is thus consistent with nmtst_inet4_from_string(). --- src/libnm-glib-aux/nm-test-utils.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libnm-glib-aux/nm-test-utils.h b/src/libnm-glib-aux/nm-test-utils.h index bda021ba1e..bfa441541a 100644 --- a/src/libnm-glib-aux/nm-test-utils.h +++ b/src/libnm-glib-aux/nm-test-utils.h @@ -1604,6 +1604,22 @@ nmtst_inet6_from_string_p(const char *str) return &addr; } +static inline struct in6_addr +nmtst_inet6_from_string(const char *str) +{ + struct in6_addr addr; + int success; + + if (!str) + addr = in6addr_any; + else { + success = inet_pton(AF_INET6, str, &addr); + g_assert(success == 1); + } + + return addr; +} + static inline gconstpointer nmtst_inet_from_string(int addr_family, const char *str) { From ff9f413fcc16b3524f8ae9318826b3359891954a Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 25 Oct 2022 20:23:16 +0200 Subject: [PATCH 6/6] platform/tests: use nmtst_inet6_from_string() instead of *nmtst_inet6_from_string_p() --- src/core/nm-test-utils-core.h | 10 ++++----- src/core/platform/nm-fake-platform.c | 2 +- src/core/platform/tests/test-link.c | 26 ++++++++++++------------ src/core/platform/tests/test-route.c | 18 ++++++++-------- src/core/tests/test-core.c | 4 ++-- src/core/tests/test-l3cfg.c | 4 ++-- src/libnm-core-impl/tests/test-general.c | 2 +- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/core/nm-test-utils-core.h b/src/core/nm-test-utils-core.h index 0ea41ba4bd..725f58d2ce 100644 --- a/src/core/nm-test-utils-core.h +++ b/src/core/nm-test-utils-core.h @@ -72,8 +72,8 @@ nmtst_platform_ip6_address(const char *address, const char *peer_address, guint g_assert(plen <= 128); memset(&addr, 0, sizeof(addr)); - addr.address = *nmtst_inet6_from_string_p(address); - addr.peer_address = *nmtst_inet6_from_string_p(peer_address); + addr.address = nmtst_inet6_from_string(address); + addr.peer_address = nmtst_inet6_from_string(peer_address); addr.plen = plen; return &addr; @@ -148,10 +148,10 @@ nmtst_platform_ip6_route(const char *network, guint plen, const char *gateway, c nm_assert(plen <= 128); memset(&route, 0, sizeof(route)); - route.network = *nmtst_inet6_from_string_p(network); + route.network = nmtst_inet6_from_string(network); route.plen = plen; - route.gateway = *nmtst_inet6_from_string_p(gateway); - route.pref_src = *nmtst_inet6_from_string_p(pref_src); + route.gateway = nmtst_inet6_from_string(gateway); + route.pref_src = nmtst_inet6_from_string(pref_src); return &route; } diff --git a/src/core/platform/nm-fake-platform.c b/src/core/platform/nm-fake-platform.c index 269fca6635..8740dbb908 100644 --- a/src/core/platform/nm-fake-platform.c +++ b/src/core/platform/nm-fake-platform.c @@ -271,7 +271,7 @@ link_add_pre(NMPlatform *platform, g_assert(address_len == 0); device->obj = o; - device->ip6_lladdr = *nmtst_inet6_from_string_p(ip6_lladdr); + device->ip6_lladdr = nmtst_inet6_from_string(ip6_lladdr); return device; } diff --git a/src/core/platform/tests/test-link.c b/src/core/platform/tests/test-link.c index ad2bee2c4b..a925a60598 100644 --- a/src/core/platform/tests/test-link.c +++ b/src/core/platform/tests/test-link.c @@ -1203,8 +1203,8 @@ _test_wireguard_change(NMPlatform *platform, int ifindex, int test_mode) .in6 = { .sin6_family = AF_INET6, - .sin6_addr = *nmtst_inet6_from_string_p( - nm_sprintf_buf(s_addr, "a:b:c:e::1:%d", i)), + .sin6_addr = + nmtst_inet6_from_string(nm_sprintf_buf(s_addr, "a:b:c:e::1:%d", i)), .sin6_port = htons(16000 + i), }, }; @@ -1225,7 +1225,7 @@ _test_wireguard_change(NMPlatform *platform, int ifindex, int test_mode) nm_sprintf_buf(s_addr, "10.%u.%u.0", i, i_allowed_ips)); aip->mask = 32 - (i_allowed_ips % 8); } else { - aip->addr.addr6 = *nmtst_inet6_from_string_p( + aip->addr.addr6 = nmtst_inet6_from_string( nm_sprintf_buf(s_addr, "a:d:f:%02x:%02x::", i, i_allowed_ips)); aip->mask = 128 - (i_allowed_ips % 10); } @@ -1412,8 +1412,8 @@ test_software_detect(gconstpointer user_data) switch (test_data->test_mode) { case 0: - lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fd01::15"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fd01::16"); + lnk_ip6tnl.local = nmtst_inet6_from_string("fd01::15"); + lnk_ip6tnl.remote = nmtst_inet6_from_string("fd01::16"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.tclass = 20; lnk_ip6tnl.encap_limit = 6; @@ -1421,8 +1421,8 @@ test_software_detect(gconstpointer user_data) lnk_ip6tnl.proto = IPPROTO_IPV6; break; case 1: - lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fd01::17"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fd01::18"); + lnk_ip6tnl.local = nmtst_inet6_from_string("fd01::17"); + lnk_ip6tnl.remote = nmtst_inet6_from_string("fd01::18"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.tclass = 0; lnk_ip6tnl.encap_limit = 0; @@ -1452,8 +1452,8 @@ test_software_detect(gconstpointer user_data) gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_gre", NULL) != 0; } - lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fd01::42"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fd01::aaaa"); + lnk_ip6tnl.local = nmtst_inet6_from_string("fd01::42"); + lnk_ip6tnl.remote = nmtst_inet6_from_string("fd01::aaaa"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.tclass = 21; lnk_ip6tnl.flow_label = 1338; @@ -1479,8 +1479,8 @@ test_software_detect(gconstpointer user_data) gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_gre", NULL) != 0; } - lnk_ip6tnl.local = *nmtst_inet6_from_string_p("fe80::abcd"); - lnk_ip6tnl.remote = *nmtst_inet6_from_string_p("fc01::bbbb"); + lnk_ip6tnl.local = nmtst_inet6_from_string("fe80::abcd"); + lnk_ip6tnl.remote = nmtst_inet6_from_string("fc01::bbbb"); lnk_ip6tnl.parent_ifindex = ifindex_parent; lnk_ip6tnl.ttl = 10; lnk_ip6tnl.tclass = 22; @@ -1608,8 +1608,8 @@ test_software_detect(gconstpointer user_data) case 1: lnk_vxlan.parent_ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, PARENT_NAME); lnk_vxlan.id = 11214423; - lnk_vxlan.local6 = *nmtst_inet6_from_string_p("1:2:3:4:334:23::23"); - lnk_vxlan.group6 = *nmtst_inet6_from_string_p("ff0e::115"); + lnk_vxlan.local6 = nmtst_inet6_from_string("1:2:3:4:334:23::23"); + lnk_vxlan.group6 = nmtst_inet6_from_string("ff0e::115"); lnk_vxlan.ttl = 32; lnk_vxlan.dst_port = 57412; lnk_vxlan.src_port_min = 1000; diff --git a/src/core/platform/tests/test-route.c b/src/core/platform/tests/test-route.c index 3b3a3298f8..871263c61f 100644 --- a/src/core/platform/tests/test-route.c +++ b/src/core/platform/tests/test-route.c @@ -796,7 +796,7 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = NM_IP_CONFIG_SOURCE_USER, - .network = *nmtst_inet6_from_string_p("2001:db8:a:b:0:0:0:0"), + .network = nmtst_inet6_from_string("2001:db8:a:b:0:0:0:0"), .plen = 64, .gateway = in6addr_any, .metric = 1024, @@ -811,7 +811,7 @@ test_ip6_route_options(gconstpointer test_data) case 2: addr[addr_n++] = ((NMPlatformIP6Address){ .ifindex = IFINDEX, - .address = *nmtst_inet6_from_string_p("2000::2"), + .address = nmtst_inet6_from_string("2000::2"), .plen = 128, .peer_address = in6addr_any, .lifetime = NM_PLATFORM_LIFETIME_PERMANENT, @@ -821,17 +821,17 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = NM_IP_CONFIG_SOURCE_USER, - .network = *nmtst_inet6_from_string_p("1010::1"), + .network = nmtst_inet6_from_string("1010::1"), .plen = 128, .gateway = in6addr_any, .metric = 256, - .pref_src = *nmtst_inet6_from_string_p("2000::2"), + .pref_src = nmtst_inet6_from_string("2000::2"), }); break; case 3: addr[addr_n++] = ((NMPlatformIP6Address){ .ifindex = IFINDEX, - .address = *nmtst_inet6_from_string_p("2001:db8:8086::5"), + .address = nmtst_inet6_from_string("2001:db8:8086::5"), .plen = 128, .peer_address = in6addr_any, .lifetime = NM_PLATFORM_LIFETIME_PERMANENT, @@ -841,7 +841,7 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER), - .network = *nmtst_inet6_from_string_p("2001:db8:8086::"), + .network = nmtst_inet6_from_string("2001:db8:8086::"), .plen = 110, .metric = 10021, .mss = 0, @@ -849,9 +849,9 @@ test_ip6_route_options(gconstpointer test_data) rts_add[rts_n++] = ((NMPlatformIP6Route){ .ifindex = IFINDEX, .rt_source = nmp_utils_ip_config_source_round_trip_rtprot(NM_IP_CONFIG_SOURCE_USER), - .network = *nmtst_inet6_from_string_p("2001:db8:abad:c0de::"), + .network = nmtst_inet6_from_string("2001:db8:abad:c0de::"), .plen = 64, - .gateway = *nmtst_inet6_from_string_p("2001:db8:8086::1"), + .gateway = nmtst_inet6_from_string("2001:db8:8086::1"), .metric = 21, .mss = 0, }); @@ -1330,7 +1330,7 @@ _rule_create_random(NMPlatform *platform) p_addr->addr4 = nmtst_inet4_from_string(nm_sprintf_buf(saddr, "192.192.5.%u", (~p) % 256u)); else - p_addr->addr6 = *nmtst_inet6_from_string_p( + p_addr->addr6 = nmtst_inet6_from_string( nm_sprintf_buf(saddr, "1:2:3:4::f:%02x", (~p) % 256u)); } else if ((p % 3u) == 1) nmtst_rand_buf(NULL, p_addr, addr_size); diff --git a/src/core/tests/test-core.c b/src/core/tests/test-core.c index 7c29c6fcad..887803bffe 100644 --- a/src/core/tests/test-core.c +++ b/src/core/tests/test-core.c @@ -152,8 +152,8 @@ test_logging_error(void) static void _test_same_prefix(const char *a1, const char *a2, guint8 plen) { - struct in6_addr a = *nmtst_inet6_from_string_p(a1); - struct in6_addr b = *nmtst_inet6_from_string_p(a2); + struct in6_addr a = nmtst_inet6_from_string(a1); + struct in6_addr b = nmtst_inet6_from_string(a2); g_assert(nm_ip6_addr_same_prefix(&a, &b, plen)); } diff --git a/src/core/tests/test-l3cfg.c b/src/core/tests/test-l3cfg.c index 652aa8b6e5..ba0c1b5772 100644 --- a/src/core/tests/test-l3cfg.c +++ b/src/core/tests/test-l3cfg.c @@ -418,7 +418,7 @@ test_l3cfg(gconstpointer test_data) nm_l3_config_data_add_address_6( l3cd, - NM_PLATFORM_IP6_ADDRESS_INIT(.address = *nmtst_inet6_from_string_p("1:2:3:4::45"), + NM_PLATFORM_IP6_ADDRESS_INIT(.address = nmtst_inet6_from_string("1:2:3:4::45"), .plen = 64, )); if (nmtst_get_rand_one_case_in(2)) @@ -985,7 +985,7 @@ test_l3_ipv6ll(gconstpointer test_data) nmtstp_ip6_address_add(tdata->f->platform, -1, tdata->f->ifindex1, - *nmtst_inet6_from_string_p(_LLADDR_TEST1), + nmtst_inet6_from_string(_LLADDR_TEST1), 64, in6addr_any, NM_PLATFORM_LIFETIME_PERMANENT, diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c index fa2a3823c9..a45ead3b9f 100644 --- a/src/libnm-core-impl/tests/test-general.c +++ b/src/libnm-core-impl/tests/test-general.c @@ -10430,7 +10430,7 @@ static void test_nm_ip_addr_zero(void) { in_addr_t a4 = nmtst_inet4_from_string("0.0.0.0"); - struct in6_addr a6 = *nmtst_inet6_from_string_p("::"); + struct in6_addr a6 = nmtst_inet6_from_string("::"); char buf[NM_INET_ADDRSTRLEN]; NMIPAddr a = NM_IP_ADDR_INIT;