Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/checkpoint-restore/criu.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Tikhomirov <ptikhomirov@virtuozzo.com>2016-04-28 19:39:03 +0300
committerPavel Emelyanov <xemul@virtuozzo.com>2016-05-27 13:32:05 +0300
commit52bccb262c797c02cd3daa268f7d5d4c23593f71 (patch)
treeabb3f642ce675a63db5b873388a7204bc7268045 /test/zdtm/static/netns-dev.c
parentac7c8b24938184dccff55f6f2875d2c50f07e4dd (diff)
zdtm/net/ipv6: add test for string stable_secret
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@virtuozzo.com> Reviewed-by: Andrew Vagin <avagin@virtuozzo.com> Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Diffstat (limited to 'test/zdtm/static/netns-dev.c')
-rw-r--r--test/zdtm/static/netns-dev.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/test/zdtm/static/netns-dev.c b/test/zdtm/static/netns-dev.c
index 21a6e5ce4..37b7b04b0 100644
--- a/test/zdtm/static/netns-dev.c
+++ b/test/zdtm/static/netns-dev.c
@@ -351,6 +351,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;
@@ -368,6 +443,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)
@@ -375,6 +453,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();
@@ -385,6 +466,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)
@@ -392,6 +476,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;