PMAP: allow to ask for tcp/udp port, dont assume users only ever want the tcp port
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Sat, 31 Dec 2011 03:24:20 +0000 (14:24 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Sat, 31 Dec 2011 03:24:20 +0000 (14:24 +1100)
examples/nfsclient-raw.c
include/libnfs-raw.h
lib/libnfs.c
portmap/portmap.c

index 948909f720405436a7a6ac766f872b67be84bd00..b125581ac9337bb6fdf0021bc826d7f1fa29da5c 100644 (file)
@@ -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);
        }
index ad6f0a3aa5dbd29ad20792ed9f5e7adae0fe575d..22143bc3babcf8997f64d09964081d9c1fb5b457 100644 (file)
@@ -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);
 
 
 /*
index 6fcd48ae193706ba44c83d9442aec71f18fd9ace..ace44668cfb02816c174a1662bb82bc05e0e08ae 100644 (file)
@@ -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;
index f8c434d19950e449c0f7bb701c6b32cb992eba8b..d2ec4b883cba60c7401379a1faa2012c96451829 100644 (file)
@@ -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");