X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmountd%2Frmtab.c;h=b2c04e769750d289a4fd8b2a929596e7e49ee0e5;hp=19b22eea280d2028dd607ae5911c9687e91fc588;hb=454aea5dad83ca75f3154ff12ecff39169703e69;hpb=2ba89d65421cba255a0e75a7f646e4bbb2487193 diff --git a/utils/mountd/rmtab.c b/utils/mountd/rmtab.c index 19b22ee..b2c04e7 100644 --- a/utils/mountd/rmtab.c +++ b/utils/mountd/rmtab.c @@ -131,22 +131,22 @@ mountlist_del(char *hname, const char *path) } void -mountlist_del_all(struct sockaddr_in *sin) +mountlist_del_all(const struct sockaddr *sap) { - struct in_addr addr = sin->sin_addr; - struct hostent *hp; + char *hostname; struct rmtabent *rep; - nfs_export *exp; FILE *fp; int lockid; if ((lockid = xflock(_PATH_RMTABLCK, "w")) < 0) return; - if (!(hp = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET))) { - xlog(L_ERROR, "can't get hostname of %s", inet_ntoa(addr)); + hostname = host_canonname(sap); + if (hostname == NULL) { + char buf[INET6_ADDRSTRLEN]; + xlog(L_ERROR, "can't get hostname of %s", + host_ntop(sap, buf, sizeof(buf))); goto out_unlock; } - hp = hostent_dup (hp); if (!setrmtabent("r")) goto out_free; @@ -155,8 +155,8 @@ mountlist_del_all(struct sockaddr_in *sin) goto out_close; while ((rep = getrmtabent(1, NULL)) != NULL) { - if (strcmp(rep->r_client, hp->h_name) == 0 && - (exp = auth_authenticate("umountall", sin, rep->r_path))) + if (strcmp(rep->r_client, hostname) == 0 && + auth_authenticate("umountall", sap, rep->r_path) != NULL) continue; fputrmtabent(fp, rep, NULL); } @@ -168,7 +168,7 @@ mountlist_del_all(struct sockaddr_in *sin) out_close: endrmtabent(); /* close & unlink */ out_free: - free (hp); + free(hostname); out_unlock: xfunlock(lockid); }