diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2015-12-03 18:48:12 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2015-12-09 14:30:08 +0100 |
commit | 62c1f2c6a8d426dae365258ed728defec89ec3d0 (patch) | |
tree | ed0c0be9c17c774ef4a10a6f1d3d2b17ec004044 | |
parent | 27c0f8def4a9930775a1e4bc8ea6d1732730cb40 (diff) | |
download | NetworkManager-62c1f2c6a8d426dae365258ed728defec89ec3d0.tar.gz |
platform/tests: test macvlans also using platform code
-rw-r--r-- | src/platform/tests/test-common.c | 33 | ||||
-rw-r--r-- | src/platform/tests/test-common.h | 3 | ||||
-rw-r--r-- | src/platform/tests/test-link.c | 13 |
3 files changed, 46 insertions, 3 deletions
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c index 595096d2fb..c7d0c40f75 100644 --- a/src/platform/tests/test-common.c +++ b/src/platform/tests/test-common.c @@ -775,6 +775,39 @@ nmtstp_link_ipip_add (gboolean external_command, const char *name, NMPlatformLnk } gboolean +nmtstp_link_macvlan_add (gboolean external_command, const char *name, int parent, NMPlatformLnkMacvlan *lnk) +{ + gboolean success; + + external_command = nmtstp_run_command_check_external (external_command); + + if (external_command) { + const char *dev; + char *modes[] = { + [MACVLAN_MODE_BRIDGE] = "bridge", + [MACVLAN_MODE_VEPA] = "vepa", + [MACVLAN_MODE_PRIVATE] = "private", + [MACVLAN_MODE_PASSTHRU] = "passthru", + }; + + dev = nm_platform_link_get_name (NM_PLATFORM_GET, parent); + g_assert (dev); + g_assert_cmpint (lnk->mode, <, G_N_ELEMENTS (modes)); + + success = !nmtstp_run_command ("ip link add name %s link %s type macvlan mode %s %s", + name, + dev, + modes[lnk->mode], + lnk->no_promisc ? "nopromisc" : ""); + if (success) + nmtstp_assert_wait_for_link (name, NM_LINK_TYPE_MACVLAN, 100); + } else + success = nm_platform_link_macvlan_add (NM_PLATFORM_GET, name, parent, lnk, NULL) == NM_PLATFORM_ERROR_SUCCESS; + + return success; +} + +gboolean nmtstp_link_sit_add (gboolean external_command, const char *name, NMPlatformLnkSit *lnk) { gboolean success; diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h index 6140f26406..b1adfc46ba 100644 --- a/src/platform/tests/test-common.h +++ b/src/platform/tests/test-common.h @@ -144,6 +144,9 @@ gboolean nmtstp_link_ip6tnl_add (gboolean external_command, gboolean nmtstp_link_ipip_add (gboolean external_command, const char *name, NMPlatformLnkIpIp *lnk); +gboolean nmtstp_link_macvlan_add (gboolean external_command, + const char *name, + int parent, NMPlatformLnkMacvlan *lnk); gboolean nmtstp_link_sit_add (gboolean external_command, const char *name, NMPlatformLnkSit *lnk); diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c index c1d2ce7adc..0986adf0d6 100644 --- a/src/platform/tests/test-link.c +++ b/src/platform/tests/test-link.c @@ -740,9 +740,16 @@ test_software_detect (gconstpointer user_data) } break; } - case NM_LINK_TYPE_MACVLAN: - nmtstp_run_command_check ("ip link add name %s link %s type macvlan", DEVICE_NAME, PARENT_NAME); + case NM_LINK_TYPE_MACVLAN: { + NMPlatformLnkMacvlan lnk_macvlan = { }; + + lnk_macvlan.mode = MACVLAN_MODE_BRIDGE; + lnk_macvlan.no_promisc = FALSE; + + if (!nmtstp_link_macvlan_add (EX, DEVICE_NAME, ifindex_parent, &lnk_macvlan)) + g_error ("Failed adding MACVLAN interface"); break; + } case NM_LINK_TYPE_SIT: { NMPlatformLnkSit lnk_sit = { }; gboolean gracefully_skip = FALSE; @@ -867,7 +874,7 @@ test_software_detect (gconstpointer user_data) g_assert (plnk == nm_platform_link_get_lnk_macvlan (NM_PLATFORM_GET, ifindex, NULL)); g_assert_cmpint (plnk->no_promisc, ==, FALSE); - g_assert_cmpint (plnk->mode, ==, MACVLAN_MODE_VEPA); + g_assert_cmpint (plnk->mode, ==, MACVLAN_MODE_BRIDGE); break; } case NM_LINK_TYPE_SIT: { |