From: Nikolay Aleksandrov Date: Wed, 15 Jul 2015 12:50:42 +0000 (-0700) Subject: ss: fix display of raw sockets X-Git-Tag: v4.2.0~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=235c4453471a90017bac632462c7a208ba7573e8;p=thirdparty%2Fiproute2.git ss: fix display of raw sockets After commit 8250bc9ff4e5 ("ss: Unify inet sockets output") raw sockets are displayed as udp because dgram_show_line() is used for both and thus IPPROTO_UDP is used for both so proto_name() returns "udp". Fix this by checking dg_proto which is set according to the caller of dgram_show_line(). Reported-by: Miha Marolt Signed-off-by: Nikolay Aleksandrov --- diff --git a/misc/ss.c b/misc/ss.c index 03f92fa69..6abd1d120 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -1552,6 +1552,8 @@ out: static char *proto_name(int protocol) { switch (protocol) { + case 0: + return "raw"; case IPPROTO_UDP: return "udp"; case IPPROTO_TCP: @@ -2416,7 +2418,7 @@ static int dgram_show_line(char *line, const struct filter *f, int family) if (n < 9) opt[0] = 0; - inet_stats_print(&s, IPPROTO_UDP); + inet_stats_print(&s, dg_proto == UDP_PROTO ? IPPROTO_UDP : 0); if (show_details && opt[0]) printf(" opt:\"%s\"", opt);