From 311f60f4f0bdf974d4890d7eb4a752299d1c9458 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Thu, 2 Jun 2011 20:48:18 +0200 Subject: [PATCH] Make traffic statistics more readable with configurable scaling. --- src/top.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/top.c b/src/top.c index 4203e25..62c46f5 100644 --- a/src/top.c +++ b/src/top.c @@ -58,6 +58,8 @@ static struct timeval now, prev, diff; static int delay = 1000; static bool running = true; static bool changed = true; +static const char *unit = "bytes"; +static float scale = 1; static void update(int fd) { sendline(fd, "%d %d", CONTROL, REQ_DUMP_TRAFFIC); @@ -134,7 +136,7 @@ static void redraw(void) { mvprintw(0, 0, "Tinc %-16s Nodes: %4d Sort: %-8s %s", netname, node_list.count, sortname[sortmode], cumulative ? "Cumulative" : "Current"); attrset(A_REVERSE); - mvprintw(2, 0, "Node IN pkts IN bytes OUT pkts OUT bytes"); + mvprintw(2, 0, "Node IN pkts IN %s OUT pkts OUT %s", unit, unit); chgat(-1, A_REVERSE, 0, NULL); static nodestats_t **sorted = 0; @@ -217,11 +219,11 @@ static void redraw(void) { attrset(A_DIM); if(cumulative) - mvprintw(row, 0, "%-16s %'10"PRIu64" %'10"PRIu64" %'10"PRIu64" %'10"PRIu64, - node->name, node->in_packets, node->in_bytes, node->out_packets, node->out_bytes); + mvprintw(row, 0, "%-16s %'10"PRIu64" %'10.0f %'10"PRIu64" %'10.0f", + node->name, node->in_packets, node->in_bytes * scale, node->out_packets, node->out_bytes * scale); else mvprintw(row, 0, "%-16s %'10.0f %'10.0f %'10.0f %'10.0f", - node->name, node->in_packets_rate, node->in_bytes_rate, node->out_packets_rate, node->out_bytes_rate); + node->name, node->in_packets_rate, node->in_bytes_rate * scale, node->out_packets_rate, node->out_bytes_rate * scale); } attrset(A_NORMAL); @@ -274,6 +276,22 @@ void top(int fd) { case 'T': sortmode = 5; break; + case 'b': + unit = "bytes"; + scale = 1; + break; + case 'k': + unit = "kbyte"; + scale = 1e-3; + break; + case 'M': + unit = "Mbyte"; + scale = 1e-6; + break; + case 'G': + unit = "Gbyte"; + scale = 1e-9; + break; case 'q': case 27: case KEY_BREAK: -- 2.25.1