X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Fnfs%2Fexports.c;h=dea040f1006eb830f13a031d1a55dce80555867d;hp=1744ed667e2dd0e5df186565a4c5aea2914ddce9;hb=6eba4e22ce2b10bcfb19fbb253f7e235afbaa406;hpb=5fe118b838254023d83424c5010ae73a91ec267d diff --git a/support/nfs/exports.c b/support/nfs/exports.c index 1744ed6..dea040f 100644 --- a/support/nfs/exports.c +++ b/support/nfs/exports.c @@ -39,12 +39,6 @@ struct flav_info 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 }, @@ -107,6 +101,7 @@ static void init_exportent (struct exportent *ee, int fromkernel) ee->e_nsquids = 0; ee->e_nsqgids = 0; ee->e_uuid = NULL; + ee->e_ttl = DEFAULT_TTL; } struct exportent * @@ -141,9 +136,14 @@ getexportent(int fromkernel, int fromexports) return NULL; } first = 0; - - /* Check for default options */ - if (exp[0] == '-') { + + /* + * Check for default options. The kernel will never have default + * options in /proc/fs/nfs/exports, however due to the initial '-' in + * the -test-client- string from the test export we have to check that + * we're not reading from the kernel. + */ + if (exp[0] == '-' && !fromkernel) { if (parseopts(exp + 1, &def_ee, 0, &has_default_subtree_opts) < 0) return NULL; @@ -469,7 +469,7 @@ static void clearflags(int mask, unsigned int active, struct exportent *ep) * ensure that the export flags agree with the flags on each * pseudoflavor: */ -static void fix_pseudoflavor_flags(struct exportent *ep) +void fix_pseudoflavor_flags(struct exportent *ep) { struct export_features *ef; struct sec_entry *p; @@ -643,6 +643,8 @@ bad_option: cp++; } + if (ep->e_secinfo[0].flav == NULL) + secinfo_addflavor(find_flavor("sys"), ep); fix_pseudoflavor_flags(ep); ep->e_squids = squids; ep->e_sqgids = sqgids; @@ -778,8 +780,9 @@ struct export_features *get_export_features(void) fd = open(path, O_RDONLY); if (fd == -1) goto good; - fd = read(fd, buf, 50); - if (fd == -1) + c = read(fd, buf, 50); + close(fd); + if (c == -1) goto err; c = sscanf(buf, "%x %x", &ef.flags, &ef.secinfo_flags); if (c != 2)