Change check_iproute() behavior in order to improve
its expansibility.
Signed-off-by: Xing Gu <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list