SUNRPC: parametrize rpc_pton() by network context
Parametrize rpc_pton() by network context and thus force it's callers to pass in network context instead of using hard-coded "init_net". Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
8b147f7473
commit
90100b1766
|
@ -20,7 +20,7 @@ ssize_t nfs_dns_resolve_name(struct net *net, char *name, size_t namelen,
|
||||||
|
|
||||||
ip_len = dns_query(NULL, name, namelen, NULL, &ip_addr, NULL);
|
ip_len = dns_query(NULL, name, namelen, NULL, &ip_addr, NULL);
|
||||||
if (ip_len > 0)
|
if (ip_len > 0)
|
||||||
ret = rpc_pton(ip_addr, ip_len, sa, salen);
|
ret = rpc_pton(&init_net, ip_addr, ip_len, sa, salen);
|
||||||
else
|
else
|
||||||
ret = -ESRCH;
|
ret = -ESRCH;
|
||||||
kfree(ip_addr);
|
kfree(ip_addr);
|
||||||
|
@ -224,7 +224,7 @@ static int nfs_dns_parse(struct cache_detail *cd, char *buf, int buflen)
|
||||||
len = qword_get(&buf, buf1, sizeof(buf1));
|
len = qword_get(&buf, buf1, sizeof(buf1));
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
goto out;
|
goto out;
|
||||||
key.addrlen = rpc_pton(buf1, len,
|
key.addrlen = rpc_pton(&init_net, buf1, len,
|
||||||
(struct sockaddr *)&key.addr,
|
(struct sockaddr *)&key.addr,
|
||||||
sizeof(key.addr));
|
sizeof(key.addr));
|
||||||
|
|
||||||
|
|
|
@ -457,7 +457,7 @@ decode_ds_addr(struct xdr_stream *streamp, gfp_t gfp_flags)
|
||||||
|
|
||||||
INIT_LIST_HEAD(&da->da_node);
|
INIT_LIST_HEAD(&da->da_node);
|
||||||
|
|
||||||
if (!rpc_pton(buf, portstr-buf, (struct sockaddr *)&da->da_addr,
|
if (!rpc_pton(&init_net, buf, portstr-buf, (struct sockaddr *)&da->da_addr,
|
||||||
sizeof(da->da_addr))) {
|
sizeof(da->da_addr))) {
|
||||||
dprintk("%s: error parsing address %s\n", __func__, buf);
|
dprintk("%s: error parsing address %s\n", __func__, buf);
|
||||||
goto out_free_da;
|
goto out_free_da;
|
||||||
|
|
|
@ -98,7 +98,7 @@ static size_t nfs_parse_server_name(char *string, size_t len,
|
||||||
{
|
{
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
ret = rpc_pton(string, len, sa, salen);
|
ret = rpc_pton(&init_net, string, len, sa, salen);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ret = nfs_dns_resolve_name(server->client->cl_xprt->xprt_net,
|
ret = nfs_dns_resolve_name(server->client->cl_xprt->xprt_net,
|
||||||
string, len, sa, salen);
|
string, len, sa, salen);
|
||||||
|
|
|
@ -1408,7 +1408,7 @@ static int nfs_parse_mount_options(char *raw,
|
||||||
if (string == NULL)
|
if (string == NULL)
|
||||||
goto out_nomem;
|
goto out_nomem;
|
||||||
mnt->nfs_server.addrlen =
|
mnt->nfs_server.addrlen =
|
||||||
rpc_pton(string, strlen(string),
|
rpc_pton(&init_net, string, strlen(string),
|
||||||
(struct sockaddr *)
|
(struct sockaddr *)
|
||||||
&mnt->nfs_server.address,
|
&mnt->nfs_server.address,
|
||||||
sizeof(mnt->nfs_server.address));
|
sizeof(mnt->nfs_server.address));
|
||||||
|
@ -1430,7 +1430,7 @@ static int nfs_parse_mount_options(char *raw,
|
||||||
if (string == NULL)
|
if (string == NULL)
|
||||||
goto out_nomem;
|
goto out_nomem;
|
||||||
mnt->mount_server.addrlen =
|
mnt->mount_server.addrlen =
|
||||||
rpc_pton(string, strlen(string),
|
rpc_pton(&init_net, string, strlen(string),
|
||||||
(struct sockaddr *)
|
(struct sockaddr *)
|
||||||
&mnt->mount_server.address,
|
&mnt->mount_server.address,
|
||||||
sizeof(mnt->mount_server.address));
|
sizeof(mnt->mount_server.address));
|
||||||
|
|
|
@ -223,7 +223,7 @@ static ssize_t write_unlock_ip(struct file *file, char *buf, size_t size)
|
||||||
if (qword_get(&buf, fo_path, size) < 0)
|
if (qword_get(&buf, fo_path, size) < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (rpc_pton(fo_path, size, sap, salen) == 0)
|
if (rpc_pton(&init_net, fo_path, size, sap, salen) == 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
return nlmsvc_unlock_all_by_ip(sap);
|
return nlmsvc_unlock_all_by_ip(sap);
|
||||||
|
|
|
@ -163,7 +163,7 @@ size_t rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t);
|
||||||
const char *rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t);
|
const char *rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t);
|
||||||
|
|
||||||
size_t rpc_ntop(const struct sockaddr *, char *, const size_t);
|
size_t rpc_ntop(const struct sockaddr *, char *, const size_t);
|
||||||
size_t rpc_pton(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(const char *, const size_t,
|
||||||
|
|
|
@ -230,6 +230,7 @@ static size_t rpc_pton6(struct net *net, const char *buf, const size_t buflen,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rpc_pton - Construct a sockaddr in @sap
|
* rpc_pton - Construct a sockaddr in @sap
|
||||||
|
* @net: applicable network namespace
|
||||||
* @buf: C string containing presentation format IP address
|
* @buf: C string containing presentation format IP address
|
||||||
* @buflen: length of presentation address in bytes
|
* @buflen: length of presentation address in bytes
|
||||||
* @sap: buffer into which to plant socket address
|
* @sap: buffer into which to plant socket address
|
||||||
|
@ -242,14 +243,14 @@ static size_t rpc_pton6(struct net *net, const char *buf, const size_t buflen,
|
||||||
* socket address, if successful. Returns zero if an error
|
* socket address, if successful. Returns zero if an error
|
||||||
* occurred.
|
* occurred.
|
||||||
*/
|
*/
|
||||||
size_t rpc_pton(const char *buf, const size_t buflen,
|
size_t rpc_pton(struct net *net, const char *buf, const size_t buflen,
|
||||||
struct sockaddr *sap, const size_t salen)
|
struct sockaddr *sap, const size_t salen)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
for (i = 0; i < buflen; i++)
|
for (i = 0; i < buflen; i++)
|
||||||
if (buf[i] == ':')
|
if (buf[i] == ':')
|
||||||
return rpc_pton6(&init_net, buf, buflen, sap, salen);
|
return rpc_pton6(net, buf, buflen, sap, salen);
|
||||||
return rpc_pton4(buf, buflen, sap, salen);
|
return rpc_pton4(buf, buflen, sap, salen);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rpc_pton);
|
EXPORT_SYMBOL_GPL(rpc_pton);
|
||||||
|
@ -340,7 +341,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(buf, strlen(buf), sap, salen) == 0)
|
if (rpc_pton(&init_net, buf, strlen(buf), sap, salen) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
switch (sap->sa_family) {
|
switch (sap->sa_family) {
|
||||||
|
|
|
@ -211,7 +211,7 @@ static int ip_map_parse(struct cache_detail *cd,
|
||||||
len = qword_get(&mesg, buf, mlen);
|
len = qword_get(&mesg, buf, mlen);
|
||||||
if (len <= 0) return -EINVAL;
|
if (len <= 0) return -EINVAL;
|
||||||
|
|
||||||
if (rpc_pton(buf, len, &address.sa, sizeof(address)) == 0)
|
if (rpc_pton(&init_net, buf, len, &address.sa, sizeof(address)) == 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
switch (address.sa.sa_family) {
|
switch (address.sa.sa_family) {
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
|
|
Loading…
Reference in New Issue