keep track of round trip times of UDP pings
[tinc] / src / node.c
index c00124d..c3f2ab5 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "system.h"
 
+#include "address_cache.h"
 #include "control_common.h"
 #include "hash.h"
 #include "logger.h"
@@ -79,6 +80,7 @@ node_t *new_node(void) {
        n->edge_tree = new_edge_tree();
        n->mtu = MTU;
        n->maxmtu = MTU;
+       n->udp_ping_rtt = -1;
 
        return n;
 }
@@ -118,6 +120,10 @@ void free_node(node_t *n) {
                free(n->late);
        }
 
+       if(n->address_cache) {
+               close_address_cache(n->address_cache);
+       }
+
        free(n);
 }
 
@@ -206,7 +212,7 @@ bool dump_nodes(connection_t *c) {
                }
 
                id[sizeof(id) - 1] = 0;
-               send_request(c, "%d %d %s %s %s %d %d %d %d %x %x %s %s %d %d %d %d %ld", CONTROL, REQ_DUMP_NODES,
+               send_request(c, "%d %d %s %s %s %d %d %d %d %x %x %s %s %d %d %d %d %ld %ld", CONTROL, REQ_DUMP_NODES,
                             n->name, id, n->hostname ? : "unknown port unknown",
 #ifdef DISABLE_LEGACY
                             0, 0, 0,
@@ -215,7 +221,7 @@ bool dump_nodes(connection_t *c) {
 #endif
                             n->outcompression, n->options, bitfield_to_int(&n->status, sizeof(n->status)),
                             n->nexthop ? n->nexthop->name : "-", n->via ? n->via->name ? : "-" : "-", n->distance,
-                            n->mtu, n->minmtu, n->maxmtu, (long)n->last_state_change);
+                            n->mtu, n->minmtu, n->maxmtu, (long)n->last_state_change, (long)n->udp_ping_rtt);
        }
 
        return send_request(c, "%d %d", CONTROL, REQ_DUMP_NODES);