summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2015-12-03 18:48:12 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2015-12-09 14:30:08 +0100
commit62c1f2c6a8d426dae365258ed728defec89ec3d0 (patch)
treeed0c0be9c17c774ef4a10a6f1d3d2b17ec004044
parent27c0f8def4a9930775a1e4bc8ea6d1732730cb40 (diff)
downloadNetworkManager-62c1f2c6a8d426dae365258ed728defec89ec3d0.tar.gz
platform/tests: test macvlans also using platform code
-rw-r--r--src/platform/tests/test-common.c33
-rw-r--r--src/platform/tests/test-common.h3
-rw-r--r--src/platform/tests/test-link.c13
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: {