Commit 156e6209 authored by Chuck Lever's avatar Chuck Lever Committed by Trond Myklebust

SUNRPC: Clean up svc_find_xprt() calling sequence

Clean up: add documentating comment and use appropriate data types for
svc_find_xprt()'s arguments.

This also eliminates a mixed sign comparison: @port was an int, while
the return value of svc_xprt_local_port() is an unsigned short.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent adbbe929
...@@ -80,7 +80,8 @@ void svc_close_xprt(struct svc_xprt *xprt); ...@@ -80,7 +80,8 @@ void svc_close_xprt(struct svc_xprt *xprt);
void svc_delete_xprt(struct svc_xprt *xprt); void svc_delete_xprt(struct svc_xprt *xprt);
int svc_port_is_privileged(struct sockaddr *sin); int svc_port_is_privileged(struct sockaddr *sin);
int svc_print_xprts(char *buf, int maxlen); int svc_print_xprts(char *buf, int maxlen);
struct svc_xprt *svc_find_xprt(struct svc_serv *, char *, int, int); struct svc_xprt *svc_find_xprt(struct svc_serv *serv, const char *xcl_name,
const sa_family_t af, const unsigned short port);
int svc_xprt_names(struct svc_serv *serv, char *buf, int buflen); int svc_xprt_names(struct svc_serv *serv, char *buf, int buflen);
static inline void svc_xprt_get(struct svc_xprt *xprt) static inline void svc_xprt_get(struct svc_xprt *xprt)
......
...@@ -1033,7 +1033,13 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_xprt *xprt) ...@@ -1033,7 +1033,13 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_xprt *xprt)
return dr; return dr;
} }
/* /**
* svc_find_xprt - find an RPC transport instance
* @serv: pointer to svc_serv to search
* @xcl_name: C string containing transport's class name
* @af: Address family of transport's local address
* @port: transport's IP port number
*
* Return the transport instance pointer for the endpoint accepting * Return the transport instance pointer for the endpoint accepting
* connections/peer traffic from the specified transport class, * connections/peer traffic from the specified transport class,
* address family and port. * address family and port.
...@@ -1042,14 +1048,14 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_xprt *xprt) ...@@ -1042,14 +1048,14 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_xprt *xprt)
* wild-card, and will result in matching the first transport in the * wild-card, and will result in matching the first transport in the
* service's list that has a matching class name. * service's list that has a matching class name.
*/ */
struct svc_xprt *svc_find_xprt(struct svc_serv *serv, char *xcl_name, struct svc_xprt *svc_find_xprt(struct svc_serv *serv, const char *xcl_name,
int af, int port) const sa_family_t af, const unsigned short port)
{ {
struct svc_xprt *xprt; struct svc_xprt *xprt;
struct svc_xprt *found = NULL; struct svc_xprt *found = NULL;
/* Sanity check the args */ /* Sanity check the args */
if (!serv || !xcl_name) if (serv == NULL || xcl_name == NULL)
return found; return found;
spin_lock_bh(&serv->sv_lock); spin_lock_bh(&serv->sv_lock);
...@@ -1058,7 +1064,7 @@ struct svc_xprt *svc_find_xprt(struct svc_serv *serv, char *xcl_name, ...@@ -1058,7 +1064,7 @@ struct svc_xprt *svc_find_xprt(struct svc_serv *serv, char *xcl_name,
continue; continue;
if (af != AF_UNSPEC && af != xprt->xpt_local.ss_family) if (af != AF_UNSPEC && af != xprt->xpt_local.ss_family)
continue; continue;
if (port && port != svc_xprt_local_port(xprt)) if (port != 0 && port != svc_xprt_local_port(xprt))
continue; continue;
found = xprt; found = xprt;
svc_xprt_get(xprt); svc_xprt_get(xprt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment