]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/export/export.c
new "mountpoint" export option.
[nfs-utils.git] / support / export / export.c
index ef12056dd226cee08e8e1c48e948eae1a2941869..eef2c3b5fcb5a247bb9e74f4c0f1ec97bc969f03 100644 (file)
@@ -32,10 +32,10 @@ export_read(char *fname)
        nfs_export              *exp;
 
        setexportent(fname, "r");
-       while ((eep = getexportent()) != NULL) {
-         exp = export_lookup(eep->e_hostname, eep->e_path);
+       while ((eep = getexportent(0,1)) != NULL) {
+         exp = export_lookup(eep->e_hostname, eep->e_path, 0);
          if (!exp)
-           export_create(eep);
+           export_create(eep,0);
          else {
            if (exp->m_export.e_flags != eep->e_flags) {
              xlog(L_ERROR, "incompatible duplicated export entries:");
@@ -61,12 +61,12 @@ export_read(char *fname)
  * Create an in-core export struct from an export entry.
  */
 nfs_export *
-export_create(struct exportent *xep)
+export_create(struct exportent *xep, int canonical)
 {
        nfs_client      *clp;
        nfs_export      *exp;
 
-       if (!(clp = client_lookup(xep->e_hostname))) {
+       if (!(clp = client_lookup(xep->e_hostname, canonical))) {
                /* bad export entry; complaint already logged */
                return NULL;
        }
@@ -203,12 +203,12 @@ export_allowed(struct hostent *hp, char *path)
 }
 
 nfs_export *
-export_lookup(char *hname, char *path)
+export_lookup(char *hname, char *path, int canonical)
 {
        nfs_client      *clp;
        nfs_export      *exp;
 
-       if (!(clp = client_lookup(hname)))
+       if (!(clp = client_lookup(hname, canonical)))
                return NULL;
        for (exp = exportlist[clp->m_type]; exp; exp = exp->m_next)
                if (exp->m_client == clp && !strcmp(exp->m_export.e_path, path))
@@ -239,6 +239,8 @@ export_freeall(void)
                                xfree(exp->m_export.e_squids);
                        if (exp->m_export.e_sqgids)
                                xfree(exp->m_export.e_sqgids);
+                       if (exp->m_export.e_mountpoint)
+                               free(exp->m_export.e_mountpoint);
                        xfree(exp);
                }
                exportlist[i] = NULL;