From: Jeff Layton <jlayton@redhat.com>
To: nfs@lists.sourceforge.net
Cc: Neil Brown <neilb@suse.de>
Subject: [PATCH 3/3] add -r flag to make mountd do reverse resolve of ipaddress on the fly
Date: Mon, 18 Dec 2006 15:44:11 -0500 [thread overview]
Message-ID: <4586FD9B.5020106@redhat.com> (raw)
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>
--- nfs-utils-1.0.10/utils/mountd/mountd.c.revres
+++ nfs-utils-1.0.10/utils/mountd/mountd.c
@@ -37,6 +37,7 @@ static void usage(const char *, int exi
static exports get_exportlist(void);
static struct nfs_fh_len *get_rootfh(struct svc_req *, dirpath *, mountstat3 *, int v3);
+int reverse_resolve = 0;
int new_cache = 0;
/* PRC: a high-availability callout program can be specified with -H
@@ -557,7 +558,7 @@ main(int argc, char **argv)
/* Parse the command line options and arguments. */
opterr = 0;
- while ((c = getopt_long(argc, argv, "o:n:Fd:f:p:P:hH:N:V:vs:t:", longopts, NULL)) != EOF)
+ while ((c = getopt_long(argc, argv, "o:n:Fd:f:p:P:hH:N:V:vrs:t:", longopts, NULL)) != EOF)
switch (c) {
case 'o':
descriptors = atoi(optarg);
@@ -597,6 +598,9 @@ main(int argc, char **argv)
case 'n':
_rpcfdtype = SOCK_DGRAM;
break;
+ case 'r':
+ reverse_resolve = 1;
+ break;
case 's':
if ((state_dir = xstrdup(optarg)) == NULL) {
fprintf(stderr, "%s: xstrdup(%s) failed!\n",
--- nfs-utils-1.0.10/utils/mountd/rmtab.c.revres
+++ nfs-utils-1.0.10/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,7 +208,14 @@ mountlist_list(void)
setrmtabent("r");
while ((rep = getrmtabent(1, NULL)) != NULL) {
m = (mountlist) xmalloc(sizeof(*m));
- m->ml_hostname = xstrdup(rep->r_client);
+
+ 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;
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
reply other threads:[~2006-12-18 20:44 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4586FD9B.5020106@redhat.com \
--to=jlayton@redhat.com \
--cc=neilb@suse.de \
--cc=nfs@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.