diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2009-12-11 10:37:02 -0500 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2009-12-11 16:13:16 -0500 |
commit | 5ba18c11f31a135c6eeab67e820c271f87004793 (patch) | |
tree | 7a734d40613ef503b8738105faaca260e3394064 | |
parent | 626010056efb7baa76b08b5e6572720e02e425b4 (diff) | |
download | nfs-utils-5ba18c11f31a135c6eeab67e820c271f87004793.tar.gz nfs-utils-5ba18c11f31a135c6eeab67e820c271f87004793.tar.xz nfs-utils-5ba18c11f31a135c6eeab67e820c271f87004793.zip |
mount.nfs: support netids in nfs_options2pmap()
When parsing mount options in nfs_options2pmap(), treat the value of
proto= (and mountproto=) as a netid by looking it up in local
netconfig and protocol databases to convert it to a protocol number.
If TI-RPC is not available, the traditional behavior is preserved.
The meaning of the "udp" and "tcp" mount options is not affected by
this change.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r-- | utils/mount/network.c | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/utils/mount/network.c b/utils/mount/network.c index 7b1152a..ecb5acc 100644 --- a/utils/mount/network.c +++ b/utils/mount/network.c @@ -1289,6 +1289,7 @@ nfs_nfs_version(struct mount_options *options, unsigned long *version) int nfs_nfs_protocol(struct mount_options *options, unsigned long *protocol) { + sa_family_t family; char *option; switch (po_rightmost(options, nfs_transport_opttbl)) { @@ -1300,17 +1301,8 @@ nfs_nfs_protocol(struct mount_options *options, unsigned long *protocol) return 1; case 2: /* proto */ option = po_get(options, "proto"); - if (option) { - if (strcmp(option, "tcp") == 0) { - *protocol = IPPROTO_TCP; - return 1; - } - if (strcmp(option, "udp") == 0) { - *protocol = IPPROTO_UDP; - return 1; - } - return 0; - } + if (option != NULL) + return nfs_get_proto(option, &family, protocol); } /* @@ -1419,20 +1411,12 @@ nfs_mount_version(struct mount_options *options, unsigned long *version) static int nfs_mount_protocol(struct mount_options *options, unsigned long *protocol) { + sa_family_t family; char *option; option = po_get(options, "mountproto"); - if (option) { - if (strcmp(option, "tcp") == 0) { - *protocol = IPPROTO_TCP; - return 1; - } - if (strcmp(option, "udp") == 0) { - *protocol = IPPROTO_UDP; - return 1; - } - return 0; - } + if (option != NULL) + return nfs_get_proto(option, &family, protocol); /* * MNT transport protocol wasn't specified. If the NFS |