AM_CPPFLAGS = -I../src
meshlinkapp_SOURCES = meshlinkapp.c
-meshlinkapp_LDADD = ../src/libmeshlink.la
+meshlinkapp_LDADD = ../src/libmeshlink.la ../catta/src/libcatta.la
chat_SOURCES = chat.c
-chat_LDADD = ../src/libmeshlink.la
+chat_LDADD = ../src/libmeshlink.la ../catta/src/libcatta.la
chatpp_SOURCES = chatpp.cc
-chatpp_LDADD = ../src/libmeshlink.la
+chatpp_LDADD = ../src/libmeshlink.la ../catta/src/libcatta.la
manynodes_SOURCES = manynodes.cc
-manynodes_LDADD = ../src/libmeshlink.la
+manynodes_LDADD = ../src/libmeshlink.la ../catta/src/libcatta.la
channels_SOURCES = channels.c
-channels_LDADD = ../src/libmeshlink.la
+channels_LDADD = ../src/libmeshlink.la ../catta/src/libcatta.la
#include <strings.h>
#include <sys/types.h>
#include <sys/stat.h>
+
+#ifndef _WIN32
#include <linux/limits.h>
+#endif
#include "../src/meshlink.h"
#include "../src/devtools.h"
exportmeshgraph(name);
}
+#ifndef _WIN32
static bool exportmeshgraph_started = false;
static bool exportmeshgraph_end(const char* none)
return true;
}
+#else
+static bool exportmeshgraph_end(const char* none)
+{
+ return false;
+}
+
+static bool exportmeshgraph_begin(const char* timeout_str)
+{
+ return false;
+}
+#endif
static void parse_command(char *buf) {
char *arg = strchr(buf, ' ');
mesh = calloc(n, sizeof *mesh);
meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_message);
+#ifndef _WIN32
mkdir(basebase, 0750);
+#else
+ mkdir(basebase);
+#endif
char filename[PATH_MAX];
char nodename[100];
libmeshlink_la_CFLAGS = -fPIC -I../catta/include/
-libmeshlink_la_LIBADD = -lpthread ../catta/src/.libs/libcatta.a
+if MINGW
+libmeshlink_la_CFLAGS += -I../catta/src/compat/windows/include/
+endif
+
+libmeshlink_la_LIBADD = -lpthread ../catta/src/libcatta.la
libmeshlink_la_SOURCES += \
ed25519/ecdh.c \
return true;
}
-static const char* itoa(int value)
+static const char* __itoa(int value)
{
static char buffer[sizeof(int) * 8 + 1]; // not thread safe
if(!fstrwrite("\t\t\t\"name\": \"", stream) || !fstrwrite(((node_t*)nodes[i])->name, stream) || !fstrwrite("\",\n", stream))
goto fail;
- if(!fstrwrite("\t\t\t\"options\": ", stream) || !fstrwrite(itoa(((node_t*)nodes[i])->options), stream) || !fstrwrite(",\n", stream))
+ if(!fstrwrite("\t\t\t\"options\": ", stream) || !fstrwrite(__itoa(((node_t*)nodes[i])->options), stream) || !fstrwrite(",\n", stream))
goto fail;
- if(!fstrwrite("\t\t\t\"devclass\": ", stream) || !fstrwrite(itoa(((node_t*)nodes[i])->devclass), stream) || !fstrwrite("\n", stream))
+ if(!fstrwrite("\t\t\t\"devclass\": ", stream) || !fstrwrite(__itoa(((node_t*)nodes[i])->devclass), stream) || !fstrwrite("\n", stream))
goto fail;
if(!fstrwrite((i+1) != node_count ? "\t\t},\n" : "\t\t}\n", stream))
free(address);
- if(!fstrwrite("\t\t\t\"options\": ", stream) || !fstrwrite(itoa(edges[i]->options), stream) || !fstrwrite(",\n", stream))
+ if(!fstrwrite("\t\t\t\"options\": ", stream) || !fstrwrite(__itoa(edges[i]->options), stream) || !fstrwrite(",\n", stream))
goto fail;
- if(!fstrwrite("\t\t\t\"weight\": ", stream) || !fstrwrite(itoa(edges[i]->weight), stream) || !fstrwrite("\n", stream))
+ if(!fstrwrite("\t\t\t\"weight\": ", stream) || !fstrwrite(__itoa(edges[i]->weight), stream) || !fstrwrite("\n", stream))
goto fail;
if(!fstrwrite((i+1) != edge_count ? "\t\t},\n" : "\t\t}\n", stream))
-
-#include "meshlink_internal.h"
-#include "discovery.h"
-#include "sockaddr.h"
-#include "logger.h"
-
-#include <pthread.h>
-
#include <catta/core.h>
#include <catta/lookup.h>
#include <catta/publish.h>
#include <catta/alternative.h>
#include <catta/error.h>
+#include "meshlink_internal.h"
+#include "discovery.h"
+#include "sockaddr.h"
+#include "logger.h"
+
+#include <pthread.h>
+
#include <netinet/in.h>
#define MESHLINK_MDNS_SERVICE_TYPE "_%s._tcp"
pthread_mutex_unlock(&(mesh->mesh_mutex));
}
-static void discovery_resolve_callback(CattaSServiceResolver *resolver, CattaIfIndex interface, CattaProtocol protocol, CattaResolverEvent event, const char *name, const char *type, const char *domain, const char *host_name, const CattaAddress *address, uint16_t port, CattaStringList *txt, CattaLookupResultFlags flags, void* userdata)
+static void discovery_resolve_callback(CattaSServiceResolver *resolver, CattaIfIndex interface_, CattaProtocol protocol, CattaResolverEvent event, const char *name, const char *type, const char *domain, const char *host_name, const CattaAddress *address, uint16_t port, CattaStringList *txt, CattaLookupResultFlags flags, void *userdata)
{
meshlink_handle_t *mesh = userdata;
pthread_mutex_unlock(&(mesh->mesh_mutex));
}
-static void discovery_browse_callback(CattaSServiceBrowser *browser, CattaIfIndex interface, CattaProtocol protocol, CattaBrowserEvent event, const char *name, const char *type, const char *domain, CattaLookupResultFlags flags, void* userdata)
+static void discovery_browse_callback(CattaSServiceBrowser *browser, CattaIfIndex interface_, CattaProtocol protocol, CattaBrowserEvent event, const char *name, const char *type, const char *domain, CattaLookupResultFlags flags, void* userdata)
{
meshlink_handle_t *mesh = userdata;
function we free it. Ifthe server is terminated before
the callback function is called the server will free
the resolver for us. */
- if(!(catta_s_service_resolver_new(mesh->catta_server, interface, protocol, name, type, domain, CATTA_PROTO_UNSPEC, 0, discovery_resolve_callback, mesh)))
+ if(!(catta_s_service_resolver_new(mesh->catta_server, interface_, protocol, name, type, domain, CATTA_PROTO_UNSPEC, 0, discovery_resolve_callback, mesh)))
{
logger(mesh, MESHLINK_DEBUG, "Failed to resolve service '%s': %s\n", name, catta_strerror(catta_server_errno(mesh->catta_server)));
}
#include "splay_tree.h"
#include "system.h"
+#include <pthread.h>
#define IO_READ 1
#define IO_WRITE 2
#include <assert.h>
+#if !defined(min)
static const int min(int a, int b) {
return a < b ? a : b;
}
+#endif
/*
Terminate a connection:
#define SOL_TCP IPPROTO_TCP
#endif
+#ifndef MSG_NOSIGNAL
+#define MSG_NOSIGNAL 0
+#endif
+
int addressfamily = AF_UNSPEC;
int seconds_till_retry = 5;
int max_connection_burst = 100;