summaryrefslogtreecommitdiff
path: root/include/net/timewait_sock.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-12-02 05:09:13 +0300
committerDavid S. Miller <davem@davemloft.net>2010-12-02 05:09:13 +0300
commitccb7c410ddc054b8c1ae780319bc98ae092d3854 (patch)
tree6a363c7232121d2390c091b232ee758fa10e4446 /include/net/timewait_sock.h
parent4399ce402c7c837dec80bf9fb40d079b39b9265a (diff)
downloadlinux-ccb7c410ddc054b8c1ae780319bc98ae092d3854.tar.xz
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.h8
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 */