+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!");
+ return;
+ }
+
+ splay_delete(node_udp_tree, n);
+
+ if(n->hostname)
+ free(n->hostname);
+
+ if(sa) {
+ n->address = *sa;
+ n->hostname = sockaddr2hostname(&n->address);
+ splay_insert(node_udp_tree, n);
+ logger(DEBUG_PROTOCOL, LOG_DEBUG, "UDP address of %s set to %s", n->name, n->hostname);
+ } else {
+ memset(&n->address, 0, sizeof n->address);
+ n->hostname = NULL;
+ logger(DEBUG_PROTOCOL, LOG_DEBUG, "UDP address of %s cleared", n->name);
+ }
+}
+
+bool dump_nodes(connection_t *c) {
+ splay_node_t *node;