X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fnode.c;h=3068c9fbbac4693c168ed6f0014e058f2af3584c;hb=2c424175639d62ea806b79173dfe6f554cf3ceb9;hp=28b77a418fc7e5a8260294f2990d8ac8b3a8087e;hpb=084ba04f51441098c55d3bd21b11bbe368e7b52e;p=meshlink diff --git a/src/node.c b/src/node.c index 28b77a41..3068c9fb 100644 --- a/src/node.c +++ b/src/node.c @@ -1,7 +1,6 @@ /* node.c -- node tree management - Copyright (C) 2001-2013 Guus Sliepen , - 2001-2005 Ivo Timmermans + Copyright (C) 2014 Guus Sliepen , This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,6 +21,7 @@ #include "hash.h" #include "logger.h" +#include "meshlink_internal.h" #include "net.h" #include "netutl.h" #include "node.h" @@ -29,23 +29,20 @@ #include "utils.h" #include "xalloc.h" -splay_tree_t *node_tree; static hash_t *node_udp_cache; -node_t *myself; - static int node_compare(const node_t *a, const node_t *b) { return strcmp(a->name, b->name); } void init_nodes(void) { - node_tree = splay_alloc_tree((splay_compare_t) node_compare, (splay_action_t) free_node); + mesh->nodes = splay_alloc_tree((splay_compare_t) node_compare, (splay_action_t) free_node); node_udp_cache = hash_alloc(0x100, sizeof(sockaddr_t)); } void exit_nodes(void) { hash_free(node_udp_cache); - splay_delete_tree(node_tree); + splay_delete_tree(mesh->nodes); } node_t *new_node(void) { @@ -65,11 +62,6 @@ void free_node(node_t *n) { sockaddrfree(&n->address); - cipher_close(n->incipher); - digest_close(n->indigest); - cipher_close(n->outcipher); - digest_close(n->outdigest); - ecdsa_free(n->ecdsa); sptps_stop(&n->sptps); @@ -88,14 +80,14 @@ void free_node(node_t *n) { } void node_add(node_t *n) { - splay_insert(node_tree, n); + splay_insert(mesh->nodes, n); } void node_del(node_t *n) { for splay_each(edge_t, e, n->edge_tree) edge_del(e); - splay_delete(node_tree, n); + splay_delete(mesh->nodes, n); } node_t *lookup_node(char *name) { @@ -103,7 +95,7 @@ node_t *lookup_node(char *name) { n.name = name; - return splay_search(node_tree, &n); + return splay_search(mesh->nodes, &n); } node_t *lookup_node_udp(const sockaddr_t *sa) { @@ -111,8 +103,8 @@ node_t *lookup_node_udp(const sockaddr_t *sa) { } void update_node_udp(node_t *n, const sockaddr_t *sa) { - if(n == myself) { - logger(DEBUG_ALWAYS, LOG_WARNING, "Trying to update UDP address of myself!"); + if(n == mesh->self) { + logger(DEBUG_ALWAYS, LOG_WARNING, "Trying to update UDP address of mesh->self!"); return; } @@ -121,8 +113,8 @@ void update_node_udp(node_t *n, const sockaddr_t *sa) { if(sa) { n->address = *sa; n->sock = 0; - for(int i = 0; i < listen_sockets; i++) { - if(listen_socket[i].sa.sa.sa_family == sa->sa.sa_family) { + for(int i = 0; i < mesh->listen_sockets; i++) { + if(mesh->listen_socket[i].sa.sa.sa_family == sa->sa.sa_family) { n->sock = i; break; }