X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Fnfsclient-raw.c;h=5838c2f28a48e622d9bfd909f8e0ecaf8eb1ac59;hb=2db42ce2fc89bc88050564037688888bbb8876e9;hp=80a38f0a07944209137395477f87275ef9206438;hpb=728970051cb7420c08c3c4860f09f971880e3244;p=deb_libnfs.git diff --git a/examples/nfsclient-raw.c b/examples/nfsclient-raw.c index 80a38f0..5838c2f 100644 --- a/examples/nfsclient-raw.c +++ b/examples/nfsclient-raw.c @@ -39,11 +39,11 @@ #include #include #include -#include "libnfs-zdr.h" #include "libnfs.h" #include "libnfs-raw.h" #include "libnfs-raw-mount.h" #include "libnfs-raw-nfs.h" +#include "libnfs-raw-portmap.h" #include "libnfs-raw-rquota.h" struct client { @@ -85,7 +85,7 @@ void rquota_connect_cb(struct rpc_context *rpc, int status, void *data _U_, void printf("Connected to RPC.RQUOTAD on %s:%d\n", client->server, client->rquota_port); printf("Send GETQUOTA request for uid 100\n"); if (rpc_rquota1_getquota_async(rpc, rquota_getquota_cb, EXPORT, 100, client) != 0) { - printf("Failed to send fsinfo request\n"); + printf("Failed to send getquota request\n"); exit(10); } } @@ -170,6 +170,7 @@ void nfs_fsinfo_cb(struct rpc_context *rpc _U_, int status, void *data, void *pr void nfs_connect_cb(struct rpc_context *rpc, int status, void *data _U_, void *private_data) { struct client *client = private_data; + struct FSINFO3args args; if (status != RPC_STATUS_SUCCESS) { printf("connection to RPC.MOUNTD on server %s failed\n", client->server); @@ -178,7 +179,8 @@ void nfs_connect_cb(struct rpc_context *rpc, int status, void *data _U_, void *p printf("Connected to RPC.NFSD on %s:%d\n", client->server, client->mount_port); printf("Send FSINFO request\n"); - if (rpc_nfs_fsinfo_async(rpc, nfs_fsinfo_cb, &client->rootfh, client) != 0) { + args.fsroot = client->rootfh; + if (rpc_nfs3_fsinfo_async(rpc, nfs_fsinfo_cb, &args, client) != 0) { printf("Failed to send fsinfo request\n"); exit(10); } @@ -337,7 +339,39 @@ void pmap_getport1_cb(struct rpc_context *rpc, int status, void *data, void *pri } printf("Send getport request asking for MOUNT port\n"); - if (rpc_pmap_getport_async(rpc, MOUNT_PROGRAM, MOUNT_V3, IPPROTO_TCP, pmap_getport2_cb, client) != 0) { + if (rpc_pmap2_getport_async(rpc, MOUNT_PROGRAM, MOUNT_V3, IPPROTO_TCP, pmap_getport2_cb, client) != 0) { + printf("Failed to send getport request\n"); + exit(10); + } +} + +void pmap_dump_cb(struct rpc_context *rpc, int status, void *data, void *private_data) +{ + struct client *client = private_data; + struct pmap2_dump_result *dr = data; + struct pmap2_mapping_list *list = dr->list; + + if (status == RPC_STATUS_ERROR) { + printf("portmapper null call failed with \"%s\"\n", (char *)data); + exit(10); + } + if (status != RPC_STATUS_SUCCESS) { + printf("portmapper null call to server %s failed, status:%d\n", client->server, status); + exit(10); + } + + printf("Got reply from server for PORTMAP/DUMP procedure.\n"); + while (list) { + printf("Prog:%d Vers:%d Protocol:%d Port:%d\n", + list->map.prog, + list->map.vers, + list->map.prot, + list->map.port); + list = list->next; + } + + printf("Send getport request asking for MOUNT port\n"); + if (rpc_pmap2_getport_async(rpc, RQUOTA_PROGRAM, RQUOTA_V1, IPPROTO_TCP, pmap_getport1_cb, client) != 0) { printf("Failed to send getport request\n"); exit(10); } @@ -357,8 +391,8 @@ void pmap_null_cb(struct rpc_context *rpc, int status, void *data, void *private } printf("Got reply from server for PORTMAP/NULL procedure.\n"); - printf("Send getport request asking for MOUNT port\n"); - if (rpc_pmap_getport_async(rpc, RQUOTA_PROGRAM, RQUOTA_V1, IPPROTO_TCP, pmap_getport1_cb, client) != 0) { + printf("Send PMAP/DUMP command\n"); + if (rpc_pmap2_dump_async(rpc, pmap_dump_cb, client) != 0) { printf("Failed to send getport request\n"); exit(10); } @@ -375,7 +409,7 @@ void pmap_connect_cb(struct rpc_context *rpc, int status, void *data _U_, void * } printf("Send NULL request to check if portmapper is actually running\n"); - if (rpc_pmap_null_async(rpc, pmap_null_cb, client) != 0) { + if (rpc_pmap2_null_async(rpc, pmap_null_cb, client) != 0) { printf("Failed to send null request\n"); exit(10); }