Use splay trees inside node_t directly.
[tinc] / src / node.c
index 850f2da..4caf992 100644 (file)
@@ -78,8 +78,9 @@ node_t *new_node(void) {
                n->late = xzalloc(replaywin);
        }
 
-       n->subnet_tree = new_subnet_tree();
-       n->edge_tree = new_edge_tree();
+       init_subnet_tree(&n->subnet_tree);
+       init_edge_tree(&n->edge_tree);
+
        n->mtu = MTU;
        n->maxmtu = MTU;
        n->udp_ping_rtt = -1;
@@ -88,13 +89,8 @@ node_t *new_node(void) {
 }
 
 void free_node(node_t *n) {
-       if(n->subnet_tree) {
-               free_subnet_tree(n->subnet_tree);
-       }
-
-       if(n->edge_tree) {
-               free_edge_tree(n->edge_tree);
-       }
+       splay_empty_tree(&n->subnet_tree);
+       splay_empty_tree(&n->edge_tree);
 
        sockaddrfree(&n->address);
 
@@ -133,11 +129,11 @@ void node_add(node_t *n) {
 void node_del(node_t *n) {
        splay_delete(&node_udp_tree, n);
 
-       for splay_each(subnet_t, s, n->subnet_tree) {
+       for splay_each(subnet_t, s, &n->subnet_tree) {
                subnet_del(n, s);
        }
 
-       for splay_each(edge_t, e, n->edge_tree) {
+       for splay_each(edge_t, e, &n->edge_tree) {
                edge_del(e);
        }