+void update_node_udp(node_t *n, const sockaddr_t *sa) {
+ if(n == myself) {
+ logger(LOG_WARNING, "Trying to update UDP address of myself!");
+ return;
+ }
+
+ avl_delete(node_udp_tree, n);
+
+ if(n->hostname) {
+ free(n->hostname);
+ }
+
+ if(sa) {
+ n->address = *sa;
+ n->hostname = sockaddr2hostname(&n->address);
+ avl_insert(node_udp_tree, n);
+ ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s set to %s", n->name, n->hostname);
+ } else {
+ memset(&n->address, 0, sizeof(n->address));
+ n->hostname = NULL;
+ ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s cleared", n->name);
+ }
+}
+
+void dump_nodes(void) {