diff mbox

[iproute2] ss: fix display of raw sockets

Message ID 1436964642-35194-1-git-send-email-nikolay@cumulusnetworks.com
State Accepted, archived
Delegated to: stephen hemminger
Headers show

Commit Message

Nikolay Aleksandrov July 15, 2015, 12:50 p.m. UTC
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 <miham@beyondsemi.com>
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
note: use 0 instead of IPPROTO_RAW like Eric suggested

 misc/ss.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Stephen Hemminger July 20, 2015, 9:58 p.m. UTC | #1
On Wed, 15 Jul 2015 05:50:42 -0700
Nikolay Aleksandrov <nikolay@cumulusnetworks.com> wrote:

> 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 <miham@beyondsemi.com>
> Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
> ---
> note: use 0 instead of IPPROTO_RAW like Eric suggested
> 
>  misc/ss.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/misc/ss.c b/misc/ss.c
index 03f92fa69270..6abd1d1206b3 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);