summaryrefslogtreecommitdiffstats
path: root/support/nfs
diff options
context:
space:
mode:
authorWeston Andros Adamson <dros@netapp.com>2013-05-07 11:25:29 -0400
committerSteve Dickson <steved@redhat.com>2013-05-07 11:47:35 -0400
commit342446a4a624d4ee8254af859bb7f1de6d268679 (patch)
tree75b007d719971b7fb0d789df62e69862cbf4d390 /support/nfs
parent8fc8022c75956efb14cd2b1fa93210d534310cf9 (diff)
downloadnfs-utils-342446a4a624d4ee8254af859bb7f1de6d268679.tar.gz
nfs-utils-342446a4a624d4ee8254af859bb7f1de6d268679.tar.xz
nfs-utils-342446a4a624d4ee8254af859bb7f1de6d268679.zip
statd: exit if a statd is already running
Moves nfs_probe_statd from mount to nfs support lib to share with statd. Acked-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Weston Andros Adamson <dros@netapp.com> Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'support/nfs')
-rw-r--r--support/nfs/getport.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/support/nfs/getport.c b/support/nfs/getport.c
index 3331ad4..081594c 100644
--- a/support/nfs/getport.c
+++ b/support/nfs/getport.c
@@ -1102,3 +1102,25 @@ unsigned long nfs_pmap_getport(const struct sockaddr_in *sin,
return port;
}
+
+static const char *nfs_ns_pgmtbl[] = {
+ "status",
+ NULL,
+};
+
+/*
+ * nfs_probe_statd - use nfs_pmap_getport to see if statd is running locally
+ *
+ * Returns non-zero if statd is running locally.
+ */
+int nfs_probe_statd(void)
+{
+ struct sockaddr_in addr = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = htonl(INADDR_LOOPBACK),
+ };
+ rpcprog_t program = nfs_getrpcbyname(NSMPROG, nfs_ns_pgmtbl);
+
+ return nfs_getport_ping((struct sockaddr *)(char *)&addr, sizeof(addr),
+ program, (rpcvers_t)1, IPPROTO_UDP);
+}