Dump traffic statistics over control sockets.
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 15 May 2011 09:59:13 +0000 (11:59 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 15 May 2011 09:59:13 +0000 (11:59 +0200)
src/control.c
src/control_common.h
src/node.c

index b8e5204b9db0a58d6e1b2e2fbe1bd1f6d82a01f8..ade012ac89bb7a92cfed45c62c6c0519c08a02e0 100644 (file)
@@ -113,6 +113,9 @@ bool control_h(connection_t *c, char *request) {
                        return control_return(c, REQ_DISCONNECT, found ? 0 : -2);
                }
 
+               case REQ_DUMP_TRAFFIC:
+                       return dump_traffic(c);
+
                default:
                        return send_request(c, "%d %d", CONTROL, REQ_INVALID);
        }
index 99cf8afff9d19efb560d183280eb19c6cd77cadb..56b2bde9f1102151c275de663921a2d60be75376 100644 (file)
@@ -37,6 +37,7 @@ enum request_type {
        REQ_RETRY,
        REQ_CONNECT,
        REQ_DISCONNECT,
+       REQ_DUMP_TRAFFIC,
 };
 
 #define TINC_CTL_VERSION_CURRENT 0
index 9281178b582351057d69d7827b11e57cb3e608ff..1f1f94d9625363e4205213fbeb9610c237b6a4b7 100644 (file)
@@ -179,3 +179,16 @@ bool dump_nodes(connection_t *c) {
 
        return send_request(c, "%d %d", CONTROL, REQ_DUMP_NODES);
 }
+
+bool dump_traffic(connection_t *c) {
+       splay_node_t *node;
+       node_t *n;
+
+       for(node = node_tree->head; node; node = node->next) {
+               n = node->data;
+               send_request(c, "%d %d %s %"PRIu64" %"PRIu64" %"PRIu64" %"PRIu64, CONTROL, REQ_DUMP_TRAFFIC,
+                          n->name, n->in_packets, n->in_bytes, n->out_packets, n->out_bytes);
+       }
+
+       return send_request(c, "%d %d", CONTROL, REQ_DUMP_TRAFFIC);
+}