From 9c67459481b9b9818fe081712257f54f104707e5 Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Sat, 3 Oct 2020 21:18:08 -0400 Subject: [PATCH] re-order packet buffer clear #568 --- src/sgwu/gtp-path.c | 20 ++++++++++++++------ src/sgwu/gtp-path.h | 3 +++ src/sgwu/init.c | 5 ++++- src/upf/gtp-path.c | 27 ++++++++++++++++++--------- src/upf/gtp-path.h | 3 +++ src/upf/init.c | 7 ++++--- 6 files changed, 46 insertions(+), 19 deletions(-) diff --git a/src/sgwu/gtp-path.c b/src/sgwu/gtp-path.c index 623cd3de7..584dcad9c 100644 --- a/src/sgwu/gtp-path.c +++ b/src/sgwu/gtp-path.c @@ -173,11 +173,8 @@ cleanup: ogs_pkbuf_free(pkbuf); } -int sgwu_gtp_open(void) +int sgwu_gtp_init(void) { - ogs_socknode_t *node = NULL; - ogs_sock_t *sock = NULL; - ogs_pkbuf_config_t config; memset(&config, 0, sizeof config); @@ -185,6 +182,19 @@ int sgwu_gtp_open(void) packet_pool = ogs_pkbuf_pool_create(&config); + return OGS_OK; +} + +void sgwu_gtp_final(void) +{ + ogs_pkbuf_pool_destroy(packet_pool); +} + +int sgwu_gtp_open(void) +{ + ogs_socknode_t *node = NULL; + ogs_sock_t *sock = NULL; + ogs_list_for_each(&sgwu_self()->gtpu_list, node) { sock = ogs_gtp_server(node); ogs_assert(sock); @@ -206,6 +216,4 @@ int sgwu_gtp_open(void) void sgwu_gtp_close(void) { ogs_socknode_remove_all(&sgwu_self()->gtpu_list); - - ogs_pkbuf_pool_destroy(packet_pool); } diff --git a/src/sgwu/gtp-path.h b/src/sgwu/gtp-path.h index 3865691c8..4c6ddce27 100644 --- a/src/sgwu/gtp-path.h +++ b/src/sgwu/gtp-path.h @@ -26,6 +26,9 @@ extern "C" { #endif +int sgwu_gtp_init(void); +void sgwu_gtp_final(void); + int sgwu_gtp_open(void); void sgwu_gtp_close(void); diff --git a/src/sgwu/init.c b/src/sgwu/init.c index bd66d79f9..7a81cf321 100644 --- a/src/sgwu/init.c +++ b/src/sgwu/init.c @@ -18,6 +18,7 @@ */ #include "context.h" +#include "gtp-path.h" static ogs_thread_t *thread; static void sgwu_main(void *data); @@ -31,6 +32,7 @@ int sgwu_initialize() ogs_pfcp_context_init(OGS_MAX_NUM_OF_GTPU_RESOURCE); sgwu_context_init(); sgwu_event_init(); + sgwu_gtp_init(); rv = ogs_pfcp_xact_init(); if (rv != OGS_OK) return rv; @@ -62,10 +64,11 @@ void sgwu_terminate(void) ogs_thread_destroy(thread); sgwu_context_final(); - ogs_pfcp_context_final(); + ogs_pfcp_context_final(); ogs_pfcp_xact_final(); + sgwu_gtp_final(); sgwu_event_final(); } diff --git a/src/upf/gtp-path.c b/src/upf/gtp-path.c index 01e394dff..eda0b3639 100644 --- a/src/upf/gtp-path.c +++ b/src/upf/gtp-path.c @@ -250,6 +250,24 @@ cleanup: ogs_pkbuf_free(pkbuf); } + +int upf_gtp_init(void) +{ + ogs_pkbuf_config_t config; + memset(&config, 0, sizeof config); + + config.cluster_2048_pool = ogs_app()->pool.packet; + + packet_pool = ogs_pkbuf_pool_create(&config); + + return OGS_OK; +} + +void upf_gtp_final(void) +{ + ogs_pkbuf_pool_destroy(packet_pool); +} + int upf_gtp_open(void) { ogs_pfcp_dev_t *dev = NULL; @@ -258,13 +276,6 @@ int upf_gtp_open(void) ogs_sock_t *sock = NULL; int rc; - ogs_pkbuf_config_t config; - memset(&config, 0, sizeof config); - - config.cluster_2048_pool = ogs_app()->pool.packet; - - packet_pool = ogs_pkbuf_pool_create(&config); - ogs_list_for_each(&upf_self()->gtpu_list, node) { sock = ogs_gtp_server(node); ogs_assert(sock); @@ -342,8 +353,6 @@ void upf_gtp_close(void) ogs_pollset_remove(dev->poll); ogs_closesocket(dev->fd); } - - ogs_pkbuf_pool_destroy(packet_pool); } static void upf_gtp_handle_multicast(ogs_pkbuf_t *recvbuf) diff --git a/src/upf/gtp-path.h b/src/upf/gtp-path.h index 45e35b2a9..2cb6bd480 100644 --- a/src/upf/gtp-path.h +++ b/src/upf/gtp-path.h @@ -27,6 +27,9 @@ extern "C" { #endif +int upf_gtp_init(void); +void upf_gtp_final(void); + int upf_gtp_open(void); void upf_gtp_close(void); diff --git a/src/upf/init.c b/src/upf/init.c index 23477e850..bce047fd5 100644 --- a/src/upf/init.c +++ b/src/upf/init.c @@ -18,8 +18,7 @@ */ #include "context.h" -#include "event.h" -#include "upf-sm.h" +#include "gtp-path.h" static ogs_thread_t *thread; static void upf_main(void *data); @@ -33,6 +32,7 @@ int upf_initialize() ogs_pfcp_context_init(OGS_MAX_NUM_OF_GTPU_RESOURCE); upf_context_init(); upf_event_init(); + upf_gtp_init(); rv = ogs_pfcp_xact_init(); if (rv != OGS_OK) return rv; @@ -67,10 +67,11 @@ void upf_terminate(void) ogs_thread_destroy(thread); upf_context_final(); - ogs_pfcp_context_final(); + ogs_pfcp_context_final(); ogs_pfcp_xact_final(); + upf_gtp_final(); upf_event_final(); }