All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/3] add -r flag to make mountd do reverse resolve of ipaddress on the fly
@ 2006-12-18 20:44 Jeff Layton
  0 siblings, 0 replies; only message in thread
From: Jeff Layton @ 2006-12-18 20:44 UTC (permalink / raw)
  To: nfs; +Cc: Neil Brown

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-12-18 20:44 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-18 20:44 [PATCH 3/3] add -r flag to make mountd do reverse resolve of ipaddress on the fly Jeff Layton

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.