forked from acouzens/open5gs
s1ap_free_pdu() is added
This commit is contained in:
parent
fc48bcde95
commit
fa7b4fef58
|
@ -8,7 +8,7 @@ libasn_la_SOURCES = \
|
|||
s1ap_ies_defs.h s1ap_codecs.h
|
||||
|
||||
nodist_libasn_la_SOURCES = \
|
||||
s1ap_encoder.c s1ap_decoder.c \
|
||||
s1ap_encoder.c s1ap_decoder.c s1ap_free.c \
|
||||
s1ap_ies_encoder.c s1ap_ies_decoder.c s1ap_ies_free.c s1ap_ies_xer_print.c
|
||||
|
||||
libasn_la_DEPENDENCIES = \
|
||||
|
|
|
@ -11,8 +11,8 @@ extern "C" {
|
|||
#define S1AP_SDU_SIZE 2048
|
||||
|
||||
CORE_DECLARE(int) s1ap_decode_pdu(s1ap_message *message, pkbuf_t *pkbuf);
|
||||
|
||||
CORE_DECLARE(int) s1ap_encode_pdu(pkbuf_t **pkbuf, s1ap_message *message);
|
||||
CORE_DECLARE(int) s1ap_free_pdu(s1ap_message *message);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -74,6 +74,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
|
|||
|
||||
d_assert(initiating_p, return -1, "Null param");
|
||||
|
||||
message->procedureCode = initiating_p->procedureCode;
|
||||
switch (initiating_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_uplinkNASTransport:
|
||||
|
@ -143,6 +144,7 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
|
|||
|
||||
d_assert(successfullOutcome_p, return -1, "Null param");
|
||||
|
||||
message->procedureCode = successfullOutcome_p->procedureCode;
|
||||
switch (successfullOutcome_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
|
@ -179,6 +181,7 @@ static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
|
|||
|
||||
d_assert(unSuccessfulOutcome_p, return -1, "Null param");
|
||||
|
||||
message->procedureCode = unSuccessfulOutcome_p->procedureCode;
|
||||
switch (unSuccessfulOutcome_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
|
|
|
@ -20,7 +20,7 @@ static inline int s1ap_encode_s1setup_failure(
|
|||
s1ap_message *message_p, pkbuf_t *pkbuf);
|
||||
static inline int s1ap_encode_downlink_nas_transport(
|
||||
s1ap_message *message_p, pkbuf_t *pkbuf);
|
||||
static inline int s1ap_encode_ue_context_release_command (
|
||||
static inline int s1ap_encode_ue_context_release_command(
|
||||
s1ap_message *message_p, pkbuf_t *pkbuf);
|
||||
|
||||
int s1ap_encode_pdu(pkbuf_t **pkb, s1ap_message *message_p)
|
||||
|
|
|
@ -0,0 +1,242 @@
|
|||
#define TRACE_MODULE _s1free
|
||||
|
||||
#include "core_debug.h"
|
||||
#include "s1ap_codecs.h"
|
||||
|
||||
static inline int s1ap_free_initiating_message(s1ap_message *message_p);
|
||||
static inline int s1ap_free_successfull_outcome(s1ap_message *message_p);
|
||||
static inline int s1ap_free_unsuccessfull_outcome(s1ap_message *message_p);
|
||||
|
||||
static inline void s1ap_free_s1setup_request(s1ap_message *message_p);
|
||||
static inline void s1ap_free_s1setup_response(s1ap_message *message_p);
|
||||
static inline void s1ap_free_s1setup_failure(s1ap_message *message_p);
|
||||
|
||||
static inline void s1ap_free_initialuemessage_ies(s1ap_message *message_p);
|
||||
static inline void s1ap_free_uecapabilityinfoindicationies(
|
||||
s1ap_message *message_p);
|
||||
|
||||
static inline void s1ap_free_initial_context_setup_request(
|
||||
s1ap_message *message_p);
|
||||
static inline void s1ap_free_initialcontextsetupresponseies(
|
||||
s1ap_message *message_p);
|
||||
static inline void s1ap_free_initialcontextsetupfailureies(
|
||||
s1ap_message *message_p);
|
||||
|
||||
static inline void s1ap_free_downlink_nas_transport(s1ap_message *message_p);
|
||||
static inline void s1ap_free_uplinknastransport_ies(s1ap_message *message_p);
|
||||
static inline void s1ap_free_nasnondeliveryindication_ies(
|
||||
s1ap_message *message_p);
|
||||
|
||||
static inline void s1ap_free_ue_context_release_command(
|
||||
s1ap_message *message_p);
|
||||
static inline void s1ap_free_uecontextreleasecomplete_ies(
|
||||
s1ap_message *message_p);
|
||||
static inline void s1ap_free_uecontextreleaserequest_ies(
|
||||
s1ap_message *message_p);
|
||||
|
||||
|
||||
int s1ap_free_pdu(s1ap_message *message_p)
|
||||
{
|
||||
d_assert (message_p, return -1, "Null param");
|
||||
|
||||
switch (message_p->direction)
|
||||
{
|
||||
case S1AP_PDU_PR_initiatingMessage:
|
||||
return s1ap_free_initiating_message(message_p);
|
||||
|
||||
case S1AP_PDU_PR_successfulOutcome:
|
||||
return s1ap_free_successfull_outcome(message_p);
|
||||
|
||||
case S1AP_PDU_PR_unsuccessfulOutcome:
|
||||
return s1ap_free_unsuccessfull_outcome(message_p);
|
||||
|
||||
default:
|
||||
d_warn("Unknown message outcome (%d) or not implemented",
|
||||
(int)message_p->direction);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int s1ap_free_initiating_message(s1ap_message *message_p)
|
||||
{
|
||||
switch (message_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
s1ap_free_s1setup_request(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_initialUEMessage:
|
||||
s1ap_free_initialuemessage_ies(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
|
||||
s1ap_free_uecapabilityinfoindicationies(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
s1ap_free_initial_context_setup_request(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_downlinkNASTransport:
|
||||
s1ap_free_downlink_nas_transport(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_uplinkNASTransport:
|
||||
s1ap_free_uplinknastransport_ies(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
|
||||
s1ap_free_nasnondeliveryindication_ies(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
s1ap_free_ue_context_release_command(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextReleaseRequest:
|
||||
s1ap_free_uecontextreleaserequest_ies(message_p);
|
||||
break;
|
||||
|
||||
default:
|
||||
d_warn("Unknown procedure ID (%d) for initiating message_p\n",
|
||||
(int)message_p->procedureCode);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int s1ap_free_successfull_outcome(s1ap_message *message_p)
|
||||
{
|
||||
switch (message_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
s1ap_free_s1setup_response(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
s1ap_free_initialcontextsetupresponseies(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
s1ap_free_uecontextreleasecomplete_ies(message_p);
|
||||
break;
|
||||
|
||||
default:
|
||||
d_warn("Unknown procedure ID (%d) for successfull "
|
||||
"outcome message\n", (int)message_p->procedureCode);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int s1ap_free_unsuccessfull_outcome(s1ap_message *message_p)
|
||||
{
|
||||
switch (message_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
s1ap_free_s1setup_failure(message_p);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
s1ap_free_initialcontextsetupfailureies(message_p);
|
||||
break;
|
||||
|
||||
default:
|
||||
d_warn("Unknown procedure ID (%d) for unsuccessfull "
|
||||
"outcome message\n", (int)message_p->procedureCode);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void s1ap_free_s1setup_request(s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_s1setuprequesties(&message_p->msg.s1ap_S1SetupRequestIEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_s1setup_response(s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_s1setupresponseies(
|
||||
&message_p->msg.s1ap_S1SetupResponseIEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_s1setup_failure(s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_s1setupfailureies(&message_p->msg.s1ap_S1SetupFailureIEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_initialuemessage_ies(s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_initialuemessage_ies(
|
||||
&message_p->msg.s1ap_InitialUEMessage_IEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_initial_context_setup_request(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_initialcontextsetuprequesties(
|
||||
&message_p->msg.s1ap_InitialContextSetupRequestIEs);
|
||||
}
|
||||
static inline void s1ap_free_initialcontextsetupresponseies(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_initialcontextsetupresponseies(
|
||||
&message_p->msg.s1ap_InitialContextSetupResponseIEs);
|
||||
}
|
||||
static inline void s1ap_free_initialcontextsetupfailureies(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_initialcontextsetupfailureies(
|
||||
&message_p->msg.s1ap_InitialContextSetupFailureIEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_downlink_nas_transport(s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_downlinknastransport_ies(
|
||||
&message_p->msg.s1ap_DownlinkNASTransport_IEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_uplinknastransport_ies(s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_uplinknastransport_ies(
|
||||
&message_p->msg.s1ap_UplinkNASTransport_IEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_ue_context_release_command(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_uecontextreleasecommand_ies(
|
||||
&message_p->msg.s1ap_UEContextReleaseCommand_IEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_uecontextreleaserequest_ies(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_uecontextreleaserequest_ies(
|
||||
&message_p->msg.s1ap_UEContextReleaseRequest_IEs);
|
||||
}
|
||||
static inline void s1ap_free_uecapabilityinfoindicationies(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_uecapabilityinfoindicationies(
|
||||
&message_p->msg.s1ap_UECapabilityInfoIndicationIEs);
|
||||
}
|
||||
static inline void s1ap_free_nasnondeliveryindication_ies(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_nasnondeliveryindication_ies(
|
||||
&message_p->msg.s1ap_NASNonDeliveryIndication_IEs);
|
||||
}
|
||||
|
||||
static inline void s1ap_free_uecontextreleasecomplete_ies(
|
||||
s1ap_message *message_p)
|
||||
{
|
||||
s1ap_free_s1ap_uecontextreleasecomplete_ies(
|
||||
&message_p->msg.s1ap_UEContextReleaseComplete_IEs);
|
||||
}
|
||||
|
|
@ -67,8 +67,7 @@ status_t s1ap_build_setup_rsp(pkbuf_t **pkbuf)
|
|||
message.direction = S1AP_PDU_PR_successfulOutcome;
|
||||
|
||||
erval = s1ap_encode_pdu(pkbuf, &message);
|
||||
|
||||
s1ap_free_s1ap_s1setupresponseies(ies);
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
if (erval < 0)
|
||||
{
|
||||
|
|
|
@ -26,9 +26,8 @@ static void s1ap_test1(abts_case *tc, void *data)
|
|||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
s1ap_free_s1ap_s1setuprequesties(&message.msg.s1ap_S1SetupRequestIEs);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
}
|
||||
|
||||
|
@ -50,8 +49,7 @@ static void s1ap_test2(abts_case *tc, void *data)
|
|||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
|
||||
s1ap_free_s1ap_initialuemessage_ies(&message.msg.s1ap_InitialUEMessage_IEs);
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
}
|
||||
|
@ -74,8 +72,7 @@ static void s1ap_test3(abts_case *tc, void *data)
|
|||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
|
||||
s1ap_free_s1ap_initialcontextsetupresponseies(&message.msg.s1ap_InitialContextSetupResponseIEs);
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
}
|
||||
|
@ -137,10 +134,9 @@ static void s1ap_test5(abts_case *tc, void *data)
|
|||
message.criticality = S1ap_Criticality_reject;
|
||||
|
||||
erval = s1ap_encode_pdu(&pkbuf, &message);
|
||||
|
||||
s1ap_free_s1ap_s1setuprequesties(s1SetupRequestIEs);
|
||||
|
||||
ABTS_INT_EQUAL(tc, 280, erval);
|
||||
|
||||
s1ap_free_pdu(&message);
|
||||
}
|
||||
|
||||
abts_suite *test_s1ap(abts_suite *suite)
|
||||
|
|
Loading…
Reference in New Issue