mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
svc: Add svc_xprt_names service to replace svc_sock_names
Create a transport independent version of the svc_sock_names function. The toclose capability of the svc_sock_names service can be implemented using the svc_xprt_find and svc_xprt_close services. Signed-off-by: Tom Tucker <[email protected]> Acked-by: Neil Brown <[email protected]> Reviewed-by: Chuck Lever <[email protected]> Reviewed-by: Greg Banks <[email protected]> Signed-off-by: J. Bruce Fields <[email protected]>
This commit is contained in:
parent
a217813f90
commit
9571af18fa
3 changed files with 37 additions and 1 deletions
|
|
@ -1014,3 +1014,38 @@ struct svc_xprt *svc_find_xprt(struct svc_serv *serv, char *xcl_name,
|
|||
return found;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(svc_find_xprt);
|
||||
|
||||
/*
|
||||
* Format a buffer with a list of the active transports. A zero for
|
||||
* the buflen parameter disables target buffer overflow checking.
|
||||
*/
|
||||
int svc_xprt_names(struct svc_serv *serv, char *buf, int buflen)
|
||||
{
|
||||
struct svc_xprt *xprt;
|
||||
char xprt_str[64];
|
||||
int totlen = 0;
|
||||
int len;
|
||||
|
||||
/* Sanity check args */
|
||||
if (!serv)
|
||||
return 0;
|
||||
|
||||
spin_lock_bh(&serv->sv_lock);
|
||||
list_for_each_entry(xprt, &serv->sv_permsocks, xpt_list) {
|
||||
len = snprintf(xprt_str, sizeof(xprt_str),
|
||||
"%s %d\n", xprt->xpt_class->xcl_name,
|
||||
svc_xprt_local_port(xprt));
|
||||
/* If the string was truncated, replace with error string */
|
||||
if (len >= sizeof(xprt_str))
|
||||
strcpy(xprt_str, "name-too-long\n");
|
||||
/* Don't overflow buffer */
|
||||
len = strlen(xprt_str);
|
||||
if (buflen && (len + totlen >= buflen))
|
||||
break;
|
||||
strcpy(buf+totlen, xprt_str);
|
||||
totlen += len;
|
||||
}
|
||||
spin_unlock_bh(&serv->sv_lock);
|
||||
return totlen;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(svc_xprt_names);
|
||||
|
|
|
|||
Loading…
Reference in a new issue