Re: [LTP] [Libtirpc-devel] svc_vc_create/clnt_vc_create and RPC_ANYFD

Stanislav Kholmanskikh
2014-03-26T06:58:53Z

On 03/25/2014 07:56 PM, Chuck Lever wrote:
>
> On Mar 25, 2014, at 8:35 AM, Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com> wrote:
>
>> Hi!
>>
>> Sorry, but yet another question regarding rpc-tirpc-full-test-suite.
>>
>> Some binaries from this suite pass RPC_ANYFD to svc_vc_create() or
>> clnt_vc_create().
>>
>> Like this one -
>> https://github.com/linux-test-project/ltp/blob/master/testcases/network/rpc/rpc-tirpc-full-test-suite/tests_pack/tirpc_svc_5/tirpc_svc_5.c
>> :
>>
>> transp = svc_vc_create(RPC_ANYFD, 1024, 1024);
>>
>> And, of course, the tests using this fail.
>>
>> I dig into the libtirpc sources and didn't found anything that could
>> state that we may pass RPC_ANYFD to these functions.
>>
>> From svc_vc_create() comments:
>> "The filedescriptor passed in is expected to refer to a bound, but
>> not yet connected socket."
>>
>> and from clnt_vc_create():
>> "fd should be an open socket"
>>
>> So invoking svc_vc_create(RPC_ANYFD,...) or clnt_vc_create(RPC_ANYFD,
>> ...) is incorrect. Right?
>
> I don’t see anything in
>
> http://docs.oracle.com/cd/E19504-01/802-5885/802-5885.pdf
>
> that contradicts that.
>
> AFAICT RPC_ANYFD is OK for the so-called “expert level” API, which means clnt_tli_create(3t) and svc_tli_create(3t).
>
> It is also OK for the legacy APIs svctcp_create() and clnttcp_create() to take RPC_ANYSOCK.
>

Thank you.

> --
> Chuck Lever
> chucklever@gmail.com
>
>
>