diff options
author | Thomas Haller <thaller@redhat.com> | 2019-06-11 08:48:52 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-06-11 08:48:52 +0200 |
commit | 645261b182d5ec58cd8b466921f315b49a177d91 (patch) | |
tree | 759474cb1eceee3356134b09d3e229817b6f673b | |
parent | 109b3a5bb1a1b8e20bd44061c353714477b408a4 (diff) | |
parent | 82e87de4980238a4a6a64a0bee6428379ede4325 (diff) | |
download | NetworkManager-645261b182d5ec58cd8b466921f315b49a177d91.tar.gz |
platform: merge branch 'th/platform-link-broadcast'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/174
-rw-r--r-- | libnm-core/tests/test-general.c | 20 | ||||
-rw-r--r-- | libnm-core/tests/test-setting.c | 26 | ||||
-rw-r--r-- | shared/nm-glib-aux/nm-shared-utils.h | 2 | ||||
-rw-r--r-- | shared/nm-utils/nm-test-utils.h | 15 | ||||
-rw-r--r-- | shared/nm-utils/tests/test-shared-general.c | 8 | ||||
-rw-r--r-- | src/devices/nm-device.c | 12 | ||||
-rw-r--r-- | src/devices/tests/test-lldp.c | 2 | ||||
-rw-r--r-- | src/platform/nm-fake-platform.c | 12 | ||||
-rw-r--r-- | src/platform/nm-linux-platform.c | 44 | ||||
-rw-r--r-- | src/platform/nm-platform.c | 140 | ||||
-rw-r--r-- | src/platform/nm-platform.h | 19 | ||||
-rw-r--r-- | src/platform/tests/test-common.c | 8 | ||||
-rw-r--r-- | src/platform/tests/test-link.c | 54 | ||||
-rw-r--r-- | src/platform/tests/test-nmp-object.c | 4 | ||||
-rw-r--r-- | src/platform/tests/test-platform-general.c | 27 | ||||
-rw-r--r-- | src/platform/tests/test-route.c | 68 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 22 | ||||
-rw-r--r-- | src/settings/plugins/keyfile/tests/test-keyfile-settings.c | 4 | ||||
-rw-r--r-- | src/tests/test-core-with-expect.c | 2 | ||||
-rw-r--r-- | src/tests/test-core.c | 20 | ||||
-rw-r--r-- | src/tests/test-systemd.c | 10 |
21 files changed, 313 insertions, 206 deletions
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c index 1c023b65bd..c621615dcd 100644 --- a/libnm-core/tests/test-general.c +++ b/libnm-core/tests/test-general.c @@ -601,7 +601,7 @@ test_nm_utils_strsplit_set (void) words_exp = g_ptr_array_new_with_free_func (g_free); for (test_run = 0; test_run < 100; test_run++) { gboolean f_allow_escaping = nmtst_get_rand_bool (); - guint words_len = nmtst_get_rand_int () % 100; + guint words_len = nmtst_get_rand_uint32 () % 100; gs_free char *str = NULL; guint i; @@ -611,14 +611,14 @@ test_nm_utils_strsplit_set (void) char *word; guint j; - word_len = nmtst_get_rand_int (); + word_len = nmtst_get_rand_uint32 (); if ((word_len % 100) < 30) word_len = 0; else word_len = (word_len >> 10) % 100; word = g_new (char, word_len + 3); for (j = 0; j < word_len; ) { - guint32 p = nmtst_get_rand_int (); + guint32 p = nmtst_get_rand_uint32 (); static const char delimiters_arr[] = { DELIMITERS_C }; static const char regular_chars[] = "abcdefghijklmnopqrstuvwxyz"; @@ -706,7 +706,7 @@ _do_test_c_list_sort (CListSort *elements, guint n_list, gboolean headless) c_list_init (&head); for (i = 0; i < n_list; i++) { el = &elements[i]; - el->val = nmtst_get_rand_int () % (2*n_list); + el->val = nmtst_get_rand_uint32 () % (2*n_list); c_list_link_tail (&head, &el->lst); } @@ -767,7 +767,7 @@ test_c_list_sort (void) elements = g_new0 (CListSort, N_ELEMENTS); for (n_list = 1; n_list < N_ELEMENTS; n_list++) { if (n_list > 150) { - n_list += nmtst_get_rand_int () % n_list; + n_list += nmtst_get_rand_uint32 () % n_list; if (n_list >= N_ELEMENTS) break; } @@ -775,7 +775,7 @@ test_c_list_sort (void) const guint N_REPEAT = n_list > 50 ? 1 : 5; for (repeat = 0; repeat < N_REPEAT; repeat++) - _do_test_c_list_sort (elements, n_list, nmtst_get_rand_int () % 2); + _do_test_c_list_sort (elements, n_list, nmtst_get_rand_uint32 () % 2); } } } @@ -3501,7 +3501,7 @@ test_setting_compare_addresses (void) nm_ip_address_unref (a); - if (nmtst_get_rand_int () % 2) + if (nmtst_get_rand_uint32 () % 2) NMTST_SWAP (s1, s2); success = nm_setting_compare (s1, s2, NM_SETTING_COMPARE_FLAG_EXACT); @@ -3533,7 +3533,7 @@ test_setting_compare_routes (void) nm_ip_route_unref (r); - if (nmtst_get_rand_int () % 2) + if (nmtst_get_rand_uint32 () % 2) NMTST_SWAP (s1, s2); success = nm_setting_compare (s1, s2, NM_SETTING_COMPARE_FLAG_EXACT); @@ -6081,7 +6081,7 @@ test_hexstr2bin (void) static void _do_strquote (const char *str, gsize buf_len, const char *expected) { - char canary = (char) nmtst_get_rand_int (); + char canary = (char) nmtst_get_rand_uint32 (); gs_free char *buf_full = g_malloc (buf_len + 2); char *buf = &buf_full[1]; const char *b; @@ -7214,7 +7214,7 @@ test_nm_utils_ptrarray_find_binary_search_with_duplicates (void) /* fill with random numbers... surely there are some duplicates * there... or maybe even there are none... */ for (i = 0; i < i_len; i++) - arr[i] = GINT_TO_POINTER (nmtst_get_rand_int () % (i_len + BIN_SEARCH_W_DUPS_JITTER)); + arr[i] = GINT_TO_POINTER (nmtst_get_rand_uint32 () % (i_len + BIN_SEARCH_W_DUPS_JITTER)); g_qsort_with_data (arr, i_len, sizeof (gpointer), diff --git a/libnm-core/tests/test-setting.c b/libnm-core/tests/test-setting.c index d6ce5172b4..1484cbf1ab 100644 --- a/libnm-core/tests/test-setting.c +++ b/libnm-core/tests/test-setting.c @@ -101,8 +101,8 @@ _connection_new_from_dbus_strict (GVariant *dict, * after accounting for normalization. */ for (i = 0; i < 10; i++) { NMConnection *cons[] = { con_x_0, con_x_s, con_x_e, con_n_0, con_n_s, con_n_e }; - guint idx_a = (nmtst_get_rand_int () % G_N_ELEMENTS (cons)); - guint idx_b = (nmtst_get_rand_int () % G_N_ELEMENTS (cons)); + guint idx_a = (nmtst_get_rand_uint32 () % G_N_ELEMENTS (cons)); + guint idx_b = (nmtst_get_rand_uint32 () % G_N_ELEMENTS (cons)); gboolean normalize_a, normalize_b; if (idx_a <= 2 && idx_b <= 2) { @@ -137,14 +137,14 @@ _create_random_ipaddr (int addr_family, gboolean as_service) g_assert (NM_IN_SET (addr_family, AF_INET, AF_INET6)); if (as_service) - num = (nmtst_get_rand_int () % 1000) + 30000; + num = (nmtst_get_rand_uint32 () % 1000) + 30000; else num = addr_family == AF_INET ? 32 : 128; if (addr_family == AF_INET) - return g_strdup_printf ("192.168.%u.%u%c%d", nmtst_get_rand_int () % 256, nmtst_get_rand_int () % 256, delimiter, num); + return g_strdup_printf ("192.168.%u.%u%c%d", nmtst_get_rand_uint32 () % 256, nmtst_get_rand_uint32 () % 256, delimiter, num); else - return g_strdup_printf ("a:b:c::%02x:%02x%c%d", nmtst_get_rand_int () % 256, nmtst_get_rand_int () % 256, delimiter, num); + return g_strdup_printf ("a:b:c::%02x:%02x%c%d", nmtst_get_rand_uint32 () % 256, nmtst_get_rand_uint32 () % 256, delimiter, num); } /*****************************************************************************/ @@ -2263,13 +2263,13 @@ _rndt_wired_add_s390_options (NMSettingWired *s_wired, n_opts = NM_PTRARRAY_LEN (option_names); opt_keys = g_new (const char *, (n_opts + 1)); nmtst_rand_perm (NULL, opt_keys, option_names, sizeof (const char *), n_opts); - n_opts = nmtst_get_rand_int () % (n_opts + 1); + n_opts = nmtst_get_rand_uint32 () % (n_opts + 1); opt_keys[n_opts] = NULL; opt_vals = g_new0 (char *, n_opts + 1); opt_found = g_new0 (bool, n_opts + 1); for (i = 0; i < n_opts; i++) { - guint p = nmtst_get_rand_int () % 1000; + guint p = nmtst_get_rand_uint32 () % 1000; if (p < 200) opt_vals[i] = nm_strdup_int (i); @@ -2352,7 +2352,7 @@ _rndt_wg_peers_create (void) wg_peers = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_wireguard_peer_unref); - n = nmtst_get_rand_int () % 10; + n = nmtst_get_rand_uint32 () % 10; for (i = 0; i < n; i++) { NMWireGuardPeer *peer; guint8 public_key_buf[NM_WIREGUARD_PUBLIC_KEY_LEN]; @@ -2383,12 +2383,12 @@ _rndt_wg_peers_create (void) NM_SETTING_SECRET_FLAG_AGENT_OWNED)); nm_wireguard_peer_set_persistent_keepalive (peer, - nmtst_rand_select ((guint32) 0, nmtst_get_rand_int ())); + nmtst_rand_select ((guint32) 0, nmtst_get_rand_uint32 ())); if (!nm_wireguard_peer_set_endpoint (peer, nmtst_rand_select (s_endpoint, NULL), TRUE)) g_assert_not_reached (); - n_aip = nmtst_rand_select (0, nmtst_get_rand_int () % 10); + n_aip = nmtst_rand_select (0, nmtst_get_rand_uint32 () % 10); for (i_aip = 0; i_aip < n_aip; i_aip++) { gs_free char *aip = NULL; @@ -2585,7 +2585,7 @@ test_roundtrip_conversion (gconstpointer test_data) const char *UUID= "63376701-b61e-4318-bf7e-664a1c1eeaab"; const char *INTERFACE_NAME = nm_sprintf_bufa (100, "ifname%d", MODE); guint32 ETH_MTU = nmtst_rand_select ((guint32) 0u, - nmtst_get_rand_int ()); + nmtst_get_rand_uint32 ()); const char *WG_PRIVATE_KEY = nmtst_get_rand_bool () ? "yGXGK+5bVnxSJUejH4vbpXbq+ZtaG4NB8IHRK/aVtE0=" : NULL; @@ -2593,9 +2593,9 @@ test_roundtrip_conversion (gconstpointer test_data) NM_SETTING_SECRET_FLAG_NOT_SAVED, NM_SETTING_SECRET_FLAG_AGENT_OWNED); const guint WG_LISTEN_PORT = nmtst_rand_select (0u, - nmtst_get_rand_int () % 0x10000); + nmtst_get_rand_uint32 () % 0x10000); const guint WG_FWMARK = nmtst_rand_select (0u, - nmtst_get_rand_int ()); + nmtst_get_rand_uint32 ()); gs_unref_ptrarray GPtrArray *kf_data_arr = g_ptr_array_new_with_free_func (g_free); gs_unref_ptrarray GPtrArray *wg_peers = NULL; const NMConnectionSerializationFlags dbus_serialization_flags[] = { diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h index 32088c57fa..6471fea36f 100644 --- a/shared/nm-glib-aux/nm-shared-utils.h +++ b/shared/nm-glib-aux/nm-shared-utils.h @@ -245,7 +245,7 @@ nm_ip4_addr_is_localhost (in_addr_t addr4) #define NM_CMP_FIELD_MEMCMP_LEN(a, b, field, len) \ NM_CMP_RETURN (memcmp (&((a)->field), &((b)->field), \ - MIN (len, sizeof ((a)->field)))) + NM_MIN (len, sizeof ((a)->field)))) #define NM_CMP_FIELD_MEMCMP(a, b, field) \ NM_CMP_RETURN (memcmp (&((a)->field), \ diff --git a/shared/nm-utils/nm-test-utils.h b/shared/nm-utils/nm-test-utils.h index a74633c0ae..07cda38856 100644 --- a/shared/nm-utils/nm-test-utils.h +++ b/shared/nm-utils/nm-test-utils.h @@ -858,15 +858,22 @@ nmtst_get_rand (void) } static inline guint32 -nmtst_get_rand_int (void) +nmtst_get_rand_uint32 (void) { return g_rand_int (nmtst_get_rand ()); } +static inline guint +nmtst_get_rand_uint (void) +{ + G_STATIC_ASSERT_EXPR (sizeof (guint32) == sizeof (guint)); + return nmtst_get_rand_uint32 (); +} + static inline gboolean nmtst_get_rand_bool (void) { - return nmtst_get_rand_int () % 2; + return nmtst_get_rand_uint32 () % 2; } static inline gpointer @@ -901,7 +908,7 @@ nmtst_rand_buf (GRand *rand, gpointer buffer, gsize buffer_length) ({ \ typeof (v0) NM_UNIQ_T (UNIQ, uniq)[1 + NM_NARG (__VA_ARGS__)] = { (v0), __VA_ARGS__ }; \ \ - NM_UNIQ_T (UNIQ, uniq)[nmtst_get_rand_int () % G_N_ELEMENTS (NM_UNIQ_T (UNIQ, uniq))]; \ + NM_UNIQ_T (UNIQ, uniq)[nmtst_get_rand_uint32 () % G_N_ELEMENTS (NM_UNIQ_T (UNIQ, uniq))]; \ }) #define nmtst_rand_select(...) \ @@ -1933,7 +1940,7 @@ nmtst_assert_setting_is_equal (gconstpointer /* const NMSetting * */ a, NMSettingCompareFlags flags) { gs_unref_hashtable GHashTable *hash = NULL; - guint32 r = nmtst_get_rand_int (); + guint32 r = nmtst_get_rand_uint32 (); g_assert (NM_IS_SETTING (a)); g_assert (NM_IS_SETTING (b)); diff --git a/shared/nm-utils/tests/test-shared-general.c b/shared/nm-utils/tests/test-shared-general.c index ff0906fdf7..9582801eb1 100644 --- a/shared/nm-utils/tests/test-shared-general.c +++ b/shared/nm-utils/tests/test-shared-general.c @@ -149,10 +149,10 @@ test_nm_strndup_a (void) char ch; gsize i, l; - input = g_strnfill (nmtst_get_rand_int () % 20, 'x'); + input = g_strnfill (nmtst_get_rand_uint32 () % 20, 'x'); for (i = 0; input[i]; i++) { - while ((ch = ((char) nmtst_get_rand_int ())) == '\0') { + while ((ch = ((char) nmtst_get_rand_uint32 ())) == '\0') { /* repeat. */ } input[i] = ch; @@ -175,7 +175,7 @@ test_nm_strndup_a (void) gs_free char *dup_free = NULL; const char *dup; - l = nmtst_get_rand_int () % 23; + l = nmtst_get_rand_uint32 () % 23; dup = nm_strndup_a (10, input, l, &dup_free); g_assert (strncmp (dup, input, l) == 0); g_assert (strlen (dup) <= l); @@ -214,7 +214,7 @@ test_unaligned (void) guint8 val = 0; while (val == 0) - val = nmtst_get_rand_int () % 256; + val = nmtst_get_rand_uint32 () % 256; buf[shift] = val; diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 84ed214e45..1000342824 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -1913,7 +1913,7 @@ get_ip_iface_identifier (NMDevice *self, NMUtilsIPv6IfaceId *out_iid) const NMPlatformLink *pllink; const guint8 *hwaddr; guint8 pseudo_hwaddr[ETH_ALEN]; - guint hwaddr_len; + gsize hwaddr_len; int ifindex; gboolean success; @@ -1926,13 +1926,9 @@ get_ip_iface_identifier (NMDevice *self, NMUtilsIPv6IfaceId *out_iid) || NM_IN_SET (pllink->type, NM_LINK_TYPE_NONE, NM_LINK_TYPE_UNKNOWN)) return FALSE; - if (pllink->addr.len <= 0) + hwaddr = nmp_link_address_get (&pllink->l_address, &hwaddr_len); + if (hwaddr_len <= 0) return FALSE; - if (pllink->addr.len > NM_UTILS_HWADDR_LEN_MAX) - g_return_val_if_reached (FALSE); - - hwaddr = pllink->addr.data; - hwaddr_len = pllink->addr.len; if (pllink->type == NM_LINK_TYPE_6LOWPAN) { /* If the underlying IEEE 802.15.4 device has a short address we generate @@ -1964,7 +1960,7 @@ get_ip_iface_identifier (NMDevice *self, NMUtilsIPv6IfaceId *out_iid) out_iid); if (!success) { _LOGW (LOGD_PLATFORM, "failed to generate interface identifier " - "for link type %u hwaddr_len %u", pllink->type, (unsigned) pllink->addr.len); + "for link type %u hwaddr_len %zu", pllink->type, hwaddr_len); } return success; } diff --git a/src/devices/tests/test-lldp.c b/src/devices/tests/test-lldp.c index 7b135f5886..4cf0773462 100644 --- a/src/devices/tests/test-lldp.c +++ b/src/devices/tests/test-lldp.c @@ -457,7 +457,7 @@ _test_recv_fixture_setup (TestRecvFixture *fixture, gconstpointer user_data) fixture->ifindex = link->ifindex; fixture->fd = nm_steal_fd (&fd); - memcpy (fixture->mac, link->addr.data, ETH_ALEN); + memcpy (fixture->mac, link->l_address.data, ETH_ALEN); } typedef struct { diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c index 40a85390b6..ed538949e1 100644 --- a/src/platform/nm-fake-platform.c +++ b/src/platform/nm-fake-platform.c @@ -276,9 +276,9 @@ link_add_pre (NMPlatform *platform, o->_link.netlink.is_in_netlink = TRUE; if (address) { - g_assert (address_len > 0 && address_len <= sizeof (link->addr.data)); - memcpy (link->addr.data, address, address_len); - link->addr.len = address_len; + g_assert (address_len > 0 && address_len <= sizeof (link->l_address.data)); + memcpy (link->l_address.data, address, address_len); + link->l_address.len = address_len; } else g_assert (address_len == 0); @@ -584,9 +584,9 @@ link_set_address (NMPlatform *platform, int ifindex, gconstpointer addr, size_t return -NME_PL_EXISTS; obj_tmp = nmp_object_clone (device->obj, FALSE); - obj_tmp->link.addr.len = len; - memset (obj_tmp->link.addr.data, 0, sizeof (obj_tmp->link.addr.data)); - memcpy (obj_tmp->link.addr.data, addr, len); + obj_tmp->link.l_address.len = len; + memset (obj_tmp->link.l_address.data, 0, sizeof (obj_tmp->link.l_address.data)); + memcpy (obj_tmp->link.l_address.data, addr, len); link_set_obj (platform, device, obj_tmp); return 0; diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index ac8e869d8e..dbfc233f79 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -2587,6 +2587,25 @@ link_wireguard_change (NMPlatform *platform, /*****************************************************************************/ +static void +_nmp_link_address_set (NMPLinkAddress *dst, + const struct nlattr *nla) +{ + *dst = (NMPLinkAddress) { + .len = 0, + }; + if (nla) { + int l = nla_len (nla); + + if ( l > 0 + && l <= NM_UTILS_HWADDR_LEN_MAX) { + G_STATIC_ASSERT_EXPR (sizeof (dst->data) == NM_UTILS_HWADDR_LEN_MAX); + memcpy (dst->data, nla_data (nla), l); + dst->len = l; + } + } +} + /* Copied and heavily modified from libnl3's link_msg_parser(). */ static NMPObject * _new_from_nl_link (NMPlatform *platform, const NMPCache *cache, struct nlmsghdr *nlh, gboolean id_only) @@ -2630,6 +2649,7 @@ _new_from_nl_link (NMPlatform *platform, const NMPCache *cache, struct nlmsghdr const NMPObject *link_cached = NULL; const NMPObject *lnk_data = NULL; gboolean address_complete_from_cache = TRUE; + gboolean broadcast_complete_from_cache = TRUE; gboolean lnk_data_complete_from_cache = TRUE; gboolean need_ext_data = FALSE; gboolean af_inet6_token_valid = FALSE; @@ -2728,16 +2748,15 @@ _new_from_nl_link (NMPlatform *platform, const NMPCache *cache, struct nlmsghdr } if (tb[IFLA_ADDRESS]) { - int l = nla_len (tb[IFLA_ADDRESS]); - - if (l > 0 && l <= NM_UTILS_HWADDR_LEN_MAX) { - G_STATIC_ASSERT (NM_UTILS_HWADDR_LEN_MAX == sizeof (obj->link.addr.data)); - memcpy (obj->link.addr.data, nla_data (tb[IFLA_ADDRESS]), l); - obj->link.addr.len = l; - } + _nmp_link_address_set (&obj->link.l_address, tb[IFLA_ADDRESS]); address_complete_from_cache = FALSE; } + if (tb[IFLA_BROADCAST]) { + _nmp_link_address_set (&obj->link.l_broadcast, tb[IFLA_BROADCAST]); + broadcast_complete_from_cache = FALSE; + } + if (tb[IFLA_AF_SPEC]) { struct nlattr *af_attr; int remaining; @@ -2811,6 +2830,7 @@ _new_from_nl_link (NMPlatform *platform, const NMPCache *cache, struct nlmsghdr && ( lnk_data_complete_from_cache || need_ext_data || address_complete_from_cache + || broadcast_complete_from_cache || !af_inet6_token_valid || !af_inet6_addr_gen_mode_valid || !tb[IFLA_STATS64])) { @@ -2840,7 +2860,9 @@ _new_from_nl_link (NMPlatform *platform, const NMPCache *cache, struct nlmsghdr } if (address_complete_from_cache) - obj->link.addr = link_cached->link.addr; + obj->link.l_address = link_cached->link.l_address; + if (broadcast_complete_from_cache) + obj->link.l_broadcast = link_cached->link.l_broadcast; if (!af_inet6_token_valid) obj->link.inet6_token = link_cached->link.inet6_token; if (!af_inet6_addr_gen_mode_valid) @@ -5589,7 +5611,7 @@ cache_on_change (NMPlatform *platform, * Request it again. */ re_request_link = TRUE; } else if ( obj_new->link.type == NM_LINK_TYPE_ETHERNET - && obj_new->link.addr.len == 0) { + && obj_new->link.l_address.len == 0) { /* Due to a kernel bug, we sometimes receive spurious NEWLINK * messages after a wifi interface has disappeared. Since the * link is not present anymore we can't determine its type and @@ -6449,8 +6471,8 @@ retry: } else if ( NM_IN_SET (-((int) seq_result), ENFILE) && change_link_type == CHANGE_LINK_TYPE_SET_ADDRESS && (obj_cache = nmp_cache_lookup_link (nm_platform_get_cache (platform), ifindex)) - && obj_cache->link.addr.len == data->set_address.length - && memcmp (obj_cache->link.addr.data, data->set_address.address, data->set_address.length) == 0) { + && obj_cache->link.l_address.len == data->set_address.length + && memcmp (obj_cache->link.l_address.data, data->set_address.address, data->set_address.length) == 0) { /* workaround ENFILE which may be wrongly returned (bgo #770456). * If the MAC address is as expected, assume success? */ log_result = "success"; diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 4a98df84e8..0c3888a4d6 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -51,12 +51,58 @@ /*****************************************************************************/ -G_STATIC_ASSERT (sizeof ( ((NMPlatformLink *) NULL)->addr.data ) == NM_UTILS_HWADDR_LEN_MAX); G_STATIC_ASSERT (G_STRUCT_OFFSET (NMPlatformIPAddress, address_ptr) == G_STRUCT_OFFSET (NMPlatformIP4Address, address)); G_STATIC_ASSERT (G_STRUCT_OFFSET (NMPlatformIPAddress, address_ptr) == G_STRUCT_OFFSET (NMPlatformIP6Address, address)); G_STATIC_ASSERT (G_STRUCT_OFFSET (NMPlatformIPRoute, network_ptr) == G_STRUCT_OFFSET (NMPlatformIP4Route, network)); G_STATIC_ASSERT (G_STRUCT_OFFSET (NMPlatformIPRoute, network_ptr) == G_STRUCT_OFFSET (NMPlatformIP6Route, network)); +/*****************************************************************************/ + +G_STATIC_ASSERT (sizeof ( ((NMPLinkAddress *) NULL)->data ) == NM_UTILS_HWADDR_LEN_MAX); +G_STATIC_ASSERT (sizeof ( ((NMPlatformLink *) NULL)->l_address.data ) == NM_UTILS_HWADDR_LEN_MAX); +G_STATIC_ASSERT (sizeof ( ((NMPlatformLink *) NULL)->l_broadcast.data ) == NM_UTILS_HWADDR_LEN_MAX); + +static const char * +_nmp_link_address_to_string (const NMPLinkAddress *addr, + char buf[static (NM_UTILS_HWADDR_LEN_MAX * 3)]) +{ + nm_assert (addr); + + if (addr->len > 0) { + if (!nm_utils_hwaddr_ntoa_buf (addr->data, + addr->len, + TRUE, + buf, + NM_UTILS_HWADDR_LEN_MAX * 3)) { + buf[0] = '\0'; + g_return_val_if_reached (buf); + } + } else + buf[0] = '\0'; + + return buf; +} + +gconstpointer +nmp_link_address_get (const NMPLinkAddress *addr, size_t *length) +{ + if ( !addr + || addr->len <= 0) { + NM_SET_OUT (length, 0); + return NULL; + } + + if (addr->len > NM_UTILS_HWADDR_LEN_MAX) { + NM_SET_OUT (length, 0); + g_return_val_if_reached (NULL); + } + + NM_SET_OUT (length, addr->len); + return addr->data; +} + +/*****************************************************************************/ + #define _NMLOG_DOMAIN LOGD_PLATFORM #define _NMLOG_PREFIX_NAME "platform" @@ -941,14 +987,15 @@ nm_platform_link_get_by_ifname (NMPlatform *self, const char *ifname) } struct _nm_platform_link_get_by_address_data { - gconstpointer address; - guint8 length; + gconstpointer data; + guint8 len; }; static gboolean _nm_platform_link_get_by_address_match_link (const NMPObject *obj, struct _nm_platform_link_get_by_address_data *d) { - return obj->link.addr.len == d->length && !memcmp (obj->link.addr.data, d->address, d->length); + return obj->link.l_address.len == d->len + && !memcmp (obj->link.l_address.data, d->data, d->len); } /** @@ -968,8 +1015,8 @@ nm_platform_link_get_by_address (NMPlatform *self, { const NMPObject *obj; struct _nm_platform_link_get_by_address_data d = { - .address = address, - .length = length, + .data = address, + .len = length, }; _CHECK_SELF (self, klass, NULL); @@ -1507,19 +1554,7 @@ nm_platform_link_get_address (NMPlatform *self, int ifindex, size_t *length) const NMPlatformLink *pllink; pllink = nm_platform_link_get (self, ifindex); - if ( !pllink - || pllink->addr.len <= 0) { - NM_SET_OUT (length, 0); - return NULL; - } - - if (pllink->addr.len > NM_UTILS_HWADDR_LEN_MAX) { - NM_SET_OUT (length, 0); - g_return_val_if_reached (NULL); - } - - NM_SET_OUT (length, pllink->addr.len); - return pllink->addr.data; + return nmp_link_address_get (pllink ? &pllink->l_address : NULL, length); } /** @@ -2421,9 +2456,10 @@ nm_platform_link_6lowpan_get_properties (NMPlatform *self, int ifindex, int *out if (out_parent) { const NMPlatformLink *parent_plink; - parent_plink = nm_platform_link_get_by_address (self, NM_LINK_TYPE_WPAN, - plink->addr.data, - plink->addr.len); + parent_plink = nm_platform_link_get_by_address (self, + NM_LINK_TYPE_WPAN, + plink->l_address.data, + plink->l_address.len); NM_SET_OUT (out_parent, parent_plink ? parent_plink->ifindex : -1); } @@ -5354,31 +5390,36 @@ nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len) { char master[20]; char parent[20]; - GString *str_flags; + char str_flags[1 + NM_PLATFORM_LINK_FLAGS2STR_MAX_LEN + 1]; + char str_highlighted_flags[50]; + char *s; + gsize l; char str_addrmode[30]; - gs_free char *str_addr = NULL; + char str_address[NM_UTILS_HWADDR_LEN_MAX * 3]; + char str_broadcast[NM_UTILS_HWADDR_LEN_MAX * 3]; char str_inet6_token[NM_UTILS_INET_ADDRSTRLEN]; const char *str_link_type; if (!nm_utils_to_string_buffer_init_null (link, &buf, &len)) return buf; - str_flags = g_string_new (NULL); + s = str_highlighted_flags; + l = sizeof (str_highlighted_flags); if (NM_FLAGS_HAS (link->n_ifi_flags, IFF_NOARP)) - g_string_append (str_flags, "NOARP,"); + nm_utils_strbuf_append_str (&s, &l, "NOARP,"); if (NM_FLAGS_HAS (link->n_ifi_flags, IFF_UP)) - g_string_append (str_flags, "UP"); + nm_utils_strbuf_append_str (&s, &l, "UP"); else - g_string_append (str_flags, "DOWN"); + nm_utils_strbuf_append_str (&s, &l, "DOWN"); if (link->connected) - g_string_append (str_flags, ",LOWER_UP"); + nm_utils_strbuf_append_str (&s, &l, ",LOWER_UP"); + nm_assert (s > str_highlighted_flags && l > 0); if (link->n_ifi_flags) { - char str_flags_buf[64]; - - nm_platform_link_flags2str (link->n_ifi_flags, str_flags_buf, sizeof (str_flags_buf)); - g_string_append_printf (str_flags, ";%s", str_flags_buf); - } + str_flags[0] = ';'; + nm_platform_link_flags2str (link->n_ifi_flags, &str_flags[1], sizeof (str_flags) - 1); + } else + str_flags[0] = '\0'; if (link->master) g_snprintf (master, sizeof (master), " master %d", link->master); @@ -5392,8 +5433,8 @@ nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len) else parent[0] = 0; - if (link->addr.len) - str_addr = nm_utils_hwaddr_ntoa (link->addr.data, MIN (link->addr.len, sizeof (link->addr.data))); + _nmp_link_address_to_string (&link->l_address, str_address); + _nmp_link_address_to_string (&link->l_broadcast, str_broadcast); str_link_type = nm_link_type_to_string (link->type); @@ -5401,7 +5442,7 @@ nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len) "%d: " /* ifindex */ "%s" /* name */ "%s" /* parent */ - " <%s>" /* flags */ + " <%s%s>" /* flags */ " mtu %d" "%s" /* master */ " arp %u" /* arptype */ @@ -5409,7 +5450,8 @@ nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len) "%s%s" /* kind */ "%s" /* is-in-udev */ "%s%s" /* addr-gen-mode */ - "%s%s" /* addr */ + "%s%s" /* l_address */ + "%s%s" /* l_broadcast */ "%s%s" /* inet6_token */ "%s%s" /* driver */ " rx:%"G_GUINT64_FORMAT",%"G_GUINT64_FORMAT @@ -5418,7 +5460,8 @@ nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len) link->ifindex, link->name, parent, - str_flags->str, + str_highlighted_flags, + str_flags, link->mtu, master, link->arptype, str_link_type ?: "???", @@ -5427,15 +5470,16 @@ nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len) link->initialized ? " init" : " not-init", link->inet6_addr_gen_mode_inv ? " addrgenmode " : "", link->inet6_addr_gen_mode_inv ? nm_platform_link_inet6_addrgenmode2str (_nm_platform_uint8_inv (link->inet6_addr_gen_mode_inv), str_addrmode, sizeof (str_addrmode)) : "", - str_addr ? " addr " : "", - str_addr ?: "", + str_address[0] ? " addr " : "", + str_address[0] ? str_address : "", + str_broadcast[0] ? " brd " : "", + str_broadcast[0] ? str_broadcast : "", link->inet6_token.id ? " inet6token " : "", link->inet6_token.id ? nm_utils_inet6_interface_identifier_to_token (link->inet6_token, str_inet6_token) : "", link->driver ? " driver " : "", link->driver ?: "", link->rx_packets, link->rx_bytes, link->tx_packets, link->tx_bytes); - g_string_free (str_flags, TRUE); return buf; } @@ -6795,7 +6839,8 @@ nm_platform_link_hash_update (const NMPlatformLink *obj, NMHashState *h) nm_hash_update_str0 (h, obj->kind); nm_hash_update_str0 (h, obj->driver); /* nm_hash_update_mem() also hashes the length obj->addr.len */ - nm_hash_update_mem (h, obj->addr.data, obj->addr.len); + nm_hash_update_mem (h, obj->l_address.data, NM_MIN (obj->l_address.len, sizeof (obj->l_address.data))); + nm_hash_update_mem (h, obj->l_broadcast.data, NM_MIN (obj->l_broadcast.len, sizeof (obj->l_broadcast.data))); } int @@ -6812,12 +6857,15 @@ nm_platform_link_cmp (const NMPlatformLink *a, const NMPlatformLink *b) NM_CMP_FIELD (a, b, mtu); NM_CMP_FIELD_BOOL (a, b, initialized); NM_CMP_FIELD (a, b, arptype); - NM_CMP_FIELD (a, b, addr.len); + NM_CMP_FIELD (a, b, l_address.len); + NM_CMP_FIELD (a, b, l_broadcast.len); NM_CMP_FIELD (a, b, inet6_addr_gen_mode_inv); NM_CMP_FIELD_STR_INTERNED (a, b, kind); NM_CMP_FIELD_STR_INTERNED (a, b, driver); - if (a->addr.len) - NM_CMP_FIELD_MEMCMP_LEN (a, b, addr.data, a->addr.len); + if (a->l_address.len) + NM_CMP_FIELD_MEMCMP_LEN (a, b, l_address.data, a->l_address.len); + if (a->l_broadcast.len) + NM_CMP_FIELD_MEMCMP_LEN (a, b, l_broadcast.data, a->l_broadcast.len); NM_CMP_FIELD_MEMCMP (a, b, inet6_token); NM_CMP_FIELD (a, b, rx_packets); NM_CMP_FIELD (a, b, rx_bytes); diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h index 8c0a8764e2..70e956206c 100644 --- a/src/platform/nm-platform.h +++ b/src/platform/nm-platform.h @@ -159,6 +159,13 @@ typedef enum { NM_PLATFORM_ROUTING_RULE_CMP_TYPE_FULL, } NMPlatformRoutingRuleCmpType; +typedef struct { + guint8 data[20 /* NM_UTILS_HWADDR_LEN_MAX */ ]; + guint8 len; +} NMPLinkAddress; + +gconstpointer nmp_link_address_get (const NMPLinkAddress *addr, size_t *length); + typedef enum { /* match-flags are strictly inclusive. That means, @@ -230,11 +237,11 @@ struct _NMPlatformLink { /* rtnl_link_get_arptype(), ifinfomsg.ifi_type. */ guint32 arptype; - /* rtnl_link_get_addr(), IFLA_ADDRESS */ - struct { - guint8 data[20]; /* NM_UTILS_HWADDR_LEN_MAX */ - guint8 len; - } addr; + /* IFLA_ADDRESS */ + NMPLinkAddress l_address; + + /* IFLA_BROADCAST */ + NMPLinkAddress l_broadcast; /* rtnl_link_inet6_get_token(), IFLA_INET6_TOKEN */ NMUtilsIPv6IfaceId inet6_token; @@ -1784,6 +1791,8 @@ void nm_platform_lnk_wireguard_hash_update (const NMPlatformLnkWireGuard *obj, N void nm_platform_qdisc_hash_update (const NMPlatformQdisc *obj, NMHashState *h); void nm_platform_tfilter_hash_update (const NMPlatformTfilter *obj, NMHashState *h); +#define NM_PLATFORM_LINK_FLAGS2STR_MAX_LEN ((gsize) 162) + const char *nm_platform_link_flags2str (unsigned flags, char *buf, gsize len); const char *nm_platform_link_inet6_addrgenmode2str (guint8 mode, char *buf, gsize len); const char *nm_platform_addr_flags2str (unsigned flags, char *buf, gsize len); diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c index 7ebda9ff7e..8fa40c5fd3 100644 --- a/src/platform/tests/test-common.c +++ b/src/platform/tests/test-common.c @@ -679,7 +679,7 @@ nmtstp_run_command_check_external_global (void) { if (!nmtstp_is_root_test ()) return FALSE; - switch (nmtst_get_rand_int () % 3) { + switch (nmtst_get_rand_uint32 () % 3) { case 0: return -1; case 1: @@ -699,7 +699,7 @@ nmtstp_run_command_check_external (int external_command) } if (!nmtstp_is_root_test ()) return FALSE; - return (nmtst_get_rand_int () % 2) == 0; + return (nmtst_get_rand_uint32 () % 2) == 0; } /*****************************************************************************/ @@ -843,7 +843,7 @@ _ip_address_add (NMPlatform *platform, g_assert (flags == 0); if ( peer_address->addr4 != address->addr4 - || nmtst_get_rand_int () % 2) { + || nmtst_get_rand_uint32 () % 2) { /* If the peer is the same as the local address, we can omit it. The result should be identical */ nm_sprintf_buf (s_peer, " peer %s", nm_utils_inet4_ntop (peer_address->addr4, b2)); } else @@ -1994,7 +1994,7 @@ nmtstp_netns_select_random (NMPlatform **platforms, gsize n_platforms, NMPNetns for (i = 0; i < n_platforms; i++) g_assert (NM_IS_PLATFORM (platforms[i])); - i = nmtst_get_rand_int () % (n_platforms + 1); + i = nmtst_get_rand_uint32 () % (n_platforms + 1); if (i == 0) return; g_assert (nm_platform_netns_push (platforms[i - 1], netns)); diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c index bff030bfd3..3c322b9d16 100644 --- a/src/platform/tests/test-link.c +++ b/src/platform/tests/test-link.c @@ -515,8 +515,8 @@ test_bridge_addr (void) link = *plink; g_assert_cmpstr (link.name, ==, DEVICE_NAME); - g_assert_cmpint (link.addr.len, ==, sizeof (addr)); - g_assert (!memcmp (link.addr.data, addr, sizeof (addr))); + g_assert_cmpint (link.l_address.len, ==, sizeof (addr)); + g_assert (!memcmp (link.l_address.data, addr, sizeof (addr))); plink = nm_platform_link_get (NM_PLATFORM_GET, link.ifindex); g_assert (plink); @@ -538,8 +538,8 @@ test_bridge_addr (void) g_assert_cmpint (_nm_platform_uint8_inv (plink->inet6_addr_gen_mode_inv), ==, NM_IN6_ADDR_GEN_MODE_EUI64); } - g_assert_cmpint (plink->addr.len, ==, sizeof (addr)); - g_assert (!memcmp (plink->addr.data, addr, sizeof (addr))); + g_assert_cmpint (plink->l_address.len, ==, sizeof (addr)); + g_assert (!memcmp (plink->l_address.data, addr, sizeof (addr))); nmtstp_link_delete (NULL, -1, link.ifindex, link.name, TRUE); } @@ -2100,7 +2100,7 @@ test_create_many_links_do (guint n_devices) char name[64]; const NMPlatformLink *pllink; gs_unref_array GArray *ifindexes = g_array_sized_new (FALSE, FALSE, sizeof (int), n_devices); - const int EX = ((int) (nmtst_get_rand_int () % 4)) - 1; + const int EX = ((int) (nmtst_get_rand_uint32 () % 4)) - 1; g_assert (EX >= -1 && EX <= 2); @@ -2459,17 +2459,17 @@ test_netns_general (gpointer fixture, gconstpointer test_data) NMPlatform *p = (k == 0 ? platform_1 : platform_2); const char *id = (k == 0 ? "a" : "b"); - for (i = 0, j = nmtst_get_rand_int () % 5; i < j; i++) + for (i = 0, j = nmtst_get_rand_uint32 () % 5; i < j; i++) _ADD_DUMMY (p, nm_sprintf_buf (sbuf, "other-a-%s-%02d", id, i)); _ADD_DUMMY (p, "dummy1_"); - for (i = 0, j = nmtst_get_rand_int () % 5; i < j; i++) + for (i = 0, j = nmtst_get_rand_uint32 () % 5; i < j; i++) _ADD_DUMMY (p, nm_sprintf_buf (sbuf, "other-b-%s-%02d", id, i)); _ADD_DUMMY (p, nm_sprintf_buf (sbuf, "dummy2%s", id)); - for (i = 0, j = nmtst_get_rand_int () % 5; i < j; i++) + for (i = 0, j = nmtst_get_rand_uint32 () % 5; i < j; i++) _ADD_DUMMY (p, nm_sprintf_buf (sbuf, "other-c-%s-%02d", id, i)); } @@ -2491,17 +2491,17 @@ test_netns_general (gpointer fixture, gconstpointer test_data) NMPlatform *pl; const char *path; - j = nmtst_get_rand_int () % 2; + j = nmtst_get_rand_uint32 () % 2; - if (nmtst_get_rand_int () % 2) { + if (nmtst_get_rand_uint32 () % 2) { pl = platform_1; - if (nmtst_get_rand_int () % 2) + if (nmtst_get_rand_uint32 () % 2) path = "/proc/sys/net/ipv6/conf/dummy1_/disable_ipv6"; else path = "/proc/sys/net/ipv6/conf/dummy2a/disable_ipv6"; } else { pl = platform_2; - if (nmtst_get_rand_int () % 2) + if (nmtst_get_rand_uint32 () % 2) path = "/proc/sys/net/ipv6/conf/dummy1_/disable_ipv6"; else path = "/proc/sys/net/ipv6/conf/dummy2b/disable_ipv6"; @@ -2654,7 +2654,7 @@ test_netns_push (gpointer fixture, gconstpointer test_data) pl[2].platform = platform_2 = _test_netns_create_platform (); pl_base = &pl[0]; - i = nmtst_get_rand_int () % (G_N_ELEMENTS (pl) + 1); + i = nmtst_get_rand_uint32 () % (G_N_ELEMENTS (pl) + 1); if (i < G_N_ELEMENTS (pl)) { pl_base = &pl[i]; g_assert (nm_platform_netns_push (pl[i].platform, &netns_pop)); @@ -2674,7 +2674,7 @@ test_netns_push (gpointer fixture, gconstpointer test_data) g_ptr_array_add (device_names, tmp); pl[i].sysctl_path = tmp; - pl[i].sysctl_value = nmtst_get_rand_int () % 2 ? "1" : "0"; + pl[i].sysctl_value = nmtst_get_rand_uint32 () % 2 ? "1" : "0"; _ADD_DUMMY (pl[i].platform, pl[i].device_name); @@ -2689,16 +2689,16 @@ test_netns_push (gpointer fixture, gconstpointer test_data) pl[i].ns_mnt = tmp; } - nstack = nmtst_get_rand_int () % (G_N_ELEMENTS (stack) + 1); + nstack = nmtst_get_rand_uint32 () % (G_N_ELEMENTS (stack) + 1); for (i = 0; i < nstack; i++) { - stack[i].pl = &pl[nmtst_get_rand_int () % G_N_ELEMENTS (pl)]; - stack[i].ns_types = ns_types_list[nmtst_get_rand_int () % G_N_ELEMENTS (ns_types_list)]; + stack[i].pl = &pl[nmtst_get_rand_uint32 () % G_N_ELEMENTS (pl)]; + stack[i].ns_types = ns_types_list[nmtst_get_rand_uint32 () % G_N_ELEMENTS (ns_types_list)]; nmp_netns_push_type (nm_platform_netns_get (stack[i].pl->platform), stack[i].ns_types); } /* pop some again. */ - for (i = nmtst_get_rand_int () % (nstack + 1); i > 0; i--) { + for (i = nmtst_get_rand_uint32 () % (nstack + 1); i > 0; i--) { g_assert (nstack > 0); nstack--; nmp_netns_pop (nm_platform_netns_get (stack[nstack].pl->platform)); @@ -2789,7 +2789,7 @@ test_netns_bind_to_path (gpointer fixture, gconstpointer test_data) g_assert_cmpint (mount ("tmpfs", P_VAR_RUN, "tmpfs", MS_NOATIME | MS_NODEV | MS_NOSUID, "mode=0755,size=32K"), ==, 0); g_assert_cmpint (mkdir (P_VAR_RUN_NETNS, 755), ==, 0); - i = (nmtst_get_rand_int () % 2) + 1; + i = (nmtst_get_rand_uint32 () % 2) + 1; netns = nm_platform_netns_get (platforms[i]); _ADD_DUMMY (platforms[i], "dummy2b"); @@ -2832,9 +2832,9 @@ test_sysctl_rename (void) ifindex[0] = nmtstp_link_dummy_add (PL, -1, IFNAME[0])->ifindex; ifindex[1] = nmtstp_link_dummy_add (PL, -1, IFNAME[1])->ifindex; - s = (nmtst_get_rand_int () % 2) ? NULL : ifname_buf; + s = (nmtst_get_rand_uint32 () % 2) ? NULL : ifname_buf; - if (nmtst_get_rand_int () % 2) { + if (nmtst_get_rand_uint32 () % 2) { /* bring the platform cache out of sync */ nmtstp_run_command_check ("ip link set %s name %s", IFNAME[0], IFNAME[2]); nm_platform_process_events (PL); @@ -2847,7 +2847,7 @@ test_sysctl_rename (void) } /* open dirfd for IFNAME[0] */ - i = nmtst_get_rand_int () % (2 + G_N_ELEMENTS (IFNAME)); + i = nmtst_get_rand_uint32 () % (2 + G_N_ELEMENTS (IFNAME)); if (i == 0) { dirfd = nm_platform_sysctl_open_netdir (PL, ifindex[0], @@ -2866,7 +2866,7 @@ test_sysctl_rename (void) g_assert_cmpstr (s, ==, IFNAME[0]); /* possibly rename the interfaces. */ - switch (nmtst_get_rand_int () % 4) { + switch (nmtst_get_rand_uint32 () % 4) { case 0: break; case 1: @@ -2879,11 +2879,11 @@ test_sysctl_rename (void) } /* possibly, resync platform cache (should make no difference). */ - if (nmtst_get_rand_int () % 2) + if (nmtst_get_rand_uint32 () % 2) nm_platform_process_events (PL); /* check that we still read the same file. */ - switch (nmtst_get_rand_int () % 2) { + switch (nmtst_get_rand_uint32 () % 2) { case 0: { gs_free char *c = NULL; @@ -2930,7 +2930,7 @@ test_sysctl_netns_switch (void) platforms[0] = platform_0 = nm_linux_platform_new (TRUE, TRUE); platforms[1] = platform_1 = _test_netns_create_platform (); platforms[2] = platform_2 = _test_netns_create_platform (); - PL = platforms[nmtst_get_rand_int () % 3]; + PL = platforms[nmtst_get_rand_uint32 () % 3]; nmtstp_netns_select_random (platforms, G_N_ELEMENTS (platforms), &netns_pop_1); @@ -2938,7 +2938,7 @@ test_sysctl_netns_switch (void) nmtstp_netns_select_random (platforms, G_N_ELEMENTS (platforms), &netns_pop_2); - s = (nmtst_get_rand_int () % 2) ? NULL : ifname_buf; + s = (nmtst_get_rand_uint32 () % 2) ? NULL : ifname_buf; dirfd = nm_platform_sysctl_open_netdir (PL, ifindex, s); diff --git a/src/platform/tests/test-nmp-object.c b/src/platform/tests/test-nmp-object.c index e2019e96f9..e67fc5333d 100644 --- a/src/platform/tests/test-nmp-object.c +++ b/src/platform/tests/test-nmp-object.c @@ -267,7 +267,7 @@ test_cache_link (void) struct udev_device *udev_device_3 = g_list_nth_data (global.udev_devices, 0); NMPCacheOpsType ops_type; nm_auto_unref_dedup_multi_index NMDedupMultiIndex *multi_idx = NULL; - gboolean use_udev = nmtst_get_rand_int () % 2; + gboolean use_udev = nmtst_get_rand_uint32 () % 2; multi_idx = nm_dedup_multi_index_new (); @@ -503,7 +503,7 @@ test_cache_qdisc (void) nm_auto_nmpobj NMPObject *obj2 = nmp_object_new (NMP_OBJECT_TYPE_QDISC, (NMPlatformObject *) &pl_qdisc_2); multi_idx = nm_dedup_multi_index_new (); - cache = nmp_cache_new (multi_idx, nmtst_get_rand_int () % 2); + cache = nmp_cache_new (multi_idx, nmtst_get_rand_uint32 () % 2); g_assert (nmp_cache_lookup_obj (cache, obj1a) == NULL); diff --git a/src/platform/tests/test-platform-general.c b/src/platform/tests/test-platform-general.c index eebc15d80d..7f98b65f99 100644 --- a/src/platform/tests/test-platform-general.c +++ b/src/platform/tests/test-platform-general.c @@ -52,6 +52,31 @@ test_link_get_all (void) /*****************************************************************************/ +static void +test_nm_platform_link_flags2str (void) +{ + int i; + + for (i = 0; i < 100; i++) { + char buf[NM_PLATFORM_LINK_FLAGS2STR_MAX_LEN + 100]; + const char *s; + const guint flags = ((i == 0) ? ~0u : nmtst_get_rand_uint ()); + gsize l; + + s = nm_platform_link_flags2str (flags, buf, sizeof (buf)); + g_assert (s); + + l = strlen (s); + if (l > NM_PLATFORM_LINK_FLAGS2STR_MAX_LEN) + g_error ("nm_platform_link_flags2str(%x) produced a longer output than %zu chars: \"%s\"", flags, NM_PLATFORM_LINK_FLAGS2STR_MAX_LEN, s); + if ( flags == ~0u + && l != NM_PLATFORM_LINK_FLAGS2STR_MAX_LEN) + g_error ("nm_platform_link_flags2str(%x) is expected to produce %zu chars, but produced %zu: \"%s\"", flags, NM_PLATFORM_LINK_FLAGS2STR_MAX_LEN, l, s); + } +} + +/*****************************************************************************/ + NMTST_DEFINE (); int @@ -61,7 +86,7 @@ main (int argc, char **argv) g_test_add_func ("/general/init_linux_platform", test_init_linux_platform); g_test_add_func ("/general/link_get_all", test_link_get_all); + g_test_add_func ("/general/nm_platform_link_flags2str", test_nm_platform_link_flags2str); return g_test_run (); } - diff --git a/src/platform/tests/test-route.c b/src/platform/tests/test-route.c index eb2f2316aa..0aeb9d3310 100644 --- a/src/platform/tests/test-route.c +++ b/src/platform/tests/test-route.c @@ -445,7 +445,7 @@ test_ip4_route_get (void) result = nm_platform_ip_route_get (NM_PLATFORM_GET, AF_INET, &a, - nmtst_get_rand_int () % 2 ? 0 : ifindex, + nmtst_get_rand_uint32 () % 2 ? 0 : ifindex, &route); g_assert (NMTST_NM_ERR_SUCCESS (result)); @@ -607,7 +607,7 @@ test_ip6_route_get (void) result = nm_platform_ip_route_get (NM_PLATFORM_GET, AF_INET6, a, - nmtst_get_rand_int () % 2 ? 0 : ifindex, + nmtst_get_rand_uint32 () % 2 ? 0 : ifindex, &route); g_assert (NMTST_NM_ERR_SUCCESS (result)); @@ -815,9 +815,9 @@ test_ip (gconstpointer test_data) if ( order_len == 0 || ( order_len < G_N_ELEMENTS (order_idx) - && nmtst_get_rand_int () % 2)) { + && nmtst_get_rand_uint32 () % 2)) { again_find_idx: - idx = nmtst_get_rand_int () % G_N_ELEMENTS (iface_data); + idx = nmtst_get_rand_uint32 () % G_N_ELEMENTS (iface_data); for (i = 0; i < order_len; i++) { if (order_idx[i] == idx) goto again_find_idx; @@ -827,7 +827,7 @@ again_find_idx: r->ifindex = iface_data[idx].ifindex; g_assert (NMTST_NM_ERR_SUCCESS (nm_platform_ip4_route_add (platform, NMP_NLM_FLAG_APPEND, r))); } else { - i = nmtst_get_rand_int () % order_len; + i = nmtst_get_rand_uint32 () % order_len; idx = order_idx[i]; for (i++; i < order_len; i++) order_idx[i - 1] = order_idx[i]; @@ -1129,17 +1129,17 @@ _rule_create_random (NMPlatform *platform) addr_size = nm_utils_addr_family_to_size (rr->addr_family); - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 50) rr->priority = 10000 + ((~p) % 20u); - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 40) nm_sprintf_buf (rr->iifname, "t-iif-%u", (~p) % 20); else if ((p % 1000u) < 80) nm_sprintf_buf (rr->iifname, "%s", DEVICE_NAME); - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 40) nm_sprintf_buf (rr->oifname, "t-oif-%d", (~p) % 20); else if ((p % 1000u) < 80) @@ -1149,14 +1149,14 @@ _rule_create_random (NMPlatform *platform) NMIPAddr *p_addr = i ? &rr->src : &rr->dst; guint8 *p_len = i ? &rr->src_len : &rr->dst_len; - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 100) { /* if we set src_len/dst_len to zero, the src/dst is actually ignored. * * For fuzzying, still set the address. It shall have no further effect. * */ *p_len = (~p) % (addr_size * 8 + 1); - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 3u) == 0) { if (rr->addr_family == AF_INET) p_addr->addr4 = nmtst_inet4_from_string (nm_sprintf_buf (saddr, "192.192.5.%u", (~p) % 256u)); @@ -1167,12 +1167,12 @@ _rule_create_random (NMPlatform *platform) } } - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 50) rr->tun_id = 10000 + ((~p) % 20); again_action: - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 500) rr->action = FR_ACT_UNSPEC; else if ((p % 1000u) < 750) @@ -1180,22 +1180,22 @@ again_action: else rr->action = (~p) % 0x100u; - rr->priority = _rr_rand_choose_u32 (nmtst_get_rand_int ()); + rr->priority = _rr_rand_choose_u32 (nmtst_get_rand_uint32 ()); if ( rr->action == FR_ACT_GOTO && rr->priority == G_MAXINT32) goto again_action; - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 10000u) < 100) rr->goto_target = rr->priority + 1; else - rr->goto_target = _rr_rand_choose_u32 (nmtst_get_rand_int ()); + rr->goto_target = _rr_rand_choose_u32 (nmtst_get_rand_uint32 ()); if ( rr->action == FR_ACT_GOTO && rr->goto_target <= rr->priority) goto again_action; - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 25) { if (_rule_check_kernel_support (platform, FRA_L3MDEV)) { rr->l3mdev = TRUE; @@ -1205,7 +1205,7 @@ again_action: again_table: if (!rr->l3mdev) { - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 1000u) < 700) rr->table = RT_TABLE_UNSPEC; else if ((p % 1000u) < 850) @@ -1217,33 +1217,33 @@ again_table: goto again_table; } - rr->fwmark = _rr_rand_choose_u32 (nmtst_get_rand_int ()); - rr->fwmask = _rr_rand_choose_u32 (nmtst_get_rand_int ()); + rr->fwmark = _rr_rand_choose_u32 (nmtst_get_rand_uint32 ()); + rr->fwmask = _rr_rand_choose_u32 (nmtst_get_rand_uint32 ()); - rr->flow = _rr_rand_choose_u32 (nmtst_get_rand_int ()); + rr->flow = _rr_rand_choose_u32 (nmtst_get_rand_uint32 ()); if (_rule_check_kernel_support (platform, FRA_PROTOCOL)) - rr->protocol = _rr_rand_choose_u8 (nmtst_get_rand_int ()); + rr->protocol = _rr_rand_choose_u8 (nmtst_get_rand_uint32 ()); #define IPTOS_TOS_MASK 0x1E again_tos: - rr->tos = _rr_rand_choose_u8 (nmtst_get_rand_int ()); + rr->tos = _rr_rand_choose_u8 (nmtst_get_rand_uint32 ()); if ( rr->addr_family == AF_INET && rr->tos & ~IPTOS_TOS_MASK) goto again_tos; if (_rule_check_kernel_support (platform, FRA_IP_PROTO)) - rr->ip_proto = _rr_rand_choose_u8 (nmtst_get_rand_int ()); + rr->ip_proto = _rr_rand_choose_u8 (nmtst_get_rand_uint32 ()); if (_rule_check_kernel_support (platform, FRA_SUPPRESS_PREFIXLEN)) - rr->suppress_prefixlen_inverse = ~_rr_rand_choose_u32 (nmtst_get_rand_int ()); + rr->suppress_prefixlen_inverse = ~_rr_rand_choose_u32 (nmtst_get_rand_uint32 ()); if (_rule_check_kernel_support (platform, FRA_SUPPRESS_IFGROUP)) - rr->suppress_ifgroup_inverse = ~_rr_rand_choose_u32 (nmtst_get_rand_int ()); + rr->suppress_ifgroup_inverse = ~_rr_rand_choose_u32 (nmtst_get_rand_uint32 ()); if (_rule_check_kernel_support (platform, FRA_UID_RANGE)) { - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); rr->uid_range_has = (p % 10000u) < 200; } @@ -1265,10 +1265,10 @@ again_uid_range: if (!_rule_check_kernel_support (platform, attribute)) continue; - p = nmtst_get_rand_int (); + p = nmtst_get_rand_uint32 (); if ((p % 10000u) < 300) { while (range->start == 0) { - p = p ^ nmtst_get_rand_int (); + p = p ^ nmtst_get_rand_uint32 (); range->start = nmtst_rand_select (1u, 0xFFFEu, ((p ) % 0xFFFEu) + 1); range->end = nmtst_rand_select (1u, 0xFFFEu, ((p >> 16) % 0xFFFEu) + 1, range->start); if (range->end < range->start) @@ -1277,7 +1277,7 @@ again_uid_range: } } - p = nmtst_get_rand_int () % 1000u; + p = nmtst_get_rand_uint32 () % 1000u; if (p < 100) rr->flags |= FIB_RULE_INVERT; @@ -1482,10 +1482,10 @@ test_rule (gconstpointer test_data) if (TEST_IDX != 1) { nmtst_rand_perm (NULL, objs->pdata, NULL, sizeof (gpointer), objs->len); - g_ptr_array_set_size (objs, nmtst_get_rand_int () % (objs->len + 1)); + g_ptr_array_set_size (objs, nmtst_get_rand_uint32 () % (objs->len + 1)); } - n = (TEST_IDX != 1) ? nmtst_get_rand_int () % 50u : 0u; + n = (TEST_IDX != 1) ? nmtst_get_rand_uint32 () % 50u : 0u; for (i = 0; i < n; i++) { nm_auto_nmpobj const NMPObject *o = NULL; guint try = 0; @@ -1544,7 +1544,7 @@ again: -1, USER_TAG_2); } - if (nmtst_get_rand_int () % objs_sync->len == 0) { + if (nmtst_get_rand_uint32 () % objs_sync->len == 0) { nmp_rules_manager_sync (rules_manager, FALSE); g_assert_cmpint (nmtstp_platform_routing_rules_get_count (platform, AF_UNSPEC), ==, i + 1); } @@ -1554,7 +1554,7 @@ again: g_assert_cmpint (nmtstp_platform_routing_rules_get_count (platform, AF_UNSPEC), ==, objs_sync->len); for (i = 0; i < objs_sync->len; i++) { - switch (nmtst_get_rand_int () % 3) { + switch (nmtst_get_rand_uint32 () % 3) { case 0: nmp_rules_manager_untrack (rules_manager, NMP_OBJECT_CAST_ROUTING_RULE (objs_sync->pdata[i]), @@ -1576,7 +1576,7 @@ again: USER_TAG_2); break; } - if (nmtst_get_rand_int () % objs_sync->len == 0) { + if (nmtst_get_rand_uint32 () % objs_sync->len == 0) { nmp_rules_manager_sync (rules_manager, FALSE); g_assert_cmpint (nmtstp_platform_routing_rules_get_count (platform, AF_UNSPEC), ==, objs_sync->len - i - 1); } diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c index 3d67a659c4..6cb56415ba 100644 --- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c +++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c @@ -310,7 +310,7 @@ _writer_new_connection_reread (NMConnection *connection, char *filename = NULL; gs_unref_object NMConnection *con_verified = NULL; gs_unref_object NMConnection *reread_copy = NULL; - NMConnection **reread = out_reread ?: ((nmtst_get_rand_int () % 2) ? &reread_copy : NULL); + NMConnection **reread = out_reread ?: ((nmtst_get_rand_uint32 () % 2) ? &reread_copy : NULL); g_assert (NM_IS_CONNECTION (connection)); g_assert (ifcfg_dir); @@ -9249,19 +9249,19 @@ test_team_reread_slave (void) nmtst_assert_connection_equals (connection_1, FALSE, connection_2, FALSE); - _writer_new_connection_reread ((nmtst_get_rand_int () % 2) ? connection_1 : connection_2, + _writer_new_connection_reread ((nmtst_get_rand_uint32 () % 2) ? connection_1 : connection_2, TEST_SCRATCH_DIR, &testfile, TEST_IFCFG_DIR"/ifcfg-team-slave-enp31s0f1-142.cexpected", &reread, &reread_same); - _assert_reread_same ((nmtst_get_rand_int () % 2) ? connection_1 : connection_2, reread); + _assert_reread_same ((nmtst_get_rand_uint32 () % 2) ? connection_1 : connection_2, reread); g_assert (reread_same); g_clear_object (&reread); reread = _connection_from_file (testfile, NULL, TYPE_VLAN, NULL); - nmtst_assert_connection_equals ((nmtst_get_rand_int () % 2) ? connection_1 : connection_2, FALSE, + nmtst_assert_connection_equals ((nmtst_get_rand_uint32 () % 2) ? connection_1 : connection_2, FALSE, reread, FALSE); } @@ -9426,7 +9426,7 @@ do_svUnescape_combine_ansi (GString *str_val, GString *str_exp, const UnescapeTe g_string_append (str_val, "$'"); if (idx < 0) { for (i = -idx; i > 0; i--) { - j = nmtst_get_rand_int () % data_len; + j = nmtst_get_rand_uint32 () % data_len; if (!data_ansi[j].can_concat) { i++; continue; @@ -9625,7 +9625,7 @@ test_svUnescape (void) /* different values can be just concatenated... */ for (i = 0; i < 200; i++) { - gsize num_concat = (nmtst_get_rand_int () % 5) + 2; + gsize num_concat = (nmtst_get_rand_uint32 () % 5) + 2; g_string_set_size (str_val, 0); g_string_set_size (str_exp, 0); @@ -9633,12 +9633,12 @@ test_svUnescape (void) while (num_concat > 0) { gsize idx; - if ((nmtst_get_rand_int () % 3 == 0)) { - do_svUnescape_combine_ansi (str_val2, str_exp2, data_ansi, G_N_ELEMENTS (data_ansi), -((int) ((nmtst_get_rand_int () % 5) + 1))); + if ((nmtst_get_rand_uint32 () % 3 == 0)) { + do_svUnescape_combine_ansi (str_val2, str_exp2, data_ansi, G_N_ELEMENTS (data_ansi), -((int) ((nmtst_get_rand_uint32 () % 5) + 1))); continue; } - idx = nmtst_get_rand_int () % G_N_ELEMENTS (data_full); + idx = nmtst_get_rand_uint32 () % G_N_ELEMENTS (data_full); if (!data_full[idx].can_concat) continue; g_string_append (str_val, data_full[idx].val); @@ -9646,7 +9646,7 @@ test_svUnescape (void) num_concat--; } - switch (nmtst_get_rand_int () % 3) { + switch (nmtst_get_rand_uint32 () % 3) { case 0: g_string_append (str_val, " "); break; @@ -9654,7 +9654,7 @@ test_svUnescape (void) g_string_append (str_val, " "); break; } - switch (nmtst_get_rand_int () % 3) { + switch (nmtst_get_rand_uint32 () % 3) { case 0: g_string_append (str_val, " #"); break; diff --git a/src/settings/plugins/keyfile/tests/test-keyfile-settings.c b/src/settings/plugins/keyfile/tests/test-keyfile-settings.c index baecac13bc..b7b13be6b5 100644 --- a/src/settings/plugins/keyfile/tests/test-keyfile-settings.c +++ b/src/settings/plugins/keyfile/tests/test-keyfile-settings.c @@ -73,7 +73,7 @@ check_ip_route (NMSettingIPConfig *config, int idx, const char *destination, int \ _connection = nms_keyfile_reader_from_file (full_filename, \ NULL, \ - (nmtst_get_rand_int () % 2) ? &_error : NULL); \ + (nmtst_get_rand_uint32 () % 2) ? &_error : NULL); \ nmtst_assert_success (_connection, _error); \ nmtst_assert_connection_verifies_without_normalization (_connection); \ \ @@ -128,7 +128,7 @@ write_test_connection_reread (NMConnection *connection, gid_t owner_grp; gboolean success; GError *error = NULL; - GError **p_error = (nmtst_get_rand_int () % 2) ? &error : NULL; + GError **p_error = (nmtst_get_rand_uint32 () % 2) ? &error : NULL; gs_unref_object NMConnection *connection_normalized = NULL; g_assert (NM_IS_CONNECTION (connection)); diff --git a/src/tests/test-core-with-expect.c b/src/tests/test-core-with-expect.c index 8339fa5d43..e4b30db8a3 100644 --- a/src/tests/test-core-with-expect.c +++ b/src/tests/test-core-with-expect.c @@ -541,7 +541,7 @@ test_nm_utils_new_vlan_name (void) guint vlan_id; /* Create a random VLAN id between 0 and 4094 */ - vlan_id = nmtst_get_rand_int () % 4095; + vlan_id = nmtst_get_rand_uint32 () % 4095; vlan_id_s = g_strdup_printf (".%d", vlan_id); diff --git a/src/tests/test-core.c b/src/tests/test-core.c index cedf5b8a9a..f5d42e6d4f 100644 --- a/src/tests/test-core.c +++ b/src/tests/test-core.c @@ -147,7 +147,7 @@ test_nm_utils_ip6_address_same_prefix (void) nmtst_rand_buf (NULL, a.ptr, sizeof (a)); nmtst_rand_buf (NULL, b.ptr, sizeof (b)); again_plen: - plen = nmtst_get_rand_int () % 129; + plen = nmtst_get_rand_uint32 () % 129; if (!is_same && NM_IN_SET (plen, 0, 128)) goto again_plen; @@ -181,7 +181,7 @@ again_plen: for (n = 0; n < N; n++) { nmtst_rand_buf (NULL, a.ptr, sizeof (a)); nmtst_rand_buf (NULL, b.ptr, sizeof (b)); - plen = nmtst_get_rand_int () % 129; + plen = nmtst_get_rand_uint32 () % 129; memset (addrmask.ptr, 0xFF, sizeof (addrmask)); nm_utils_ip6_address_clear_host_address (&addrmask.val, &addrmask.val, plen); @@ -198,7 +198,7 @@ again_plen: nmtst_rand_buf (NULL, a.ptr, sizeof (a)); nmtst_rand_buf (NULL, b.ptr, sizeof (b)); - plen = nmtst_get_rand_int () % 129; + plen = nmtst_get_rand_uint32 () % 129; if (!plen) continue; @@ -1456,7 +1456,7 @@ test_nm_utils_strbuf_append (void) const char *_str_iter; \ gs_free char *_str = NULL; \ \ - switch (nmtst_get_rand_int () % 4) { \ + switch (nmtst_get_rand_uint32 () % 4) { \ case 0: \ nm_utils_strbuf_append (_buf, _len, (format), __VA_ARGS__); \ break; \ @@ -1484,7 +1484,7 @@ test_nm_utils_strbuf_append (void) gsize *_len = (len); \ const char *_str = (str); \ \ - switch (nmtst_get_rand_int () % 4) { \ + switch (nmtst_get_rand_uint32 () % 4) { \ case 0: \ nm_utils_strbuf_append (_buf, _len, "%s", _str ?: ""); \ break; \ @@ -1509,7 +1509,7 @@ test_nm_utils_strbuf_append (void) gsize *_len = (len); \ char _ch = (ch); \ \ - switch (nmtst_get_rand_int () % 4) { \ + switch (nmtst_get_rand_uint32 () % 4) { \ case 0: \ nm_utils_strbuf_append (_buf, _len, "%c", _ch); \ break; \ @@ -1527,7 +1527,7 @@ test_nm_utils_strbuf_append (void) for (buf_len = 0; buf_len < 10; buf_len++) { for (rep = 0; rep < 50; rep++) { - const int s_len = nmtst_get_rand_int () % (sizeof (str) - 5); + const int s_len = nmtst_get_rand_uint32 () % (sizeof (str) - 5); char *t_buf; gsize t_len; int test_mode; @@ -1543,7 +1543,7 @@ test_nm_utils_strbuf_append (void) t_buf = buf; t_len = buf_len; - test_mode = nmtst_get_rand_int () % 5; + test_mode = nmtst_get_rand_uint32 () % 5; switch (test_mode) { case 0: @@ -1568,7 +1568,7 @@ test_nm_utils_strbuf_append (void) g_snprintf (t_buf, t_len, "%s", str); if ( t_len > 0 && strlen (str) >= buf_len - && (nmtst_get_rand_int () % 2)) { + && (nmtst_get_rand_uint32 () % 2)) { /* the string was truncated by g_snprintf(). That means, at the last position in the * buffer is now NUL. * Replace the NUL by the actual character, and check that nm_utils_strbuf_seek_end() @@ -1688,7 +1688,7 @@ test_duplicate_decl_specifier (void) (_a > _b ? _a : _b); \ }) - v_result[0] = TEST_MAX (v_const[0], nmtst_get_rand_int () % 5) + v2; + v_result[0] = TEST_MAX (v_const[0], nmtst_get_rand_uint32 () % 5) + v2; NM_PRAGMA_WARNING_REENABLE } diff --git a/src/tests/test-systemd.c b/src/tests/test-systemd.c index 20cbd50efd..4f6809ab63 100644 --- a/src/tests/test-systemd.c +++ b/src/tests/test-systemd.c @@ -157,7 +157,7 @@ test_sd_event (void) g_assert_cmpint (sd_event_default (NULL), ==, 0); - for (i = 0, n = (nmtst_get_rand_int () % (G_N_ELEMENTS (other_events) + 1)); i < n; i++) { + for (i = 0, n = (nmtst_get_rand_uint32 () % (G_N_ELEMENTS (other_events) + 1)); i < n; i++) { r = sd_event_default (&other_events[i]); g_assert (r >= 0 && other_events[i]); } @@ -177,7 +177,7 @@ test_sd_event (void) g_assert (!user_data.event_source); event = sd_event_unref (event); - for (i = 0, n = (nmtst_get_rand_int () % (G_N_ELEMENTS (other_events) + 1)); i < n; i++) + for (i = 0, n = (nmtst_get_rand_uint32 () % (G_N_ELEMENTS (other_events) + 1)); i < n; i++) other_events[i] = sd_event_unref (other_events[i]); nm_clear_g_source (&sd_id); for (i = 0, n = G_N_ELEMENTS (other_events); i < n; i++) @@ -311,15 +311,15 @@ test_nm_sd_utils_unbase64mem (void) _test_unbase64mem ("YQ==", "a"); _test_unbase64mem_inval ("YQ==a"); - rnd_len = nmtst_get_rand_int () % sizeof (rnd_buf); + rnd_len = nmtst_get_rand_uint32 () % sizeof (rnd_buf); for (i = 0; i < rnd_len; i++) - rnd_buf[i] = nmtst_get_rand_int () % 256; + rnd_buf[i] = nmtst_get_rand_uint32 () % 256; rnd_base64 = g_base64_encode (rnd_buf, rnd_len); _test_unbase64mem_mem (rnd_base64, rnd_buf, rnd_len); _test_unbase64char ('=', FALSE); for (i = 0; i < 10; i++) { - char ch = nmtst_get_rand_int () % 256; + char ch = nmtst_get_rand_uint32 () % 256; if (ch != '=') _test_unbase64char (ch, TRUE); |