diff options
author | Sowmini Varadhan <sowmini.varadhan@oracle.com> | 2015-05-29 17:28:08 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-05-31 21:47:23 -0700 |
commit | d97dac54bf83b2a3df85fba37595e355627e0f2b (patch) | |
tree | 7a28dad3c812ffa56b8001ee1759c6493a30d3e0 /net/rds/bind.c | |
parent | a28c257c9eb0bd76a4adcac97c07e34044ec71fb (diff) |
net/rds: Add setsockopt support for SO_RDS_TRANSPORT
An application may deterministically attach the underlying transport for
a PF_RDS socket by invoking setsockopt(2) with the SO_RDS_TRANSPORT
option at the SOL_RDS level. The integer argument to setsockopt must be
one of the RDS_TRANS_* transport types, e.g., RDS_TRANS_TCP. The option
must be specified before invoking bind(2) on the socket, and may only
be used once on the socket. An attempt to set the option on a bound
socket, or to invoke the option after a successful SO_RDS_TRANSPORT
attachment, will return EOPNOTSUPP.
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/bind.c')
-rw-r--r-- | net/rds/bind.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/rds/bind.c b/net/rds/bind.c index a2e6562da751..4ebd29c128b6 100644 --- a/net/rds/bind.c +++ b/net/rds/bind.c @@ -181,6 +181,10 @@ int rds_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) if (ret) goto out; + if (rs->rs_transport) { /* previously bound */ + ret = 0; + goto out; + } trans = rds_trans_get_preferred(sin->sin_addr.s_addr); if (!trans) { ret = -EADDRNOTAVAIL; |