On 2016-03-29 at 15:32:43 +0200, Vadim Kochan <vadi...@gmail.com> wrote: > On Tue, Mar 29, 2016 at 4:23 PM, Tobias Klauser <tklau...@distanz.ch> wrote: > > On 2016-03-23 at 22:00:44 +0100, Vadim Kochan <vadi...@gmail.com> wrote: > >> Changed flows list layout to look more a top-like output > >> with header and in 1 line. When -s option is specified > >> then layout changes to 2 lines view including with src peer > >> info and dst under it on next line. > >> > >> Also shortified flow state names to allocate less space. > >> > >> Removed presenter_get_port be cause ports are printed for both peers > >> separately. > >> > >> The flow duration time is printed in very short form in one of the > >> units: > >> XXd - days > >> XXh - hours > >> XXm - minutes > >> XXs - seconds > >> > >> the reason is that it is enough to have actually generic understanding > >> about flow time in the biggest time unit. > >> > >> Signed-off-by: Vadim Kochan <vadi...@gmail.com> > >> --- > >> flowtop.c | 405 > >> ++++++++++++++++++++++++++++++-------------------------------- > >> 1 file changed, 194 insertions(+), 211 deletions(-) > >> > >> diff --git a/flowtop.c b/flowtop.c > >> index 4c15c06..8201321 100644 > >> --- a/flowtop.c > >> +++ b/flowtop.c > >> @@ -62,6 +62,7 @@ struct flow_entry { > >> uint64_t pkts_dst, bytes_dst; > >> uint64_t timestamp_start, timestamp_stop; > >> char country_src[128], country_dst[128]; > >> + char country_code_src[4], country_code_dst[4]; > >> char city_src[128], city_dst[128]; > >> char rev_dns_src[256], rev_dns_dst[256]; > >> char procname[256]; > >> @@ -166,11 +167,6 @@ static const char *copyright = "Please report bugs to > >> <netsniff-ng@googlegroups. > >> "This is free software: you are free to change and redistribute > >> it.\n" > >> "There is NO WARRANTY, to the extent permitted by law."; > >> > >> -static const char *const l3proto2str[AF_MAX] = { > >> - [AF_INET] = "ipv4", > >> - [AF_INET6] = "ipv6", > >> -}; > > > > Why remove L3 protocol information from the output? I consider this > > quite useful. Could we somehow combine this with L4 Proto information in > > a generic way? > > I thought it will be easy to identify ipvX version by IPvX address format.
True, didn't think of it that way. I'm fine with omitting it in that case... > > > >> - > >> static const char *const l4proto2str[IPPROTO_MAX] = { > >> [IPPROTO_TCP] = "tcp", > >> [IPPROTO_UDP] = "udp", > >> @@ -194,40 +190,40 @@ static const char *const l4proto2str[IPPROTO_MAX] = { > >> }; > >> > >> static const char *const tcp_state2str[TCP_CONNTRACK_MAX] = { > >> - [TCP_CONNTRACK_NONE] = "NOSTATE", > >> - [TCP_CONNTRACK_SYN_SENT] = "SYN_SENT", > >> - [TCP_CONNTRACK_SYN_RECV] = "SYN_RECV", > >> - [TCP_CONNTRACK_ESTABLISHED] = "ESTABLISHED", > >> - [TCP_CONNTRACK_FIN_WAIT] = "FIN_WAIT", > >> - [TCP_CONNTRACK_CLOSE_WAIT] = "CLOSE_WAIT", > >> - [TCP_CONNTRACK_LAST_ACK] = "LAST_ACK", > >> - [TCP_CONNTRACK_TIME_WAIT] = "TIME_WAIT", > >> - [TCP_CONNTRACK_CLOSE] = "CLOSE", > >> - [TCP_CONNTRACK_SYN_SENT2] = "SYN_SENT2", > >> + [TCP_CONNTRACK_NONE] = "NO", > >> + [TCP_CONNTRACK_SYN_SENT] = "SS", > >> + [TCP_CONNTRACK_SYN_RECV] = "SR", > >> + [TCP_CONNTRACK_ESTABLISHED] = "EST", > >> + [TCP_CONNTRACK_FIN_WAIT] = "FWT", > >> + [TCP_CONNTRACK_CLOSE_WAIT] = "CWT", > >> + [TCP_CONNTRACK_LAST_ACK] = "LAC", > >> + [TCP_CONNTRACK_TIME_WAIT] = "TWT", > >> + [TCP_CONNTRACK_CLOSE] = "CLO", > >> + [TCP_CONNTRACK_SYN_SENT2] = "SS2", > > > > > > These abbreviations are no longer easy to grasp for the user without > > looking at this struct in the source. We should either keep the long > > names (if possible) of at least add corresponding documentation about > > the abbreviations to the manpage. Same goes for dccp_state2str and > > sctp_state2str below. > > OK, what do you prefer ? I just tried to minimize the column width to > fit into at least 100-sized screen. > But OK, I will try to see how much character long names will occupy. I'd prefer the long version, but if you can't fit it into the width without too many compromises I think the abbreviations are fine as well. But they should be documented at least, maybe even in the help screen. > >> > >> -static void draw_flow_entry(WINDOW *screen, const struct flow_entry *n, > >> - unsigned int *line) > >> +static void draw_flow_entry(WINDOW *scr, const struct flow_entry *n, int > >> line) > >> { > >> + const char *str = NULL; > >> char tmp[128]; > >> - const char *pname = NULL; > >> - uint16_t port; > >> > >> - mvwprintw(screen, *line, 2, ""); > >> + mvwprintw(scr, line, 0, ""); > >> > >> - /* PID, application name */ > >> - if (n->procnum > 0) { > >> - slprintf(tmp, sizeof(tmp), "%s(%d)", n->procname, > >> n->procnum); > >> + /* Application */ > >> + attron(COLOR_PAIR(3)); > >> + printw("%-*.*s", 10, 10, n->procname); > > > > There might be several processes with the same name, how would we now > > differentiate them? > > What about separate column "PID" ? Yes, that'd be great. Thanks! Tobias -- You received this message because you are subscribed to the Google Groups "netsniff-ng" group. To unsubscribe from this group and stop receiving emails from it, send an email to netsniff-ng+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.