previous archi is failed in FreeBSD OS

re-architecture socket library
This commit is contained in:
Sukchan Lee 2017-11-18 12:55:44 +00:00
parent 113cbd0e9e
commit f186ec93dd
12 changed files with 893 additions and 638 deletions

View file

@ -1,6 +1,6 @@
#include "core_debug.h"
#include "core_thread.h"
#include "core_sctp.h"
#include "core_network.h"
#include "testutil.h"
@ -14,22 +14,19 @@ static void sctp_test1(abts_case *tc, void *data)
sock_id sctp;
status_t rv;
rv = sctp_open(&sctp, AF_UNSPEC, SOCK_SEQPACKET,
0, PORT, NULL, 0, SOCK_F_BIND);
rv = sctp_socket(&sctp, AF_INET6, SOCK_SEQPACKET);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = sock_delete(sctp);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = sctp_open(&sctp, AF_UNSPEC, SOCK_STREAM,
"127.0.0.1", PORT, NULL, 0, SOCK_F_BIND);
rv = sctp_server(&sctp, AF_UNSPEC, SOCK_STREAM, "127.0.0.1", PORT);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = sock_delete(sctp);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = sctp_open(&sctp, AF_UNSPEC, SOCK_SEQPACKET,
"::1", PORT, NULL, 0, SOCK_F_BIND);
rv = sctp_server(&sctp, AF_UNSPEC, SOCK_SEQPACKET, "::1", PORT);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = sock_delete(sctp);
@ -45,12 +42,12 @@ static void *THREAD_FUNC test2_main(thread_id id, void *data)
char str[STRLEN];
ssize_t size;
c_uint32_t ppid;
c_sockaddr_t sa;
rv = sctp_open(&sctp, AF_UNSPEC, SOCK_SEQPACKET,
NULL, 0, "::1", PORT, SOCK_F_CONNECT);
rv = sctp_client(&sctp, AF_UNSPEC, SOCK_SEQPACKET, "::1", PORT);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
size = sctp_read(sctp, str, STRLEN, NULL, NULL, &ppid, NULL);
size = core_sctp_recvmsg(sctp, str, STRLEN, &sa, &ppid, NULL);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
ABTS_INT_EQUAL(tc, PPID, ppid);
@ -63,22 +60,21 @@ static void *THREAD_FUNC test2_main(thread_id id, void *data)
static void sctp_test2(abts_case *tc, void *data)
{
sock_id sctp, sctp2;
status_t rv;
sock_id sctp, sctp2;
c_sockaddr_t sa;
ssize_t size;
rv = sctp_open(&sctp, AF_INET6, SOCK_STREAM,
NULL, PORT, NULL, 0, SOCK_F_BIND);
rv = sctp_server(&sctp, AF_INET6, SOCK_STREAM, NULL, PORT);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = thread_create(&test2_thread, NULL, test2_main, tc);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = sock_accept(&sctp2, sctp);
rv = sock_accept(&sctp2, &sa, sctp);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
size = sctp_write(sctp2, DATASTR, strlen(DATASTR),
NULL, 0, PPID, 0);
size = core_sctp_sendmsg(sctp2, DATASTR, strlen(DATASTR), NULL, PPID, 0);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
thread_join(&rv, test2_thread);
@ -97,21 +93,23 @@ static void *THREAD_FUNC test3_main(thread_id id, void *data)
abts_case *tc = data;
status_t rv;
sock_id sctp;
c_sockaddr_t to;
c_sockaddr_t *sa;
char str[STRLEN];
ssize_t size;
int rc;
rv = sctp_open(&sctp, AF_INET, SOCK_SEQPACKET, NULL, 0, NULL, 0, 0);
rv = sctp_socket(&sctp, AF_INET, SOCK_SEQPACKET);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = core_pton("127.0.0.1", PORT, &to);
rv = core_getaddrinfo(&sa, AF_UNSPEC, "127.0.0.1", PORT, 0);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
size = sctp_write(sctp, DATASTR, strlen(DATASTR),
&to, sockaddr_len(&to), PPID, 0);
size = core_sctp_sendmsg(sctp, DATASTR, strlen(DATASTR), sa, PPID, 0);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
rv = core_freeaddrinfo(sa);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = sock_delete(sctp);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
@ -124,24 +122,22 @@ static void sctp_test3(abts_case *tc, void *data)
sock_id sctp;
status_t rv;
ssize_t size;
c_sockaddr_t from;
socklen_t fromlen;
c_sockaddr_t sa;
char str[STRLEN];
char buf[CORE_ADDRSTRLEN];
c_uint32_t ppid;
rv = sctp_open(&sctp, AF_INET, SOCK_SEQPACKET,
NULL, PORT, NULL, 0, SOCK_F_BIND);
rv = sctp_server(&sctp, AF_INET, SOCK_SEQPACKET, NULL, PORT);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = thread_create(&test3_thread, NULL, test3_main, tc);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
size = sctp_read(sctp, str, STRLEN, &from, &fromlen, &ppid, NULL);
size = core_sctp_recvmsg(sctp, str, STRLEN, &sa, &ppid, NULL);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
ABTS_INT_EQUAL(tc, sizeof(struct sockaddr_in), fromlen);
ABTS_INT_EQUAL(tc, sizeof(struct sockaddr_in), sa.sa_len);
ABTS_INT_EQUAL(tc, PPID, ppid);
ABTS_STR_EQUAL(tc, "127.0.0.1", CORE_NTOP(&from, buf));
ABTS_STR_EQUAL(tc, "127.0.0.1", CORE_NTOP(&sa, buf));
thread_join(&rv, test3_thread);
ABTS_INT_EQUAL(tc, strlen(DATASTR), rv);
@ -160,14 +156,13 @@ static void *THREAD_FUNC test4_main(thread_id id, void *data)
ssize_t size;
c_uint32_t ppid;
rv = sctp_open(&sctp, AF_UNSPEC, SOCK_STREAM,
NULL, 0, "::1", PORT, SOCK_F_CONNECT);
rv = sctp_client(&sctp, AF_UNSPEC, SOCK_STREAM, "::1", PORT);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
size = sctp_write(sctp, DATASTR, strlen(DATASTR), NULL, 0, PPID, 0);
size = core_sctp_sendmsg(sctp, DATASTR, strlen(DATASTR), NULL, PPID, 0);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
size = sctp_read(sctp, str, STRLEN, NULL, NULL, &ppid, NULL);
size = core_sctp_recvmsg(sctp, str, STRLEN, NULL, &ppid, NULL);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
ABTS_INT_EQUAL(tc, PPID, ppid);
@ -183,26 +178,24 @@ static void sctp_test4(abts_case *tc, void *data)
sock_id sctp;
status_t rv;
ssize_t size;
c_sockaddr_t from;
socklen_t fromlen;
c_sockaddr_t sa;
char str[STRLEN];
c_uint32_t ppid;
char buf[CORE_ADDRSTRLEN];
rv = sctp_open(&sctp, AF_INET6, SOCK_SEQPACKET,
NULL, PORT, NULL, 0, SOCK_F_BIND);
rv = sctp_server(&sctp, AF_INET6, SOCK_SEQPACKET, NULL, PORT);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
rv = thread_create(&test4_thread, NULL, test4_main, tc);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
size = sctp_read(sctp, str, STRLEN, &from, &fromlen, &ppid, NULL);
size = core_sctp_recvmsg(sctp, str, STRLEN, &sa, &ppid, NULL);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
ABTS_INT_EQUAL(tc, sizeof(struct sockaddr_in6), fromlen);
ABTS_STR_EQUAL(tc, "::1", CORE_NTOP(&from, buf));
ABTS_INT_EQUAL(tc, sizeof(struct sockaddr_in6), sa.sa_len);
ABTS_STR_EQUAL(tc, "::1", CORE_NTOP(&sa, buf));
ABTS_INT_EQUAL(tc, PPID, ppid);
size = sctp_write(sctp, DATASTR, strlen(DATASTR), &from, fromlen, PPID, 0);
size = core_sctp_sendmsg(sctp, DATASTR, strlen(DATASTR), &sa, PPID, 0);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
thread_join(&rv, test4_thread);