inet: consolidate INET_TW_MATCH
TCP listener refactoring, part 2 : We can use a generic lookup, sockets being in whatever state, if we are sure all relevant fields are at the same place in all socket types (ESTABLISH, TIME_WAIT, SYN_RECV) This patch removes these macros : inet_addrpair, inet_addrpair, tw_addrpair, tw_portpair And adds : sk_portpair, sk_addrpair, sk_daddr, sk_rcv_saddr Then, INET_TW_MATCH() is really the same than INET_MATCH() Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
7b4371ea48
commit
5080546682
@ -302,35 +302,25 @@ static inline struct sock *inet_lookup_listener(struct net *net,
|
||||
((__force __u64)(__be32)(__saddr)));
|
||||
#endif /* __BIG_ENDIAN */
|
||||
#define INET_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif) \
|
||||
((inet_sk(__sk)->inet_portpair == (__ports)) && \
|
||||
(inet_sk(__sk)->inet_addrpair == (__cookie)) && \
|
||||
(((__sk)->sk_portpair == (__ports)) && \
|
||||
((__sk)->sk_addrpair == (__cookie)) && \
|
||||
(!(__sk)->sk_bound_dev_if || \
|
||||
((__sk)->sk_bound_dev_if == (__dif))) && \
|
||||
net_eq(sock_net(__sk), (__net)))
|
||||
#define INET_TW_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif)\
|
||||
((inet_twsk(__sk)->tw_portpair == (__ports)) && \
|
||||
(inet_twsk(__sk)->tw_addrpair == (__cookie)) && \
|
||||
(!(__sk)->sk_bound_dev_if || \
|
||||
((__sk)->sk_bound_dev_if == (__dif))) && \
|
||||
net_eq(sock_net(__sk), (__net)))
|
||||
#else /* 32-bit arch */
|
||||
#define INET_ADDR_COOKIE(__name, __saddr, __daddr)
|
||||
#define INET_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif) \
|
||||
((inet_sk(__sk)->inet_portpair == (__ports)) && \
|
||||
(inet_sk(__sk)->inet_daddr == (__saddr)) && \
|
||||
(inet_sk(__sk)->inet_rcv_saddr == (__daddr)) && \
|
||||
(!(__sk)->sk_bound_dev_if || \
|
||||
((__sk)->sk_bound_dev_if == (__dif))) && \
|
||||
net_eq(sock_net(__sk), (__net)))
|
||||
#define INET_TW_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif) \
|
||||
((inet_twsk(__sk)->tw_portpair == (__ports)) && \
|
||||
(inet_twsk(__sk)->tw_daddr == (__saddr)) && \
|
||||
(inet_twsk(__sk)->tw_rcv_saddr == (__daddr)) && \
|
||||
(((__sk)->sk_portpair == (__ports)) && \
|
||||
((__sk)->sk_daddr == (__saddr)) && \
|
||||
((__sk)->sk_rcv_saddr == (__daddr)) && \
|
||||
(!(__sk)->sk_bound_dev_if || \
|
||||
((__sk)->sk_bound_dev_if == (__dif))) && \
|
||||
net_eq(sock_net(__sk), (__net)))
|
||||
#endif /* 64-bit arch */
|
||||
|
||||
#define INET_TW_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif)\
|
||||
INET_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif)
|
||||
|
||||
/*
|
||||
* Sockets in TCP_CLOSE state are _always_ taken out of the hash, so we need
|
||||
* not check it for lookups anymore, thanks Alexey. -DaveM
|
||||
|
Reference in New Issue
Block a user