X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Fportmap-client.c;h=b479888523deec55abbc119e165f3465bc26d819;hb=7fbedfdefd1df0bb6f67d7ee769918c0a09ed3be;hp=d3866e665ed67a009d55c6044b8b6ae9363987c0;hpb=4edd78302d2a019fa4ca496531e4da0ebc9ca8a4;p=deb_libnfs.git diff --git a/examples/portmap-client.c b/examples/portmap-client.c index d3866e6..b479888 100644 --- a/examples/portmap-client.c +++ b/examples/portmap-client.c @@ -104,6 +104,26 @@ void pmap3_dump_cb(struct rpc_context *rpc, int status, void *data, void *privat client->is_finished = 1; } +void pmap3_getaddr_cb(struct rpc_context *rpc, int status, void *data, void *private_data) +{ + struct client *client = private_data; + struct pmap3_getaddr_result *gar = data; + + if (status == RPC_STATUS_ERROR) { + printf("PORTMAP3/GETADDR call failed with \"%s\"\n", (char *)data); + exit(10); + } + if (status != RPC_STATUS_SUCCESS) { + printf("PORTMAP3/GETADDR call failed, status:%d\n", status); + exit(10); + } + + printf("PORTMAP3/GETADDR:\n"); + printf(" Addr:%s\n", gar->addr); + + client->is_finished = 1; +} + void pmap2_null_cb(struct rpc_context *rpc, int status, void *data, void *private_data) { struct client *client = private_data; @@ -202,9 +222,13 @@ int main(int argc _U_, char *argv[] _U_) int null2 = 0; int dump2 = 0; int null3 = 0; + int getaddr3 = 0; int dump3 = 0; int command_found = 0; + int getaddr3prog, getaddr3vers; + char *getaddr3netid; + rpc = rpc_init_context(); if (rpc == NULL) { printf("failed to init context\n"); @@ -221,6 +245,12 @@ int main(int argc _U_, char *argv[] _U_) } else if (!strcmp(argv[i], "dump3")) { dump3 = 1; command_found++; + } else if (!strcmp(argv[i], "getaddr3")) { + getaddr3 = 1; + getaddr3prog = atoi(argv[++i]); + getaddr3vers = atoi(argv[++i]); + getaddr3netid = argv[++i]; + command_found++; } else if (!strcmp(argv[i], "null3")) { null3 = 1; command_found++; @@ -267,6 +297,20 @@ int main(int argc _U_, char *argv[] _U_) } wait_until_finished(rpc, &client); } + if (getaddr3) { + struct pmap3_mapping map; + + map.prog=getaddr3prog; + map.vers=getaddr3vers; + map.netid=getaddr3netid; + map.addr=""; + map.owner=""; + if (rpc_pmap3_getaddr_async(rpc, &map, pmap3_getaddr_cb, &client) != 0) { + printf("Failed to send GETADDR3 request\n"); + exit(10); + } + wait_until_finished(rpc, &client); + } rpc_destroy_context(rpc);