X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmount%2Fconfigfile.c;fp=utils%2Fmount%2Fconfigfile.c;h=b0aa6f05265bde7ba08bd1ae0d437d5d517aa2b1;hp=e347b0ebcaf3fed77f86b873c25a3e77b6bd5ec7;hb=2091bc67253d6dc1f68dba2218593701bfc729c0;hpb=0e0526cce8127f1c18063ff700f5e4d5c77dc108 diff --git a/utils/mount/configfile.c b/utils/mount/configfile.c index e347b0e..b0aa6f0 100644 --- a/utils/mount/configfile.c +++ b/utils/mount/configfile.c @@ -185,6 +185,20 @@ 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 && + (strcasecmp(field, "nfsvers") == 0 || + strcasecmp(field, "vers") == 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. @@ -207,6 +221,12 @@ conf_parse_mntopts(char *section, char *arg, char *opts) snprintf(buf, BUFSIZ, "%s=", node->field); 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';