GTP interface changes
This commit is contained in:
parent
70b2e51f79
commit
24da20bdc8
|
@ -36,45 +36,17 @@ int gtp_node_final(void)
|
|||
return OGS_OK;
|
||||
}
|
||||
|
||||
gtp_node_t *gtp_node_new(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4)
|
||||
gtp_node_t *gtp_node_new(ogs_sockaddr_t *addr)
|
||||
{
|
||||
int rv;
|
||||
gtp_node_t *node = NULL;
|
||||
ogs_sockaddr_t *preferred_list = NULL;
|
||||
|
||||
ogs_assert(all_list);
|
||||
|
||||
rv = ogs_copyaddrinfo(&preferred_list, all_list);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
if (no_ipv4 == 1)
|
||||
{
|
||||
rv = ogs_filteraddrinfo(&preferred_list, AF_INET6);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
}
|
||||
if (no_ipv6 == 1)
|
||||
{
|
||||
rv = ogs_filteraddrinfo(&preferred_list, AF_INET);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
}
|
||||
if (prefer_ipv4 == 1)
|
||||
{
|
||||
rv = ogs_sortaddrinfo(&preferred_list, AF_INET);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = ogs_sortaddrinfo(&preferred_list, AF_INET6);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
}
|
||||
|
||||
ogs_assert(preferred_list);
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_pool_alloc(&pool, &node);
|
||||
ogs_assert(node);
|
||||
memset(node, 0, sizeof(gtp_node_t));
|
||||
|
||||
node->sa_list = preferred_list;
|
||||
node->addr = addr;
|
||||
|
||||
ogs_list_init(&node->local_list);
|
||||
ogs_list_init(&node->remote_list);
|
||||
|
@ -91,7 +63,7 @@ void gtp_node_free(gtp_node_t *node)
|
|||
|
||||
gtp_xact_delete_all(node);
|
||||
|
||||
ogs_freeaddrinfo(node->sa_list);
|
||||
ogs_freeaddrinfo(node->addr);
|
||||
ogs_pool_free(&pool, node);
|
||||
}
|
||||
|
||||
|
@ -100,26 +72,32 @@ gtp_node_t *gtp_node_add(ogs_list_t *list, gtp_f_teid_t *f_teid,
|
|||
{
|
||||
int rv;
|
||||
gtp_node_t *node = NULL;
|
||||
ogs_sockaddr_t *sa_list = NULL;
|
||||
ogs_sockaddr_t *addr = NULL;
|
||||
|
||||
ogs_assert(list);
|
||||
ogs_assert(f_teid);
|
||||
ogs_assert(port);
|
||||
|
||||
rv = gtp_f_teid_to_sockaddr(f_teid, port, &sa_list);
|
||||
rv = gtp_f_teid_to_sockaddr(f_teid, port, &addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
|
||||
node = gtp_node_new(sa_list, no_ipv4, no_ipv6, prefer_ipv4);
|
||||
node = gtp_node_new(addr);
|
||||
ogs_assert(node);
|
||||
|
||||
rv = ogs_filter_ip_version(&node->addr, no_ipv4, no_ipv6, prefer_ipv4);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_assert(node->addr);
|
||||
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_list_add(list, node);
|
||||
|
||||
rv = gtp_f_teid_to_ip(f_teid, &node->ip);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
|
||||
rv = ogs_socknode_fill_scope_id_in_local(node->sa_list);
|
||||
rv = ogs_socknode_fill_scope_id_in_local(node->addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
|
||||
ogs_freeaddrinfo(sa_list);
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ extern "C" {
|
|||
typedef struct gtp_node_s {
|
||||
ogs_lnode_t node; /* A node of list_t */
|
||||
|
||||
ogs_sockaddr_t *sa_list; /* Socket Address List */
|
||||
ogs_sockaddr_t *addr; /* Socket Address List */
|
||||
|
||||
ogs_sock_t *sock; /* Socket instance */
|
||||
ip_t ip; /* Socket Address */
|
||||
|
@ -52,8 +52,7 @@ typedef struct gtp_node_s {
|
|||
int gtp_node_init(void);
|
||||
int gtp_node_final(void);
|
||||
|
||||
gtp_node_t *gtp_node_new(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4);
|
||||
gtp_node_t *gtp_node_new(ogs_sockaddr_t *addr);
|
||||
void gtp_node_free(gtp_node_t *node);
|
||||
|
||||
gtp_node_t *gtp_node_add(
|
||||
|
|
|
@ -45,9 +45,9 @@ int gtp_connect(ogs_sock_t *ipv4, ogs_sock_t *ipv6, gtp_node_t *gnode)
|
|||
|
||||
ogs_assert(ipv4 || ipv6);
|
||||
ogs_assert(gnode);
|
||||
ogs_assert(gnode->sa_list);
|
||||
ogs_assert(gnode->addr);
|
||||
|
||||
addr = gnode->sa_list;
|
||||
addr = gnode->addr;
|
||||
while(addr)
|
||||
{
|
||||
ogs_sock_t *sock = NULL;
|
||||
|
@ -74,7 +74,7 @@ int gtp_connect(ogs_sock_t *ipv4, ogs_sock_t *ipv6, gtp_node_t *gnode)
|
|||
{
|
||||
ogs_log_message(OGS_LOG_WARN, ogs_socket_errno,
|
||||
"gtp_connect() [%s]:%d failed",
|
||||
OGS_ADDR(gnode->sa_list, buf), OGS_PORT(gnode->sa_list));
|
||||
OGS_ADDR(gnode->addr, buf), OGS_PORT(gnode->addr));
|
||||
return OGS_ERROR;
|
||||
}
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 9f8f5e48dbedc6907a6e13c370eee8cd3066f928
|
||||
Subproject commit 2769b32a9e311b5aa1c1ae2897393314a9743897
|
|
@ -473,14 +473,21 @@ int mme_context_parse_config()
|
|||
}
|
||||
|
||||
if (addr) {
|
||||
if (context_self()->config.parameter.no_ipv4 == 0)
|
||||
ogs_socknode_add(
|
||||
&self.s1ap_list, AF_INET, addr);
|
||||
|
||||
if (context_self()->config.parameter.no_ipv6 == 0)
|
||||
ogs_socknode_add(
|
||||
&self.s1ap_list6, AF_INET6, addr);
|
||||
if (context_self()->config.parameter.no_ipv4 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.s1ap_list, AF_INET, dup);
|
||||
}
|
||||
|
||||
if (context_self()->config.parameter.no_ipv6 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.s1ap_list6, AF_INET6, dup);
|
||||
}
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
}
|
||||
|
@ -589,13 +596,21 @@ int mme_context_parse_config()
|
|||
}
|
||||
|
||||
if (addr) {
|
||||
if (context_self()->config.parameter.no_ipv4 == 0)
|
||||
if (context_self()->config.parameter.no_ipv4 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpc_list, AF_INET, addr);
|
||||
&self.gtpc_list, AF_INET, dup);
|
||||
}
|
||||
|
||||
if (context_self()->config.parameter.no_ipv6 == 0)
|
||||
if (context_self()->config.parameter.no_ipv6 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpc_list6, AF_INET6, addr);
|
||||
&self.gtpc_list6, AF_INET6, dup);
|
||||
}
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
}
|
||||
|
@ -1335,16 +1350,19 @@ int mme_context_parse_config()
|
|||
ogs_assert(rv == OGS_OK);
|
||||
}
|
||||
|
||||
sgw = mme_sgw_add(addr,
|
||||
sgw = mme_sgw_add(addr);
|
||||
ogs_assert(sgw);
|
||||
|
||||
rv = ogs_filter_ip_version(&sgw->node->addr,
|
||||
context_self()->config.parameter.no_ipv4,
|
||||
context_self()->config.parameter.no_ipv6,
|
||||
context_self()->config.parameter.prefer_ipv4);
|
||||
ogs_assert(sgw->node->addr);
|
||||
|
||||
sgw->num_of_tac = num_of_tac;
|
||||
if (num_of_tac != 0)
|
||||
memcpy(sgw->tac, tac, sizeof(sgw->tac));
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
|
||||
} while (ogs_yaml_iter_type(>pc_array) ==
|
||||
YAML_SEQUENCE_NODE);
|
||||
} else if(!strcmp(mme_key, "selection_mode")) {
|
||||
|
@ -1443,13 +1461,16 @@ int mme_context_parse_config()
|
|||
ogs_assert(rv == OGS_OK);
|
||||
}
|
||||
|
||||
pgw = mme_pgw_add(addr,
|
||||
pgw = mme_pgw_add(addr);
|
||||
ogs_assert(pgw);
|
||||
|
||||
rv = ogs_filter_ip_version(&pgw->node->addr,
|
||||
context_self()->config.parameter.no_ipv4,
|
||||
context_self()->config.parameter.no_ipv6,
|
||||
context_self()->config.parameter.prefer_ipv4);
|
||||
pgw->apn = apn;
|
||||
ogs_assert(pgw->node->addr);
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
pgw->apn = apn;
|
||||
|
||||
} while (ogs_yaml_iter_type(>pc_array) ==
|
||||
YAML_SEQUENCE_NODE);
|
||||
|
@ -1464,18 +1485,19 @@ int mme_context_parse_config()
|
|||
return OGS_OK;
|
||||
}
|
||||
|
||||
mme_sgw_t *mme_sgw_add(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4)
|
||||
mme_sgw_t *mme_sgw_add(ogs_sockaddr_t *addr)
|
||||
{
|
||||
mme_sgw_t *sgw = NULL;
|
||||
|
||||
ogs_assert(all_list);
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_pool_alloc(&mme_sgw_pool, &sgw);
|
||||
ogs_assert(sgw);
|
||||
memset(sgw, 0, sizeof *sgw);
|
||||
|
||||
sgw->gnode = gtp_node_new(all_list, no_ipv4, no_ipv6, prefer_ipv4);
|
||||
sgw->node = gtp_node_new(addr);
|
||||
ogs_assert(sgw->node);
|
||||
|
||||
ogs_list_add(&self.sgw_list, sgw);
|
||||
|
||||
return sgw;
|
||||
|
@ -1487,7 +1509,7 @@ void mme_sgw_remove(mme_sgw_t *sgw)
|
|||
|
||||
ogs_list_remove(&self.sgw_list, sgw);
|
||||
|
||||
gtp_node_free(sgw->gnode);
|
||||
gtp_node_free(sgw->node);
|
||||
ogs_pool_free(&mme_sgw_pool, sgw);
|
||||
}
|
||||
|
||||
|
@ -1499,17 +1521,18 @@ void mme_sgw_remove_all()
|
|||
mme_sgw_remove(sgw);
|
||||
}
|
||||
|
||||
mme_pgw_t *mme_pgw_add(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4)
|
||||
mme_pgw_t *mme_pgw_add(ogs_sockaddr_t *addr)
|
||||
{
|
||||
mme_pgw_t *pgw = NULL;
|
||||
|
||||
ogs_assert(all_list);
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_pool_alloc(&mme_pgw_pool, &pgw);
|
||||
ogs_assert(pgw);
|
||||
|
||||
pgw->gnode = gtp_node_new(all_list, no_ipv4, no_ipv6, prefer_ipv4);
|
||||
pgw->node = gtp_node_new(addr);
|
||||
ogs_assert(pgw->node);
|
||||
|
||||
ogs_list_add(&self.pgw_list, pgw);
|
||||
|
||||
return pgw;
|
||||
|
@ -1521,7 +1544,7 @@ void mme_pgw_remove(mme_pgw_t *pgw)
|
|||
|
||||
ogs_list_remove(&self.pgw_list, pgw);
|
||||
|
||||
gtp_node_free(pgw->gnode);
|
||||
gtp_node_free(pgw->node);
|
||||
ogs_pool_free(&mme_pgw_pool, pgw);
|
||||
}
|
||||
|
||||
|
@ -1540,8 +1563,8 @@ ogs_sockaddr_t *mme_pgw_addr_find_by_apn(
|
|||
ogs_assert(list);
|
||||
|
||||
ogs_list_for_each(list, pgw) {
|
||||
ogs_assert(pgw->gnode);
|
||||
ogs_sockaddr_t *addr = pgw->gnode->sa_list;
|
||||
ogs_assert(pgw->node);
|
||||
ogs_sockaddr_t *addr = pgw->node->addr;
|
||||
|
||||
while (addr) {
|
||||
if (addr->ogs_sa_family == family &&
|
||||
|
@ -1556,18 +1579,18 @@ ogs_sockaddr_t *mme_pgw_addr_find_by_apn(
|
|||
}
|
||||
|
||||
mme_vlr_t *mme_vlr_add(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4)
|
||||
ogs_sockaddr_t *addr, int no_ipv4, int no_ipv6, int prefer_ipv4)
|
||||
{
|
||||
mme_vlr_t *vlr = NULL;
|
||||
|
||||
ogs_assert(all_list);
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_pool_alloc(&mme_vlr_pool, &vlr);
|
||||
ogs_assert(vlr);
|
||||
memset(vlr, 0, sizeof *vlr);
|
||||
|
||||
#if 0
|
||||
vlr->gnode = gtp_node_new(all_list, no_ipv4, no_ipv6, prefer_ipv4);
|
||||
vlr->gnode = gtp_node_new(addr, no_ipv4, no_ipv6, prefer_ipv4);
|
||||
#endif
|
||||
ogs_list_add(&self.vlr_list, vlr);
|
||||
|
||||
|
@ -1932,7 +1955,7 @@ mme_ue_t* mme_ue_add(enb_ue_t *enb_ue)
|
|||
mme_self()->sgw = ogs_list_first(&mme_self()->sgw_list);
|
||||
|
||||
ogs_assert(mme_self()->sgw);
|
||||
SETUP_GTP_NODE(mme_ue, mme_self()->sgw->gnode);
|
||||
SETUP_GTP_NODE(mme_ue, mme_self()->sgw->node);
|
||||
|
||||
mme_self()->sgw = ogs_list_next(mme_self()->sgw);
|
||||
} else if (mme_self()->sgw_selection == SGW_SELECT_TAC) {
|
||||
|
@ -1949,7 +1972,7 @@ mme_ue_t* mme_ue_add(enb_ue_t *enb_ue)
|
|||
}
|
||||
|
||||
ogs_assert(mme_self()->sgw);
|
||||
SETUP_GTP_NODE(mme_ue, mme_self()->sgw->gnode);
|
||||
SETUP_GTP_NODE(mme_ue, mme_self()->sgw->node);
|
||||
} else
|
||||
ogs_assert_if_reached();
|
||||
|
||||
|
|
|
@ -151,18 +151,18 @@ typedef struct mme_context_s {
|
|||
} mme_context_t;
|
||||
|
||||
typedef struct mme_sgw_s {
|
||||
ogs_lnode_t node;
|
||||
ogs_lnode_t lnode;
|
||||
|
||||
uint16_t tac[MAX_NUM_OF_TAI];
|
||||
uint8_t num_of_tac;
|
||||
|
||||
gtp_node_t *gnode;
|
||||
gtp_node_t *node;
|
||||
} mme_sgw_t;
|
||||
|
||||
typedef struct mme_pgw_s {
|
||||
ogs_lnode_t node;
|
||||
ogs_lnode_t lnode;
|
||||
|
||||
gtp_node_t *gnode;
|
||||
gtp_node_t *node;
|
||||
const char *apn;
|
||||
} mme_pgw_t;
|
||||
|
||||
|
@ -520,20 +520,18 @@ mme_context_t *mme_self(void);
|
|||
|
||||
int mme_context_parse_config(void);
|
||||
|
||||
mme_sgw_t *mme_sgw_add(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4);
|
||||
mme_sgw_t *mme_sgw_add(ogs_sockaddr_t *addr);
|
||||
void mme_sgw_remove(mme_sgw_t *sgw);
|
||||
void mme_sgw_remove_all();
|
||||
|
||||
mme_pgw_t *mme_pgw_add(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4);
|
||||
mme_pgw_t *mme_pgw_add(ogs_sockaddr_t *addr);
|
||||
void mme_pgw_remove(mme_pgw_t *pgw);
|
||||
void mme_pgw_remove_all();
|
||||
ogs_sockaddr_t *mme_pgw_addr_find_by_apn(
|
||||
ogs_list_t *list, int family, char *apn);
|
||||
|
||||
mme_vlr_t *mme_vlr_add(
|
||||
ogs_sockaddr_t *all_list, int no_ipv4, int no_ipv6, int prefer_ipv4);
|
||||
ogs_sockaddr_t *addr, int no_ipv4, int no_ipv6, int prefer_ipv4);
|
||||
void mme_vlr_remove(mme_vlr_t *vlr);
|
||||
void mme_vlr_remove_all();
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ int mme_gtp_open()
|
|||
ogs_list_for_each(&mme_self()->sgw_list, sgw)
|
||||
{
|
||||
rv = gtp_connect(
|
||||
mme_self()->gtpc_sock, mme_self()->gtpc_sock6, sgw->gnode);
|
||||
mme_self()->gtpc_sock, mme_self()->gtpc_sock6, sgw->node);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
}
|
||||
|
||||
|
|
|
@ -383,13 +383,21 @@ int pgw_context_parse_config()
|
|||
}
|
||||
|
||||
if (addr) {
|
||||
if (context_self()->config.parameter.no_ipv4 == 0)
|
||||
if (context_self()->config.parameter.no_ipv4 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpc_list, AF_INET, addr);
|
||||
&self.gtpc_list, AF_INET, dup);
|
||||
}
|
||||
|
||||
if (context_self()->config.parameter.no_ipv6 == 0)
|
||||
if (context_self()->config.parameter.no_ipv6 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpc_list6, AF_INET6, addr);
|
||||
&self.gtpc_list6, AF_INET6, dup);
|
||||
}
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
}
|
||||
|
@ -497,13 +505,21 @@ int pgw_context_parse_config()
|
|||
}
|
||||
|
||||
if (addr) {
|
||||
if (context_self()->config.parameter.no_ipv4 == 0)
|
||||
if (context_self()->config.parameter.no_ipv4 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpu_list, AF_INET, addr);
|
||||
&self.gtpu_list, AF_INET, dup);
|
||||
}
|
||||
|
||||
if (context_self()->config.parameter.no_ipv6 == 0)
|
||||
if (context_self()->config.parameter.no_ipv6 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpu_list6, AF_INET6, addr);
|
||||
&self.gtpu_list6, AF_INET6, dup);
|
||||
}
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
}
|
||||
|
|
|
@ -211,13 +211,21 @@ int sgw_context_parse_config()
|
|||
}
|
||||
|
||||
if (addr) {
|
||||
if (context_self()->config.parameter.no_ipv4 == 0)
|
||||
if (context_self()->config.parameter.no_ipv4 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpc_list, AF_INET, addr);
|
||||
&self.gtpc_list, AF_INET, dup);
|
||||
}
|
||||
|
||||
if (context_self()->config.parameter.no_ipv6 == 0)
|
||||
if (context_self()->config.parameter.no_ipv6 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpc_list6, AF_INET6, addr);
|
||||
&self.gtpc_list6, AF_INET6, dup);
|
||||
}
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
}
|
||||
|
@ -325,13 +333,21 @@ int sgw_context_parse_config()
|
|||
}
|
||||
|
||||
if (addr) {
|
||||
if (context_self()->config.parameter.no_ipv4 == 0)
|
||||
if (context_self()->config.parameter.no_ipv4 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpu_list, AF_INET, addr);
|
||||
&self.gtpu_list, AF_INET, dup);
|
||||
}
|
||||
|
||||
if (context_self()->config.parameter.no_ipv6 == 0)
|
||||
if (context_self()->config.parameter.no_ipv6 == 0) {
|
||||
ogs_sockaddr_t *dup = NULL;
|
||||
rv = ogs_copyaddrinfo(&dup, addr);
|
||||
ogs_assert(rv == OGS_OK);
|
||||
ogs_socknode_add(
|
||||
&self.gtpu_list6, AF_INET6, addr);
|
||||
&self.gtpu_list6, AF_INET6, dup);
|
||||
}
|
||||
|
||||
ogs_freeaddrinfo(addr);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue