From: Ronnie Sahlberg Date: Sat, 31 Dec 2011 03:24:20 +0000 (+1100) Subject: PMAP: allow to ask for tcp/udp port, dont assume users only ever want the tcp port X-Git-Tag: upstream/1.9.6^2~279 X-Git-Url: https://git.piment-noir.org/?p=deb_libnfs.git;a=commitdiff_plain;h=5c6b1176c294e9718c5267787537cee7e19df1b4 PMAP: allow to ask for tcp/udp port, dont assume users only ever want the tcp port --- diff --git a/examples/nfsclient-raw.c b/examples/nfsclient-raw.c index 948909f..b125581 100644 --- a/examples/nfsclient-raw.c +++ b/examples/nfsclient-raw.c @@ -324,7 +324,7 @@ 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, pmap_getport2_cb, client) != 0) { + if (rpc_pmap_getport_async(rpc, MOUNT_PROGRAM, MOUNT_V3, IPPROTO_TCP, pmap_getport2_cb, client) != 0) { printf("Failed to send getport request\n"); exit(10); } @@ -345,7 +345,7 @@ 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, pmap_getport1_cb, client) != 0) { + if (rpc_pmap_getport_async(rpc, RQUOTA_PROGRAM, RQUOTA_V1, IPPROTO_TCP, pmap_getport1_cb, client) != 0) { printf("Failed to send getport request\n"); exit(10); } diff --git a/include/libnfs-raw.h b/include/libnfs-raw.h index ad6f0a3..22143bc 100644 --- a/include/libnfs-raw.h +++ b/include/libnfs-raw.h @@ -102,7 +102,7 @@ int rpc_pmap_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data); * RPC_STATUS_CANCEL : The connection attempt was aborted before it could complete. * data is NULL. */ -int rpc_pmap_getport_async(struct rpc_context *rpc, int program, int version, rpc_cb cb, void *private_data); +int rpc_pmap_getport_async(struct rpc_context *rpc, int program, int version, int protocol, rpc_cb cb, void *private_data); /* diff --git a/lib/libnfs.c b/lib/libnfs.c index 6fcd48a..ace4466 100644 --- a/lib/libnfs.c +++ b/lib/libnfs.c @@ -459,7 +459,7 @@ static void nfs_mount_2_cb(struct rpc_context *rpc, int status, void *command_da return; } - if (rpc_pmap_getport_async(rpc, MOUNT_PROGRAM, MOUNT_V3, nfs_mount_3_cb, private_data) != 0) { + if (rpc_pmap_getport_async(rpc, MOUNT_PROGRAM, MOUNT_V3, IPPROTO_TCP, nfs_mount_3_cb, private_data) != 0) { data->cb(-ENOMEM, nfs, command_data, data->private_data); free_nfs_cb_data(data); return; @@ -3443,7 +3443,7 @@ static void mount_export_2_cb(struct rpc_context *rpc, int status, void *command return; } - if (rpc_pmap_getport_async(rpc, MOUNT_PROGRAM, MOUNT_V3, mount_export_3_cb, private_data) != 0) { + if (rpc_pmap_getport_async(rpc, MOUNT_PROGRAM, MOUNT_V3, IPPROTO_TCP, mount_export_3_cb, private_data) != 0) { data->cb(rpc, -ENOMEM, command_data, data->private_data); free_mount_cb_data(data); return; diff --git a/portmap/portmap.c b/portmap/portmap.c index f8c434d..d2ec4b8 100644 --- a/portmap/portmap.c +++ b/portmap/portmap.c @@ -46,7 +46,7 @@ int rpc_pmap_null_async(struct rpc_context *rpc, rpc_cb cb, void *private_data) return 0; } -int rpc_pmap_getport_async(struct rpc_context *rpc, int program, int version, rpc_cb cb, void *private_data) +int rpc_pmap_getport_async(struct rpc_context *rpc, int program, int version, int protocol, rpc_cb cb, void *private_data) { struct rpc_pdu *pdu; struct pmap_mapping m; @@ -59,7 +59,7 @@ int rpc_pmap_getport_async(struct rpc_context *rpc, int program, int version, rp m.prog = program; m.vers = version; - m.prot = IPPROTO_TCP; + m.prot = protocol; m.port = 0; if (xdr_pmap_mapping(&pdu->xdr, &m) == 0) { rpc_set_error(rpc, "XDR error: Failed to encode data for portmap/getport call");