From c6b13be92ab1d56969383d35fcc7afedee885e07 Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Tue, 27 Jul 2021 20:33:46 +0900 Subject: [PATCH] do the finishing touches (#1108) --- lib/core/ogs-3gpp-types.h | 2 -- lib/pfcp/build.c | 8 ++++---- lib/pfcp/context.c | 2 +- lib/pfcp/context.h | 3 ++- lib/pfcp/handler.c | 4 ++-- lib/pfcp/message.c | 2 +- lib/pfcp/message.h | 6 +++--- src/smf/context.c | 14 +++++++------- src/smf/context.h | 2 ++ src/smf/gx-path.c | 8 ++++---- 10 files changed, 26 insertions(+), 25 deletions(-) diff --git a/lib/core/ogs-3gpp-types.h b/lib/core/ogs-3gpp-types.h index f29fc8519..b720b1416 100644 --- a/lib/core/ogs-3gpp-types.h +++ b/lib/core/ogs-3gpp-types.h @@ -30,8 +30,6 @@ extern "C" { #define OGS_MAX_NUM_OF_SESS 4 /* Num of APN(Session) per UE */ #define OGS_MAX_NUM_OF_BEARER 4 /* Num of Bearer per Session */ -#define OGS_MAX_NUM_OF_RULE 4 /* Num of Rule per Session */ -#define OGS_MAX_NUM_OF_PF 16 /* Num of PacketFilter per Bearer */ #define OGS_MAX_NUM_OF_PACKET_BUFFER 64 /* Num of PacketBuffer per UE */ /* Num of PacketFilter per Bearer(GTP) or QoS(NAS-5GS) */ diff --git a/lib/pfcp/build.c b/lib/pfcp/build.c index 4d8d8e996..2cb386fb9 100644 --- a/lib/pfcp/build.c +++ b/lib/pfcp/build.c @@ -238,7 +238,7 @@ ogs_pkbuf_t *ogs_pfcp_up_build_association_setup_response(uint8_t type, static struct { ogs_pfcp_f_teid_t f_teid; char dnn[OGS_MAX_DNN_LEN]; - char *sdf_filter[OGS_MAX_NUM_OF_PF]; + char *sdf_filter[OGS_PFCP_MAX_NUM_OF_RULE]; } pdrbuf[OGS_MAX_NUM_OF_PDR]; void ogs_pfcp_pdrbuf_init(void) @@ -250,7 +250,7 @@ void ogs_pfcp_pdrbuf_clear(void) { int i, j; for (i = 0; i < OGS_MAX_NUM_OF_PDR; i++) { - for (j = 0; j < OGS_MAX_NUM_OF_PF; j++) { + for (j = 0; j < OGS_PFCP_MAX_NUM_OF_RULE; j++) { if (pdrbuf[i].sdf_filter[j]) ogs_free(pdrbuf[i].sdf_filter[j]); } @@ -261,7 +261,7 @@ void ogs_pfcp_build_create_pdr( ogs_pfcp_tlv_create_pdr_t *message, int i, ogs_pfcp_pdr_t *pdr) { ogs_pfcp_far_t *far = NULL; - ogs_pfcp_sdf_filter_t pfcp_sdf_filter[OGS_MAX_NUM_OF_PF]; + ogs_pfcp_sdf_filter_t pfcp_sdf_filter[OGS_PFCP_MAX_NUM_OF_RULE]; int j = 0; int len = 0; @@ -376,7 +376,7 @@ void ogs_pfcp_build_created_pdr( void ogs_pfcp_build_update_pdr( ogs_pfcp_tlv_update_pdr_t *message, int i, ogs_pfcp_pdr_t *pdr) { - ogs_pfcp_sdf_filter_t pfcp_sdf_filter[OGS_MAX_NUM_OF_PF]; + ogs_pfcp_sdf_filter_t pfcp_sdf_filter[OGS_PFCP_MAX_NUM_OF_RULE]; int j = 0; int len = 0; diff --git a/lib/pfcp/context.c b/lib/pfcp/context.c index 2df9772c8..6600ab200 100644 --- a/lib/pfcp/context.c +++ b/lib/pfcp/context.c @@ -79,7 +79,7 @@ void ogs_pfcp_context_init(void) ogs_app()->pool.sess * OGS_MAX_NUM_OF_BAR); ogs_pool_init(&ogs_pfcp_rule_pool, - ogs_app()->pool.sess * OGS_MAX_NUM_OF_PF); + ogs_app()->pool.sess * OGS_PFCP_MAX_NUM_OF_RULE); ogs_pool_init(&ogs_pfcp_dev_pool, OGS_MAX_NUM_OF_DEV); ogs_pool_init(&ogs_pfcp_subnet_pool, OGS_MAX_NUM_OF_SUBNET); diff --git a/lib/pfcp/context.h b/lib/pfcp/context.h index e4ad3f472..bc2be9fd5 100644 --- a/lib/pfcp/context.h +++ b/lib/pfcp/context.h @@ -173,7 +173,8 @@ typedef struct ogs_pfcp_pdr_s { ogs_pfcp_qer_t *qer; int num_of_flow; - char *flow_description[OGS_MAX_NUM_OF_PF]; +#define OGS_PFCP_MAX_NUM_OF_RULE 8 /* Num of Rule per Session */ + char *flow_description[OGS_PFCP_MAX_NUM_OF_RULE]; ogs_list_t rule_list; /* Rule List */ diff --git a/lib/pfcp/handler.c b/lib/pfcp/handler.c index 83a35e2a3..37d499a03 100644 --- a/lib/pfcp/handler.c +++ b/lib/pfcp/handler.c @@ -313,7 +313,7 @@ ogs_pfcp_pdr_t *ogs_pfcp_handle_create_pdr(ogs_pfcp_sess_t *sess, ogs_pfcp_rule_remove_all(pdr); - for (i = 0; i < OGS_MAX_NUM_OF_PF; i++) { + for (i = 0; i < OGS_PFCP_MAX_NUM_OF_RULE; i++) { ogs_pfcp_sdf_filter_t sdf_filter; ogs_pfcp_rule_t *rule = NULL; ogs_pfcp_rule_t *oppsite_direction_rule = NULL; @@ -558,7 +558,7 @@ ogs_pfcp_pdr_t *ogs_pfcp_handle_update_pdr(ogs_pfcp_sess_t *sess, ogs_pfcp_rule_remove_all(pdr); - for (i = 0; i < OGS_MAX_NUM_OF_PF; i++) { + for (i = 0; i < OGS_PFCP_MAX_NUM_OF_RULE; i++) { ogs_pfcp_sdf_filter_t sdf_filter; ogs_pfcp_rule_t *rule = NULL; ogs_pfcp_rule_t *oppsite_direction_rule = NULL; diff --git a/lib/pfcp/message.c b/lib/pfcp/message.c index beeb680b5..4e6442f3a 100644 --- a/lib/pfcp/message.c +++ b/lib/pfcp/message.c @@ -20,7 +20,7 @@ /******************************************************************************* * This file had been created by pfcp-tlv.py script v0.1.0 * Please do not modify this file but regenerate it via script. - * Created on: 2021-06-15 10:58:38.385939 by acetcom + * Created on: 2021-07-27 20:23:21.045510 by acetcom * from 29244-g10.docx ******************************************************************************/ diff --git a/lib/pfcp/message.h b/lib/pfcp/message.h index 4d7c19020..d7e34d87f 100644 --- a/lib/pfcp/message.h +++ b/lib/pfcp/message.h @@ -20,7 +20,7 @@ /******************************************************************************* * This file had been created by pfcp-tlv.py script v0.1.0 * Please do not modify this file but regenerate it via script. - * Created on: 2021-06-15 10:58:38.379862 by acetcom + * Created on: 2021-07-27 20:23:21.038999 by acetcom * from 29244-g10.docx ******************************************************************************/ @@ -626,7 +626,7 @@ typedef struct ogs_pfcp_tlv_ethernet_packet_filter_s { ogs_pfcp_tlv_ethertype_t ethertype; ogs_pfcp_tlv_c_tag_t c_tag; ogs_pfcp_tlv_s_tag_t s_tag; - ogs_pfcp_tlv_sdf_filter_t sdf_filter[OGS_MAX_NUM_OF_PF]; + ogs_pfcp_tlv_sdf_filter_t sdf_filter[8]; } ogs_pfcp_tlv_ethernet_packet_filter_t; typedef struct ogs_pfcp_tlv_pdi_s { @@ -636,7 +636,7 @@ typedef struct ogs_pfcp_tlv_pdi_s { ogs_pfcp_tlv_network_instance_t network_instance; ogs_pfcp_tlv_ue_ip_address_t ue_ip_address; ogs_pfcp_tlv_traffic_endpoint_id_t traffic_endpoint_id; - ogs_pfcp_tlv_sdf_filter_t sdf_filter[OGS_MAX_NUM_OF_PF]; + ogs_pfcp_tlv_sdf_filter_t sdf_filter[8]; ogs_pfcp_tlv_application_id_t application_id; ogs_pfcp_tlv_ethernet_pdu_session_information_t ethernet_pdu_session_information; ogs_pfcp_tlv_ethernet_packet_filter_t ethernet_packet_filter; diff --git a/src/smf/context.c b/src/smf/context.c index c3b0122f7..61b2c5de7 100644 --- a/src/smf/context.c +++ b/src/smf/context.c @@ -59,7 +59,7 @@ void smf_context_init(void) ogs_pool_init(&smf_sess_pool, ogs_app()->pool.sess); ogs_pool_init(&smf_bearer_pool, ogs_app()->pool.bearer); - ogs_pool_init(&smf_pf_pool, ogs_app()->pool.bearer * OGS_MAX_NUM_OF_PF); + ogs_pool_init(&smf_pf_pool, ogs_app()->pool.bearer * MAX_NUM_OF_PF); self.supi_hash = ogs_hash_make(); ogs_assert(self.supi_hash); @@ -2143,14 +2143,14 @@ smf_pf_t *smf_pf_add(smf_bearer_t *bearer) ogs_assert(pf->identifier_node); pf->identifier = *(pf->identifier_node); - ogs_assert(pf->identifier > 0 && pf->identifier <= OGS_MAX_NUM_OF_PF); + ogs_assert(pf->identifier > 0 && pf->identifier <= MAX_NUM_OF_PF); ogs_pool_alloc(&sess->pf_precedence_pool, &pf->precedence_node); ogs_assert(pf->precedence_node); pf->precedence = *(pf->precedence_node); ogs_assert(pf->precedence > 0 && pf->precedence <= - (OGS_MAX_NUM_OF_BEARER * OGS_MAX_NUM_OF_PF)); + (OGS_MAX_NUM_OF_BEARER * MAX_NUM_OF_PF)); pf->bearer = bearer; @@ -2427,9 +2427,9 @@ void smf_pf_identifier_pool_init(smf_bearer_t *bearer) ogs_assert(bearer); - ogs_index_init(&bearer->pf_identifier_pool, OGS_MAX_NUM_OF_PF); + ogs_index_init(&bearer->pf_identifier_pool, MAX_NUM_OF_PF); - for (i = 1; i <= OGS_MAX_NUM_OF_PF; i++) { + for (i = 1; i <= MAX_NUM_OF_PF; i++) { bearer->pf_identifier_pool.array[i-1] = i; } } @@ -2448,9 +2448,9 @@ void smf_pf_precedence_pool_init(smf_sess_t *sess) ogs_assert(sess); ogs_index_init(&sess->pf_precedence_pool, - OGS_MAX_NUM_OF_BEARER * OGS_MAX_NUM_OF_PF); + OGS_MAX_NUM_OF_BEARER * MAX_NUM_OF_PF); - for (i = 1; i <= OGS_MAX_NUM_OF_BEARER * OGS_MAX_NUM_OF_PF; i++) { + for (i = 1; i <= OGS_MAX_NUM_OF_BEARER * MAX_NUM_OF_PF; i++) { sess->pf_precedence_pool.array[i-1] = i; } } diff --git a/src/smf/context.h b/src/smf/context.h index 2a2777f9d..b547c6716 100644 --- a/src/smf/context.h +++ b/src/smf/context.h @@ -177,6 +177,8 @@ typedef struct smf_bearer_s { OGS_POOL(pf_identifier_pool, uint8_t); +#define MAX_NUM_OF_PF 16 /* Num of PacketFilter per Bearer */ + /* Packet Filter List */ ogs_list_t pf_list; ogs_list_t pf_to_add_list; diff --git a/src/smf/gx-path.c b/src/smf/gx-path.c index 07ae6d395..64361da6a 100644 --- a/src/smf/gx-path.c +++ b/src/smf/gx-path.c @@ -893,8 +893,8 @@ static void smf_gx_cca_cb(void *data, struct msg **msg) bearer = smf_bearer_find_by_pcc_rule_name( sess_data->sess, pcc_rule->name); if (bearer && - (ogs_list_count(&bearer->pf_list) + pcc_rule->num_of_flow > - OGS_MAX_NUM_OF_PF)) { + ((ogs_list_count(&bearer->pf_list) + + pcc_rule->num_of_flow) > MAX_NUM_OF_PF)) { error++; } break; @@ -1094,8 +1094,8 @@ static int smf_gx_rar_cb( struct msg **msg, struct avp *avp, bearer = smf_bearer_find_by_pcc_rule_name( sess_data->sess, pcc_rule->name); if (bearer && - (ogs_list_count(&bearer->pf_list) + pcc_rule->num_of_flow > - OGS_MAX_NUM_OF_PF)) { + ((ogs_list_count(&bearer->pf_list) + + pcc_rule->num_of_flow) > MAX_NUM_OF_PF)) { result_code = ER_DIAMETER_UNABLE_TO_COMPLY; goto out; }