@@ -1311,7 +1311,7 @@ static int nfs_server_list_show(struct seq_file *m, void *v)
/* display header on line 1 */
if (v == &nn->nfs_client_list) {
- seq_puts(m, "NV SERVER PORT USE HOSTNAME\n");
+ seq_puts(m, "NV SERVER PORT USE HOSTNAME SRCADDR\n");
return 0;
}
@@ -1323,7 +1323,7 @@ static int nfs_server_list_show(struct seq_file *m, void *v)
return 0;
rcu_read_lock();
- 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),
@@ -1331,6 +1331,19 @@ static int nfs_server_list_show(struct seq_file *m, void *v)
clp->cl_hostname);
rcu_read_unlock();
+ 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;
}