diff options
author | David S. Miller <davem@davemloft.net> | 2010-12-01 18:09:13 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-01 18:09:13 -0800 |
commit | ccb7c410ddc054b8c1ae780319bc98ae092d3854 (patch) | |
tree | 6a363c7232121d2390c091b232ee758fa10e4446 /include/net/timewait_sock.h | |
parent | 4399ce402c7c837dec80bf9fb40d079b39b9265a (diff) |
timewait_sock: Create and use getpeer op.
The only thing AF-specific about remembering the timestamp
for a time-wait TCP socket is getting the peer.
Abstract that behind a new timewait_sock_ops vector.
Support for real IPV6 sockets is not filled in yet, but
curiously this makes timewait recycling start to work
for v4-mapped ipv6 sockets.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/timewait_sock.h')
-rw-r--r-- | include/net/timewait_sock.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/net/timewait_sock.h b/include/net/timewait_sock.h index 97c3b14da55d..053b3cf2c66a 100644 --- a/include/net/timewait_sock.h +++ b/include/net/timewait_sock.h @@ -21,6 +21,7 @@ struct timewait_sock_ops { int (*twsk_unique)(struct sock *sk, struct sock *sktw, void *twp); void (*twsk_destructor)(struct sock *sk); + void *(*twsk_getpeer)(struct sock *sk); }; static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp) @@ -39,4 +40,11 @@ static inline void twsk_destructor(struct sock *sk) sk->sk_prot->twsk_prot->twsk_destructor(sk); } +static inline void *twsk_getpeer(struct sock *sk) +{ + if (sk->sk_prot->twsk_prot->twsk_getpeer) + return sk->sk_prot->twsk_prot->twsk_getpeer(sk); + return NULL; +} + #endif /* _TIMEWAIT_SOCK_H */ |