2017-02-09 14:15:08 +00:00
|
|
|
#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);
|
|
|
|
|
|
|
|
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:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_s1setuprequesties(
|
|
|
|
&message_p->msg.s1ap_S1SetupRequestIEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_initialUEMessage:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_initialuemessage_ies(
|
|
|
|
&message_p->msg.s1ap_InitialUEMessage_IEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_uecapabilityinfoindicationies(
|
|
|
|
&message_p->msg.s1ap_UECapabilityInfoIndicationIEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_initialcontextsetuprequesties(
|
|
|
|
&message_p->msg.s1ap_InitialContextSetupRequestIEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_downlinkNASTransport:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_downlinknastransport_ies(
|
|
|
|
&message_p->msg.s1ap_DownlinkNASTransport_IEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_uplinkNASTransport:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_uplinknastransport_ies(
|
|
|
|
&message_p->msg.s1ap_UplinkNASTransport_IEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_nasnondeliveryindication_ies(
|
|
|
|
&message_p->msg.s1ap_NASNonDeliveryIndication_IEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_UEContextRelease:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_uecontextreleasecommand_ies(
|
|
|
|
&message_p->msg.s1ap_UEContextReleaseCommand_IEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_UEContextReleaseRequest:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_uecontextreleaserequest_ies(
|
|
|
|
&message_p->msg.s1ap_UEContextReleaseRequest_IEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
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:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_s1setupresponseies(
|
|
|
|
&message_p->msg.s1ap_S1SetupResponseIEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_initialcontextsetupresponseies(
|
|
|
|
&message_p->msg.s1ap_InitialContextSetupResponseIEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_UEContextRelease:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_uecontextreleasecomplete_ies(
|
|
|
|
&message_p->msg.s1ap_UEContextReleaseComplete_IEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
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:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_s1setupfailureies(
|
|
|
|
&message_p->msg.s1ap_S1SetupFailureIEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
2017-02-12 15:04:02 +00:00
|
|
|
s1ap_free_s1ap_initialcontextsetupfailureies(
|
|
|
|
&message_p->msg.s1ap_InitialContextSetupFailureIEs);
|
2017-02-09 14:15:08 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
d_warn("Unknown procedure ID (%d) for unsuccessfull "
|
|
|
|
"outcome message\n", (int)message_p->procedureCode);
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|