Re: [PATCH] clnt_create: Restore using reserve ports for client connections

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Steve-

> On Apr 11, 2018, at 9:08 AM, Steve Dickson <steved@xxxxxxxxxx> wrote:
> 
> Commit 46e04a73 changed clnt_create(3) not to
> use reserve ports when binding a connection to
> a server.
> 
> For certain legacy apps, like some of the NIS commands,
> the client has to used reserve port to be able
> to communicate with the server.

This is still not clear.

The problem is not that the RPC client has to use a reserved
port, it's that the client implementations currently assume
that clnt_create(3) will allocate a reserved port for them,
which is undocumented API behavior.

One more comment below.


> So the use of reserve ports in clnt_create(3)
> has been restored.
> 
> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx>
> ---
> src/clnt_generic.c | 3 +--
> src/rpc_soc.c      | 3 +--
> 2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/src/clnt_generic.c b/src/clnt_generic.c
> index e5a314f..774292b 100644
> --- a/src/clnt_generic.c
> +++ b/src/clnt_generic.c
> @@ -341,8 +341,7 @@ clnt_tli_create(int fd, const struct netconfig *nconf,
> 		servtype = nconf->nc_semantics;
> 		if (!__rpc_fd2sockinfo(fd, &si))
> 			goto err;
> -		if (__binddynport(fd) == -1)
> -			goto err;
> +		bindresvport(fd, NULL);

If this is the last __binddynport call site in clnt_generic.c,
you can remove its forward declaration (line 50 in my copy of
the source).


> 	} else {
> 		if (!__rpc_fd2sockinfo(fd, &si))
> 			goto err;
> diff --git a/src/rpc_soc.c b/src/rpc_soc.c
> index af6c482..f32a27c 100644
> --- a/src/rpc_soc.c
> +++ b/src/rpc_soc.c
> @@ -147,8 +147,7 @@ clnt_com_create(raddr, prog, vers, sockp, sendsz, recvsz, tp, flags)
> 	bindaddr.maxlen = bindaddr.len =  sizeof (struct sockaddr_in);
> 	bindaddr.buf = raddr;
> 
> -	if (__binddynport(fd) == -1)
> -		goto err;
> +	bindresvport(fd, NULL);
> 	cl = clnt_tli_create(fd, nconf, &bindaddr, prog, vers,
> 				sendsz, recvsz);
> 	if (cl) {
> -- 
> 2.14.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux