c_sockaddr_t is created for supporting both IPv4 and IPv6 address.

This commit is contained in:
Sukchan Lee 2017-11-16 12:49:07 +00:00
parent a4d1bae083
commit 6db21f54c1
6 changed files with 184 additions and 118 deletions

View file

@ -97,8 +97,7 @@ static void *THREAD_FUNC test3_main(thread_id id, void *data)
abts_case *tc = data;
status_t rv;
sock_id sctp;
struct sockaddr_in dst_addr;
socklen_t addrlen;
c_sockaddr_t to;
char str[STRLEN];
ssize_t size;
int rc;
@ -106,14 +105,11 @@ static void *THREAD_FUNC test3_main(thread_id id, void *data)
rv = sctp_open(&sctp, AF_INET, SOCK_SEQPACKET, NULL, 0, NULL, 0, 0);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
memset(&dst_addr, 0, sizeof(dst_addr));
dst_addr.sin_port = htons(PORT);
dst_addr.sin_family = AF_INET;
rc = inet_pton(AF_INET, "127.0.0.1", &(dst_addr.sin_addr));
ABTS_INT_EQUAL(tc, 1, rc);
rv = sock_pton("127.0.0.1", PORT, &to);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
size = sctp_write(sctp, DATASTR, strlen(DATASTR),
(struct sockaddr *)&dst_addr, sizeof(struct sockaddr), PPID, 0);
&to, sock_len(&to), PPID, 0);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
rv = sock_delete(sctp);
@ -128,10 +124,10 @@ static void sctp_test3(abts_case *tc, void *data)
sock_id sctp;
status_t rv;
ssize_t size;
struct sockaddr_in src_addr;
socklen_t addrlen;
c_sockaddr_t from;
socklen_t fromlen;
char str[STRLEN];
char buf[INET6_ADDRSTRLEN];
char buf[CORE_ADDRSTRLEN];
c_uint32_t ppid;
rv = sctp_open(&sctp, AF_INET, SOCK_SEQPACKET,
@ -141,13 +137,11 @@ static void sctp_test3(abts_case *tc, void *data)
rv = thread_create(&test3_thread, NULL, test3_main, tc);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
addrlen = sizeof(src_addr);
size = sctp_read(sctp, str, STRLEN,
(struct sockaddr *)&src_addr, &addrlen, &ppid, NULL);
size = sctp_read(sctp, str, STRLEN, &from, &fromlen, &ppid, NULL);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
ABTS_INT_EQUAL(tc, sizeof(src_addr), addrlen);
ABTS_INT_EQUAL(tc, sizeof(struct sockaddr_in), fromlen);
ABTS_INT_EQUAL(tc, PPID, ppid);
ABTS_STR_EQUAL(tc, "127.0.0.1", SOCK_NTOP(&src_addr, buf));
ABTS_STR_EQUAL(tc, "127.0.0.1", SOCK_NTOP(&from, buf));
thread_join(&rv, test3_thread);
ABTS_INT_EQUAL(tc, strlen(DATASTR), rv);
@ -189,11 +183,11 @@ static void sctp_test4(abts_case *tc, void *data)
sock_id sctp;
status_t rv;
ssize_t size;
struct sockaddr_in6 src_addr;
socklen_t addrlen;
c_sockaddr_t from;
socklen_t fromlen;
char str[STRLEN];
c_uint32_t ppid;
char buf[INET6_ADDRSTRLEN];
char buf[CORE_ADDRSTRLEN];
rv = sctp_open(&sctp, AF_INET6, SOCK_SEQPACKET,
NULL, PORT, NULL, 0, SOCK_F_BIND);
@ -202,15 +196,13 @@ static void sctp_test4(abts_case *tc, void *data)
rv = thread_create(&test4_thread, NULL, test4_main, tc);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
addrlen = sizeof(src_addr);
size = sctp_read(sctp, str, STRLEN, (struct sockaddr *)&src_addr, &addrlen, &ppid, NULL);
size = sctp_read(sctp, str, STRLEN, &from, &fromlen, &ppid, NULL);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
ABTS_INT_EQUAL(tc, sizeof(src_addr), addrlen);
ABTS_STR_EQUAL(tc, "::1", SOCK_NTOP(&src_addr, buf));
ABTS_INT_EQUAL(tc, sizeof(struct sockaddr_in6), fromlen);
ABTS_STR_EQUAL(tc, "::1", SOCK_NTOP(&from, buf));
ABTS_INT_EQUAL(tc, PPID, ppid);
size = sctp_write(sctp, DATASTR, strlen(DATASTR),
(struct sockaddr *)&src_addr, addrlen, PPID, 0);
size = sctp_write(sctp, DATASTR, strlen(DATASTR), &from, fromlen, PPID, 0);
ABTS_INT_EQUAL(tc, strlen(DATASTR), size);
thread_join(&rv, test4_thread);