forked from acouzens/open5gs
encoder message print is added
This commit is contained in:
parent
32db40e300
commit
93fe0f7704
|
@ -1,6 +1,7 @@
|
|||
#define TRACE_MODULE _s1dec
|
||||
|
||||
#include "core_debug.h"
|
||||
#include "core_lib.h"
|
||||
#include "s1ap_codecs.h"
|
||||
|
||||
static int s1ap_decode_initiating(s1ap_message *message,
|
||||
|
@ -10,7 +11,7 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
|
|||
static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
|
||||
S1ap_UnsuccessfulOutcome_t *unSuccessfulOutcome_p);
|
||||
|
||||
static void s1ap_xer_print_message(
|
||||
static void s1ap_decode_xer_print_message(
|
||||
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
|
||||
void *app_key, s1ap_message *message_p),
|
||||
asn_app_consume_bytes_f *cb, s1ap_message *message_p);
|
||||
|
@ -81,7 +82,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_uplinknastransport_ies(
|
||||
&message->msg.s1ap_UplinkNASTransport_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_uplinknastransport,
|
||||
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_uplinknastransport,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
||||
|
@ -89,7 +90,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_s1setuprequesties(
|
||||
&message->msg.s1ap_S1SetupRequestIEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_s1setuprequest,
|
||||
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_s1setuprequest,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
||||
|
@ -97,14 +98,14 @@ static int s1ap_decode_initiating(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_initialuemessage_ies(
|
||||
&message->msg.s1ap_InitialUEMessage_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_initialuemessage,
|
||||
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_initialuemessage,
|
||||
s1ap_xer__print2sp, message);
|
||||
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_decode_xer_print_message(s1ap_xer_print_s1ap_uecontextreleaserequest,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
||||
|
@ -112,7 +113,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_uecapabilityinfoindicationies(
|
||||
&message->msg.s1ap_UECapabilityInfoIndicationIEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_decode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_uecapabilityinfoindication,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
@ -121,7 +122,7 @@ static int s1ap_decode_initiating(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_nasnondeliveryindication_ies(
|
||||
&message->msg.s1ap_NASNonDeliveryIndication_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_message(s1ap_xer_print_s1ap_nasnondeliveryindication,
|
||||
s1ap_decode_xer_print_message(s1ap_xer_print_s1ap_nasnondeliveryindication,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
||||
|
@ -151,7 +152,7 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_initialcontextsetupresponseies(
|
||||
&message->msg.s1ap_InitialContextSetupResponseIEs,
|
||||
&successfullOutcome_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_decode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_initialcontextsetupresponse,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
@ -160,7 +161,7 @@ static int s1ap_decode_successfull_outcome(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_uecontextreleasecomplete_ies(
|
||||
&message->msg.s1ap_UEContextReleaseComplete_IEs,
|
||||
&successfullOutcome_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_decode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_uecontextreleasecomplete,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
@ -188,7 +189,7 @@ static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
|
|||
ret = s1ap_decode_s1ap_initialcontextsetupfailureies(
|
||||
&message->msg.s1ap_InitialContextSetupFailureIEs,
|
||||
&unSuccessfulOutcome_p->value);
|
||||
s1ap_xer_print_message(
|
||||
s1ap_decode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_initialcontextsetupfailure,
|
||||
s1ap_xer__print2sp, message);
|
||||
break;
|
||||
|
@ -203,10 +204,9 @@ static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
|
|||
return ret;
|
||||
}
|
||||
|
||||
#define S1AP_MAX_MESSAGE_STRING 2048
|
||||
static char s1ap_message_string[S1AP_MAX_MESSAGE_STRING];
|
||||
static char s1ap_decode_message_string[HUGE_STRING_LEN];
|
||||
|
||||
static void s1ap_xer_print_message(
|
||||
static void s1ap_decode_xer_print_message(
|
||||
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
|
||||
void *app_key, s1ap_message *message_p),
|
||||
asn_app_consume_bytes_f *cb, s1ap_message *message_p)
|
||||
|
@ -214,11 +214,11 @@ static void s1ap_xer_print_message(
|
|||
if (g_trace_mask && TRACE_MODULE >= 3)
|
||||
{
|
||||
s1ap_string_total_size = 0;
|
||||
memset(s1ap_message_string, 0, S1AP_MAX_MESSAGE_STRING);
|
||||
memset(s1ap_decode_message_string, 0, HUGE_STRING_LEN);
|
||||
|
||||
func(cb, s1ap_message_string, message_p);
|
||||
func(cb, s1ap_decode_message_string, message_p);
|
||||
|
||||
printf("%s\n", s1ap_message_string);
|
||||
printf("%s\n", s1ap_decode_message_string);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#define TRACE_MODULE _s1enc
|
||||
|
||||
#include "core_debug.h"
|
||||
#include "core_lib.h"
|
||||
#include "s1ap_codecs.h"
|
||||
|
||||
static inline int s1ap_encode_initiating_message(
|
||||
|
@ -23,6 +24,11 @@ static inline int s1ap_encode_downlink_nas_transport(
|
|||
static inline int s1ap_encode_ue_context_release_command(
|
||||
s1ap_message *message_p, pkbuf_t *pkbuf);
|
||||
|
||||
static void s1ap_encode_xer_print_message(
|
||||
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
|
||||
void *app_key, s1ap_message *message_p),
|
||||
asn_app_consume_bytes_f *cb, s1ap_message *message_p);
|
||||
|
||||
int s1ap_encode_pdu(pkbuf_t **pkb, s1ap_message *message_p)
|
||||
{
|
||||
int encoded = -1;
|
||||
|
@ -66,53 +72,76 @@ int s1ap_encode_pdu(pkbuf_t **pkb, s1ap_message *message_p)
|
|||
static inline int s1ap_encode_initiating_message(
|
||||
s1ap_message *message_p, pkbuf_t *pkbuf)
|
||||
{
|
||||
int ret = -1;
|
||||
switch (message_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
return s1ap_encode_s1setup_request(message_p, pkbuf);
|
||||
s1ap_encode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_s1setuprequest,
|
||||
s1ap_xer__print2sp, message_p);
|
||||
ret = s1ap_encode_s1setup_request(message_p, pkbuf);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_downlinkNASTransport:
|
||||
return s1ap_encode_downlink_nas_transport(message_p, pkbuf);
|
||||
|
||||
s1ap_encode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_downlinknastransport,
|
||||
s1ap_xer__print2sp, message_p);
|
||||
ret = s1ap_encode_downlink_nas_transport(message_p, pkbuf);
|
||||
break;
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
return s1ap_encode_initial_context_setup_request(message_p, pkbuf);
|
||||
|
||||
s1ap_encode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_initialcontextsetuprequest,
|
||||
s1ap_xer__print2sp, message_p);
|
||||
ret = s1ap_encode_initial_context_setup_request(message_p, pkbuf);
|
||||
break;
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
return s1ap_encode_ue_context_release_command(message_p, pkbuf);
|
||||
|
||||
s1ap_encode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_uecontextreleasecommand,
|
||||
s1ap_xer__print2sp, message_p);
|
||||
ret = s1ap_encode_ue_context_release_command(message_p, pkbuf);
|
||||
break;
|
||||
default:
|
||||
d_warn("Unknown procedure ID (%d) for initiating message_p\n",
|
||||
(int)message_p->procedureCode);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int s1ap_encode_successfull_outcome(
|
||||
s1ap_message *message_p, pkbuf_t *pkbuf)
|
||||
{
|
||||
int ret = -1;
|
||||
switch (message_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
return s1ap_encode_s1setup_response(message_p, pkbuf);
|
||||
|
||||
s1ap_encode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_s1setupresponse,
|
||||
s1ap_xer__print2sp, message_p);
|
||||
ret = s1ap_encode_s1setup_response(message_p, pkbuf);
|
||||
break;
|
||||
default:
|
||||
d_warn("Unknown procedure ID (%d) for successfull "
|
||||
"outcome message\n", (int)message_p->procedureCode);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int s1ap_encode_unsuccessfull_outcome(
|
||||
s1ap_message *message_p, pkbuf_t *pkbuf)
|
||||
{
|
||||
int ret = -1;
|
||||
switch (message_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
return s1ap_encode_s1setup_failure(message_p, pkbuf);
|
||||
s1ap_encode_xer_print_message(
|
||||
s1ap_xer_print_s1ap_s1setupfailure,
|
||||
s1ap_xer__print2sp, message_p);
|
||||
ret = s1ap_encode_s1setup_failure(message_p, pkbuf);
|
||||
break;
|
||||
|
||||
default:
|
||||
d_warn("Unknown procedure ID (%d) for unsuccessfull "
|
||||
|
@ -120,7 +149,7 @@ static inline int s1ap_encode_unsuccessfull_outcome(
|
|||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int s1ap_encode_initial_context_setup_request(
|
||||
|
@ -353,3 +382,22 @@ static inline int s1ap_encode_ue_context_release_command(
|
|||
|
||||
return enc_ret.encoded;
|
||||
}
|
||||
|
||||
static char s1ap_encode_message_string[HUGE_STRING_LEN];
|
||||
|
||||
static void s1ap_encode_xer_print_message(
|
||||
asn_enc_rval_t (*func)(asn_app_consume_bytes_f *cb,
|
||||
void *app_key, s1ap_message *message_p),
|
||||
asn_app_consume_bytes_f *cb, s1ap_message *message_p)
|
||||
{
|
||||
if (g_trace_mask && TRACE_MODULE >= 3)
|
||||
{
|
||||
s1ap_string_total_size = 0;
|
||||
memset(s1ap_encode_message_string, 0, HUGE_STRING_LEN);
|
||||
|
||||
func(cb, s1ap_encode_message_string, message_p);
|
||||
|
||||
printf("%s\n", s1ap_encode_message_string);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
1
main.c
1
main.c
|
@ -234,6 +234,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
|
||||
show_version();
|
||||
d_info("CellWire daemon start");
|
||||
|
||||
threads_start();
|
||||
|
|
|
@ -139,8 +139,10 @@ abts_suite *test_s1ap(abts_suite *suite)
|
|||
{
|
||||
suite = ADD_SUITE(suite)
|
||||
{
|
||||
extern int _s1enc;
|
||||
extern int _s1dec;
|
||||
d_trace_level(&_s1dec, 100);
|
||||
d_trace_level(&_s1enc, 0);
|
||||
d_trace_level(&_s1dec, 0);
|
||||
}
|
||||
|
||||
abts_run_test(suite, s1ap_test1, NULL);
|
||||
|
|
Loading…
Reference in New Issue