Commit f2ac4dc9 authored by Stanislav Kinsbursky's avatar Stanislav Kinsbursky Committed by Trond Myklebust

SUNRPC: parametrize rpc_uaddr2sockaddr() by network context

Parametrize rpc_uaddr2sockaddr() by network context and thus force it's callers to pass
in network context instead of using hard-coded "init_net".
Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 90100b17
...@@ -1308,7 +1308,7 @@ gen_callback(struct nfs4_client *clp, struct nfsd4_setclientid *se, struct svc_r ...@@ -1308,7 +1308,7 @@ gen_callback(struct nfs4_client *clp, struct nfsd4_setclientid *se, struct svc_r
else else
goto out_err; goto out_err;
conn->cb_addrlen = rpc_uaddr2sockaddr(se->se_callback_addr_val, conn->cb_addrlen = rpc_uaddr2sockaddr(&init_net, se->se_callback_addr_val,
se->se_callback_addr_len, se->se_callback_addr_len,
(struct sockaddr *)&conn->cb_addr, (struct sockaddr *)&conn->cb_addr,
sizeof(conn->cb_addr)); sizeof(conn->cb_addr));
......
...@@ -166,7 +166,7 @@ size_t rpc_ntop(const struct sockaddr *, char *, const size_t); ...@@ -166,7 +166,7 @@ size_t rpc_ntop(const struct sockaddr *, char *, const size_t);
size_t rpc_pton(struct net *, const char *, const size_t, size_t rpc_pton(struct net *, const char *, const size_t,
struct sockaddr *, const size_t); struct sockaddr *, const size_t);
char * rpc_sockaddr2uaddr(const struct sockaddr *, gfp_t); char * rpc_sockaddr2uaddr(const struct sockaddr *, gfp_t);
size_t rpc_uaddr2sockaddr(const char *, const size_t, size_t rpc_uaddr2sockaddr(struct net *, const char *, const size_t,
struct sockaddr *, const size_t); struct sockaddr *, const size_t);
static inline unsigned short rpc_get_port(const struct sockaddr *sap) static inline unsigned short rpc_get_port(const struct sockaddr *sap)
......
...@@ -297,6 +297,7 @@ char *rpc_sockaddr2uaddr(const struct sockaddr *sap, gfp_t gfp_flags) ...@@ -297,6 +297,7 @@ char *rpc_sockaddr2uaddr(const struct sockaddr *sap, gfp_t gfp_flags)
/** /**
* rpc_uaddr2sockaddr - convert a universal address to a socket address. * rpc_uaddr2sockaddr - convert a universal address to a socket address.
* @net: applicable network namespace
* @uaddr: C string containing universal address to convert * @uaddr: C string containing universal address to convert
* @uaddr_len: length of universal address string * @uaddr_len: length of universal address string
* @sap: buffer into which to plant socket address * @sap: buffer into which to plant socket address
...@@ -308,8 +309,9 @@ char *rpc_sockaddr2uaddr(const struct sockaddr *sap, gfp_t gfp_flags) ...@@ -308,8 +309,9 @@ char *rpc_sockaddr2uaddr(const struct sockaddr *sap, gfp_t gfp_flags)
* Returns the size of the socket address if successful; otherwise * Returns the size of the socket address if successful; otherwise
* zero is returned. * zero is returned.
*/ */
size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len, size_t rpc_uaddr2sockaddr(struct net *net, const char *uaddr,
struct sockaddr *sap, const size_t salen) const size_t uaddr_len, struct sockaddr *sap,
const size_t salen)
{ {
char *c, buf[RPCBIND_MAXUADDRLEN + sizeof('\0')]; char *c, buf[RPCBIND_MAXUADDRLEN + sizeof('\0')];
unsigned long portlo, porthi; unsigned long portlo, porthi;
...@@ -341,7 +343,7 @@ size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len, ...@@ -341,7 +343,7 @@ size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len,
port = (unsigned short)((porthi << 8) | portlo); port = (unsigned short)((porthi << 8) | portlo);
*c = '\0'; *c = '\0';
if (rpc_pton(&init_net, buf, strlen(buf), sap, salen) == 0) if (rpc_pton(net, buf, strlen(buf), sap, salen) == 0)
return 0; return 0;
switch (sap->sa_family) { switch (sap->sa_family) {
......
...@@ -934,7 +934,7 @@ static int rpcb_dec_getaddr(struct rpc_rqst *req, struct xdr_stream *xdr, ...@@ -934,7 +934,7 @@ static int rpcb_dec_getaddr(struct rpc_rqst *req, struct xdr_stream *xdr,
dprintk("RPC: %5u RPCB_%s reply: %s\n", task->tk_pid, dprintk("RPC: %5u RPCB_%s reply: %s\n", task->tk_pid,
task->tk_msg.rpc_proc->p_name, (char *)p); task->tk_msg.rpc_proc->p_name, (char *)p);
if (rpc_uaddr2sockaddr((char *)p, len, sap, sizeof(address)) == 0) if (rpc_uaddr2sockaddr(&init_net, (char *)p, len, sap, sizeof(address)) == 0)
goto out_fail; goto out_fail;
rpcb->r_port = rpc_get_port(sap); rpcb->r_port = rpc_get_port(sap);
......
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