From 52bccb262c797c02cd3daa268f7d5d4c23593f71 Mon Sep 17 00:00:00 2001 From: Pavel Tikhomirov Date: Thu, 28 Apr 2016 19:39:03 +0300 Subject: 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 Reviewed-by: Andrew Vagin Signed-off-by: Pavel Emelyanov --- test/zdtm/static/netns-dev.c | 87 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) (limited to 'test/zdtm/static/netns-dev.c') 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; @@ -366,6 +441,9 @@ int main(int argc, char **argv) if (ret < 0) return -1; ret = for_each_option_do(gen_conf, &lo); + if (ret < 0) + return -1; + ret = set_stable_secret(&lo); if (ret < 0) return -1; @@ -373,6 +451,9 @@ int main(int argc, char **argv) if (ret < 0) return -1; ret = for_each_option_do(gen_conf, &def); + if (ret < 0) + return -1; + ret = set_stable_secret(&def); if (ret < 0) return -1; @@ -383,6 +464,9 @@ int main(int argc, char **argv) if (ret < 0) return -1; ret = for_each_option_do(restore_conf, &lo); + if (ret < 0) + return -1; + ret = check_stable_secret(&lo); if (ret < 0) return -1; @@ -390,6 +474,9 @@ int main(int argc, char **argv) if (ret < 0) return -1; ret = for_each_option_do(restore_conf, &def); + if (ret < 0) + return -1; + ret = check_stable_secret(&def); if (ret < 0) return -1; -- cgit v1.2.3