Re: [patch net-next 0/2] Fixes for raw diag sockets handling
From: Cyrill Gorcunov <hidden>
Date: 2016-11-02 15:45:41
On Wed, Nov 02, 2016 at 09:36:55AM -0600, David Ahern wrote:
Limited to raw sockets or are you looking at multiple spec options (dev, address, port)?
I have not seen issues with tcp or udp. Running:
ss -aK 'dev == red'
drops all sockets bound to device 'red' (or at least signaling the socket failure for the app to handle):Limited to raw socket. I didn't modify lookup kernel code but use already existing helpers. The tcp/udp sockets do use port value in lookup (iirc, don't have code under my hand at moment), in turn raw lookup uses only net,raw-protocol, src/dst and device index. In my test case the sokets were unconnected so the have no address but bound to device and I hit mismatch. Then looking into inet matching code I found this weird snippet I posted previously.
root@jessie4:~# ss -ap 'dev == red'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *%red:12345 *:* users:(("vrf-test",pid=765,fd=3))
tcp LISTEN 0 1 *%red:12345 *:* users:(("vrf-test",pid=766,fd=3))
tcp ESTAB 0 0 10.100.1.4%red:ssh 10.100.1.254:60298 users:(("sshd",pid=738,fd=3))
root@jessie4:~# ss -aKp 'dev == red'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *%red:12345 *:* users:(("vrf-test",pid=765,fd=3))
tcp LISTEN 0 1 *%red:12345 *:* users:(("vrf-test",pid=766,fd=3))
tcp ESTAB 0 0 10.100.1.4%red:ssh 10.100.1.254:60298 users:(("sshd",pid=738,fd=3))
root@jessie4:~# ss -ap 'dev == red'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:PortCyrill