#define nfsstat nfs_stat
#endif
+#include "pseudoflavors.h"
#include "nls.h"
#include "conn.h"
#include "xcommon.h"
#endif
extern int verbose;
+extern int sloppy;
char *IDMAPLCK = DEFAULT_DIR "/rpcidmapd";
#define idmapd_check() do { \
#define NFS_PORT 2049
#endif
-struct {
- char *flavour;
- int fnum;
-} flav_map[] = {
- { "krb5", RPC_AUTH_GSS_KRB5 },
- { "krb5i", RPC_AUTH_GSS_KRB5I },
- { "krb5p", RPC_AUTH_GSS_KRB5P },
- { "lipkey", RPC_AUTH_GSS_LKEY },
- { "lipkey-i", RPC_AUTH_GSS_LKEYI },
- { "lipkey-p", RPC_AUTH_GSS_LKEYP },
- { "spkm3", RPC_AUTH_GSS_SPKM },
- { "spkm3i", RPC_AUTH_GSS_SPKMI },
- { "spkm3p", RPC_AUTH_GSS_SPKMP },
- { "unix", AUTH_UNIX },
- { "sys", AUTH_SYS },
- { "null", AUTH_NULL },
- { "none", AUTH_NONE },
-};
-
-#define FMAPSIZE (sizeof(flav_map)/sizeof(flav_map[0]))
#define MAX_USER_FLAVOUR 16
static int parse_sec(char *sec, int *pseudoflavour)
"exceeded\n"));
return 0;
}
- for (i = 0; i < FMAPSIZE; i++) {
+ for (i = 0; i < flav_map_size; i++) {
if (strcmp(sec, flav_map[i].flavour) == 0) {
pseudoflavour[num_flavour++] = flav_map[i].fnum;
break;
}
}
- if (i == FMAPSIZE) {
+ if (i == flav_map_size) {
fprintf(stderr,
_("mount: unknown security type %s\n"), sec);
return 0;
char *s;
int val;
int bg, soft, intr;
- int nocto, noac;
+ int nocto, noac, unshared;
int retry;
int retval;
time_t timeout, t;
intr = NFS4_MOUNT_INTR;
nocto = 0;
noac = 0;
+ unshared = 0;
retry = 10000; /* 10000 minutes ~ 1 week */
/*
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 (!strcmp(opt, "sharecache"))
+ unshared = !val;
+ else if (!sloppy) {
printf(_("unknown nfs mount option: "
"%s%s\n"), val ? "" : "no", opt);
goto fail;
data.flags = (soft ? NFS4_MOUNT_SOFT : 0)
| (intr ? NFS4_MOUNT_INTR : 0)
| (nocto ? NFS4_MOUNT_NOCTO : 0)
- | (noac ? NFS4_MOUNT_NOAC : 0);
+ | (noac ? NFS4_MOUNT_NOAC : 0)
+ | (unshared ? NFS4_MOUNT_UNSHARED : 0);
/*
* Give a warning if the rpc.idmapd daemon is not running
*/
+#if 0
+ /* We shouldn't have these checks as nothing in this package
+ * creates the files that are checked
+ */
idmapd_check();
if (num_flavour == 0)
*/
gssd_check();
}
+#endif
data.auth_flavourlen = num_flavour;
data.auth_flavours = pseudoflavour;
data.acregmin, data.acregmax, data.acdirmin, data.acdirmax);
printf("port = %d, bg = %d, retry = %d, flags = %.8x\n",
ntohs(server_addr.sin_port), bg, retry, data.flags);
- printf("soft = %d, intr = %d, nocto = %d, noac = %d\n",
+ printf("soft = %d, intr = %d, nocto = %d, noac = %d, "
+ "nosharecache = %d\n",
(data.flags & NFS4_MOUNT_SOFT) != 0,
(data.flags & NFS4_MOUNT_INTR) != 0,
(data.flags & NFS4_MOUNT_NOCTO) != 0,
- (data.flags & NFS4_MOUNT_NOAC) != 0);
+ (data.flags & NFS4_MOUNT_NOAC) != 0,
+ (data.flags & NFS4_MOUNT_UNSHARED) != 0);
if (num_flavour > 0) {
int pf_cnt, i;
printf("sec = ");
for (pf_cnt = 0; pf_cnt < num_flavour; pf_cnt++) {
- for (i = 0; i < FMAPSIZE; i++) {
+ for (i = 0; i < flav_map_size; i++) {
if (flav_map[i].fnum == pseudoflavour[pf_cnt]) {
printf("%s", flav_map[i].flavour);
break;