Skip to contentSkip to conversation

svc_vc_create/clnt_vc_create and RPC_ANYFD

LTP Stanislav Kholmanskikh 2 participants 3 messages Mar 25, 2014 – Mar 26, 2014

lore
Share & tools
lore
#0 lore raw

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?

Thank you.

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

#1 lore raw
Quoted 22 lines · Stanislav Kholmanskikh

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."

Quoted 5 lines

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.

--
Chuck Lever
[email protected]

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

#2 lore raw
Quoted 33 lines · Chuck Lever
Quoted 22 lines · Stanislav Kholmanskikh

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."

Quoted 5 lines

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

Quoted 8 lines
   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.

Quoted 6 lines

--
Chuck Lever
[email protected]

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list