summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-06-11 08:48:52 +0200
committerThomas Haller <thaller@redhat.com>2019-06-11 08:48:52 +0200
commit645261b182d5ec58cd8b466921f315b49a177d91 (patch)
tree759474cb1eceee3356134b09d3e229817b6f673b
parent109b3a5bb1a1b8e20bd44061c353714477b408a4 (diff)
parent82e87de4980238a4a6a64a0bee6428379ede4325 (diff)
downloadNetworkManager-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.c20
-rw-r--r--libnm-core/tests/test-setting.c26
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.h2
-rw-r--r--shared/nm-utils/nm-test-utils.h15
-rw-r--r--shared/nm-utils/tests/test-shared-general.c8
-rw-r--r--src/devices/nm-device.c12
-rw-r--r--src/devices/tests/test-lldp.c2
-rw-r--r--src/platform/nm-fake-platform.c12
-rw-r--r--src/platform/nm-linux-platform.c44
-rw-r--r--src/platform/nm-platform.c140
-rw-r--r--src/platform/nm-platform.h19
-rw-r--r--src/platform/tests/test-common.c8
-rw-r--r--src/platform/tests/test-link.c54
-rw-r--r--src/platform/tests/test-nmp-object.c4
-rw-r--r--src/platform/tests/test-platform-general.c27
-rw-r--r--src/platform/tests/test-route.c68
-rw-r--r--src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c22
-rw-r--r--src/settings/plugins/keyfile/tests/test-keyfile-settings.c4
-rw-r--r--src/tests/test-core-with-expect.c2
-rw-r--r--src/tests/test-core.c20
-rw-r--r--src/tests/test-systemd.c10
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);