diff options
Diffstat (limited to 'wg_dynamic_client.c')
-rw-r--r-- | wg_dynamic_client.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/wg_dynamic_client.c b/wg_dynamic_client.c index 318714d..7862e9e 100644 --- a/wg_dynamic_client.c +++ b/wg_dynamic_client.c @@ -7,6 +7,7 @@ #include <stdlib.h> #include <stdio.h> +#include <string.h> const char *PROG_NAME; @@ -17,6 +18,9 @@ static void show_usage() int main(int argc, char *argv[]) { + const char *iface; + int sock; + PROG_NAME = argv[0]; if (argc == 1) { @@ -24,8 +28,22 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - if (connect_to_server(argv[1]) < 0) { - perror("error connecting to server"); + iface = argv[1]; + + if (!is_server_in_allowed_ips(iface)) { + fprintf(stderr, "server is not in allowed IPs for tunnel %s\n", + iface); + return EXIT_FAILURE; + } + + if ((sock = connect_to_server(argv[1])) < 0) { + fprintf(stderr, "error connecting to server: %s\n", + strerror(-sock)); + return EXIT_FAILURE; + } + + if ((sock = close_connection(sock)) < 0) { + fprintf(stderr, "error closing socket: %s\n", strerror(-sock)); return EXIT_FAILURE; } |