@@ -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;
}