]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mount/configfile.c
Make sure all protocol version options are checked in check_vers()
[nfs-utils.git] / utils / mount / configfile.c
index cad8c52f7ef72e112e529ea5860558a95b7ecf8f..d3285f8bf0cac5f9ebcdc2cbfd7609d163cdf4bf 100644 (file)
 #define NFSMOUNT_GLOBAL_OPTS "NFSMount_Global_Options"
 #endif
 
-#ifndef NFSMOUNT_MOUNTPOINT  "MountPoint"
+#ifndef NFSMOUNT_MOUNTPOINT
 #define NFSMOUNT_MOUNTPOINT "MountPoint"
 #endif
 
-#ifndef NFSMOUNT_SERVER "Server"
+#ifndef NFSMOUNT_SERVER
 #define NFSMOUNT_SERVER "Server"
 #endif
 
@@ -83,6 +83,9 @@ char *mountopts_alias(char *opt, int *argtype)
                *argtype = mnt_alias_tab[i].argtype;
                return mnt_alias_tab[i].opt;
        }
+       /* Make option names case-insensitive */
+       upper2lower(opt);
+
        return opt;
 }
 /*
@@ -182,6 +185,18 @@ void free_all(void)
                free(entry);
        }
 }
+static char *versions[] = {"v2", "v3", "v4", "vers", "nfsvers", NULL};
+int inline check_vers(char *mopt, char *field)
+{
+       int i;
+
+       if (strncmp("mountvers", field, strlen("mountvers")) != 0) {
+               for (i=0; versions[i]; i++) 
+                       if (strcasestr(mopt, versions[i]) != NULL)
+                               return 1;
+       }
+       return 0;
+}
 /*
  * Parse the given section of the configuration 
  * file to if there are any mount options set.
@@ -202,8 +217,14 @@ conf_parse_mntopts(char *section, char *arg, char *opts)
                 * Do not overwrite options if already exists 
                 */
                snprintf(buf, BUFSIZ, "%s=", node->field);
-               if (opts && strstr(opts, buf) != NULL)
+               if (opts && strcasestr(opts, buf) != NULL)
                        continue;
+               /* 
+                * Protocol verions can be set in a number of ways
+                */
+               if (opts && check_vers(opts, node->field))
+                       continue;
+
                if (lookup_entry(node->field) != NULL)
                        continue;
                buf[0] = '\0';