Fix building with --disable-legacy-protocol.
authorGuus Sliepen <guus@tinc-vpn.org>
Thu, 18 Oct 2018 14:42:18 +0000 (16:42 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 18 Oct 2018 14:42:18 +0000 (16:42 +0200)
configure.ac
src/net_packet.c
src/net_setup.c
src/nolegacy/crypto.c
src/protocol_auth.c
src/protocol_key.c
src/tincctl.c

index 1b8b887ed509874b1cfb579ab607a106df4adec9..5a82c69651fa6557eb2b8ee4a44b24fd9587a97e 100644 (file)
@@ -95,6 +95,7 @@ AC_ARG_ENABLE(vde,
   AS_HELP_STRING([--enable-vde], [enable support for Virtual Distributed Ethernet]),
   [ AS_IF([test "x$enable_vde" = "xyes"],
       [ AC_CHECK_HEADERS(libvdeplug_dyn.h, [], [AC_MSG_ERROR([VDE plug header files not found.]); break])
+        AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl"], [AC_MSG_ERROR([VDE plug depends on libdl.]); break])
         AC_DEFINE(ENABLE_VDE, 1, [Support for VDE])
         vde=true
       ],
index 6b40f2ad8a70284b9601e6e74d1d20713eabd6e5..d589228dc6427d1c38eba2f37e6b4e5bea68398f 100644 (file)
@@ -314,13 +314,6 @@ static bool try_mac(node_t *n, const vpn_packet_t *inpkt) {
 }
 
 static bool receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
-       vpn_packet_t pkt1, pkt2;
-       vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 };
-       int nextpkt = 0;
-       size_t outlen;
-       pkt1.offset = DEFAULT_PACKET_OFFSET;
-       pkt2.offset = DEFAULT_PACKET_OFFSET;
-
        if(n->status.sptps) {
                if(!n->sptps.state) {
                        if(!n->status.waitingforkey) {
@@ -356,6 +349,12 @@ static bool receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
 #ifdef DISABLE_LEGACY
        return false;
 #else
+       vpn_packet_t pkt1, pkt2;
+       vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 };
+       int nextpkt = 0;
+       size_t outlen;
+       pkt1.offset = DEFAULT_PACKET_OFFSET;
+       pkt2.offset = DEFAULT_PACKET_OFFSET;
 
        if(!n->status.validkey_in) {
                logger(DEBUG_TRAFFIC, LOG_DEBUG, "Got packet from %s (%s) but he hasn't got our key yet", n->name, n->hostname);
@@ -699,18 +698,6 @@ static void choose_local_address(const node_t *n, const sockaddr_t **sa, int *so
 }
 
 static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
-       vpn_packet_t pkt1, pkt2;
-       vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 };
-       vpn_packet_t *inpkt = origpkt;
-       int nextpkt = 0;
-       vpn_packet_t *outpkt;
-       int origlen = origpkt->len;
-       size_t outlen;
-       int origpriority = origpkt->priority;
-
-       pkt1.offset = DEFAULT_PACKET_OFFSET;
-       pkt2.offset = DEFAULT_PACKET_OFFSET;
-
        if(!n->status.reachable) {
                logger(DEBUG_TRAFFIC, LOG_INFO, "Trying to send UDP packet to unreachable node %s (%s)", n->name, n->hostname);
                return;
@@ -724,6 +711,18 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
 #ifdef DISABLE_LEGACY
        return;
 #else
+       vpn_packet_t pkt1, pkt2;
+       vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 };
+       vpn_packet_t *inpkt = origpkt;
+       int nextpkt = 0;
+       vpn_packet_t *outpkt;
+       int origlen = origpkt->len;
+       size_t outlen;
+       int origpriority = origpkt->priority;
+
+       pkt1.offset = DEFAULT_PACKET_OFFSET;
+       pkt2.offset = DEFAULT_PACKET_OFFSET;
+
        /* Make sure we have a valid key */
 
        if(!n->status.validkey) {
index ed69808d6c1a882229c1299d586305b2bda0db75..7d88c326bbb8a43c9839e39e959c45102445a3b2 100644 (file)
@@ -341,6 +341,7 @@ static bool read_rsa_private_key(void) {
 }
 #endif
 
+#ifndef DISABLE_LEGACY
 static timeout_t keyexpire_timeout;
 
 static void keyexpire_handler(void *data) {
@@ -349,6 +350,7 @@ static void keyexpire_handler(void *data) {
                keylifetime, rand() % 100000
        });
 }
+#endif
 
 void regenerate_key(void) {
        logger(DEBUG_STATUS, LOG_INFO, "Expiring symmetric keys");
@@ -822,7 +824,7 @@ void device_disable(void) {
   Configure node_t myself and set up the local sockets (listen only)
 */
 static bool setup_myself(void) {
-       char *name, *hostname, *cipher, *digest, *type;
+       char *name, *hostname, *type;
        char *address = NULL;
        bool port_specified = false;
 
@@ -967,6 +969,8 @@ static bool setup_myself(void) {
 #ifndef DISABLE_LEGACY
        /* Generate packet encryption key */
 
+       char *cipher;
+
        if(!get_config_string(lookup_config(config_tree, "Cipher"), &cipher)) {
                cipher = xstrdup("aes-256-cbc");
        }
@@ -995,6 +999,8 @@ static bool setup_myself(void) {
                return false;
        }
 
+       char *digest;
+
        if(!get_config_string(lookup_config(config_tree, "Digest"), &digest)) {
                digest = xstrdup("sha256");
        }
index 44692fdf28906e6b2bb0f5ecd4af6d0cd8107946..b013f1f94019ba9afd165847592258b7a2c020d1 100644 (file)
@@ -42,7 +42,9 @@ static void random_exit(void) {
        close(random_fd);
 }
 
-void randomize(void *out, size_t outlen) {
+void randomize(void *vout, size_t outlen) {
+       char *out = vout;
+
        while(outlen) {
                size_t len = read(random_fd, out, outlen);
 
index 3a84c22105d60a4fdce25fd3c8552f90324a06f2..f78e2727de198cf1bed5573e4baee84a9546533c 100644 (file)
@@ -486,11 +486,8 @@ bool id_h(connection_t *c, const char *request) {
        }
 }
 
+#ifndef DISABLE_LEGACY
 bool send_metakey(connection_t *c) {
-#ifdef DISABLE_LEGACY
-       return false;
-#else
-
        if(!myself->connection->rsa) {
                logger(DEBUG_CONNECTIONS, LOG_ERR, "Peer %s (%s) uses legacy protocol which we don't support", c->name, c->hostname);
                return false;
@@ -580,14 +577,9 @@ bool send_metakey(connection_t *c) {
 
        c->status.encryptout = true;
        return result;
-#endif
 }
 
 bool metakey_h(connection_t *c, const char *request) {
-#ifdef DISABLE_LEGACY
-       return false;
-#else
-
        if(!myself->connection->rsa) {
                return false;
        }
@@ -655,13 +647,9 @@ bool metakey_h(connection_t *c, const char *request) {
        c->allow_request = CHALLENGE;
 
        return send_challenge(c);
-#endif
 }
 
 bool send_challenge(connection_t *c) {
-#ifdef DISABLE_LEGACY
-       return false;
-#else
        const size_t len = rsa_size(c->rsa);
        char buffer[len * 2 + 1];
 
@@ -678,14 +666,9 @@ bool send_challenge(connection_t *c) {
        /* Send the challenge */
 
        return send_request(c, "%d %s", CHALLENGE, buffer);
-#endif
 }
 
 bool challenge_h(connection_t *c, const char *request) {
-#ifdef DISABLE_LEGACY
-       return false;
-#else
-
        if(!myself->connection->rsa) {
                return false;
        }
@@ -720,8 +703,6 @@ bool challenge_h(connection_t *c, const char *request) {
        } else {
                return true;
        }
-
-#endif
 }
 
 bool send_chal_reply(connection_t *c) {
@@ -748,9 +729,6 @@ bool send_chal_reply(connection_t *c) {
 }
 
 bool chal_reply_h(connection_t *c, const char *request) {
-#ifdef DISABLE_LEGACY
-       return false;
-#else
        char hishash[MAX_STRING_SIZE];
 
        if(sscanf(request, "%*d " MAX_STRING, hishash) != 1) {
@@ -791,13 +769,9 @@ bool chal_reply_h(connection_t *c, const char *request) {
        }
 
        return send_ack(c);
-#endif
 }
 
 static bool send_upgrade(connection_t *c) {
-#ifdef DISABLE_LEGACY
-       return false;
-#else
        /* Special case when protocol_minor is 1: the other end is Ed25519 capable,
         * but doesn't know our key yet. So send it now. */
 
@@ -810,8 +784,46 @@ static bool send_upgrade(connection_t *c) {
        bool result = send_request(c, "%d %s", ACK, pubkey);
        free(pubkey);
        return result;
-#endif
 }
+#else
+bool send_metakey(connection_t *c) {
+       (void)c;
+       return false;
+}
+
+bool metakey_h(connection_t *c, const char *request) {
+       (void)c;
+       (void)request;
+       return false;
+}
+
+bool send_challenge(connection_t *c) {
+       (void)c;
+       return false;
+}
+
+bool challenge_h(connection_t *c, const char *request) {
+       (void)c;
+       (void)request;
+       return false;
+}
+
+bool send_chal_reply(connection_t *c) {
+       (void)c;
+       return false;
+}
+
+bool chal_reply_h(connection_t *c, const char *request) {
+       (void)c;
+       (void)request;
+       return false;
+}
+
+static bool send_upgrade(connection_t *c) {
+       (void)c;
+       return false;
+}
+#endif
 
 bool send_ack(connection_t *c) {
        if(c->protocol_minor == 1) {
index 58a3bd207c87b4ba25bbb1180d34542eb2851093..d9c58d9516167f40a257153f9552598459cca900 100644 (file)
@@ -34,7 +34,9 @@
 #include "utils.h"
 #include "xalloc.h"
 
+#ifndef DISABLE_LEGACY
 static bool mykeyused = false;
+#endif
 
 void send_key_changed(void) {
 #ifndef DISABLE_LEGACY
index a4bb5912ba2880720fe0e73935781963da1576b8..8181dd93211e2a28beb8dc103c3d770665be3a23 100644 (file)
@@ -2301,6 +2301,7 @@ static int cmd_init(int argc, char *argv[]) {
 
 static int cmd_generate_keys(int argc, char *argv[]) {
 #ifdef DISABLE_LEGACY
+       (void)argv;
 
        if(argc > 1) {
 #else