diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2015-11-26 12:05:31 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2015-12-09 15:54:57 +0100 |
commit | 0a49e32097009f40984140251a949a49b796a8c3 (patch) | |
tree | e03313f485db56e1746ac12fad83c950e968e3cb | |
parent | f725027d94968d606cec9b0a671261e234c7bed1 (diff) | |
download | NetworkManager-0a49e32097009f40984140251a949a49b796a8c3.tar.gz |
platform/tests: create vxlan links also using platform code
-rw-r--r-- | src/platform/tests/test-common.c | 43 | ||||
-rw-r--r-- | src/platform/tests/test-common.h | 3 | ||||
-rw-r--r-- | src/platform/tests/test-link.c | 42 |
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; |