From b3fda3e6c1b1f32adbe4d912a02f0cc0c836bad5 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Sun, 26 Feb 2006 23:31:07 +0000 Subject: [PATCH] replace nfs_ping with generic rpc_ping --- ChangeLog | 4 ++++ bindings/java/src/jni/javasigar.c | 9 ++++++--- .../src/net/hyperic/sigar/NfsFileSystem.java | 6 ++---- bindings/java/src/net/hyperic/sigar/RPC.java | 18 ++++++++++++++++++ include/sigar.h | 5 ++++- src/sigar_util.c | 7 +++++-- 6 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 bindings/java/src/net/hyperic/sigar/RPC.java diff --git a/ChangeLog b/ChangeLog index 8c0aaedf..01249173 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-02-26 Doug MacEachern + + * Replace sigar_nfs_ping with generic sigar_rpc_ping + 2006-02-23 Doug MacEachern * Use asm/cpuid instead of /proc/cpuinfo to detect diff --git a/bindings/java/src/jni/javasigar.c b/bindings/java/src/jni/javasigar.c index 50926554..c8143001 100644 --- a/bindings/java/src/jni/javasigar.c +++ b/bindings/java/src/jni/javasigar.c @@ -410,8 +410,9 @@ JNIEXPORT jobjectArray SIGAR_JNI(Sigar_getFileSystemListNative) return fsarray; } -JNIEXPORT jboolean SIGAR_JNI(NfsFileSystem_ping) -(JNIEnv *env, jclass cls_obj, jstring jhostname) +JNIEXPORT jboolean SIGAR_JNI(RPC_ping) +(JNIEnv *env, jclass cls_obj, jstring jhostname, + jint protocol, jlong program, jlong version) { #ifdef WIN32 return JNI_FALSE; /*XXX*/ @@ -426,7 +427,9 @@ JNIEXPORT jboolean SIGAR_JNI(NfsFileSystem_ping) hostname = JENV->GetStringUTFChars(env, jhostname, &is_copy); - retval = (sigar_nfs_ping((char *)hostname) == SIGAR_OK); + retval = + (sigar_rpc_ping((char *)hostname, + protocol, program, version) == SIGAR_OK); if (is_copy) { JENV->ReleaseStringUTFChars(env, jhostname, hostname); diff --git a/bindings/java/src/net/hyperic/sigar/NfsFileSystem.java b/bindings/java/src/net/hyperic/sigar/NfsFileSystem.java index a03bd7f6..ffa42f4d 100644 --- a/bindings/java/src/net/hyperic/sigar/NfsFileSystem.java +++ b/bindings/java/src/net/hyperic/sigar/NfsFileSystem.java @@ -5,8 +5,6 @@ import java.net.UnknownHostException; public class NfsFileSystem extends FileSystem { - public static native boolean ping(String hostname); - String hostname = null; public String getHostname() { @@ -30,7 +28,7 @@ public class NfsFileSystem extends FileSystem { } public boolean ping() { - return ping(getHostname()); + return RPC.ping(getHostname(), RPC.NFS); } public String getUnreachableMessage() { @@ -43,6 +41,6 @@ public class NfsFileSystem extends FileSystem { public static void main(String[] args) throws Exception { Sigar.load(); - System.out.println(NfsFileSystem.ping(args[0])); + System.out.println(RPC.ping(args[0], RPC.NFS)); } } diff --git a/bindings/java/src/net/hyperic/sigar/RPC.java b/bindings/java/src/net/hyperic/sigar/RPC.java new file mode 100644 index 00000000..c2f8277f --- /dev/null +++ b/bindings/java/src/net/hyperic/sigar/RPC.java @@ -0,0 +1,18 @@ +package net.hyperic.sigar; + +public class RPC { + + public static final int UDP = NetFlags.CONN_UDP; + public static final int TCP = NetFlags.CONN_TCP; + + public static final long NFS = 100003; + + public static native boolean ping(String hostname, + int protocol, + long program, + long version); + + public static boolean ping(String hostname, long program) { + return ping(hostname, UDP, program, 2); + } +} diff --git a/include/sigar.h b/include/sigar.h index 4900880f..510584f2 100644 --- a/include/sigar.h +++ b/include/sigar.h @@ -615,7 +615,10 @@ SIGAR_DECLARE(int) sigar_inet_ntoa(sigar_t *sigar, SIGAR_DECLARE(int) sigar_fqdn_get(sigar_t *sigar, char *name, int namelen); -SIGAR_DECLARE(int) sigar_nfs_ping(char *hostname); +SIGAR_DECLARE(int) sigar_rpc_ping(char *hostname, + int protocol, + unsigned long program, + unsigned long version); SIGAR_DECLARE(char *) sigar_password_get(const char *prompt); diff --git a/src/sigar_util.c b/src/sigar_util.c index 12531386..5c0341b1 100644 --- a/src/sigar_util.c +++ b/src/sigar_util.c @@ -510,7 +510,10 @@ static int get_sockaddr(struct sockaddr_in *addr, char *host) return SIGAR_OK; } -SIGAR_DECLARE(int) sigar_nfs_ping(char *host) +SIGAR_DECLARE(int) sigar_rpc_ping(char *host, + int protocol, + unsigned long program, + unsigned long version) { CLIENT *client; struct sockaddr_in addr; @@ -527,7 +530,7 @@ SIGAR_DECLARE(int) sigar_nfs_ping(char *host) interval.tv_usec = 0; addr.sin_port = htons(port); sock = RPC_ANYSOCK; - client = clntudp_create(&addr, NFS_PROGRAM, NFS_VERSION, + client = clntudp_create(&addr, program, version, interval, &sock); if (!client) { return -1;