diff options
| author | Michael Biebl <biebl@debian.org> | 2020-05-08 21:40:53 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2020-05-08 21:40:53 +0200 |
| commit | d460892bbfece74fb6d3cd846bf6ef548290be41 (patch) | |
| tree | 0474e5be0b5e5fac0d2f3a1e554382e8d1aa6397 /src/platform | |
| parent | 1e5977b62f896e844b548c3007ace9e1dfa7f9ed (diff) | |
New upstream version 1.24.0 upstream/1.24.0
Diffstat (limited to 'src/platform')
| -rw-r--r-- | src/platform/nm-linux-platform.c | 8 | ||||
| -rw-r--r-- | src/platform/nmp-object.c | 8 | ||||
| -rw-r--r-- | src/platform/tests/test-link.c | 77 |
3 files changed, 61 insertions, 32 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index f7249bb7..014cca71 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -5131,9 +5131,9 @@ sysctl_set_async (NMPlatform *platform, callback, data, error); - nm_utils_invoke_on_idle (sysctl_set_async_return_idle, - packed, - cancellable); + nm_utils_invoke_on_idle (cancellable, + sysctl_set_async_return_idle, + packed); return; } } else @@ -7390,7 +7390,7 @@ out_idle: g_steal_pointer (&error), callback, data); - nm_utils_invoke_on_idle (sriov_idle_cb, packed, cancellable); + nm_utils_invoke_on_idle (cancellable, sriov_idle_cb, packed); } } diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c index 541211cd..a6aa5e22 100644 --- a/src/platform/nmp-object.c +++ b/src/platform/nmp-object.c @@ -1405,15 +1405,15 @@ nmp_object_id_cmp (const NMPObject *obj1, const NMPObject *obj2) nm_assert (klass2); NM_CMP_DIRECT (klass->obj_type, klass2->obj_type); /* resort to pointer comparison */ - if (klass < klass2) - return -1; - return 1; + NM_CMP_DIRECT_PTR (klass, klass2); + return 0; } if (!klass->cmd_plobj_id_cmp) { /* the klass doesn't implement ID cmp(). That means, different objects * never compare equal, but the cmp() according to their pointer value. */ - return (obj1 < obj2) ? -1 : 1; + NM_CMP_DIRECT_PTR (obj1, obj2); + return 0; } return klass->cmd_plobj_id_cmp (&obj1->object, &obj2->object); diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c index 2661914b..ea4a2c5a 100644 --- a/src/platform/tests/test-link.c +++ b/src/platform/tests/test-link.c @@ -3050,18 +3050,29 @@ test_sysctl_netns_switch (void) nmtstp_link_delete (PL, FALSE, ifindex, NULL, TRUE); } -static void -sysctl_set_async_cb_assert_success (GError *error, gpointer data) -{ - g_assert_no_error (error); - g_main_loop_quit (data); -} +typedef struct { + GMainLoop *loop; + const char *path; + gboolean expected_success; + gint32 expected_value; +} SetAsyncData; static void -sysctl_set_async_cb_assert_failure (GError *error, gpointer data) +sysctl_set_async_cb (GError *error, gpointer user_data) { - g_assert (error); - g_main_loop_quit (data); + SetAsyncData *data = user_data; + + if (data->expected_success) { + g_assert_no_error (error); + g_assert_cmpint (nm_platform_sysctl_get_int32 (NM_PLATFORM_GET, + NMP_SYSCTL_PATHID_ABSOLUTE (data->path), + -1), + ==, + data->expected_value); + } else + g_assert (error); + + g_main_loop_quit (data->loop); } static void @@ -3070,43 +3081,53 @@ test_sysctl_set_async (void) NMPlatform *const PL = NM_PLATFORM_GET; const char *const IFNAME = "nm-dummy-0"; const char *const PATH = "/proc/sys/net/ipv4/conf/nm-dummy-0/rp_filter"; - gs_free GMainLoop *loop = NULL; + GMainLoop *loop; gs_unref_object GCancellable *cancellable = NULL; + gboolean proc_writable; + SetAsyncData data; int ifindex; ifindex = nmtstp_link_dummy_add (PL, -1, IFNAME)->ifindex; loop = g_main_loop_new (NULL, FALSE); cancellable = g_cancellable_new (); + proc_writable = access (PATH, W_OK) == 0; + + data = (SetAsyncData) { + .loop = loop, + .path = PATH, + .expected_success = proc_writable, + .expected_value = 2, + }; nm_platform_sysctl_set_async (PL, NMP_SYSCTL_PATHID_ABSOLUTE (PATH), (const char *[]) { "2", NULL}, - sysctl_set_async_cb_assert_success, - loop, + sysctl_set_async_cb, + &data, cancellable); if (!nmtst_main_loop_run (loop, 1000)) g_assert_not_reached (); - g_assert_cmpint (nm_platform_sysctl_get_int32 (PL, NMP_SYSCTL_PATHID_ABSOLUTE (PATH), -1), - ==, - 2); + data = (SetAsyncData) { + .loop = loop, + .path = PATH, + .expected_success = proc_writable, + .expected_value = 1, + }; nm_platform_sysctl_set_async (PL, NMP_SYSCTL_PATHID_ABSOLUTE (PATH), (const char *[]) { "2", "0", "1", "0", "1", NULL}, - sysctl_set_async_cb_assert_success, - loop, + sysctl_set_async_cb, + &data, cancellable); if (!nmtst_main_loop_run (loop, 2000)) g_assert_not_reached (); - g_assert_cmpint (nm_platform_sysctl_get_int32 (PL, NMP_SYSCTL_PATHID_ABSOLUTE (PATH), -1), - ==, - 1); - nmtstp_link_delete (NULL, -1, ifindex, IFNAME, TRUE); + g_main_loop_unref (loop); } static void @@ -3115,25 +3136,33 @@ test_sysctl_set_async_fail (void) NMPlatform *const PL = NM_PLATFORM_GET; const char *const IFNAME = "nm-dummy-0"; const char *const PATH = "/proc/sys/net/ipv4/conf/nm-dummy-0/does-not-exist"; - gs_free GMainLoop *loop = NULL; + GMainLoop *loop; gs_unref_object GCancellable *cancellable = NULL; + SetAsyncData data; int ifindex; ifindex = nmtstp_link_dummy_add (PL, -1, IFNAME)->ifindex; loop = g_main_loop_new (NULL, FALSE); cancellable = g_cancellable_new (); + data = (SetAsyncData) { + .loop = loop, + .path = PATH, + .expected_success = FALSE, + }; + nm_platform_sysctl_set_async (PL, NMP_SYSCTL_PATHID_ABSOLUTE (PATH), (const char *[]) { "2", NULL}, - sysctl_set_async_cb_assert_failure, - loop, + sysctl_set_async_cb, + &data, cancellable); if (!nmtst_main_loop_run (loop, 1000)) g_assert_not_reached (); nmtstp_link_delete (NULL, -1, ifindex, IFNAME, TRUE); + g_main_loop_unref (loop); } /*****************************************************************************/ |