aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/svcsock.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2006-10-02 05:17:47 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-02 10:57:18 -0400
commit80212d59e32a8a8e030c2ddc5861d8ff70542c56 (patch)
treefb708f92e50ab8a1c13b68d4e6e3db8b50bd07a8 /net/sunrpc/svcsock.c
parent02a375f0ac4bc2e9b767fabb6b2f9915547226a7 (diff)
[PATCH] knfsd: define new nfsdfs file: portlist - contains list of ports
This file will list all ports that nfsd has open. Default when TCP enabled will be ipv4 udp 0.0.0.0 2049 ipv4 tcp 0.0.0.0 2049 Later, the list of ports will be settable. 'portlist' chosen rather than 'ports', to avoid unnecessary confusion with non-mainline patches which created 'ports' with different semantics. [akpm@osdl.org: cleanups, build fix] Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'net/sunrpc/svcsock.c')
-rw-r--r--net/sunrpc/svcsock.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 5b0fe1b66a23..3ee4b78742b1 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -429,6 +429,46 @@ out:
429} 429}
430 430
431/* 431/*
432 * Report socket names for nfsdfs
433 */
434static int one_sock_name(char *buf, struct svc_sock *svsk)
435{
436 int len;
437
438 switch(svsk->sk_sk->sk_family) {
439 case AF_INET:
440 len = sprintf(buf, "ipv4 %s %u.%u.%u.%u %d\n",
441 svsk->sk_sk->sk_protocol==IPPROTO_UDP?
442 "udp" : "tcp",
443 NIPQUAD(inet_sk(svsk->sk_sk)->rcv_saddr),
444 inet_sk(svsk->sk_sk)->num);
445 break;
446 default:
447 len = sprintf(buf, "*unknown-%d*\n",
448 svsk->sk_sk->sk_family);
449 }
450 return len;
451}
452
453int
454svc_sock_names(char *buf, struct svc_serv *serv)
455{
456 struct svc_sock *svsk;
457 int len = 0;
458
459 if (!serv)
460 return 0;
461 spin_lock(&serv->sv_lock);
462 list_for_each_entry(svsk, &serv->sv_permsocks, sk_list) {
463 int onelen = one_sock_name(buf+len, svsk);
464 len += onelen;
465 }
466 spin_unlock(&serv->sv_lock);
467 return len;
468}
469EXPORT_SYMBOL(svc_sock_names);
470
471/*
432 * Check input queue length 472 * Check input queue length
433 */ 473 */
434static int 474static int