Linux NFS development
 help / color / mirror / Atom feed
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox