diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2020-01-31 15:44:33 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2020-01-31 15:45:04 +0100 |
commit | 3d03900e910cb3d9c0af5e27104d6a4748f8e0b8 (patch) | |
tree | 39d4a30709ccaeaa0b748d40b7ce9ee64437c712 | |
parent | fc7af10cca6b3c0133f453931468794783456660 (diff) | |
download | NetworkManager-3d03900e910cb3d9c0af5e27104d6a4748f8e0b8.tar.gz |
platform: skip VRF test if kernel support is missing
Fixes: 7c73c6a038a1 ('platform: add VRF support')
-rw-r--r-- | src/platform/tests/test-common.c | 30 | ||||
-rw-r--r-- | src/platform/tests/test-common.h | 3 | ||||
-rw-r--r-- | src/platform/tests/test-link.c | 9 |
3 files changed, 28 insertions, 14 deletions
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c index 2b27d15414..373a10ddd4 100644 --- a/src/platform/tests/test-common.c +++ b/src/platform/tests/test-common.c @@ -1590,32 +1590,38 @@ const NMPlatformLink * nmtstp_link_vrf_add (NMPlatform *platform, gboolean external_command, const char *name, - const NMPlatformLnkVrf *lnk) + const NMPlatformLnkVrf *lnk, + gboolean *out_not_supported) { const NMPlatformLink *pllink = NULL; - int err; - int r; + int r = 0; g_assert (nm_utils_is_valid_iface_name (name, NULL)); + NM_SET_OUT (out_not_supported, FALSE); external_command = nmtstp_run_command_check_external (external_command); _init_platform (&platform, external_command); if (external_command) { - err = nmtstp_run_command ("ip link add %s type vrf table %u", - name, - lnk->table); - if (err == 0) + r = nmtstp_run_command ("ip link add %s type vrf table %u", + name, + lnk->table); + + if (r == 0) pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_VRF, 100); - } else { + else + _LOGI ("Adding vrf device via iproute2 failed. Assume iproute2 is not up to the task."); + } + + if (!pllink) { r = nm_platform_link_vrf_add (platform, name, lnk, &pllink); - g_assert (NMTST_NM_ERR_SUCCESS (r)); - g_assert (pllink); + if (r == -EOPNOTSUPP) + NM_SET_OUT (out_not_supported, TRUE); } - g_assert_cmpint (pllink->type, ==, NM_LINK_TYPE_VRF); - g_assert_cmpstr (pllink->name, ==, name); + _assert_pllink (platform, r == 0, pllink, name, NM_LINK_TYPE_VRF); + return pllink; } diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h index f392413eca..522c3756d3 100644 --- a/src/platform/tests/test-common.h +++ b/src/platform/tests/test-common.h @@ -363,7 +363,8 @@ const NMPlatformLink *nmtstp_link_tun_add (NMPlatform *platform, const NMPlatformLink *nmtstp_link_vrf_add (NMPlatform *platform, gboolean external_command, const char *name, - const NMPlatformLnkVrf *lnk); + const NMPlatformLnkVrf *lnk, + gboolean *out_not_supported); const NMPlatformLink *nmtstp_link_vxlan_add (NMPlatform *platform, gboolean external_command, const char *name, diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c index 2f7a503cee..2661914b98 100644 --- a/src/platform/tests/test-link.c +++ b/src/platform/tests/test-link.c @@ -1184,10 +1184,17 @@ test_software_detect (gconstpointer user_data) break; case NM_LINK_TYPE_VRF: { NMPlatformLnkVrf lnk_vrf = { }; + gboolean not_supported; lnk_vrf.table = 9876; - nmtstp_link_vrf_add (NULL, ext, DEVICE_NAME, &lnk_vrf); + if (!nmtstp_link_vrf_add (NULL, ext, DEVICE_NAME, &lnk_vrf, ¬_supported)) { + if (not_supported) { + g_test_skip ("Cannot create VRF interface because of missing kernel support"); + goto out_delete_parent; + } + g_error ("Failed adding VRF interface"); + } break; } case NM_LINK_TYPE_VXLAN: { |