]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/export/client.c
See Changelog
[nfs-utils.git] / support / export / client.c
index 076b0c069dd1ff2991d374ee8c498087601321e8..03f791721774b5937642cf83d150a8c8442636f4 100644 (file)
@@ -32,8 +32,12 @@ static int   client_checkaddr(nfs_client *clp, struct in_addr addr);
 nfs_client     *clientlist[MCL_MAXTYPES] = { NULL, };
 
 
+/* if canonical is set, then we *know* this is already a canonical name
+ * so hostname lookup is avoided.
+ * This is used when reading /proc/fs/nfs/exports
+ */
 nfs_client *
-client_lookup(char *hname)
+client_lookup(char *hname, int canonical)
 {
        nfs_client      *clp = NULL;
        int             htype;
@@ -41,7 +45,7 @@ client_lookup(char *hname)
 
        htype = client_gettype(hname);
 
-       if (htype == MCL_FQDN) {
+       if (htype == MCL_FQDN && !canonical) {
                struct hostent *hp2;
                hp = gethostbyname(hname);
                if (hp == NULL || hp->h_addrtype != AF_INET) {
@@ -66,7 +70,7 @@ client_lookup(char *hname)
                }
        } else {
                for (clp = clientlist[htype]; clp; clp = clp->m_next) {
-                       if (strcmp(hname, clp->m_hostname)==0)
+                       if (strcasecmp(hname, clp->m_hostname)==0)
                                break;
                }
        }