X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.c;h=7552c9f0be6d1bf064a90512b87facb9f198d186;hb=a1b50920b9a52f86ca6e33fcb24d7fa34313a1ee;hp=e6f44c0ce69a513f88c5736342dc33da2e83671d;hpb=a20765791b2a40ddd58452e8f74b0737f1f1f28e;p=meshlink diff --git a/src/meshlink.c b/src/meshlink.c index e6f44c0c..7552c9f0 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -28,8 +28,6 @@ #include "route.h" #include "xalloc.h" -meshlink_handle_t *mesh; - static const char *errstr[] = { [MESHLINK_OK] = "No error", [MESHLINK_ENOMEM] = "Out of memory", @@ -40,12 +38,6 @@ const char *meshlink_strerror(meshlink_errno_t errno) { return errstr[errno]; } -// TODO: hack, remove once all global variables are gone. -static void set_mesh(meshlink_handle_t *localmesh) { - mesh = localmesh; - loop = &mesh->loop; -} - static bool ecdsa_keygen(meshlink_handle_t *mesh) { ecdsa_t *key; FILE *f; @@ -214,7 +206,7 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) { mesh->confbase = xstrdup(confbase); mesh->name = xstrdup(name); event_loop_init(&mesh->loop); - set_mesh(mesh); + mesh->loop.data = mesh; // TODO: should be set by a function. mesh->debug_level = 5; @@ -238,13 +230,13 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) { init_configuration(&mesh->config); - if(!read_server_config()) + if(!read_server_config(mesh)) return meshlink_close(mesh), NULL; // Setup up everything // TODO: we should not open listening sockets yet - if(!setup_network()) + if(!setup_network(mesh)) return meshlink_close(mesh), NULL; return mesh; @@ -253,9 +245,9 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) { void *meshlink_main_loop(void *arg) { meshlink_handle_t *mesh = arg; - try_outgoing_connections(); + try_outgoing_connections(mesh); - main_loop(); + main_loop(mesh); return NULL; } @@ -285,7 +277,7 @@ void meshlink_stop(meshlink_handle_t *mesh) { void meshlink_close(meshlink_handle_t *mesh) { // Close and free all resources used. - close_network_connections(); + close_network_connections(mesh); logger(DEBUG_ALWAYS, LOG_NOTICE, "Terminating"); @@ -324,12 +316,12 @@ bool meshlink_send(meshlink_handle_t *mesh, meshlink_node_t *destination, const mesh->self->in_packets++; mesh->self->in_bytes += packet.len; - route(mesh->self, &packet); + route(mesh, mesh->self, &packet); return false; } meshlink_node_t *meshlink_get_node(meshlink_handle_t *mesh, const char *name) { - return (meshlink_node_t *)lookup_node(name); + return (meshlink_node_t *)lookup_node(mesh, name); return NULL; }