The functions from the "bottom level" TI-RPC API: * svc_dg_create * svc_vc_create * clnt_dg_create * clnt_vc_create do not accept RPC_ANYFD parameter. This parameter is for the "expert level" API.
These functions should be passed with a bound socket. Implemented it using bound_socket() function. Signed-off-by: Stanislav Kholmanskikh <[email protected]> --- .../tirpc_bottomlevel_clnt_call.c | 18 ++++++++++++++-- .../tirpc_clnt_dg_create.c | 16 ++++++++++++++- .../tirpc_clnt_vc_create.c | 18 +++++++++++++++- .../tirpc_svc_dg_create.c | 16 ++++++++++++++- .../tirpc_svc_vc_create.c | 21 +++++++++++++++++++- 5 files changed, 81 insertions(+), 8 deletions(-) diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_call/tirpc_bottomlevel_clnt_call.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_call/tirpc_bottomlevel_clnt_call.c index 2498965..28d14ff 100644 --- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_call/tirpc_bottomlevel_clnt_call.c +++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_call/tirpc_bottomlevel_clnt_call.c @@ -32,6 +32,8 @@ #include <netinet/in.h> #include <tirpc/rpc/svc.h> #include <errno.h> +#include <unistd.h> +#include "librpc-tirpc.h" #define PROCNUM 1 #define VERSNUM 1 @@ -54,9 +56,10 @@ int main(int argn, char *argc[]) int var_snd = 10; int var_rec = -1; struct timeval tv; + int sock; - tv.tv_sec = 0; - tv.tv_usec = 100; + tv.tv_sec = 1; + tv.tv_usec = 0; nconf = getnetconfigent("udp"); if (nconf == (struct netconfig *)NULL) { @@ -75,12 +78,19 @@ int main(int argn, char *argc[]) exit(1); } - client = clnt_dg_create(RPC_ANYFD, &svcaddr, + sock = bound_socket(AF_INET, SOCK_DGRAM); + if (sock < 0) { + perror("bound_socket() failed"); + exit(1); + } + + client = clnt_dg_create(sock, &svcaddr, progNum, VERSNUM, 1024, 1024); if (client == NULL) { clnt_pcreateerror("ERR"); printf("5\n"); + close(sock); exit(1); } @@ -94,5 +104,7 @@ int main(int argn, char *argc[]) clnt_destroy(client); + close(sock); + return test_status; } diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_dg_create/tirpc_clnt_dg_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_dg_create/tirpc_clnt_dg_create.c index 88a86f8..b38bc9e 100644 --- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_dg_create/tirpc_clnt_dg_create.c +++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_dg_create/tirpc_clnt_dg_create.c @@ -32,6 +32,8 @@ #include <netinet/in.h> #include <tirpc/rpc/svc.h> #include <errno.h> +#include <unistd.h> +#include "librpc-tirpc.h" #define PROCNUM 1 #define VERSNUM 1 @@ -50,6 +52,7 @@ int main(int argn, char *argc[]) struct netconfig *nconf = NULL; struct netbuf svcaddr; char addrbuf[ADDRBUFSIZE]; + int sock; nconf = getnetconfigent("udp"); if (nconf == (struct netconfig *)NULL) { @@ -68,10 +71,21 @@ int main(int argn, char *argc[]) exit(1); } - client = clnt_dg_create(RPC_ANYFD, &svcaddr, + sock = bound_socket(AF_INET, SOCK_DGRAM); + if (sock < 0) { + perror("bound_socket() failed"); + exit(1); + } + + client = clnt_dg_create(sock, &svcaddr, progNum, VERSNUM, 1024, 1024); test_status = ((CLIENT *) client != NULL) ? 0 : 1; + if (client != NULL) + clnt_destroy(client); + + close(sock); + printf("%d\n", test_status); return test_status; diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_vc_create/tirpc_clnt_vc_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_vc_create/tirpc_clnt_vc_create.c index e547f1f..acbb55f 100644 --- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_vc_create/tirpc_clnt_vc_create.c +++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_clnt_vc_create/tirpc_clnt_vc_create.c @@ -32,6 +32,8 @@ #include <netinet/in.h> #include <tirpc/rpc/svc.h> #include <errno.h> +#include <unistd.h> +#include "librpc-tirpc.h" //Standard define #define PROCNUM 1 @@ -53,8 +55,9 @@ int main(int argn, char *argc[]) struct netconfig *nconf = NULL; struct netbuf svcaddr; char addrbuf[ADDRBUFSIZE]; + int sock; - nconf = getnetconfigent("udp"); + nconf = getnetconfigent("tcp"); if (nconf == (struct netconfig *)NULL) { printf("err nconf\n"); exit(1); @@ -69,10 +72,21 @@ int main(int argn, char *argc[]) exit(1); } - client = clnt_vc_create(RPC_ANYFD, &svcaddr, + sock = bound_socket(AF_INET, SOCK_DGRAM); + if (sock < 0) { + perror("bound_socket() failed"); + exit(1); + } + + client = clnt_vc_create(sock, &svcaddr, progNum, VERSNUM, 1024, 1024); test_status = ((CLIENT *) client != NULL) ? 0 : 1; + if (client != NULL) + clnt_destroy(client); + + close(sock); + printf("%d\n", test_status); return test_status; diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_dg_create/tirpc_svc_dg_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_dg_create/tirpc_svc_dg_create.c index 8f1953e..b93e4d6 100644 --- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_dg_create/tirpc_svc_dg_create.c +++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_dg_create/tirpc_svc_dg_create.c @@ -32,6 +32,8 @@ #include <netinet/in.h> #include <tirpc/rpc/svc.h> #include <errno.h> +#include <unistd.h> +#include "librpc-tirpc.h" #define PROCNUM 1 #define VERSNUM 1 @@ -40,10 +42,22 @@ int main(int argn, char *argc[]) { int test_status = 1; SVCXPRT *transp = NULL; + int sock; - transp = svc_dg_create(RPC_ANYFD, 0, 0); + sock = bound_socket(AF_INET, SOCK_DGRAM); + if (sock < 0) { + perror("bound_socket() failed"); + return 1; + } + + transp = svc_dg_create(sock, 0, 0); test_status = ((SVCXPRT *) transp != NULL) ? 0 : 1; + if (transp != NULL) + svc_destroy(transp); + + close(sock); + printf("%d\n", test_status); return test_status; diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_vc_create/tirpc_svc_vc_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_vc_create/tirpc_svc_vc_create.c index 4245586..491ac82 100644 --- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_vc_create/tirpc_svc_vc_create.c +++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/tirpc_bottomlevel_svc_vc_create/tirpc_svc_vc_create.c @@ -32,6 +32,8 @@ #include <netinet/in.h> #include <tirpc/rpc/svc.h> #include <errno.h> +#include <unistd.h> +#include "librpc-tirpc.h" #define PROCNUM 1 #define VERSNUM 1 @@ -40,10 +42,27 @@ int main(int argn, char *argc[]) { int test_status = 1; SVCXPRT *transp = NULL; + int sock; - transp = svc_vc_create(RPC_ANYFD, 0, 0); + sock = bound_socket(AF_INET, SOCK_STREAM); + if (sock < 0) { + perror("bound_socket() failed"); + return 1; + } + + if (listen(sock, 10) < 0) { + perror("listen() failed"); + return 1; + } + + transp = svc_vc_create(sock, 0, 0); test_status = ((SVCXPRT *) transp != NULL) ? 0 : 1; + if (transp != NULL) + svc_destroy(transp); + + close(sock); + printf("%d\n", test_status); return test_status; -- 1.7.1 ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
