summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2015-11-26 12:05:31 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2015-12-09 15:54:57 +0100
commit0a49e32097009f40984140251a949a49b796a8c3 (patch)
treee03313f485db56e1746ac12fad83c950e968e3cb
parentf725027d94968d606cec9b0a671261e234c7bed1 (diff)
downloadNetworkManager-0a49e32097009f40984140251a949a49b796a8c3.tar.gz
platform/tests: create vxlan links also using platform code
-rw-r--r--src/platform/tests/test-common.c43
-rw-r--r--src/platform/tests/test-common.h3
-rw-r--r--src/platform/tests/test-link.c42
3 files changed, 76 insertions, 12 deletions
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c
index f593c9cb80..a578a30884 100644
--- a/src/platform/tests/test-common.c
+++ b/src/platform/tests/test-common.c
@@ -838,6 +838,49 @@ nmtstp_link_sit_add (gboolean external_command, const char *name, NMPlatformLnkS
return success;
}
+gboolean
+nmtstp_link_vxlan_add (gboolean external_command, const char *name, NMPlatformLnkVxlan *lnk)
+{
+ gboolean success;
+
+ external_command = nmtstp_run_command_check_external (external_command);
+
+ if (external_command) {
+ gs_free char *dev = NULL;
+ gs_free char *local = NULL, *remote = NULL;
+
+ if (lnk->parent_ifindex)
+ dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex));
+
+ if (lnk->local)
+ local = g_strdup_printf ("%s", nm_utils_inet4_ntop (lnk->local, NULL));
+ else if (memcmp (&lnk->local6, &in6addr_any, sizeof (in6addr_any)))
+ local = g_strdup_printf ("%s", nm_utils_inet6_ntop (&lnk->local6, NULL));
+
+ if (lnk->group)
+ remote = g_strdup_printf ("%s", nm_utils_inet4_ntop (lnk->group, NULL));
+ else if (memcmp (&lnk->group6, &in6addr_any, sizeof (in6addr_any)))
+ remote = g_strdup_printf ("%s", nm_utils_inet6_ntop (&lnk->group6, NULL));
+
+ success = !nmtstp_run_command ("ip link add %s type vxlan id %u %s local %s group %s ttl %u tos %02x dstport %u srcport %u %u ageing %u",
+ name,
+ lnk->id,
+ dev ? dev : "",
+ local,
+ remote,
+ lnk->ttl,
+ lnk->tos,
+ lnk->dst_port,
+ lnk->src_port_min, lnk->src_port_max,
+ lnk->ageing);
+ if (success)
+ nmtstp_assert_wait_for_link (name, NM_LINK_TYPE_VXLAN, 100);
+ } else
+ success = nm_platform_link_vxlan_add (NM_PLATFORM_GET, name, lnk, NULL) == NM_PLATFORM_ERROR_SUCCESS;
+
+ return success;
+}
+
void
nmtstp_ip4_address_add (gboolean external_command,
int ifindex,
diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h
index b1adfc46ba..2833a78da8 100644
--- a/src/platform/tests/test-common.h
+++ b/src/platform/tests/test-common.h
@@ -150,6 +150,9 @@ gboolean nmtstp_link_macvlan_add (gboolean external_command,
gboolean nmtstp_link_sit_add (gboolean external_command,
const char *name,
NMPlatformLnkSit *lnk);
+gboolean nmtstp_link_vxlan_add (gboolean external_command,
+ const char *name,
+ NMPlatformLnkVxlan *lnk);
void init_tests (int *argc, char ***argv);
void setup_tests (void);
diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c
index 47e1af48b2..f5be758cec 100644
--- a/src/platform/tests/test-link.c
+++ b/src/platform/tests/test-link.c
@@ -790,22 +790,37 @@ test_software_detect (gconstpointer user_data)
case NM_LINK_TYPE_VLAN:
nmtstp_run_command_check ("ip link add name %s link %s type vlan id 1242", DEVICE_NAME, PARENT_NAME);
break;
- case NM_LINK_TYPE_VXLAN:
+ case NM_LINK_TYPE_VXLAN: {
+ NMPlatformLnkVxlan lnk_vxlan = { };
+
switch (test_data->test_mode) {
case 0:
- if (nmtstp_run_command ("ip link add %s type vxlan id 42 local 23.1.2.164 group 239.1.2.134 dev %s ageing 1245 dstport 4789", DEVICE_NAME, PARENT_NAME)) {
- g_test_skip ("could not add a vxlan");
- goto out_delete_parent;
- }
+ lnk_vxlan.parent_ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, PARENT_NAME);
+ lnk_vxlan.id = 42;
+ inet_pton (AF_INET, "23.1.2.164", &lnk_vxlan.local);
+ inet_pton (AF_INET, "239.1.2.134", &lnk_vxlan.group);
+ lnk_vxlan.dst_port = 4789;
+ lnk_vxlan.learning = TRUE;
+ lnk_vxlan.ageing = 1245;
break;
case 1:
- if (nmtstp_run_command ("ip link add %s type vxlan id 11214423 local 1:2:3:4:334:23::23 group ff0e::115 dev %s ageing 3245 dstport 57412", DEVICE_NAME, PARENT_NAME)) {
- g_test_skip ("could not add a vxlan");
- goto out_delete_parent;
- }
+ lnk_vxlan.parent_ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, PARENT_NAME);
+ lnk_vxlan.id = 11214423;
+ inet_pton (AF_INET6, "1:2:3:4:334:23::23", &lnk_vxlan.local6);
+ inet_pton (AF_INET6, "ff0e::115", &lnk_vxlan.group6);
+ lnk_vxlan.ttl = 32;
+ lnk_vxlan.dst_port = 57412;
+ lnk_vxlan.src_port_min = 1000;
+ lnk_vxlan.src_port_max = 1003;
+ lnk_vxlan.learning = TRUE;
+ lnk_vxlan.ageing = 3245;
break;
}
+
+ if (!nmtstp_link_vxlan_add (EX, DEVICE_NAME, &lnk_vxlan))
+ g_error ("Failed adding VXLAN link");
break;
+ }
default:
g_assert_not_reached ();
}
@@ -922,11 +937,8 @@ test_software_detect (gconstpointer user_data)
g_assert (plnk == nm_platform_link_get_lnk_vxlan (NM_PLATFORM_GET, ifindex, NULL));
g_assert_cmpint (plnk->parent_ifindex, !=, 0);
g_assert_cmpint (plnk->tos, ==, 0);
- g_assert_cmpint (plnk->ttl, ==, 0);
g_assert_cmpint (plnk->learning, ==, TRUE);
g_assert_cmpint (plnk->limit, ==, 0);
- g_assert_cmpint (plnk->src_port_min, ==, 0);
- g_assert_cmpint (plnk->src_port_max, ==, 0);
g_assert_cmpint (plnk->proxy, ==, FALSE);
g_assert_cmpint (plnk->rsc, ==, FALSE);
g_assert_cmpint (plnk->l2miss, ==, FALSE);
@@ -939,8 +951,11 @@ test_software_detect (gconstpointer user_data)
nmtst_assert_ip4_address (plnk->group, "239.1.2.134");
nmtst_assert_ip6_address (&plnk->group6, "::");
nmtst_assert_ip6_address (&plnk->local6, "::");
+ g_assert_cmpint (plnk->ttl, ==, 0);
g_assert_cmpint (plnk->ageing, ==, 1245);
g_assert_cmpint (plnk->dst_port, ==, 4789);
+ g_assert_cmpint (plnk->src_port_min, ==, 0);
+ g_assert_cmpint (plnk->src_port_max, ==, 0);
break;
case 1:
g_assert_cmpint (plnk->id, ==, 11214423);
@@ -950,6 +965,9 @@ test_software_detect (gconstpointer user_data)
nmtst_assert_ip6_address (&plnk->local6, "1:2:3:4:334:23::23");
g_assert_cmpint (plnk->ageing, ==, 3245);
g_assert_cmpint (plnk->dst_port, ==, 57412);
+ g_assert_cmpint (plnk->ttl, ==, 32);
+ g_assert_cmpint (plnk->src_port_min, ==, 1000);
+ g_assert_cmpint (plnk->src_port_max, ==, 1003);
break;
}
break;