From 8365449e9b304a94cdcf713f87325e8826c784da Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Mon, 8 Dec 2014 10:48:25 +0100 Subject: [PATCH] deprecated ipv6_netmask --- src/common.h | 16 ++++++++++++++++ src/config.c | 8 +++----- src/ip-lease.c | 10 ++++++---- src/main-auth.c | 1 - src/sup-config/file.c | 4 +--- src/vpn.h | 2 -- src/worker-auth.c | 6 ------ src/worker-misc.c | 1 - 8 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/common.h b/src/common.h index 856fd824..f9c71f08 100644 --- a/src/common.h +++ b/src/common.h @@ -42,6 +42,22 @@ ssize_t force_read_timeout(int sockfd, void *buf, size_t len, unsigned sec); ssize_t recv_timeout(int sockfd, void *buf, size_t len, unsigned sec); int ip_cmp(const struct sockaddr_storage *s1, const struct sockaddr_storage *s2, size_t n); char* ipv6_prefix_to_mask(void *pool, unsigned prefix); +inline static int valid_ipv6_prefix(unsigned prefix) +{ + switch (prefix) { + case 16: + case 32: + case 48: + case 64: + case 80: + case 96: + case 112: + case 128: + return 1; + default: + return 0; + } +} typedef size_t (*pack_func)(const void*, uint8_t *); typedef size_t (*pack_size_func)(const void*); diff --git a/src/config.c b/src/config.c index 0b7e029b..8cbfbe44 100644 --- a/src/config.c +++ b/src/config.c @@ -561,10 +561,9 @@ unsigned force_cert_auth; READ_NUMERIC("ipv6-prefix", prefix); if (prefix > 0) { - config->network.ipv6_netmask = ipv6_prefix_to_mask(config, prefix); config->network.ipv6_prefix = prefix; - if (config->network.ipv6_netmask == NULL) { + if (valid_ipv6_prefix(prefix) == 0) { fprintf(stderr, "invalid IPv6 prefix: %u\n", prefix); exit(1); } @@ -642,8 +641,8 @@ static void check_cfg(struct cfg_st *config) exit(1); } - if (config->network.ipv6 != NULL && config->network.ipv6_netmask == NULL) { - fprintf(stderr, "No mask found for IPv6 network.\n"); + if (config->network.ipv6 != NULL && config->network.ipv6_prefix == 0) { + fprintf(stderr, "No prefix found for IPv6 network.\n"); exit(1); } @@ -775,7 +774,6 @@ unsigned i; DEL(config->network.ipv4); DEL(config->network.ipv4_netmask); DEL(config->network.ipv6); - DEL(config->network.ipv6_netmask); for (i=0;inetwork.routes_size;i++) DEL(config->network.routes[i]); DEL(config->network.routes); diff --git a/src/ip-lease.c b/src/ip-lease.c index 8f95b2c8..24a09f7f 100644 --- a/src/ip-lease.c +++ b/src/ip-lease.c @@ -273,15 +273,16 @@ int get_ipv6_lease(main_server_st* s, struct proc_st* proc) struct sockaddr_storage tmp, mask, network, rnd; unsigned i, max_loops = MAX_IP_TRIES; int ret; - const char* c_network, *c_netmask; + const char* c_network; + char *c_netmask = NULL; char buf[64]; - if (proc->config.ipv6_network && proc->config.ipv6_netmask) { + if (proc->config.ipv6_network && proc->config.ipv6_prefix) { c_network = proc->config.ipv6_network; - c_netmask = proc->config.ipv6_netmask; + c_netmask = ipv6_prefix_to_mask(proc, proc->config.ipv6_prefix); } else { c_network = s->config->network.ipv6; - c_netmask = s->config->network.ipv6_netmask; + c_netmask = ipv6_prefix_to_mask(proc, proc->config.ipv6_prefix); } if (c_network && c_netmask) { @@ -392,6 +393,7 @@ int get_ipv6_lease(main_server_st* s, struct proc_st* proc) return 0; fail: talloc_free(proc->ipv6); + talloc_free(c_netmask); proc->ipv6 = NULL; return ret; diff --git a/src/main-auth.c b/src/main-auth.c index e5dd214f..f08f1eed 100644 --- a/src/main-auth.c +++ b/src/main-auth.c @@ -85,7 +85,6 @@ int send_cookie_auth_reply(main_server_st* s, struct proc_st* proc, } msg.ipv4_netmask = proc->config.ipv4_netmask; - msg.ipv6_netmask = proc->config.ipv6_netmask; msg.ipv4_network = proc->config.ipv4_network; msg.ipv6_network = proc->config.ipv6_network; diff --git a/src/sup-config/file.c b/src/sup-config/file.c index c91138f5..e6a13757 100644 --- a/src/sup-config/file.c +++ b/src/sup-config/file.c @@ -199,10 +199,9 @@ struct group_cfg_st *sconfig = &proc->config; READ_RAW_NUMERIC("ipv6-prefix", prefix); if (prefix > 0) { - sconfig->ipv6_netmask = ipv6_prefix_to_mask(proc, prefix); sconfig->ipv6_prefix = prefix; - if (sconfig->ipv6_netmask == NULL) { + if (valid_ipv6_prefix(prefix) == 0) { syslog(LOG_ERR, "unknown ipv6-prefix '%u' in %s", prefix, file); } } @@ -307,7 +306,6 @@ unsigned i; talloc_free(config->ipv4_network); talloc_free(config->ipv6_network); talloc_free(config->ipv4_netmask); - talloc_free(config->ipv6_netmask); safe_memset(config, 0, sizeof(*config)); } diff --git a/src/vpn.h b/src/vpn.h index 03721e12..0809ffc4 100644 --- a/src/vpn.h +++ b/src/vpn.h @@ -145,7 +145,6 @@ struct group_cfg_st { char *ipv6_network; unsigned ipv6_prefix; char *ipv4_netmask; - char *ipv6_netmask; char *cgroup; @@ -166,7 +165,6 @@ struct vpn_st { char *ipv4_network; char *ipv4; char *ipv4_local; /* local IPv4 address */ - char *ipv6_netmask; char *ipv6_network; unsigned ipv6_prefix; diff --git a/src/worker-auth.c b/src/worker-auth.c index 4351e3d1..d87aa977 100644 --- a/src/worker-auth.c +++ b/src/worker-auth.c @@ -548,12 +548,6 @@ static int recv_cookie_auth_reply(worker_st * ws) talloc_strdup(ws, msg->ipv4_netmask); } - if (msg->ipv6_netmask != NULL) { - talloc_free(ws->config->network.ipv6_netmask); - ws->config->network.ipv6_netmask = - talloc_strdup(ws, msg->ipv6_netmask); - } - if (msg->ipv4_network != NULL) { talloc_free(ws->config->network.ipv4_network); ws->config->network.ipv4_network = diff --git a/src/worker-misc.c b/src/worker-misc.c index d520a28c..73085ac9 100644 --- a/src/worker-misc.c +++ b/src/worker-misc.c @@ -227,7 +227,6 @@ int complete_vpn_info(worker_st * ws, struct vpn_st *vinfo) vinfo->ipv6_network = ws->config->network.ipv6_network; vinfo->ipv4_netmask = ws->config->network.ipv4_netmask; - vinfo->ipv6_netmask = ws->config->network.ipv6_netmask; vinfo->ipv6_prefix = ws->config->network.ipv6_prefix; if (ws->config->network.mtu != 0) {