int nomtab;
 int verbose;
 int mounttype;
+int sloppy;
 
 static struct option longopts[] = {
   { "fake", 0, 0, 'f' },
        printf("\t-w\t\tMount file system read-write\n");
        printf("\t-f\t\tFake mount, don't actually mount\n");
        printf("\t-n\t\tDo not update /etc/mtab\n");
+       printf("\t-s\t\tTolerate sloppy mount options rather than failing.\n");
        printf("\t-h\t\tPrint this help\n");
        printf("\tversion\t\tnfs4 - NFS version 4, nfs - older NFS version supported\n");
        printf("\tnfsoptions\tRefer mount.nfs(8) or nfs(5)\n\n");
                return 0;
        }
 
-       while ((c = getopt_long (argc - 2, argv + 2, "rt:vVwfno:h",
+       while ((c = getopt_long (argc - 2, argv + 2, "rt:vVwfno:hs",
                                longopts, NULL)) != -1) {
                switch (c) {
                case 'r':
                        else
                                mount_opts = xstrdup(optarg);
                        break;
+               case 's':
+                       ++sloppy;
+                       break;
                case 128: /* bind */
                        mounttype = MS_BIND;
                        break;
 
 #endif
 
 extern int verbose;
+extern int sloppy;
 
 char *IDMAPLCK = DEFAULT_DIR "/rpcidmapd";
 #define idmapd_check() do { \
                                num_flavour = parse_sec(opteq+1, pseudoflavour);
                                if (!num_flavour)
                                        goto fail;
-                       } else if (!strcmp(opt, "addr")) {
+                       } else if (!strcmp(opt, "addr") || sloppy) {
                                /* ignore */;
                        } else {
                                printf(_("unknown nfs mount parameter: "
                                nocto = !val;
                        else if (!strcmp(opt, "ac"))
                                noac = !val;
-                       else {
+                       else if (!sloppy) {
                                printf(_("unknown nfs mount option: "
                                         "%s%s\n"), val ? "" : "no", opt);
                                goto fail;
 
 static char errbuf[BUFSIZ];
 static char *erreob = &errbuf[BUFSIZ];
 extern int verbose;
+extern int sloppy;
 
 /* Convert RPC errors into strings */
 int rpc_strerror(int);
                        } else if (!strcmp(opt, "namlen")) {
                                if (nfs_mount_version >= 2)
                                        data->namlen = val;
+                               else if (sloppy)
+                                       continue;
                                else
                                        goto bad_parameter;
 #endif
                        } else if (!strcmp(opt, "addr")) {
                                /* ignore */;
                                continue;
-                       } else
+                       } else if (sloppy)
+                               continue;
+                       else
                                goto bad_parameter;
                        sprintf(cbuf, "%s=%s,", opt, opteq+1);
                } else if (opteq) {
                                        mnt_pmap->pm_prot = IPPROTO_TCP;
                                        data->flags |= NFS_MOUNT_TCP;
 #endif
-                               } else
+                               } else if (sloppy)
+                                       continue;
+                               else
                                        goto bad_parameter;
 #if NFS_MOUNT_VERSION >= 5
                        } else if (!strcmp(opt, "sec")) {
                                        data->pseudoflavor = AUTH_GSS_SPKMI;
                                else if (!strcmp(secflavor, "spkm3p"))
                                        data->pseudoflavor = AUTH_GSS_SPKMP;
+                               else if (sloppy)
+                                       continue;
                                else {
                                        printf(_("Warning: Unrecognized security flavor %s.\n"),
                                                secflavor);
                                        goto bad_parameter;
                                }
                                strncpy(data->context, context, NFS_MAX_CONTEXT_LEN);
-                       } else
+                       } else if (sloppy)
+                               continue;
+                       else
                                goto bad_parameter;
                        sprintf(cbuf, "%s=%s,", opt, opteq+1);
                } else {
 #endif
                        } else {
                        bad_option:
+                               if (sloppy)
+                                       continue;
                                printf(_("Unsupported nfs mount option: "
                                         "%s%s\n"), val ? "" : "no", opt);
                                goto out_bad;