platform/tests: create vxlan links also using platform code

This commit is contained in:
Beniamino Galvani
2015-11-26 12:05:31 +01:00
parent d6a0b2c28f
commit dc0676330b
3 changed files with 76 additions and 12 deletions

View File

@@ -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,

View File

@@ -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);

View File

@@ -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;