summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2009-12-11 10:37:02 -0500
committerSteve Dickson <steved@redhat.com>2009-12-11 16:13:16 -0500
commit5ba18c11f31a135c6eeab67e820c271f87004793 (patch)
tree7a734d40613ef503b8738105faaca260e3394064
parent626010056efb7baa76b08b5e6572720e02e425b4 (diff)
downloadnfs-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.c28
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