Commit 235c4453 authored by Nikolay Aleksandrov's avatar Nikolay Aleksandrov Committed by Stephen Hemminger

ss: fix display of raw sockets

After commit 8250bc9f ("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: default avatarMiha Marolt <miham@beyondsemi.com>
Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
parent b0085d0e
...@@ -1552,6 +1552,8 @@ out: ...@@ -1552,6 +1552,8 @@ out:
static char *proto_name(int protocol) static char *proto_name(int protocol)
{ {
switch (protocol) { switch (protocol) {
case 0:
return "raw";
case IPPROTO_UDP: case IPPROTO_UDP:
return "udp"; return "udp";
case IPPROTO_TCP: case IPPROTO_TCP:
...@@ -2416,7 +2418,7 @@ static int dgram_show_line(char *line, const struct filter *f, int family) ...@@ -2416,7 +2418,7 @@ static int dgram_show_line(char *line, const struct filter *f, int family)
if (n < 9) if (n < 9)
opt[0] = 0; 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]) if (show_details && opt[0])
printf(" opt:\"%s\"", opt); printf(" opt:\"%s\"", opt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment