[PATCH (RESEND) 07/12] nfs: Add srcaddr to /proc/fs/nfsfs/servers

From: greearb
Date: Fri Jul 15 2011 - 13:57:51 EST


From: Ben Greear <greearb@xxxxxxxxxxxxxxx>

Helps users understand whether a server instance is
bound to a local IP or not.

Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx>
---
:100644 100644 5d8998a... 223785f... M fs/nfs/client.c
fs/nfs/client.c | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 5d8998a..223785f 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -1895,20 +1895,34 @@ static int nfs_server_list_show(struct seq_file *m, void *v)

/* display header on line 1 */
if (v == &nfs_client_list) {
- seq_puts(m, "NV SERVER PORT USE HOSTNAME\n");
+ seq_puts(m, "NV SERVER PORT USE HOSTNAME"
+ " SRCADDR\n");
return 0;
}

/* display one transport per line on subsequent lines */
clp = list_entry(v, struct nfs_client, cl_share_link);

- seq_printf(m, "v%u %s %s %3d %s\n",
+ seq_printf(m, "v%u %s %s %3d %s",
clp->rpc_ops->version,
rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_HEX_ADDR),
rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_HEX_PORT),
atomic_read(&clp->cl_count),
clp->cl_hostname);

+ if (clp->srcaddr.ss_family == AF_INET) {
+ const struct sockaddr_in *sin;
+ sin = (const struct sockaddr_in *)&clp->srcaddr;
+ seq_printf(m, " %pI4\n", &sin->sin_addr.s_addr);
+ } else if (clp->srcaddr.ss_family == AF_INET6) {
+ const struct sockaddr_in6 *sin6;
+ sin6 = (const struct sockaddr_in6 *)&clp->srcaddr;
+ seq_printf(m, " %pI6c\n", &sin6->sin6_addr);
+ } else if (clp->srcaddr.ss_family == AF_UNSPEC)
+ seq_printf(m, " ANY\n");
+ else
+ seq_printf(m, " UNKNOWN_%i\n", (int)(clp->srcaddr.ss_family));
+
return 0;
}

--
1.7.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/