Change check_iproute() behavior in order to improve its expansibility. Signed-off-by: Xing Gu <gux.f...@cn.fujitsu.com> --- testcases/kernel/containers/netns/netns_crtchild.c | 7 ++++- .../containers/netns/netns_crtchild_delchild.c | 7 ++++- testcases/kernel/containers/netns/netns_helper.h | 31 +++++++++++++++++----- .../kernel/containers/netns/netns_par_chld_ftp.c | 7 ++++- .../kernel/containers/netns/netns_par_chld_ipv6.c | 7 ++++- .../containers/netns/netns_two_children_ns.c | 7 ++++- 6 files changed, 54 insertions(+), 12 deletions(-)
diff --git a/testcases/kernel/containers/netns/netns_crtchild.c b/testcases/kernel/containers/netns/netns_crtchild.c index 3b5a696..a6da669 100644 --- a/testcases/kernel/containers/netns/netns_crtchild.c +++ b/testcases/kernel/containers/netns/netns_crtchild.c @@ -29,12 +29,17 @@ #include "common.h" #include "netns_helper.h" +#define IPROUTE_MIN_VER 80725 + const char *TCID = "netns_crtchild"; static void setup(void) { tst_require_root(NULL); - check_iproute(); + if (check_iproute(IPROUTE_MIN_VER) == -1) { + tst_brkm(TCONF, NULL, + "iproute tools do not support setting network namespaces"); + } check_netns(); } diff --git a/testcases/kernel/containers/netns/netns_crtchild_delchild.c b/testcases/kernel/containers/netns/netns_crtchild_delchild.c index 3235990..b2aa7cc 100644 --- a/testcases/kernel/containers/netns/netns_crtchild_delchild.c +++ b/testcases/kernel/containers/netns/netns_crtchild_delchild.c @@ -33,12 +33,17 @@ #include "common.h" #include "netns_helper.h" +#define IPROUTE_MIN_VER 80725 + const char *TCID = "netns_crtchild_delchild"; static void setup(void) { tst_require_root(NULL); - check_iproute(); + if (check_iproute(IPROUTE_MIN_VER) == -1) { + tst_brkm(TCONF, NULL, + "iproute tools do not support setting network namespaces"); + } check_netns(); } diff --git a/testcases/kernel/containers/netns/netns_helper.h b/testcases/kernel/containers/netns/netns_helper.h index 7f301ce..bd0a88d 100644 --- a/testcases/kernel/containers/netns/netns_helper.h +++ b/testcases/kernel/containers/netns/netns_helper.h @@ -33,25 +33,42 @@ #define CLONE_NEWNS -1 #endif -#define IPROUTE_MIN_VER 80725 - -static void check_iproute(void) +/* + * Check whether the current iproute version matches specified iproute. + * + * Returns: + * -1 - cur_ipver is less than spe_ipver + * 0 - cur_ipver is equal to spe_ipver + * 1 - cur_ipver is greater than spe_ipver + */ +static int check_iproute(int spe_ipver) { FILE *ipf; int n; - unsigned int ipver = 0; + unsigned int cur_ipver = 0; + int ret; ipf = popen("ip -V", "r"); if (ipf == NULL) tst_brkm(TCONF, NULL, "Failed while opening pipe for iproute check"); - n = fscanf(ipf, "ip utility, iproute2-ss%u", &ipver); - if (n < 1 || ipver < IPROUTE_MIN_VER) + n = fscanf(ipf, "ip utility, iproute2-ss%u", &cur_ipver); + if (n < 1) { + pclose(ipf); tst_brkm(TCONF, NULL, - "iproute tools do not support setting network namespaces"); + "Failed while obtaining version for iproute check"); + } else { + if (cur_ipver < spe_ipver) + ret = -1; + else if (cur_ipver == spe_ipver) + ret = 0; + else + ret = 1; + } pclose(ipf); + return ret; } static void check_netns(void) diff --git a/testcases/kernel/containers/netns/netns_par_chld_ftp.c b/testcases/kernel/containers/netns/netns_par_chld_ftp.c index 97411f7..20ab179 100644 --- a/testcases/kernel/containers/netns/netns_par_chld_ftp.c +++ b/testcases/kernel/containers/netns/netns_par_chld_ftp.c @@ -30,12 +30,17 @@ #include "common.h" #include "netns_helper.h" +#define IPROUTE_MIN_VER 80725 + const char *TCID = "netns_par_chld_ftp"; static void setup(void) { tst_require_root(NULL); - check_iproute(); + if (check_iproute(IPROUTE_MIN_VER) == -1) { + tst_brkm(TCONF, NULL, + "iproute tools do not support setting network namespaces"); + } check_netns(); } diff --git a/testcases/kernel/containers/netns/netns_par_chld_ipv6.c b/testcases/kernel/containers/netns/netns_par_chld_ipv6.c index 1e50f24..c68e7ab 100644 --- a/testcases/kernel/containers/netns/netns_par_chld_ipv6.c +++ b/testcases/kernel/containers/netns/netns_par_chld_ipv6.c @@ -47,6 +47,8 @@ #include "common.h" #include "netns_helper.h" +#define IPROUTE_MIN_VER 80725 + char *TCID = "netns_ipv6"; int TST_TOTAL = 1; @@ -56,7 +58,10 @@ int TST_TOTAL = 1; static void setup(void) { tst_require_root(NULL); - check_iproute(); + if (check_iproute(IPROUTE_MIN_VER) == -1) { + tst_brkm(TCONF, NULL, + "iproute tools do not support setting network namespaces"); + } check_netns(); } diff --git a/testcases/kernel/containers/netns/netns_two_children_ns.c b/testcases/kernel/containers/netns/netns_two_children_ns.c index 0a032d0..2446200 100644 --- a/testcases/kernel/containers/netns/netns_two_children_ns.c +++ b/testcases/kernel/containers/netns/netns_two_children_ns.c @@ -49,13 +49,18 @@ #include "common.h" #include "netns_helper.h" +#define IPROUTE_MIN_VER 80725 + char *TCID = "netns_2children"; int TST_TOTAL = 1; static void setup(void) { tst_require_root(NULL); - check_iproute(); + if (check_iproute(IPROUTE_MIN_VER) == -1) { + tst_brkm(TCONF, NULL, + "iproute tools do not support setting network namespaces"); + } check_netns(); } -- 1.9.3 ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list