[CRIU] [PATCH v7 14/14] zdtm/net/ipv6: add test for string stable_secret
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Tue Apr 26 04:49:45 PDT 2016
stable_secret is always unset in new netns, and we can not restore
it to that state after it is set, so just skip save/restore steps
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
test/zdtm/static/netns-dev.c | 87 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/test/zdtm/static/netns-dev.c b/test/zdtm/static/netns-dev.c
index 456b1d0..3665dd7 100644
--- a/test/zdtm/static/netns-dev.c
+++ b/test/zdtm/static/netns-dev.c
@@ -345,6 +345,81 @@ static int for_each_option_do(int (*f)(FILE *fp, int *conf, int *conf_rand,
return 0;
}
+#define IPV6ADDR_EXAMPLE "2607:f0d0:1002:0051:0000:0000:0000:0004"
+#define MAX_STR_CONF_LEN 200
+
+static int set_stable_secret(struct test_conf *tc) {
+ int ret;
+ FILE *fp;
+ char path[PATH_MAX];
+
+ ret = snprintf(path, sizeof(path), "%s/%s", tc->dir6, "stable_secret");
+ if (ret < 0) {
+ pr_perror("snprintf");
+ return -1;
+ }
+
+ ret = access(path, W_OK);
+ if (ret < 0)
+ return 0;
+
+ fp = fopen(path, "r+");
+ if (fp == NULL) {
+ pr_perror("fopen");
+ return -1;
+ }
+
+ ret = fprintf(fp, IPV6ADDR_EXAMPLE);
+ if (ret < 0) {
+ pr_perror("fprintf");
+ fclose(fp);
+ return -1;
+ }
+
+ fclose(fp);
+ return 0;
+}
+
+static int check_stable_secret(struct test_conf *tc) {
+ int ret;
+ FILE *fp;
+ char path[PATH_MAX];
+ char val[MAX_STR_CONF_LEN+1];
+
+ ret = snprintf(path, sizeof(path), "%s/%s", tc->dir6, "stable_secret");
+ if (ret < 0) {
+ pr_perror("snprintf");
+ return -1;
+ }
+
+ ret = access(path, W_OK);
+ if (ret < 0)
+ return 0;
+
+ fp = fopen(path, "r+");
+ if (fp == NULL) {
+ pr_perror("fopen");
+ return -1;
+ }
+
+ ret = fscanf(fp, "%s", val);
+ if (ret != 1) {
+ pr_perror("fscanf");
+ fclose(fp);
+ return -1;
+ }
+
+ if (strcmp(val, IPV6ADDR_EXAMPLE)) {
+ fail("Option \"%s\" changed from %s to %s",
+ path, IPV6ADDR_EXAMPLE, val);
+ fclose(fp);
+ return -1;
+ }
+
+ fclose(fp);
+ return 0;
+}
+
int main(int argc, char **argv)
{
int ret;
@@ -362,6 +437,9 @@ int main(int argc, char **argv)
ret = for_each_option_do(gen_conf, &lo);
if (ret < 0)
return -1;
+ ret = set_stable_secret(&lo);
+ if (ret < 0)
+ return -1;
ret = for_each_option_do(save_conf, &def);
if (ret < 0)
@@ -369,6 +447,9 @@ int main(int argc, char **argv)
ret = for_each_option_do(gen_conf, &def);
if (ret < 0)
return -1;
+ ret = set_stable_secret(&def);
+ if (ret < 0)
+ return -1;
test_daemon();
test_waitsig();
@@ -379,6 +460,9 @@ int main(int argc, char **argv)
ret = for_each_option_do(restore_conf, &lo);
if (ret < 0)
return -1;
+ ret = check_stable_secret(&lo);
+ if (ret < 0)
+ return -1;
ret = for_each_option_do(check_conf, &def);
if (ret < 0)
@@ -386,6 +470,9 @@ int main(int argc, char **argv)
ret = for_each_option_do(restore_conf, &def);
if (ret < 0)
return -1;
+ ret = check_stable_secret(&def);
+ if (ret < 0)
+ return -1;
pass();
return 0;
--
2.4.11
More information about the CRIU
mailing list