#include "route.h"
#include "xalloc.h"
-meshlink_handle_t *mesh;
-
static const char *errstr[] = {
[MESHLINK_OK] = "No error",
[MESHLINK_ENOMEM] = "Out of memory",
return errstr[errno];
}
-// TODO: hack, remove once all global variables are gone.
-static void set_mesh(meshlink_handle_t *localmesh) {
- mesh = localmesh;
-}
-
static bool ecdsa_keygen(meshlink_handle_t *mesh) {
ecdsa_t *key;
FILE *f;
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;
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;
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;
}
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");
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;
}