diff options
author | NeilBrown <neilb@suse.de> | 2014-03-08 10:40:07 -0500 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2014-03-11 12:03:05 -0400 |
commit | e54de2940d020e6ac53a5840b6e427bac986ca62 (patch) | |
tree | 43065d3e0e07b8827def2d1193235638aaf0dad2 /utils/nfsd/nfssvc.c | |
parent | 5be4b2d7786d3eaee9e11c3bc4cdbfa451006947 (diff) | |
download | nfs-utils-e54de2940d020e6ac53a5840b6e427bac986ca62.tar.gz nfs-utils-e54de2940d020e6ac53a5840b6e427bac986ca62.tar.xz nfs-utils-e54de2940d020e6ac53a5840b6e427bac986ca62.zip |
nfsd: add -r and --rdma options to request rdma service
As nfsd establishes UDP and TCP ports, it should establish RDMA too.
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'utils/nfsd/nfssvc.c')
-rw-r--r-- | utils/nfsd/nfssvc.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c index 1a52cca..4f2826b 100644 --- a/utils/nfsd/nfssvc.c +++ b/utils/nfsd/nfssvc.c @@ -268,6 +268,40 @@ nfssvc_set_sockets(const int family, const unsigned int protobits, return nfssvc_setfds(&hints, host, port); } +int +nfssvc_set_rdmaport(const char *port) +{ + struct servent *sv = getservbyname(port, "tcp"); + int nport; + char buf[20]; + int ret; + int fd; + + if (sv) + nport = sv->s_port; + else { + char *ep; + nport = strtol(port, &ep, 10); + if (!*port || *ep) { + xlog(L_ERROR, "unable to interpret port name %s", + port); + return 1; + } + } + + fd = open(NFSD_PORTS_FILE, O_WRONLY); + if (fd < 0) + return 1; + snprintf(buf, sizeof(buf), "rdma %d", nport); + ret = 0; + if (write(fd, buf, strlen(buf)) != (ssize_t)strlen(buf)) { + ret= errno; + xlog(L_ERROR, "Unable to request RDMA services: %m"); + } + close(fd); + return ret; +} + void nfssvc_setvers(unsigned int ctlbits, unsigned int minorvers, unsigned int minorversset) { |