]> git.meshlink.io Git - meshlink/commitdiff
Update android build
authorsairoop-elear <sairoop@elear.solutions>
Mon, 13 May 2019 00:52:15 +0000 (06:22 +0530)
committerGuus Sliepen <guus@meshlink.io>
Fri, 31 May 2019 14:19:49 +0000 (16:19 +0200)
Fix compiling warnings

21 files changed:
configure.ac
examples/.gitignore
examples/Makefile.am
examples/chatpp.cc
examples/groupchat.c
examples/manynodes.c
examples/monitor.c
src/Makefile.am
src/ed25519/precomp_data.h
src/meshlink.c
src/meshlink.sym [new file with mode: 0644]
src/net.c
src/net.h
src/net_packet.c
src/net_socket.c
src/netutl.c
src/node.c
src/protocol_auth.c
src/route.c
src/splay_tree.c
src/submesh.c

index c1baec17d7f37c9a7f659e026db0188bde493121..bc3d27fd1d916631eb537f14447bb82efa3907ea 100644 (file)
@@ -96,9 +96,15 @@ PKG_CHECK_MODULES([CMOCKA], [cmocka >= 1.1.0], [cmocka=true], [cmocka=false])
 PKG_CHECK_MODULES([LXC], [lxc >= 2.0.0], [lxc=true], [lxc=false])
 AM_CONDITIONAL(BLACKBOX_TESTS, test "$cmocka" = true -a "$lxc" = true)
 
+
 dnl Additional example code
 PKG_CHECK_MODULES([NCURSES], [ncurses >= 5], [curses=true], [curses=false])
