Add socknode_add() [#367]

This commit is contained in:
Sukchan Lee 2020-02-28 20:26:32 +09:00
parent bf751dcee7
commit 1e56141d1e
4 changed files with 48 additions and 119 deletions

View File

@ -65,23 +65,18 @@ void ogs_socknode_free(ogs_socknode_t *node)
ogs_socknode_t *ogs_socknode_add(
ogs_list_t *list, int family, ogs_sockaddr_t *addr)
{
int rv;
ogs_socknode_t *node = NULL;
ogs_sockaddr_t *dup = NULL;
ogs_assert(list);
ogs_assert(addr);
if (family != AF_UNSPEC) {
rv = ogs_filteraddrinfo(&addr, family);
ogs_assert(rv == OGS_OK);
}
if (addr) {
node = ogs_calloc(1, sizeof(ogs_socknode_t));
ogs_assert(node);
node->addr = addr;
ogs_copyaddrinfo(&dup, addr);
if (family != AF_UNSPEC)
ogs_filteraddrinfo(&dup, family);
if (dup) {
node = ogs_socknode_new(dup);
ogs_list_add(list, node);
}

View File

@ -522,22 +522,12 @@ int mme_context_parse_config()
}
if (addr) {
if (ogs_config()->parameter.no_ipv4 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
if (ogs_config()->parameter.no_ipv4 == 0)
ogs_socknode_add(
&self.s1ap_list, AF_INET, dup);
}
if (ogs_config()->parameter.no_ipv6 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
&self.s1ap_list, AF_INET, addr);
if (ogs_config()->parameter.no_ipv6 == 0)
ogs_socknode_add(
&self.s1ap_list6, AF_INET6, dup);
}
&self.s1ap_list6, AF_INET6, addr);
ogs_freeaddrinfo(addr);
}
@ -645,22 +635,12 @@ int mme_context_parse_config()
}
if (addr) {
if (ogs_config()->parameter.no_ipv4 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
if (ogs_config()->parameter.no_ipv4 == 0)
ogs_socknode_add(
&self.gtpc_list, AF_INET, dup);
}
if (ogs_config()->parameter.no_ipv6 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
&self.gtpc_list, AF_INET, addr);
if (ogs_config()->parameter.no_ipv6 == 0)
ogs_socknode_add(
&self.gtpc_list6, AF_INET6, dup);
}
&self.gtpc_list6, AF_INET6, addr);
ogs_freeaddrinfo(addr);
}

View File

@ -406,22 +406,12 @@ int pgw_context_parse_config(void)
}
if (addr) {
if (ogs_config()->parameter.no_ipv4 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
if (ogs_config()->parameter.no_ipv4 == 0)
ogs_socknode_add(
&self.gtpc_list, AF_INET, dup);
}
if (ogs_config()->parameter.no_ipv6 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
&self.gtpc_list, AF_INET, addr);
if (ogs_config()->parameter.no_ipv6 == 0)
ogs_socknode_add(
&self.gtpc_list6, AF_INET6, dup);
}
&self.gtpc_list6, AF_INET6, addr);
ogs_freeaddrinfo(addr);
}
@ -528,22 +518,12 @@ int pgw_context_parse_config(void)
}
if (addr) {
if (ogs_config()->parameter.no_ipv4 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
if (ogs_config()->parameter.no_ipv4 == 0)
ogs_socknode_add(
&self.gtpu_list, AF_INET, dup);
}
if (ogs_config()->parameter.no_ipv6 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
&self.gtpu_list, AF_INET, addr);
if (ogs_config()->parameter.no_ipv6 == 0)
ogs_socknode_add(
&self.gtpu_list6, AF_INET6, dup);
}
&self.gtpu_list6, AF_INET6, addr);
ogs_freeaddrinfo(addr);
}

View File

