Subject: Re: [BUG] "$ ss -a" incorrectly displays raw sockets as udp sockets

From: Nikolay Aleksandrov <[email-masked]>
Date: Thu, 09 Jul 2015 17:30:39 +0200

On 07/09/2015 05:28 PM, Vadim Kochan wrote:
> On Thu, Jul 09, 2015 at 05:21:10PM +0200, Eric Dumazet wrote:
>> On Thu, 2015-07-09 at 17:14 +0200, Eric Dumazet wrote:
>>
>>>
>>> If I checkout iproute2 tree to db08bdb816d337102c5486744008db9c9faa43bf
>>> (before buggy commit) we indeed had this result :
>>>
>>> # ./ss -an | grep 127.0.0.1
>>> raw    UNCONN     213486 0      127.0.0.1:6                     *:*                  
>>
>> Maybe following patch would fix the issue.
>>
>> diff --git a/misc/ss.c b/misc/ss.c
>> index 03f92fa69270..9b7dad00290c 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, 0);
>>  
>>  	if (show_details && opt[0])
>>  		printf(" opt:\"%s\"", opt);
>>
>>
> 
> Yes, it fixes the issue too.

Yeah, I think this is better than my solution because it's not really
IPPROTO_RAW protocol, so I'll drop my submission.

Thanks,
 Nik