-AM_CONDITIONAL(CURSES, test "$curses" = true)
+AC_ARG_ENABLE([monitor_code], 
+       [AS_HELP_STRING([--enable-monitor-code], [Add monitor example code to the build])],
+  [AS_IF([test "x$enable_monitor_code" = "xyes"], [monitor_code=true], [monitor_code=false])],
+  [monitor_code=false]
+)
+AM_CONDITIONAL(MONITOR, test "$monitor_code" = true)
 
 dnl Install test binaries
 AC_ARG_ENABLE([install_tests],
@@ -112,7 +118,7 @@ AM_CONDITIONAL(INSTALL_TESTS, test "$install_tests" = true)
 dnl Checks for header files.
 dnl We do this in multiple stages, because unlike Linux all the other operating systems really suck and don't include their own dependencies.
 
-AC_CHECK_HEADERS([syslog.h sys/file.h sys/param.h sys/resource.h sys/socket.h sys/time.h sys/un.h sys/wait.h netdb.h arpa/inet.h dirent.h])
+AC_CHECK_HEADERS([syslog.h sys/file.h sys/param.h sys/resource.h sys/socket.h sys/time.h sys/un.h sys/wait.h netdb.h arpa/inet.h dirent.h curses.h])
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 MeshLink_ATTRIBUTE(__malloc__)
@@ -128,7 +134,7 @@ AC_CHECK_TYPES([struct sockaddr_storage], ,AC_MSG_ERROR([System must support str
 
 dnl Checks for library functions.
 AC_TYPE_SIGNAL
-AC_CHECK_FUNCS([asprintf fchmod fork gettimeofday random select strdup usleep],
+AC_CHECK_FUNCS([asprintf fchmod fork gettimeofday random select setns strdup usleep],
   [], [], [#include "$srcdir/src/have.h"]
 )
 
index 681b8897a97bc093ffb899ea96eb62a53e5a14c6..3c0d41090338ea5652b16c7d9ad927e4e966c079 100644 (file)
@@ -5,3 +5,4 @@ chatpp
 manynodes
 meshlinkapp
 monitor
+groupchat
index fbd71382525d7ab1f2b119b03243a59b9be154a8..150c0c7abc03e5bc5828575dd6cd02a0be914183 100644 (file)
@@ -1,27 +1,29 @@
-noinst_PROGRAMS = meshlinkapp chat chatpp manynodes channels monitor groupchat
+noinst_PROGRAMS = meshlinkapp chat manynodes channels groupchat
 
 AM_CPPFLAGS = $(PTHREAD_CFLAGS) -I${top_srcdir}/src -iquote. -Wall
 AM_LDFLAGS = $(PTHREAD_LIBS)
 
 meshlinkapp_SOURCES = meshlinkapp.c
-meshlinkapp_LDADD = ${top_builddir}/src/libmeshlink.la
+meshlinkapp_LDADD = ${top_builddir}/src/libmeshlink.la ${top_builddir}/catta/src/libcatta.la
 
 chat_SOURCES = chat.c
-chat_LDADD = ${top_builddir}/src/libmeshlink.la
+chat_LDADD = ${top_builddir}/src/libmeshlink.la ${top_builddir}/catta/src/libcatta.la
 
-chatpp_SOURCES = chatpp.cc
-chatpp_LDADD = ${top_builddir}/src/libmeshlink.la
+#noinst_PROGRAMS += chatpp
+#chatpp_SOURCES = chatpp.cc
+#chatpp_LDADD = ${top_builddir}/src/libmeshlink.la
 
 manynodes_SOURCES = manynodes.c
-manynodes_LDADD = ${top_builddir}/src/libmeshlink.la
+manynodes_LDADD = ${top_builddir}/src/libmeshlink.la ${top_builddir}/catta/src/libcatta.la
 
 channels_SOURCES = channels.c
-channels_LDADD = ${top_builddir}/src/libmeshlink.la
+channels_LDADD = ${top_builddir}/src/libmeshlink.la ${top_builddir}/catta/src/libcatta.la
 
-if CURSES
+if MONITOR
+noinst_PROGRAMS += monitor
 monitor_SOURCES = monitor.c
 monitor_LDADD = ${top_builddir}/src/libmeshlink.la $(NCURSES_LIBS) -lm
 endif
 
 groupchat_SOURCES = groupchat.c
-groupchat_LDADD = ${top_builddir}/src/libmeshlink.la
+groupchat_LDADD = ${top_builddir}/src/libmeshlink.la ${top_builddir}/catta/src/libcatta.la
index d3690404fc2869b3b8998c849eb5484b193b5382..294ca866f602fb692eb6e37c39b8c817a07fd950 100644 (file)
@@ -99,7 +99,7 @@ static void parse_command(meshlink::mesh *mesh, char *buf) {
                        if(!nodes) {
                                fprintf(stderr, "Could not get list of nodes: %s\n", meshlink::strerror());
                        } else {
-                               printf("%zu known nodes:", nnodes);
+                               printf("%lu known nodes:", (unsigned long)nnodes);
 
                                for(size_t i = 0; i < nnodes; i++) {
                                        printf(" %s", nodes[i]->name);
index f84b3e99a03e6f6f753585357f6964fc58cea03d..38bbd85b63d009566d783267bb7438a2960c79c3 100644 (file)
@@ -239,10 +239,10 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) {
                        if(!nnodes) {
                                fprintf(stderr, "Could not get list of nodes: %s\n", meshlink_strerror(meshlink_errno));
                        } else {
-                               fprintf(stderr, "%zu known nodes:\n", nnodes);
+                               fprintf(stderr, "%lu known nodes:\n", (unsigned long)nnodes);
 
                                for(size_t i = 0; i < nnodes; i++) {
-                                       fprintf(stderr, " %lu. %s", i, nodes[i]->name);
+                                       fprintf(stderr, " %lu. %s", (unsigned long)i, nodes[i]->name);
 
                                        if((node_group = meshlink_get_node_submesh(mesh, nodes[i]))) {
                                                fprintf(stderr, "\t%s", node_group->name);
index f9150ef73b19d390f261945d021b3611810e5c65..3d82bd31d921f32dea1ad789f84b0d070fc02636 100644 (file)
@@ -272,7 +272,7 @@ static void parse_command(char *buf) {
                        if(!node) {
                                fprintf(stderr, "Unknown node '%s'\n", arg);
                        } else {
-                               printf("Node %s found, pmtu %zd\n", arg, meshlink_get_pmtu(mesh[nodeindex], node));
+                               printf("Node %s found, pmtu %ld\n", arg, (long int)meshlink_get_pmtu(mesh[nodeindex], node));
                        }
                }
        } else if(!strcasecmp(buf, "link")) {
index ef010af6d14e80165e445cdd29310d91d9ada715..218cb67c8b859066e0214f08d071b2f2a8c60f12 100644 (file)
@@ -64,7 +64,7 @@ static void do_redraw_nodes() {
                devtool_get_node_status(mesh, nodes[i], &status);
                char host[NI_MAXHOST] = "";
                char serv[NI_MAXSERV] = "";
-               getnameinfo(&status.address, sizeof status.address, host, sizeof host, serv, sizeof serv, NI_NUMERICHOST | NI_NUMERICSERV);
+               getnameinfo((struct sockaddr *)&status.address, sizeof status.address, host, sizeof host, serv, sizeof serv, NI_NUMERICHOST | NI_NUMERICSERV);
                const char *desc;
 
                switch(status.udp_status) {
@@ -140,7 +140,6 @@ static void node_status(meshlink_handle_t *mesh, meshlink_node_t *node, bool rea
 int main(int argc, char *argv[]) {
        const char *confbase = ".monitor";
        const char *id = NULL;
-       char buf[1024];
 
        if(argc > 1) {
                confbase = argv[1];
index f793e91256da71e7ef038f111b409d29c22da772..88a84e60037382c53689dc9cd438528b030660d6 100644 (file)
@@ -33,7 +33,7 @@ lib_LTLIBRARIES = libmeshlink.la
 
 pkginclude_HEADERS = meshlink++.h meshlink.h
 
-libmeshlink_la_LDFLAGS = -export-symbols-regex '^(meshlink_|devtool_)'
+libmeshlink_la_LDFLAGS = -export-symbols $(srcdir)/meshlink.sym
 
 libmeshlink_la_SOURCES = \
        buffer.c buffer.h \
@@ -54,7 +54,7 @@ libmeshlink_la_SOURCES = \
        have.h \
        list.c list.h \
        logger.c logger.h \
-       meshlink.c meshlink.h \
+       meshlink.c meshlink.h meshlink.sym \
        meshlink_internal.h \
        meshlink_queue.h \
        meta.c meta.h \
index 776b84f4ce209ea189371aad93b1cf14ecf3f36e..ce59788cb177561b8325d85d07ae74e2cc59eb3a 100644 (file)
@@ -1388,4 +1388,4 @@ static ge_precomp base[32][8] = {
             { -20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476 },
         },
     },
-};
\ No newline at end of file
+};
index 1dbefd0eded7be6aa0b60a6caeb329efb3f6c0cf..9641173af047cb987be69ec72fd22e8852ef22f6 100644 (file)
@@ -49,7 +49,6 @@ typedef struct {
 #ifndef MSG_NOSIGNAL
 #define MSG_NOSIGNAL 0
 #endif
-
 __thread meshlink_errno_t meshlink_errno;
 meshlink_log_cb_t global_log_cb;
 meshlink_log_level_t global_log_level;
@@ -215,23 +214,27 @@ struct socket_in_netns_params {
        int fd;
 };
 
+#ifdef HAVE_SETNS
 static void *socket_in_netns_thread(void *arg) {
        struct socket_in_netns_params *params = arg;
 
        if(setns(params->netns, CLONE_NEWNET) == -1) {
                meshlink_errno = MESHLINK_EINVAL;
-       } else {
-               params->fd = socket(params->domain, params->type, params->protocol);
+               return NULL;
        }
 
+       params->fd = socket(params->domain, params->type, params->protocol);
+
        return NULL;
 }
+#endif // HAVE_SETNS
 
 static int socket_in_netns(int domain, int type, int protocol, int netns) {
        if(netns == -1) {
                return socket(domain, type, protocol);
        }
 
+#ifdef HAVE_SETNS
        struct socket_in_netns_params params = {domain, type, protocol, netns, -1};
 
        pthread_t thr;
@@ -241,6 +244,10 @@ static int socket_in_netns(int domain, int type, int protocol, int netns) {
        }
 
        return params.fd;
+#else
+       return -1;
+#endif // HAVE_SETNS
+
 }
 
 // Find out what local address a socket would use if we connect to the given address.
@@ -1172,6 +1179,7 @@ static bool meshlink_setup(meshlink_handle_t *mesh) {
        return true;
 }
 
+#ifdef HAVE_SETNS
 static void *setup_network_in_netns_thread(void *arg) {
        meshlink_handle_t *mesh = arg;
 
@@ -1183,6 +1191,7 @@ static void *setup_network_in_netns_thread(void *arg) {
        add_local_addresses(mesh);
        return success ? arg : NULL;
 }
+#endif // HAVE_SETNS
 
 meshlink_open_params_t *meshlink_open_params_init(const char *confbase, const char *name, const char *appname, dev_class_t devclass) {
        if(!confbase || !*confbase) {
@@ -1246,7 +1255,8 @@ void meshlink_open_params_free(meshlink_open_params_t *params) {
 
 meshlink_handle_t *meshlink_open(const char *confbase, const char *name, const char *appname, dev_class_t devclass) {
        /* Create a temporary struct on the stack, to avoid allocating and freeing one. */
-       meshlink_open_params_t params = {NULL};
+       meshlink_open_params_t params;
+       memset(&params, 0, sizeof(params));
 
        params.confbase = (char *)confbase;
        params.name = (char *)name;
@@ -1396,12 +1406,19 @@ meshlink_handle_t *meshlink_open_ex(const meshlink_open_params_t *params) {
        bool success = false;
 
        if(mesh->netns != -1) {
+#ifdef HAVE_SETNS
                pthread_t thr;
 
                if(pthread_create(&thr, NULL, setup_network_in_netns_thread, mesh) == 0) {
                        void *retval = NULL;
                        success = pthread_join(thr, &retval) == 0 && retval;
                }
+
+#else
+               meshlink_errno = MESHLINK_EINTERNAL;
+               return NULL;
+
+#endif // HAVE_SETNS
        } else {
                success = setup_network(mesh);
                add_local_addresses(mesh);
@@ -1448,9 +1465,15 @@ static void *meshlink_main_loop(void *arg) {
        meshlink_handle_t *mesh = arg;
 
        if(mesh->netns != -1) {
+#ifdef HAVE_SETNS
+
                if(setns(mesh->netns, CLONE_NEWNET) != 0) {
                        return NULL;
                }
+
+#else
+               return NULL;
+#endif // HAVE_SETNS
        }
 
        pthread_mutex_lock(&(mesh->mesh_mutex));
@@ -2112,7 +2135,7 @@ static bool refresh_invitation_key(meshlink_handle_t *mesh) {
                }
 
                if(!stat(invname, &st)) {
-                       if(mesh->invitation_key && deadline < st.st_mtime) {
+                       if(mesh->invitation_key && deadline < (time_t)st.st_mtime) {
                                count++;
                        } else {
                                unlink(invname);
diff --git a/src/meshlink.sym b/src/meshlink.sym
new file mode 100644 (file)
index 0000000..71846a7
--- /dev/null
@@ -0,0 +1,64 @@
+__emutls_v.meshlink_errno
+devtool_export_json_all_edges_state
+devtool_get_all_edges
+devtool_get_all_submeshes
+devtool_get_node_status
+devtool_open_in_netns
+meshlink_add_address
+meshlink_add_external_address
+meshlink_blacklist
+meshlink_channel_close
+meshlink_channel_get_flags
+meshlink_channel_get_recvq
+meshlink_channel_get_sendq
+meshlink_channel_open
+meshlink_channel_open_ex
+meshlink_channel_send
+meshlink_channel_shutdown
+meshlink_close
+meshlink_destroy
+meshlink_enable_discovery
+meshlink_errno
+meshlink_export
+meshlink_get_all_nodes
+meshlink_get_all_nodes_by_dev_class
+meshlink_get_all_nodes_by_submesh
+meshlink_get_external_address
+meshlink_get_external_address_for_family
+meshlink_get_fingerprint
+meshlink_get_local_address_for_family
+meshlink_get_node
+meshlink_get_node_dev_class
+meshlink_get_node_submesh
+meshlink_get_pmtu
+meshlink_get_port
+meshlink_get_self
+meshlink_hint_address
+meshlink_import
+meshlink_invite
+meshlink_invite_ex
+meshlink_join
+meshlink_main_loop
+meshlink_open
+meshlink_open_ex
+meshlink_open_params_free
+meshlink_open_params_init
+meshlink_send
+meshlink_set_canonical_address
+meshlink_set_channel_accept_cb
+meshlink_set_channel_poll_cb
+meshlink_set_channel_receive_cb
+meshlink_set_default_blacklist
+meshlink_set_invitation_timeout
+meshlink_set_log_cb
+meshlink_set_node_duplicate_cb
+meshlink_set_node_status_cb
+meshlink_set_port
+meshlink_set_receive_cb
+meshlink_sign
+meshlink_start
+meshlink_stop
+meshlink_strerror
+meshlink_submesh_open
+meshlink_verify
+meshlink_whitelist
index 2a27350b3ed99e3ccec40c81103a69c4abe2c9fc..26982d2c1cee159266ced08a25d26ce8531d6c9c 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -387,8 +387,6 @@ static void periodic_handler(event_loop_t *loop, void *data) {
 
                // get min_connects and max_connects
 
-               assert(mesh->devclass >= 0 && mesh->devclass <= _DEV_CLASS_MAX);
-
                unsigned int min_connects = dev_class_traits[mesh->devclass].min_connects;
                unsigned int max_connects = dev_class_traits[mesh->devclass].max_connects;
 
index 04bd55a50a0a5ff42fc50d2f314738f32d6b58a6..cc84ce96035379b9d723ee63173502db4e9ca908 100644 (file)
--- a/src/net.h
+++ b/src/net.h
 #define MAXBUFSIZE ((MAXSIZE > 2048 ? MAXSIZE : 2048) + 128)
 
 typedef struct vpn_packet_t {
-       struct {
-               unsigned int probe: 1;
-               unsigned int tcp: 1;
-       };
+       unsigned int probe: 1;
+       unsigned int tcp: 1;
        uint16_t len;           /* the actual number of bytes in the `data' field */
        uint8_t data[MAXSIZE];
 } vpn_packet_t;
index d20ea018605559788f75d4417fd507abce2bc0be..f0c4e9802bd46649a175995b65c1cd2c264ebc7c 100644 (file)
@@ -551,11 +551,13 @@ void handle_incoming_vpn_data(event_loop_t *loop, void *data, int flags) {
        listen_socket_t *ls = data;
        vpn_packet_t pkt;
        char *hostname;
-       sockaddr_t from = {0};
+       sockaddr_t from;
        socklen_t fromlen = sizeof(from);
        node_t *n;
        int len;
 
+       memset(&from, 0, sizeof(from));
+
        len = recvfrom(ls->udp.fd, pkt.data, MAXSIZE, 0, &from.sa, &fromlen);
 
        if(len <= 0 || len > MAXSIZE) {
index 3047ccbd8bfedeae2debdeb717bdf441c7bb040f..143f15486ea7190aee48ddb0c08fb6cb81facba5 100644 (file)
@@ -670,10 +670,12 @@ void handle_new_meta_connection(event_loop_t *loop, void *data, int flags) {
        meshlink_handle_t *mesh = loop->data;
        listen_socket_t *l = data;
        connection_t *c;
-       sockaddr_t sa = {0};
+       sockaddr_t sa;
        int fd;
        socklen_t len = sizeof(sa);
 
+       memset(&sa, 0, sizeof(sa));
+
        fd = accept(l->tcp.fd, &sa.sa, &len);
 
        if(fd < 0) {
index 2a62c18a7ff64148eb15e5f5ea9be4aa5fc43b2a..9f2319ec7629c10136af55cf544b6557fab4b966 100644 (file)
@@ -52,9 +52,11 @@ struct addrinfo *str2addrinfo(const char *address, const char *service, int sock
 
 sockaddr_t str2sockaddr(const char *address, const char *port) {
        struct addrinfo *ai;
-       sockaddr_t result = {0};
+       sockaddr_t result;
        int err;
 
+       memset(&result, 0, sizeof(result));
+
        struct addrinfo hint = {
                .ai_family = AF_UNSPEC,
                .ai_flags = AI_NUMERICHOST,
index 4f4f599932caa1d6985afdc689b1a9d43b670310..3a43b8f1783c77e77c3180a567f83512e8c2eb9a 100644 (file)
@@ -136,7 +136,7 @@ void update_node_udp(meshlink_handle_t *mesh, node_t *n, const sockaddr_t *sa) {
 
                meshlink_hint_address(mesh, (meshlink_node_t *)n, &sa->sa);
 
-               if(mesh->log_level >= MESHLINK_DEBUG) {
+               if(mesh->log_level <= MESHLINK_DEBUG) {
                        char *hostname = sockaddr2hostname(&n->address);
                        logger(mesh, MESHLINK_DEBUG, "UDP address of %s set to %s", n->name, hostname);
                        free(hostname);
index f88aaf4b9e7bf430c08cffb02542fe1b9170dbc6..b7f6acdda03315f2ec72aa899983f56f473022dd 100644 (file)
@@ -258,7 +258,7 @@ static bool receive_invitation_sptps(void *handle, uint8_t type, const void *dat
                return false;
        }
 
-       if(time(NULL) > st.st_mtime + mesh->invitation_timeout) {
+       if(time(NULL) > (time_t)(st.st_mtime + mesh->invitation_timeout)) {
                logger(mesh, MESHLINK_ERROR, "Peer %s tried to use an outdated invitation file %s\n", c->name, usedname);
                fclose(f);
                unlink(usedname);
@@ -428,7 +428,7 @@ bool id_h(meshlink_handle_t *mesh, connection_t *c, const char *request) {
        get_config_bool(lookup_config(c->config_tree, "blacklisted"), &blacklisted);
 
        if(blacklisted) {
-               logger(mesh, MESHLINK_EPEER, "Peer %s is blacklisted", c->name);
+               logger(mesh, MESHLINK_INFO, "Peer %s is blacklisted", c->name);
                return false;
        }
 
index 91bd2f8227e158539e5798c6aaef535170f58f5c..77e018e9f6014cb46b8ef1158c3747b1cc954404 100644 (file)
@@ -63,7 +63,7 @@ void route(meshlink_handle_t *mesh, node_t *source, vpn_packet_t *packet) {
 
                char hex[len * 2 + 1];
 
-               if(mesh->log_level >= MESHLINK_DEBUG) {
+               if(mesh->log_level <= MESHLINK_DEBUG) {
                        bin2hex(payload, hex, len);        // don't do this unless it's going to be logged
                }
 
index e2b93a056cd226286e7ec75d75bd501b301dadae..514392597b7786736e0455deb582c0db3607c4c2 100644 (file)
 /* Splay operation */
 
 static splay_node_t *splay_top_down(splay_tree_t *tree, const void *data, int *result) {
-       splay_node_t left = {NULL}, right = {NULL};
+       splay_node_t left, right;
        splay_node_t *leftbottom = &left, *rightbottom = &right, *child, *grandchild;
        splay_node_t *root = tree->root;
        int c;
 
+       memset(&left, 0, sizeof(left));
+       memset(&right, 0, sizeof(right));
+
        if(!root) {
                if(result) {
                        *result = 0;
index 7d4a326ed733cd9bf551e4f3bf0ea041c34e8934..661ec280e42de404f2f180951870fbb650f32f8d 100644 (file)
@@ -155,4 +155,4 @@ bool submesh_allows_node(const submesh_t *submesh, const node_t *node) {
        } else {
                return false;
        }
-}
\ No newline at end of file
+}