use pkbuf_t for s1ap_encoder buffer
This commit is contained in:
parent
054692e3c0
commit
0ec220dcda
|
@ -93,81 +93,67 @@ int s1ap_decode_pdu(s1ap_message *message, pkbuf_t *pkb)
|
|||
static int s1ap_decode_initiating(s1ap_message *message,
|
||||
S1ap_InitiatingMessage_t *initiating_p)
|
||||
{
|
||||
int ret;
|
||||
int ret = -1;
|
||||
|
||||
d_assert(initiating_p, return -1, "Null param");
|
||||
|
||||
switch (initiating_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_uplinkNASTransport:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_uplinknastransport_ies(
|
||||
&message->msg.s1ap_UplinkNASTransport_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_uplinknastransport,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_s1setuprequesties(
|
||||
&message->msg.s1ap_S1SetupRequestIEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_s1setuprequest,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_initialUEMessage:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_initialuemessage_ies(
|
||||
&message->msg.s1ap_InitialUEMessage_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_initialuemessage,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextReleaseRequest:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_uecontextreleaserequest_ies(
|
||||
&message->msg.s1ap_UEContextReleaseRequest_IEs, &initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_uecontextreleaserequest,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_uecapabilityinfoindicationies(
|
||||
&message->msg.s1ap_UECapabilityInfoIndicationIEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_xer_print_s1ap_uecapabilityinfoindication,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_nasnondeliveryindication_ies(
|
||||
&message->msg.s1ap_NASNonDeliveryIndication_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_nasnondeliveryindication,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
d_error("Unknown procedure ID (%d) for initiating message",
|
||||
(int)initiating_p->procedureCode);
|
||||
d_assert(0, return -1,
|
||||
"Unknown procedure ID (%d) for initiating message",
|
||||
(int)initiating_p->procedureCode);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -183,26 +169,22 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
|
|||
switch (successfullOutcome_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_initialcontextsetupresponseies(
|
||||
&message->msg.s1ap_InitialContextSetupResponseIEs,
|
||||
&successfullOutcome_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_xer_print_s1ap_initialcontextsetupresponse,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_uecontextreleasecomplete_ies(
|
||||
&message->msg.s1ap_UEContextReleaseComplete_IEs,
|
||||
&successfullOutcome_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_xer_print_s1ap_uecontextreleasecomplete,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
d_error("Unknown procedure ID (%ld) for successfull "
|
||||
|
@ -223,23 +205,19 @@ static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
|
|||
switch (unSuccessfulOutcome_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_initialcontextsetupfailureies(
|
||||
&message->msg.s1ap_InitialContextSetupFailureIEs,
|
||||
&unSuccessfulOutcome_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_xer_print_s1ap_initialcontextsetupfailure,
|
||||
s1ap_xer__print2sp, message);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
d_error("Unknown procedure ID (%d) for "
|
||||
"unsuccessfull outcome message",
|
||||
(int)unSuccessfulOutcome_p->procedureCode);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
@ -39,22 +39,27 @@ static inline int s1ap_encode_successfull_outcome(
|
|||
static inline int s1ap_encode_unsuccessfull_outcome(
|
||||
s1ap_message *message_p, uint8_t **buffer, uint32_t *length);
|
||||
|
||||
int s1ap_encode_pdu(s1ap_message *message_p, uint8_t **buffer, uint32_t *length)
|
||||
int s1ap_encode_pdu(pkbuf_t **pkb, s1ap_message *message_p)
|
||||
{
|
||||
int ret = -1;
|
||||
uint8_t **buffer = 0;
|
||||
uint32_t *length = 0;
|
||||
|
||||
d_assert (message_p, return -1, "Null param");
|
||||
d_assert (buffer, return -1, "Null param");
|
||||
d_assert (length, return -1, "Null param");
|
||||
|
||||
switch (message_p->direction)
|
||||
{
|
||||
case S1AP_PDU_PR_initiatingMessage:
|
||||
return s1ap_encode_initiating(message_p, buffer, length);
|
||||
ret = s1ap_encode_initiating(message_p, buffer, length);
|
||||
break;
|
||||
|
||||
case S1AP_PDU_PR_successfulOutcome:
|
||||
return s1ap_encode_successfull_outcome(message_p, buffer, length);
|
||||
ret = s1ap_encode_successfull_outcome(message_p, buffer, length);
|
||||
break;
|
||||
|
||||
case S1AP_PDU_PR_unsuccessfulOutcome:
|
||||
return s1ap_encode_unsuccessfull_outcome(message_p, buffer, length);
|
||||
ret = s1ap_encode_unsuccessfull_outcome(message_p, buffer, length);
|
||||
break;
|
||||
|
||||
default:
|
||||
d_warn("Unknown message outcome (%d) or not implemented",
|
||||
|
@ -62,7 +67,14 @@ int s1ap_encode_pdu(s1ap_message *message_p, uint8_t **buffer, uint32_t *length)
|
|||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
if (ret >= 0)
|
||||
{
|
||||
*pkb = pkbuf_alloc(0, *length);
|
||||
d_assert(*pkb, return -1, "Null Param");
|
||||
memcpy((*pkb)->payload, *buffer, *length);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ssize_t s1ap_generate_initiating_message(uint8_t **buffer, uint32_t *length,
|
||||
|
|
|
@ -12,8 +12,7 @@ extern "C" {
|
|||
|
||||
CORE_DECLARE(int) s1ap_decode_pdu(s1ap_message *message, pkbuf_t *pkbuf);
|
||||
|
||||
CORE_DECLARE(int) s1ap_encode_pdu(s1ap_message *message,
|
||||
uint8_t **buffer, uint32_t *len);
|
||||
CORE_DECLARE(int) s1ap_encode_pdu(pkbuf_t **pkbuf, s1ap_message *message);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue