summaryrefslogtreecommitdiffstats
path: root/utils/mountd/rmtab.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2006-12-18 15:44:11 -0500
committerNeil Brown <neilb@suse.de>2006-12-19 09:31:22 +1100
commit5d5d8dc1f093f73825b5c2fc814f0a9a565bd384 (patch)
tree038ba32fa564483813e310127ed88e34f825f5f8 /utils/mountd/rmtab.c
parent9e1aa7b9a04776bd43eb75bef50a53f41e17b813 (diff)
downloadnfs-utils-5d5d8dc1f093f73825b5c2fc814f0a9a565bd384.tar.gz
nfs-utils-5d5d8dc1f093f73825b5c2fc814f0a9a565bd384.tar.xz
nfs-utils-5d5d8dc1f093f73825b5c2fc814f0a9a565bd384.zip
add -r flag to make mountd do reverse resolve of ipaddress on the fly
For those that want "traditional" showmount -a behavior from their mountd (hostname:/path instead of ipaddr:/path). This patch adds a '-r' flag that does a reverse-resolve for each IP address listed in the rmtab when a dump operation is called. Probably not a good idea for those concerned about performance, but since it's not the default option, I don't see it being an issue. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'utils/mountd/rmtab.c')
-rw-r--r--utils/mountd/rmtab.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/utils/mountd/rmtab.c b/utils/mountd/rmtab.c
index f641a96..e8aff5a 100644
--- a/utils/mountd/rmtab.c
+++ b/utils/mountd/rmtab.c
@@ -25,6 +25,8 @@
#include <limits.h> /* PATH_MAX */
+extern int reverse_resolve;
+
/* If new path is a link do not destroy it but place the
* file where the link points.
*/
@@ -185,6 +187,8 @@ mountlist_list(void)
struct rmtabent *rep;
struct stat stb;
int lockid;
+ struct in_addr addr;
+ struct hostent *he;
if ((lockid = xflock(_PATH_RMTAB, "r")) < 0)
return NULL;
@@ -204,8 +208,15 @@ mountlist_list(void)
setrmtabent("r");
while ((rep = getrmtabent(1, NULL)) != NULL) {
m = (mountlist) xmalloc(sizeof(*m));
- m->ml_hostname = xstrdup(rep->r_client);
- m->ml_directory = xstrdup(rep->r_path);
+
+ if (reverse_resolve &&
+ inet_aton((const char *) rep->r_client, &addr) &&
+ (he = gethostbyaddr(&addr, sizeof(addr), AF_INET)))
+ m->ml_hostname = xstrdup(he->h_name);
+ else
+ m->ml_hostname = xstrdup(rep->r_client);
+
+ m->ml_directory = xstrdup(rep->r_path);
m->ml_next = mlist;
mlist = m;
}