From 4a2604b52c33e71003cbc824443f612c9ca3de0c Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Sat, 2 Dec 2017 10:50:24 +0900 Subject: [PATCH] name changes --- lib/core/include/core_network.h | 40 ++++----- lib/core/src/unix/socket.c | 142 +++++++++++++++++--------------- lib/core/test/testsock.c | 32 +++---- src/mme/mme_context.c | 22 ++--- src/mme/mme_context.h | 4 +- src/mme/mme_gtp_path.c | 4 +- 6 files changed, 124 insertions(+), 120 deletions(-) diff --git a/lib/core/include/core_network.h b/lib/core/include/core_network.h index b0101c9675..a27a178582 100644 --- a/lib/core/include/core_network.h +++ b/lib/core/include/core_network.h @@ -67,9 +67,9 @@ struct c_sockaddr_t { * - Should not add any atrribute in this area. * * e.g) - * struct sockaddr sa; + * struct sockaddr addr; * ... - * sockaddr_len((c_sockaddr_t *)&sa); + * sockaddr_len((c_sockaddr_t *)&addr); */ #define c_sa_family sa.sa_family #define c_sa_port sin.sin_port @@ -86,14 +86,12 @@ struct c_sockaddr_t { c_sockaddr_t *next; }; -typedef list_t c_socklist_t; - -typedef struct _c_socknode_t { +typedef struct _sock_node_t { lnode_t node; sock_id sock; c_sockaddr_t *sa_list; -} c_socknode_t; +} sock_node_t; /* * Init/Final @@ -110,8 +108,8 @@ CORE_DECLARE(status_t) sock_delete(sock_id id); CORE_DECLARE(status_t) sock_socket( sock_id *id, int family, int type, int protocol); CORE_DECLARE(status_t) sock_setsockopt(sock_id id, c_int32_t opt, c_int32_t on); -CORE_DECLARE(status_t) sock_bind(sock_id id, c_sockaddr_t *sa); -CORE_DECLARE(status_t) sock_connect(sock_id id, c_sockaddr_t *sa); +CORE_DECLARE(status_t) sock_bind(sock_id id, c_sockaddr_t *addr); +CORE_DECLARE(status_t) sock_connect(sock_id id, c_sockaddr_t *addr); CORE_DECLARE(status_t) sock_listen(sock_id id); CORE_DECLARE(status_t) sock_accept(sock_id *new, sock_id id); @@ -123,31 +121,29 @@ CORE_DECLARE(c_sockaddr_t *) sock_remote_addr(sock_id id); /* * Socket Address */ -CORE_DECLARE(c_socknode_t *) socknode_add(c_socklist_t *list, +CORE_DECLARE(sock_node_t *) sock_add_node(list_t *list, int family, const char *hostname, c_uint16_t port, int flags); -CORE_DECLARE(status_t) socknode_remove(c_socklist_t *list, c_socknode_t *node); -CORE_DECLARE(status_t) socknode_remove_all(c_socklist_t *list); +CORE_DECLARE(status_t) sock_remove_node(list_t *list, sock_node_t *node); +CORE_DECLARE(status_t) sock_remove_all_nodes(list_t *list); -CORE_DECLARE(status_t) socknode_getifaddrs_to_list( - c_socklist_t *list, c_uint16_t port); -CORE_DECLARE(status_t) socknode_filter_family(c_socklist_t *list, int family); +CORE_DECLARE(status_t) sock_get_all_nodes(list_t *list, c_uint16_t port); +CORE_DECLARE(status_t) sock_filter_node(list_t *list, int family); -CORE_DECLARE(socklen_t) sockaddr_len(const void *sa); -CORE_DECLARE(int) sockaddr_is_equal(void *p, void *q); - -CORE_DECLARE(status_t) core_getifaddrs(c_sockaddr_t **sa); -CORE_DECLARE(status_t) core_getaddrinfo(c_sockaddr_t **sa, +CORE_DECLARE(status_t) core_getaddrinfo(c_sockaddr_t **sa_list, int family, const char *hostname, c_uint16_t port, int flags); -CORE_DECLARE(status_t) core_freeaddrinfo(c_sockaddr_t *sa); +CORE_DECLARE(status_t) core_freeaddrinfo(c_sockaddr_t *sa_list); +CORE_DECLARE(status_t) core_filteraddrinfo(c_sockaddr_t **sa_list, int family); #define CORE_ADDRSTRLEN INET6_ADDRSTRLEN #define CORE_ADDR(__aDDR, __bUF) \ core_inet_ntop(__aDDR, buf, CORE_ADDRSTRLEN) #define CORE_PORT(__aDDR) \ ntohs((__aDDR)->c_sa_port) -CORE_DECLARE(const char *)core_inet_ntop(void *sa, char *buf, int buflen); -CORE_DECLARE(status_t) core_inet_pton(int family, const char *src, void *sa); +CORE_DECLARE(const char *)core_inet_ntop(void *addr, char *buf, int buflen); +CORE_DECLARE(status_t) core_inet_pton(int family, const char *src, void *addr); +CORE_DECLARE(socklen_t) sockaddr_len(const void *addr); +CORE_DECLARE(int) sockaddr_is_equal(void *p, void *q); /* * UDP Socket diff --git a/lib/core/src/unix/socket.c b/lib/core/src/unix/socket.c index 2b32b6cd7c..b5f18aa099 100644 --- a/lib/core/src/unix/socket.c +++ b/lib/core/src/unix/socket.c @@ -14,7 +14,7 @@ static list_t fd_list; static fd_set read_fds; pool_declare(sock_pool, sock_t, MAX_SOCK_POOL_SIZE); -pool_declare(socknode_pool, c_socknode_t, MAX_SOCKNODE_POOL_SIZE); +pool_declare(sock_node_pool, sock_node_t, MAX_SOCKNODE_POOL_SIZE); static status_t sononblock(int sd); static status_t soblock(int sd); @@ -27,7 +27,7 @@ static void fd_dispatch(fd_set *fds); status_t network_init(void) { pool_init(&sock_pool, MAX_SOCK_POOL_SIZE); - pool_init(&socknode_pool, MAX_SOCKNODE_POOL_SIZE); + pool_init(&sock_node_pool, MAX_SOCKNODE_POOL_SIZE); max_fd = 0; list_init(&fd_list); @@ -44,15 +44,15 @@ status_t network_final(void) d_trace(3, "%d not freed in sock_pool[%d]\n", pool_size(&sock_pool) - pool_avail(&sock_pool), pool_size(&sock_pool)); - if (pool_size(&socknode_pool) != pool_avail(&socknode_pool)) - d_error("%d not freed in socknode_pool[%d]", - pool_size(&socknode_pool) - pool_avail(&socknode_pool), - pool_size(&socknode_pool)); - d_trace(3, "%d not freed in socknode_pool[%d]\n", - pool_size(&socknode_pool) - pool_avail(&socknode_pool), - pool_size(&socknode_pool)); + if (pool_size(&sock_node_pool) != pool_avail(&sock_node_pool)) + d_error("%d not freed in sock_node_pool[%d]", + pool_size(&sock_node_pool) - pool_avail(&sock_node_pool), + pool_size(&sock_node_pool)); + d_trace(3, "%d not freed in sock_node_pool[%d]\n", + pool_size(&sock_node_pool) - pool_avail(&sock_node_pool), + pool_size(&sock_node_pool)); pool_final(&sock_pool); - pool_final(&socknode_pool); + pool_final(&sock_node_pool); return CORE_OK; } @@ -163,54 +163,54 @@ status_t sock_setsockopt(sock_id id, c_int32_t opt, c_int32_t on) return CORE_OK; } -status_t sock_bind(sock_id id, c_sockaddr_t *sa) +status_t sock_bind(sock_id id, c_sockaddr_t *addr) { sock_t *sock = (sock_t *)id; char buf[CORE_ADDRSTRLEN]; socklen_t addrlen; d_assert(sock, return CORE_ERROR,); - d_assert(sa, return CORE_ERROR,); + d_assert(addr, return CORE_ERROR,); - addrlen = sockaddr_len(sa); + addrlen = sockaddr_len(addr); d_assert(addrlen, return CORE_ERROR,); - if (bind(sock->fd, &sa->sa, addrlen) != 0) + if (bind(sock->fd, &addr->sa, addrlen) != 0) { d_error("socket bind(%s:%d) failed(%d:%s)", - CORE_ADDR(sa, buf), CORE_PORT(sa), errno, strerror(errno)); + CORE_ADDR(addr, buf), CORE_PORT(addr), errno, strerror(errno)); return CORE_ERROR; } - memcpy(&sock->local_addr, sa, sizeof(sock->local_addr)); + memcpy(&sock->local_addr, addr, sizeof(sock->local_addr)); - d_trace(1, "socket bind %s:%d\n", CORE_ADDR(sa, buf), CORE_PORT(sa)); + d_trace(1, "socket bind %s:%d\n", CORE_ADDR(addr, buf), CORE_PORT(addr)); return CORE_OK; } -status_t sock_connect(sock_id id, c_sockaddr_t *sa) +status_t sock_connect(sock_id id, c_sockaddr_t *addr) { sock_t *sock = (sock_t *)id; char buf[CORE_ADDRSTRLEN]; socklen_t addrlen; d_assert(sock, return CORE_ERROR,); - d_assert(sa, return CORE_ERROR,); + d_assert(addr, return CORE_ERROR,); - addrlen = sockaddr_len(sa); + addrlen = sockaddr_len(addr); d_assert(addrlen, return CORE_ERROR,); - if (connect(sock->fd, &sa->sa, addrlen) != 0) + if (connect(sock->fd, &addr->sa, addrlen) != 0) { d_error("socket connect(%s:%d) failed(%d:%s)", - CORE_ADDR(sa, buf), CORE_PORT(sa), errno, strerror(errno)); + CORE_ADDR(addr, buf), CORE_PORT(addr), errno, strerror(errno)); return CORE_ERROR; } - memcpy(&sock->remote_addr, sa, sizeof(sock->remote_addr)); + memcpy(&sock->remote_addr, addr, sizeof(sock->remote_addr)); - d_trace(1, "socket connect %s:%d\n", CORE_ADDR(sa, buf), CORE_PORT(sa)); + d_trace(1, "socket connect %s:%d\n", CORE_ADDR(addr, buf), CORE_PORT(addr)); return CORE_OK; } @@ -237,15 +237,15 @@ status_t sock_accept(sock_id *new, sock_id id) sock_t *new_sock = NULL; int new_fd = -1; - c_sockaddr_t sa; + c_sockaddr_t addr; socklen_t addrlen; - memset(&sa, 0, sizeof(sa)); - addrlen = sizeof(sa.ss); + memset(&addr, 0, sizeof(addr)); + addrlen = sizeof(addr.ss); d_assert(id, return CORE_ERROR,); - new_fd = accept(sock->fd, &sa.sa, &addrlen); + new_fd = accept(sock->fd, &addr.sa, &addrlen); if (new_fd < 0) { d_error("accept failed(%d:%s)", errno, strerror(errno)); @@ -259,7 +259,7 @@ status_t sock_accept(sock_id *new, sock_id id) new_sock->family = sock->family; new_sock->fd = new_fd; - memcpy(&new_sock->remote_addr, &sa, sizeof(new_sock->remote_addr)); + memcpy(&new_sock->remote_addr, &addr, sizeof(new_sock->remote_addr)); *new = (sock_id)new_sock; @@ -291,17 +291,16 @@ c_sockaddr_t *sock_remote_addr(sock_id id) /* * Socket Address */ -static c_socknode_t *socknode_add_internal( - c_socklist_t *list, c_sockaddr_t *sa_list) +static sock_node_t *sock_add_node_internal(list_t *list, c_sockaddr_t *sa_list) { - c_socknode_t *node = NULL; + sock_node_t *node = NULL; d_assert(list, return NULL,); d_assert(sa_list, return NULL,); - pool_alloc_node(&socknode_pool, &node); + pool_alloc_node(&sock_node_pool, &node); d_assert(node, return NULL,); - memset(node, 0, sizeof(c_socknode_t)); + memset(node, 0, sizeof(sock_node_t)); node->sa_list = sa_list; @@ -310,7 +309,7 @@ static c_socknode_t *socknode_add_internal( return node; } -c_socknode_t *socknode_add(c_socklist_t *list, +sock_node_t *sock_add_node(list_t *list, int family, const char *hostname, c_uint16_t port, int flags) { status_t rv; @@ -324,31 +323,31 @@ c_socknode_t *socknode_add(c_socklist_t *list, return NULL; } - return socknode_add_internal(list, sa_list); + return sock_add_node_internal(list, sa_list); } -status_t socknode_remove(c_socklist_t *list, c_socknode_t *node) +status_t sock_remove_node(list_t *list, sock_node_t *node) { d_assert(node, return CORE_ERROR,); list_remove(list, node); core_freeaddrinfo(node->sa_list); - pool_free_node(&socknode_pool, node); + pool_free_node(&sock_node_pool, node); return CORE_OK; } -status_t socknode_remove_all(c_socklist_t *list) +status_t sock_remove_all_nodes(list_t *list) { - c_socknode_t *node = NULL, *next_node = NULL; + sock_node_t *node = NULL, *next_node = NULL; node = list_first(list); while(node) { next_node = list_next(node); - socknode_remove(list, node); + sock_remove_node(list, node); node = next_node; } @@ -356,7 +355,7 @@ status_t socknode_remove_all(c_socklist_t *list) return CORE_OK; } -status_t socknode_getifaddrs_to_list(c_socklist_t *list, c_uint16_t port) +status_t sock_get_all_nodes(list_t *list, c_uint16_t port) { struct ifaddrs *iflist, *cur; int rc; @@ -409,7 +408,7 @@ status_t socknode_getifaddrs_to_list(c_socklist_t *list, c_uint16_t port) memcpy(&addr->sa, cur->ifa_addr, sockaddr_len(cur->ifa_addr)); addr->c_sa_port = htons(port); - d_assert(socknode_add_internal(list, addr), return CORE_ERROR,); + d_assert(sock_add_node_internal(list, addr), return CORE_ERROR,); } freeifaddrs(iflist); @@ -417,39 +416,21 @@ status_t socknode_getifaddrs_to_list(c_socklist_t *list, c_uint16_t port) return CORE_OK; } -status_t socknode_filter_family(c_socklist_t *list, int family) +status_t sock_filter_node(list_t *list, int family) { - c_socknode_t *node = NULL, *next_node = NULL; + sock_node_t *node = NULL, *next_node = NULL; d_assert(list, return CORE_ERROR,); + node = list_first(list); while(node) { - c_sockaddr_t *addr = NULL, *prev_addr = NULL, *next_addr = NULL; - next_node = list_next(node); - prev_addr = NULL; - addr = node->sa_list; - while(addr) - { - next_addr = addr->next; - - if (addr->c_sa_family != family) - { - if (prev_addr) - prev_addr->next = addr->next; - else - node->sa_list = addr->next; - core_free(addr); - } - - prev_addr = addr; - addr = next_addr; - } + core_filteraddrinfo(&node->sa_list, family); if (node->sa_list == NULL) - socknode_remove(list, node); + sock_remove_node(list, node); node = next_node; } @@ -457,7 +438,6 @@ status_t socknode_filter_family(c_socklist_t *list, int family) return CORE_OK; } - status_t core_getaddrinfo(c_sockaddr_t **sa, int family, const char *hostname, c_uint16_t port, int flags) { @@ -533,6 +513,34 @@ status_t core_freeaddrinfo(c_sockaddr_t *sa) return CORE_OK; } +status_t core_filteraddrinfo(c_sockaddr_t **sa_list, int family) +{ + c_sockaddr_t *addr = NULL, *prev_addr = NULL, *next_addr = NULL; + + d_assert(sa_list, return CORE_ERROR,); + + prev_addr = NULL; + addr = *sa_list; + while(addr) + { + next_addr = addr->next; + + if (addr->c_sa_family != family) + { + if (prev_addr) + prev_addr->next = addr->next; + else + *sa_list = addr->next; + core_free(addr); + } + + prev_addr = addr; + addr = next_addr; + } + + return CORE_OK; +} + const char *core_inet_ntop(void *sa, char *buf, int buflen) { int family; diff --git a/lib/core/test/testsock.c b/lib/core/test/testsock.c index 19dd7ac117..e9c59b1064 100644 --- a/lib/core/test/testsock.c +++ b/lib/core/test/testsock.c @@ -335,51 +335,51 @@ static void sock_test6(abts_case *tc, void *data) static void sock_test7(abts_case *tc, void *data) { status_t rv; - c_socknode_t *node; + sock_node_t *node; c_sockaddr_t *addr; - c_socklist_t list; + list_t list; char buf[CORE_ADDRSTRLEN]; list_init(&list); - node = socknode_add(&list, AF_INET6, NULL, PORT, 0); + node = sock_add_node(&list, AF_INET6, NULL, PORT, 0); ABTS_PTR_NOTNULL(tc, node); - rv = socknode_filter_family(&list, AF_INET6); + rv = sock_filter_node(&list, AF_INET6); ABTS_INT_EQUAL(tc, CORE_OK, rv); node = list_first(&list); ABTS_PTR_NOTNULL(tc, node); - rv = socknode_filter_family(&list, AF_INET); + rv = sock_filter_node(&list, AF_INET); ABTS_INT_EQUAL(tc, CORE_OK, rv); node = list_first(&list); ABTS_PTR_NULL(tc, node); - node = socknode_add(&list, AF_INET, NULL, PORT, AI_PASSIVE); + node = sock_add_node(&list, AF_INET, NULL, PORT, AI_PASSIVE); ABTS_PTR_NOTNULL(tc, node); - rv = socknode_filter_family(&list, AF_INET); + rv = sock_filter_node(&list, AF_INET); ABTS_INT_EQUAL(tc, CORE_OK, rv); node = list_first(&list); ABTS_PTR_NOTNULL(tc, node); - rv = socknode_filter_family(&list, AF_INET6); + rv = sock_filter_node(&list, AF_INET6); ABTS_INT_EQUAL(tc, CORE_OK, rv); node = list_first(&list); ABTS_PTR_NULL(tc, node); - node = socknode_add(&list, AF_UNSPEC, NULL, PORT, 0); + node = sock_add_node(&list, AF_UNSPEC, NULL, PORT, 0); ABTS_PTR_NOTNULL(tc, node); - rv = socknode_filter_family(&list, AF_INET6); + rv = sock_filter_node(&list, AF_INET6); ABTS_INT_EQUAL(tc, CORE_OK, rv); node = list_first(&list); ABTS_PTR_NOTNULL(tc, node); - rv = socknode_filter_family(&list, AF_INET); + rv = sock_filter_node(&list, AF_INET); ABTS_INT_EQUAL(tc, CORE_OK, rv); node = list_first(&list); ABTS_PTR_NULL(tc, node); - node = socknode_add(&list, AF_INET6, NULL, PORT, 0); + node = sock_add_node(&list, AF_INET6, NULL, PORT, 0); ABTS_PTR_NOTNULL(tc, node); - node = socknode_add(&list, AF_INET, NULL, PORT, AI_PASSIVE); + node = sock_add_node(&list, AF_INET, NULL, PORT, AI_PASSIVE); ABTS_PTR_NOTNULL(tc, node); - node = socknode_add(&list, AF_UNSPEC, NULL, PORT, AI_PASSIVE); + node = sock_add_node(&list, AF_UNSPEC, NULL, PORT, AI_PASSIVE); ABTS_PTR_NOTNULL(tc, node); node = list_first(&list); @@ -402,10 +402,10 @@ static void sock_test7(abts_case *tc, void *data) ABTS_PTR_NOTNULL(tc, addr); ABTS_INT_EQUAL(tc, PORT, CORE_PORT(addr)); - rv = socknode_getifaddrs_to_list(&list, PORT); + rv = sock_get_all_nodes(&list, PORT); ABTS_INT_EQUAL(tc, CORE_OK, rv); - socknode_remove_all(&list); + sock_remove_all_nodes(&list); } abts_suite *testsock(abts_suite *suite) diff --git a/src/mme/mme_context.c b/src/mme/mme_context.c index df73bcc914..426e505d92 100644 --- a/src/mme/mme_context.c +++ b/src/mme/mme_context.c @@ -109,8 +109,8 @@ status_t mme_context_final() index_final(&mme_enb_pool); pool_final(&mme_sgw_pool); - socknode_remove_all(&self.gtpc4_list); - socknode_remove_all(&self.gtpc6_list); + sock_remove_all_nodes(&self.gtpc4_list); + sock_remove_all_nodes(&self.gtpc6_list); pool_final(&mme_s1ap_pool); @@ -338,7 +338,7 @@ status_t mme_context_parse_config() yaml_iter_recurse(&mme_iter, >pc_array); do { - c_socknode_t *node = NULL; + sock_node_t *node = NULL; int family = AF_UNSPEC; const char *hostname = NULL; c_uint16_t port = GTPV2_C_UDP_PORT; @@ -400,20 +400,20 @@ status_t mme_context_parse_config() if (context_self()->parameter.no_ipv4 == 0) { - node = socknode_add(&self.gtpc4_list, + node = sock_add_node(&self.gtpc4_list, family, hostname, port, AI_PASSIVE); d_assert(node, return CORE_ERROR,); - rv = socknode_filter_family( + rv = sock_filter_node( &self.gtpc4_list, AF_INET); d_assert(rv == CORE_OK, return CORE_ERROR,); } if (context_self()->parameter.no_ipv6 == 0) { - node = socknode_add(&self.gtpc6_list, + node = sock_add_node(&self.gtpc6_list, family, hostname, port, AI_PASSIVE); d_assert(node, return CORE_ERROR,); - rv = socknode_filter_family( + rv = sock_filter_node( &self.gtpc6_list, AF_INET6); d_assert(rv == CORE_OK, return CORE_ERROR,); } @@ -424,20 +424,20 @@ status_t mme_context_parse_config() { if (context_self()->parameter.no_ipv4 == 0) { - rv = socknode_getifaddrs_to_list( + rv = sock_get_all_nodes( &self.gtpc4_list, self.gtpc_port); d_assert(rv == CORE_OK, return CORE_ERROR,); - rv = socknode_filter_family( + rv = sock_filter_node( &self.gtpc4_list, AF_INET); d_assert(rv == CORE_OK, return CORE_ERROR,); } if (context_self()->parameter.no_ipv6 == 0) { - rv = socknode_getifaddrs_to_list( + rv = sock_get_all_nodes( &self.gtpc6_list, self.gtpc_port); d_assert(rv == CORE_OK, return CORE_ERROR,); - rv = socknode_filter_family(&self.gtpc6_list, + rv = sock_filter_node(&self.gtpc6_list, AF_INET6); d_assert(rv == CORE_OK, return CORE_ERROR,); } diff --git a/src/mme/mme_context.h b/src/mme/mme_context.h index 9ed4348a08..b451e6a461 100644 --- a/src/mme/mme_context.h +++ b/src/mme/mme_context.h @@ -61,9 +61,9 @@ typedef struct _mme_context_t { c_uint16_t gtpc_port; /* Default GTPC Port */ - c_socklist_t gtpc4_list; /* MME GTPC IPv4 Server List */ + list_t gtpc4_list; /* MME GTPC IPv4 Server List */ c_sockaddr_t *gtpc4_addr; /* MME GTPC IPv4 Address */ - c_socklist_t gtpc6_list; /* MME GTPC IPv6 Server List */ + list_t gtpc6_list; /* MME GTPC IPv6 Server List */ c_sockaddr_t *gtpc6_addr; /* MME GTPC IPv6 Address */ c_uint32_t s5c_addr; /* PGW S5C remote address */ diff --git a/src/mme/mme_gtp_path.c b/src/mme/mme_gtp_path.c index cc6a47c813..1086cc2117 100644 --- a/src/mme/mme_gtp_path.c +++ b/src/mme/mme_gtp_path.c @@ -46,7 +46,7 @@ status_t mme_gtp_open() { status_t rv; mme_sgw_t *sgw = mme_sgw_first(); - c_socknode_t *node; + sock_node_t *node; sock_id temp; /* FIXME ADDR */ for (node = list_first(&mme_self()->gtpc4_list); @@ -107,7 +107,7 @@ status_t mme_gtp_open() status_t mme_gtp_close() { - c_socknode_t *node; + sock_node_t *node; for (node = list_first(&mme_self()->gtpc4_list); node; node = list_next(node))