ss: fix display of raw sockets
After commit 8250bc9ff4 ("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 <miham@beyondsemi.com>
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This commit is contained in:
parent
b0085d0ee9
commit
235c445347
|
|
@ -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)
|
||||||
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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue