i'm using v4.11.0 release of iproute2 and kernel 3.10.105, simply
running
$ ss
Netid State Recv-Q Send-Q Local Address:Port Peer
Address:Port
tcp CLOSE-WAIT 434 0 10.0.0.1:47931
65.49.18.136:https
tcp CLOSE-WAIT 432 0 10.0.0.1:47932
65.49.18.136:https
tcp CLOSE-WAIT 434 0 10.0.0.1:47931
65.49.18.136:https
tcp CLOSE-WAIT 432 0 10.0.0.1:47932
65.49.18.136:https
as you can see, there's one duplicate entry of each tcp socket,
however, if i explicitly specify tcp socket by adding the -t
switch,
$ ss -t
State Recv-Q Send-Q Local Address:Port Peer
Address:Port
CLOSE-WAIT 434 0 10.0.0.1:47931
65.49.18.136:https
CLOSE-WAIT 432 0 10.0.0.1:47932
65.49.18.136:https
the duplication is gone.
this problem also occurs on git master, but not on iproute2
v4.3.0, so i did a git bisect and found out the commit which
caused this is 9f66764e308e9c645b3fb2d1cfbb7fb207eb5de1, and by
revert this commit on git master, i.e. removing
err = rtnl_dump_done(rth, h);
if (err < 0)
return -1;
these 3 lines of code of lib/libnetlink.c, the problem is gone.
since i'm not familiar with the source code, i doubt this is the
right way to solve the problem, what's your suggestions? thanks.