@ -184,7 +184,8 @@ int sgw_context_parse_config(void)
if (v) family = atoi(v);
if (family != AF_UNSPEC &&
family != AF_INET && family != AF_INET6) {
ogs_warn("Ignore family(%d) : AF_UNSPEC(%d), "
ogs_warn("Ignore family(%d) : "
"AF_UNSPEC(%d), "
"AF_INET(%d), AF_INET6(%d) ",
family, AF_UNSPEC, AF_INET, AF_INET6);
family = AF_UNSPEC;
@ -230,22 +231,12 @@ int sgw_context_parse_config(void)
}
if (addr) {
if (ogs_config()->parameter.no_ipv4 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
if (ogs_config()->parameter.no_ipv4 == 0)
ogs_socknode_add(
&self.gtpc_list, AF_INET, dup);
}
if (ogs_config()->parameter.no_ipv6 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
&self.gtpc_list, AF_INET, addr);
if (ogs_config()->parameter.no_ipv6 == 0)
ogs_socknode_add(
&self.gtpc_list6, AF_INET6, dup);
}
&self.gtpc_list6, AF_INET6, addr);
ogs_freeaddrinfo(addr);
}
@ -373,27 +364,6 @@ int sgw_context_parse_config(void)
ogs_warn("unknown key `%s`", gtpu_key);
}
adv_addr = NULL;
for (i = 0; i < adv_num; i++) {
rv = ogs_addaddrinfo(&adv_addr,
family, adv_hostname[i], port, 0);
ogs_assert(rv == OGS_OK);
}
if (adv_addr) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, adv_addr);
ogs_assert(rv == OGS_OK);
if (ogs_config()->parameter.no_ipv4 == 0) {
ogs_socknode_add(
&self.adv_gtpu_list, AF_INET, dup);
}
if (ogs_config()->parameter.no_ipv6 == 0) {
ogs_socknode_add(
&self.adv_gtpu_list6, AF_INET6, dup);
}
}
addr = NULL;
for (i = 0; i < num; i++) {
rv = ogs_addaddrinfo(&addr,
@ -401,22 +371,12 @@ int sgw_context_parse_config(void)
ogs_assert(rv == OGS_OK);
}
if (addr) {
if (ogs_config()->parameter.no_ipv4 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
if (ogs_config()->parameter.no_ipv4 == 0)
ogs_socknode_add(
&self.gtpu_list, AF_INET, dup);
}
if (ogs_config()->parameter.no_ipv6 == 0) {
ogs_sockaddr_t *dup = NULL;
rv = ogs_copyaddrinfo(&dup, addr);
ogs_assert(rv == OGS_OK);
&self.gtpu_list, AF_INET, addr);
if (ogs_config()->parameter.no_ipv6 == 0)
ogs_socknode_add(
&self.gtpu_list6, AF_INET6, dup);
}
&self.gtpu_list6, AF_INET6, addr);
ogs_freeaddrinfo(addr);
}
@ -430,8 +390,22 @@ int sgw_context_parse_config(void)
ogs_assert(rv == OGS_OK);
}
adv_addr = NULL;
for (i = 0; i < adv_num; i++) {
rv = ogs_addaddrinfo(&adv_addr,
family, adv_hostname[i], port, 0);
ogs_assert(rv == OGS_OK);
}
if (adv_addr) {
ogs_socknode_t *node = NULL;
if (ogs_config()->parameter.no_ipv4 == 0)
ogs_socknode_add(
&self.adv_gtpu_list, AF_INET, adv_addr);
if (ogs_config()->parameter.no_ipv6 == 0)
ogs_socknode_add(
&self.adv_gtpu_list6, AF_INET6, adv_addr);
ogs_list_for_each(&self.gtpu_list, node) {
ogs_socknode_t *adv_node =
ogs_list_first(&self.adv_gtpu_list);
@ -470,8 +444,8 @@ int sgw_context_parse_config(void)
NULL, self.gtpu_port);
ogs_assert(rv == OGS_OK);
}
}
else
} else
ogs_warn("unknown key `%s`", sgw_key);
}
}