platform/tests: use nmtstp_ensure_module() in test_software_detect()

This helper function already loads the module and performs
additional checks. Use it.

(cherry picked from commit acc0cee28e)
This commit is contained in:
Thomas Haller 2023-01-25 15:42:47 +01:00
parent 30a0ea310b
commit 487ebbe3c8
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -1290,6 +1290,7 @@ test_software_detect(gconstpointer user_data)
NMPlatformLnkVti lnk_vti = {}; NMPlatformLnkVti lnk_vti = {};
NMPlatformLnkVti6 lnk_vti6 = {}; NMPlatformLnkVti6 lnk_vti6 = {};
nm_auto_close int tun_fd = -1; nm_auto_close int tun_fd = -1;
gboolean module_loaded;
nmtstp_run_command_check("ip link add %s type dummy", PARENT_NAME); nmtstp_run_command_check("ip link add %s type dummy", PARENT_NAME);
ifindex_parent = ifindex_parent =
@ -1330,8 +1331,7 @@ test_software_detect(gconstpointer user_data)
break; break;
case NM_LINK_TYPE_GRE: case NM_LINK_TYPE_GRE:
{ module_loaded = nmtstp_ensure_module("ip_gre");
gboolean gracefully_skip = FALSE;
lnk_gre.local = nmtst_inet4_from_string("192.168.233.204"); lnk_gre.local = nmtst_inet4_from_string("192.168.233.204");
lnk_gre.remote = nmtst_inet4_from_string("172.168.10.25"); lnk_gre.remote = nmtst_inet4_from_string("172.168.10.25");
@ -1340,13 +1340,8 @@ test_software_detect(gconstpointer user_data)
lnk_gre.tos = 37; lnk_gre.tos = 37;
lnk_gre.path_mtu_discovery = TRUE; lnk_gre.path_mtu_discovery = TRUE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "gre0")) {
/* Seems that the ip_gre module is not loaded... try to load it. */
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip_gre", NULL) != 0;
}
if (!nmtstp_link_gre_add(NULL, ext, DEVICE_NAME, &lnk_gre)) { if (!nmtstp_link_gre_add(NULL, ext, DEVICE_NAME, &lnk_gre)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip( g_test_skip(
"Cannot create gre tunnel because of missing ip_gre module (modprobe ip_gre)"); "Cannot create gre tunnel because of missing ip_gre module (modprobe ip_gre)");
goto out_delete_parent; goto out_delete_parent;
@ -1354,10 +1349,9 @@ test_software_detect(gconstpointer user_data)
g_error("Failed adding GRE tunnel"); g_error("Failed adding GRE tunnel");
} }
break; break;
}
case NM_LINK_TYPE_GRETAP: case NM_LINK_TYPE_GRETAP:
{ module_loaded = nmtstp_ensure_module("ip_gre");
gboolean gracefully_skip = FALSE;
lnk_gre.local = nmtst_inet4_from_string("192.168.1.133"); lnk_gre.local = nmtst_inet4_from_string("192.168.1.133");
lnk_gre.remote = nmtst_inet4_from_string("172.168.101.2"); lnk_gre.remote = nmtst_inet4_from_string("172.168.101.2");
@ -1367,13 +1361,8 @@ test_software_detect(gconstpointer user_data)
lnk_gre.path_mtu_discovery = FALSE; lnk_gre.path_mtu_discovery = FALSE;
lnk_gre.is_tap = TRUE; lnk_gre.is_tap = TRUE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "gretap0")) {
/* Seems that the ip_gre module is not loaded... try to load it. */
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip_gre", NULL) != 0;
}
if (!nmtstp_link_gre_add(NULL, ext, DEVICE_NAME, &lnk_gre)) { if (!nmtstp_link_gre_add(NULL, ext, DEVICE_NAME, &lnk_gre)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip("Cannot create gretap tunnel because of missing ip_gre module " g_test_skip("Cannot create gretap tunnel because of missing ip_gre module "
"(modprobe ip_gre)"); "(modprobe ip_gre)");
goto out_delete_parent; goto out_delete_parent;
@ -1381,16 +1370,12 @@ test_software_detect(gconstpointer user_data)
g_error("Failed adding GRETAP tunnel"); g_error("Failed adding GRETAP tunnel");
} }
break; break;
}
case NM_LINK_TYPE_IPIP: case NM_LINK_TYPE_IPIP:
{ {
NMPlatformLnkIpIp lnk_ipip = {}; NMPlatformLnkIpIp lnk_ipip = {};
gboolean gracefully_skip = FALSE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "tunl0")) { module_loaded = nmtstp_ensure_module("ipip");
/* Seems that the ipip module is not loaded... try to load it. */
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ipip", NULL) != 0;
}
lnk_ipip.local = nmtst_inet4_from_string("1.2.3.4"); lnk_ipip.local = nmtst_inet4_from_string("1.2.3.4");
lnk_ipip.remote = nmtst_inet4_from_string("5.6.7.8"); lnk_ipip.remote = nmtst_inet4_from_string("5.6.7.8");
@ -1399,7 +1384,7 @@ test_software_detect(gconstpointer user_data)
lnk_ipip.path_mtu_discovery = FALSE; lnk_ipip.path_mtu_discovery = FALSE;
if (!nmtstp_link_ipip_add(NULL, ext, DEVICE_NAME, &lnk_ipip)) { if (!nmtstp_link_ipip_add(NULL, ext, DEVICE_NAME, &lnk_ipip)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip( g_test_skip(
"Cannot create ipip tunnel because of missing ipip module (modprobe ipip)"); "Cannot create ipip tunnel because of missing ipip module (modprobe ipip)");
goto out_delete_parent; goto out_delete_parent;
@ -1408,15 +1393,12 @@ test_software_detect(gconstpointer user_data)
} }
break; break;
} }
case NM_LINK_TYPE_IP6TNL: case NM_LINK_TYPE_IP6TNL:
{ {
NMPlatformLnkIp6Tnl lnk_ip6tnl = {}; NMPlatformLnkIp6Tnl lnk_ip6tnl = {};
gboolean gracefully_skip = FALSE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "ip6tnl0")) { module_loaded = nmtstp_ensure_module("ip6_tunnel");
/* Seems that the ip6_tunnel module is not loaded... try to load it. */
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_tunnel", NULL) != 0;
}
switch (test_data->test_mode) { switch (test_data->test_mode) {
case 0: case 0:
@ -1441,7 +1423,7 @@ test_software_detect(gconstpointer user_data)
} }
if (!nmtstp_link_ip6tnl_add(NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) { if (!nmtstp_link_ip6tnl_add(NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip("Cannot create ip6tnl tunnel because of missing ip6_tunnel module " g_test_skip("Cannot create ip6tnl tunnel because of missing ip6_tunnel module "
"(modprobe ip6_tunnel)"); "(modprobe ip6_tunnel)");
goto out_delete_parent; goto out_delete_parent;
@ -1450,15 +1432,12 @@ test_software_detect(gconstpointer user_data)
} }
break; break;
} }
case NM_LINK_TYPE_IP6GRE: case NM_LINK_TYPE_IP6GRE:
{ {
NMPlatformLnkIp6Tnl lnk_ip6tnl = {}; NMPlatformLnkIp6Tnl lnk_ip6tnl = {};
gboolean gracefully_skip = FALSE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "ip6gre0")) { module_loaded = nmtstp_ensure_module("ip6_gre");
/* Seems that the ip6_tunnel module is not loaded... try to load it. */
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_gre", NULL) != 0;
}
lnk_ip6tnl.local = nmtst_inet6_from_string("fd01::42"); lnk_ip6tnl.local = nmtst_inet6_from_string("fd01::42");
lnk_ip6tnl.remote = nmtst_inet6_from_string("fd01::aaaa"); lnk_ip6tnl.remote = nmtst_inet6_from_string("fd01::aaaa");
@ -1468,7 +1447,7 @@ test_software_detect(gconstpointer user_data)
lnk_ip6tnl.is_gre = TRUE; lnk_ip6tnl.is_gre = TRUE;
if (!nmtstp_link_ip6gre_add(NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) { if (!nmtstp_link_ip6gre_add(NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip("Cannot create ip6gre tunnel because of missing ip6_gre module " g_test_skip("Cannot create ip6gre tunnel because of missing ip6_gre module "
"(modprobe ip6_gre)"); "(modprobe ip6_gre)");
goto out_delete_parent; goto out_delete_parent;
@ -1477,15 +1456,12 @@ test_software_detect(gconstpointer user_data)
} }
break; break;
} }
case NM_LINK_TYPE_IP6GRETAP: case NM_LINK_TYPE_IP6GRETAP:
{ {
NMPlatformLnkIp6Tnl lnk_ip6tnl = {}; NMPlatformLnkIp6Tnl lnk_ip6tnl = {};
gboolean gracefully_skip = FALSE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "ip6gre0")) { module_loaded = nmtstp_ensure_module("ip6_gre");
/* Seems that the ip6_tunnel module is not loaded... try to load it. */
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_gre", NULL) != 0;
}
lnk_ip6tnl.local = nmtst_inet6_from_string("fe80::abcd"); lnk_ip6tnl.local = nmtst_inet6_from_string("fe80::abcd");
lnk_ip6tnl.remote = nmtst_inet6_from_string("fc01::bbbb"); lnk_ip6tnl.remote = nmtst_inet6_from_string("fc01::bbbb");
@ -1497,7 +1473,7 @@ test_software_detect(gconstpointer user_data)
lnk_ip6tnl.is_tap = TRUE; lnk_ip6tnl.is_tap = TRUE;
if (!nmtstp_link_ip6gre_add(NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) { if (!nmtstp_link_ip6gre_add(NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip("Cannot create ip6gretap tunnel because of missing ip6_gre module " g_test_skip("Cannot create ip6gretap tunnel because of missing ip6_gre module "
"(modprobe ip6_gre)"); "(modprobe ip6_gre)");
goto out_delete_parent; goto out_delete_parent;
@ -1506,6 +1482,7 @@ test_software_detect(gconstpointer user_data)
} }
break; break;
} }
case NM_LINK_TYPE_MACVLAN: case NM_LINK_TYPE_MACVLAN:
{ {
NMPlatformLnkMacvlan lnk_macvlan = {}; NMPlatformLnkMacvlan lnk_macvlan = {};
@ -1539,6 +1516,7 @@ test_software_detect(gconstpointer user_data)
g_error("Failed adding MACVLAN interface"); g_error("Failed adding MACVLAN interface");
break; break;
} }
case NM_LINK_TYPE_MACVTAP: case NM_LINK_TYPE_MACVTAP:
{ {
NMPlatformLnkMacvlan lnk_macvtap = {}; NMPlatformLnkMacvlan lnk_macvtap = {};
@ -1551,10 +1529,12 @@ test_software_detect(gconstpointer user_data)
g_error("Failed adding MACVTAP interface"); g_error("Failed adding MACVTAP interface");
break; break;
} }
case NM_LINK_TYPE_SIT: case NM_LINK_TYPE_SIT:
{ {
NMPlatformLnkSit lnk_sit = {}; NMPlatformLnkSit lnk_sit = {};
gboolean gracefully_skip = FALSE;
module_loaded = nmtstp_ensure_module("sit");
lnk_sit.local = nmtst_inet4_from_string("192.168.200.1"); lnk_sit.local = nmtst_inet4_from_string("192.168.200.1");
lnk_sit.remote = nmtst_inet4_from_string("172.25.100.14"); lnk_sit.remote = nmtst_inet4_from_string("172.25.100.14");
@ -1563,13 +1543,8 @@ test_software_detect(gconstpointer user_data)
lnk_sit.tos = 31; lnk_sit.tos = 31;
lnk_sit.path_mtu_discovery = FALSE; lnk_sit.path_mtu_discovery = FALSE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "sit0")) {
/* Seems that the sit module is not loaded... try to load it. */
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "sit", NULL) != 0;
}
if (!nmtstp_link_sit_add(NULL, ext, DEVICE_NAME, &lnk_sit)) { if (!nmtstp_link_sit_add(NULL, ext, DEVICE_NAME, &lnk_sit)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip( g_test_skip(
"Cannot create sit tunnel because of missing sit module (modprobe sit)"); "Cannot create sit tunnel because of missing sit module (modprobe sit)");
goto out_delete_parent; goto out_delete_parent;
@ -1578,6 +1553,7 @@ test_software_detect(gconstpointer user_data)
} }
break; break;
} }
case NM_LINK_TYPE_VLAN: case NM_LINK_TYPE_VLAN:
{ {
NMPlatformLnkVlan lnk_vlan = {}; NMPlatformLnkVlan lnk_vlan = {};
@ -1601,6 +1577,7 @@ test_software_detect(gconstpointer user_data)
g_error("Failed adding VLAN interface"); g_error("Failed adding VLAN interface");
break; break;
} }
case NM_LINK_TYPE_VRF: case NM_LINK_TYPE_VRF:
{ {
NMPlatformLnkVrf lnk_vrf = {}; NMPlatformLnkVrf lnk_vrf = {};
@ -1617,14 +1594,9 @@ test_software_detect(gconstpointer user_data)
} }
break; break;
} }
case NM_LINK_TYPE_VTI:
{
gboolean gracefully_skip = FALSE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "ip_vti0")) { case NM_LINK_TYPE_VTI:
/* Seems that the ip_vti module is not loaded... try to load it. */ module_loaded = nmtstp_ensure_module("ip_vti");
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip_vti", NULL) != 0;
}
lnk_vti.local = nmtst_inet4_from_string("192.168.212.204"); lnk_vti.local = nmtst_inet4_from_string("192.168.212.204");
lnk_vti.remote = nmtst_inet4_from_string("172.168.11.25"); lnk_vti.remote = nmtst_inet4_from_string("172.168.11.25");
@ -1633,7 +1605,7 @@ test_software_detect(gconstpointer user_data)
lnk_vti.okey = 13; lnk_vti.okey = 13;
if (!nmtstp_link_vti_add(NULL, ext, DEVICE_NAME, &lnk_vti)) { if (!nmtstp_link_vti_add(NULL, ext, DEVICE_NAME, &lnk_vti)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip( g_test_skip(
"Cannot create vti tunnel because of missing vti module (modprobe ip_vti)"); "Cannot create vti tunnel because of missing vti module (modprobe ip_vti)");
goto out_delete_parent; goto out_delete_parent;
@ -1641,15 +1613,9 @@ test_software_detect(gconstpointer user_data)
g_error("Failed adding VTI tunnel"); g_error("Failed adding VTI tunnel");
} }
break; break;
}
case NM_LINK_TYPE_VTI6:
{
gboolean gracefully_skip = FALSE;
if (!nm_platform_link_get_by_ifname(NM_PLATFORM_GET, "ip6_vti0")) { case NM_LINK_TYPE_VTI6:
/* Seems that the ip6_vti module is not loaded... try to load it. */ module_loaded = nmtstp_ensure_module("ip6_vti");
gracefully_skip = nmp_utils_modprobe(NULL, TRUE, "ip6_vti", NULL) != 0;
}
lnk_vti6.local = nmtst_inet6_from_string("fd01::1"); lnk_vti6.local = nmtst_inet6_from_string("fd01::1");
lnk_vti6.remote = nmtst_inet6_from_string("fd02::2"); lnk_vti6.remote = nmtst_inet6_from_string("fd02::2");
@ -1658,7 +1624,7 @@ test_software_detect(gconstpointer user_data)
lnk_vti6.okey = 14; lnk_vti6.okey = 14;
if (!nmtstp_link_vti6_add(NULL, ext, DEVICE_NAME, &lnk_vti6)) { if (!nmtstp_link_vti6_add(NULL, ext, DEVICE_NAME, &lnk_vti6)) {
if (gracefully_skip) { if (!module_loaded) {
g_test_skip( g_test_skip(
"Cannot create vti6 tunnel because of missing vti module (modprobe ip_vti)"); "Cannot create vti6 tunnel because of missing vti module (modprobe ip_vti)");
goto out_delete_parent; goto out_delete_parent;
@ -1666,7 +1632,7 @@ test_software_detect(gconstpointer user_data)
g_error("Failed adding VTI6 tunnel"); g_error("Failed adding VTI6 tunnel");
} }
break; break;
}
case NM_LINK_TYPE_VXLAN: case NM_LINK_TYPE_VXLAN:
{ {
NMPlatformLnkVxlan lnk_vxlan = {}; NMPlatformLnkVxlan lnk_vxlan = {};
@ -1698,6 +1664,7 @@ test_software_detect(gconstpointer user_data)
g_assert(nmtstp_link_vxlan_add(NULL, ext, DEVICE_NAME, &lnk_vxlan)); g_assert(nmtstp_link_vxlan_add(NULL, ext, DEVICE_NAME, &lnk_vxlan));
break; break;
} }
case NM_LINK_TYPE_TUN: case NM_LINK_TYPE_TUN:
{ {
gboolean owner_valid = nmtst_get_rand_bool(); gboolean owner_valid = nmtst_get_rand_bool();
@ -1732,6 +1699,7 @@ test_software_detect(gconstpointer user_data)
(!lnk_tun.persist || nmtst_get_rand_bool()) ? &tun_fd : NULL)); (!lnk_tun.persist || nmtst_get_rand_bool()) ? &tun_fd : NULL));
break; break;
} }
case NM_LINK_TYPE_WIREGUARD: case NM_LINK_TYPE_WIREGUARD:
{ {
const NMPlatformLink *link; const NMPlatformLink *link;