- if (option) {
- mnt_server.saddr.sin_family = AF_INET;
- if (!inet_aton((const char *)option, &mnt_server.saddr.sin_addr))
- goto err;
- } else
- memcpy(&mnt_server.saddr, &nfs_server.saddr,
- sizeof(mnt_server.saddr));
-
- option = po_get(options, "mountport");
- if (option)
- mnt_server.pmap.pm_port = atoi(option);
- mnt_server.pmap.pm_prog = MOUNTPROG;
- option = po_get(options, "mountprog");
- if (option)
- mnt_server.pmap.pm_prog = atoi(option);
- option = po_get(options, "mountvers");
- if (option)
- mnt_server.pmap.pm_vers = atoi(option);
-
- option = po_get(options, "port");
- if (option) {
- nfs_server.pmap.pm_port = atoi(option);
- po_remove_all(options, "port");
- }
- nfs_server.pmap.pm_prog = NFS_PROGRAM;
- option = po_get(options, "nfsprog");
- if (option)
- nfs_server.pmap.pm_prog = atoi(option);
-
- option = po_get(options, "nfsvers");
- if (option) {
- nfs_server.pmap.pm_vers = atoi(option);
- po_remove_all(options, "nfsvers");
- }
- option = po_get(options, "vers");
- if (option) {
- nfs_server.pmap.pm_vers = atoi(option);
- po_remove_all(options, "vers");
- }
- option = po_get(options, "proto");
- if (option) {
- if (strcmp(option, "tcp") == 0) {
- nfs_server.pmap.pm_prot = IPPROTO_TCP;
- po_remove_all(options, "proto");
- }
- if (strcmp(option, "udp") == 0) {
- nfs_server.pmap.pm_prot = IPPROTO_UDP;
- po_remove_all(options, "proto");
- }
- }
- p = po_rightmost(options, "tcp", "udp");
- switch (p) {
- case PO_KEY2_RIGHTMOST:
- nfs_server.pmap.pm_prot = IPPROTO_UDP;
- break;
- case PO_KEY1_RIGHTMOST:
- nfs_server.pmap.pm_prot = IPPROTO_TCP;
- break;
- }
- po_remove_all(options, "tcp");
- po_remove_all(options, "udp");