From 362d8a6358019cb97456c8133832f18798cea41f Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Sun, 15 May 2011 11:59:13 +0200 Subject: [PATCH] Dump traffic statistics over control sockets. --- src/control.c | 3 +++ src/control_common.h | 1 + src/node.c | 13 +++++++++++++ 3 files changed, 17 insertions(+) diff --git a/src/control.c b/src/control.c index b8e5204b..ade012ac 100644 --- a/src/control.c +++ b/src/control.c @@ -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); } diff --git a/src/control_common.h b/src/control_common.h index 99cf8aff..56b2bde9 100644 --- a/src/control_common.h +++ b/src/control_common.h @@ -37,6 +37,7 @@ enum request_type { REQ_RETRY, REQ_CONNECT, REQ_DISCONNECT, + REQ_DUMP_TRAFFIC, }; #define TINC_CTL_VERSION_CURRENT 0 diff --git a/src/node.c b/src/node.c index 9281178b..1f1f94d9 100644 --- a/src/node.c +++ b/src/node.c @@ -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); +} -- 2.20.1