On Thu, 2017-11-09 at 06:52 -0800, Eric Dumazet wrote:
Wow.
Since all three variants of sockets (full sockets, request sockets,
timewait sockets) are all hashed into ehash table these days, they all
have the fields at the same offset
For IPv4, that would be :
__sk_common.skc_daddr (or inet_daddr)
__sk_common.skc_rcv_saddr (or inet_rcv_saddr )
__sk_common.skc_dport (or inet_dport)
__sk_common.skc_num (or inet_num)
Look at __inet_lookup_established() and INET_MATCH() : They deal with
the three variants, without having to look at sk_state.
If you were using the fields that are common to all sockets, no need to
add all this unnecessary complexity.
Not to mention that your patch took care of IPv4 only.
I can not say how sad I am that in 2017 IPv6 seems to be second class
citizen.