Another safe bitfield conversion.
[tinc] / src / node.c
index 9d35925..0c9033c 100644 (file)
@@ -137,8 +137,8 @@ void node_del(node_t *n)
                edge_del(e);
        }
 
-       avl_delete(node_tree, n);
        avl_delete(node_udp_tree, n);
+       avl_delete(node_tree, n);
 }
 
 node_t *lookup_node(char *name)
@@ -176,10 +176,11 @@ void update_node_udp(node_t *n, const sockaddr_t *sa)
                n->hostname = sockaddr2hostname(&n->address);
                avl_delete(node_udp_tree, n);
                avl_insert(node_udp_tree, n);
-               logger(LOG_DEBUG, "UDP address of %s set to %s", n->name, n->hostname);
+               ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s set to %s", n->name, n->hostname);
        } else {
                memset(&n->address, 0, sizeof n->address);
-               logger(LOG_DEBUG, "UDP address of %s cleared", n->name);
+               n->hostname = 0;
+               ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s cleared", n->name);
        }
 }
 
@@ -197,7 +198,7 @@ void dump_nodes(void)
                logger(LOG_DEBUG, _(" %s at %s cipher %d digest %d maclength %d compression %d options %lx status %04x nexthop %s via %s pmtu %d (min %d max %d)"),
                           n->name, n->hostname, n->outcipher ? n->outcipher->nid : 0,
                           n->outdigest ? n->outdigest->type : 0, n->outmaclength, n->outcompression,
-                          n->options, *(uint32_t *)&n->status, n->nexthop ? n->nexthop->name : "-",
+                          n->options, bitfield_to_int(&n->status, sizeof n->status), n->nexthop ? n->nexthop->name : "-",
                           n->via ? n->via->name : "-", n->mtu, n->minmtu, n->maxmtu);
        }