aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/tcp.h
diff options
context:
space:
mode:
authorSowmini Varadhan <sowmini.varadhan@oracle.com>2015-08-05 01:43:26 -0400
committerDavid S. Miller <davem@davemloft.net>2015-08-07 14:29:58 -0400
commit467fa15356acfb7b2efa38839c3e76caa4e6e0ea (patch)
tree481be4be1f6425af68a8a2060fd2cb7e7de02dea /net/rds/tcp.h
parentd5a8ac28a7ff2f250d1bedbb6008dd2f6f6f1638 (diff)
RDS-TCP: Support multiple RDS-TCP listen endpoints, one per netns.
Register pernet subsys init/stop functions that will set up and tear down per-net RDS-TCP listen endpoints. Unregister pernet subusys functions on 'modprobe -r' to clean up these end points. Enable keepalive on both accept and connect socket endpoints. The keepalive timer expiration will ensure that client socket endpoints will be removed as appropriate from the netns when an interface is removed from a namespace. Register a device notifier callback that will clean up all sockets (and thus avoid the need to wait for keepalive timeout) when the loopback device is unregistered from the netns indicating that the netns is getting deleted. Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/tcp.h')
-rw-r--r--net/rds/tcp.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/net/rds/tcp.h b/net/rds/tcp.h
index 0dbdd37162da..64f873c0c6b6 100644
--- a/net/rds/tcp.h
+++ b/net/rds/tcp.h
@@ -52,6 +52,7 @@ u32 rds_tcp_snd_nxt(struct rds_tcp_connection *tc);
52u32 rds_tcp_snd_una(struct rds_tcp_connection *tc); 52u32 rds_tcp_snd_una(struct rds_tcp_connection *tc);
53u64 rds_tcp_map_seq(struct rds_tcp_connection *tc, u32 seq); 53u64 rds_tcp_map_seq(struct rds_tcp_connection *tc, u32 seq);
54extern struct rds_transport rds_tcp_transport; 54extern struct rds_transport rds_tcp_transport;
55void rds_tcp_accept_work(struct sock *sk);
55 56
56/* tcp_connect.c */ 57/* tcp_connect.c */
57int rds_tcp_conn_connect(struct rds_connection *conn); 58int rds_tcp_conn_connect(struct rds_connection *conn);
@@ -59,9 +60,11 @@ void rds_tcp_conn_shutdown(struct rds_connection *conn);
59void rds_tcp_state_change(struct sock *sk); 60void rds_tcp_state_change(struct sock *sk);
60 61
61/* tcp_listen.c */ 62/* tcp_listen.c */
62int rds_tcp_listen_init(void); 63struct socket *rds_tcp_listen_init(struct net *);
63void rds_tcp_listen_stop(void); 64void rds_tcp_listen_stop(struct socket *);
64void rds_tcp_listen_data_ready(struct sock *sk); 65void rds_tcp_listen_data_ready(struct sock *sk);
66int rds_tcp_accept_one(struct socket *sock);
67int rds_tcp_keepalive(struct socket *sock);
65 68
66/* tcp_recv.c */ 69/* tcp_recv.c */
67int rds_tcp_recv_init(void); 70int rds_tcp_recv_init(void);