remove free_wrapper
This commit is contained in:
parent
12f189eb2b
commit
054692e3c0
|
@ -1,178 +1,49 @@
|
|||
#include "core_debug.h"
|
||||
/*
|
||||
* Copyright (c) 2015, EURECOM (www.eurecom.fr)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those
|
||||
* of the authors and should not be interpreted as representing official policies,
|
||||
* either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
|
||||
#define TRACE_MODULE _decoder
|
||||
|
||||
#include "core_debug.h"
|
||||
#include "s1ap_message.h"
|
||||
|
||||
void free_wrapper(void *ptr)
|
||||
{
|
||||
free(ptr);
|
||||
ptr = NULL;
|
||||
}
|
||||
|
||||
static int s1ap_decode_initiating(s1ap_message *message,
|
||||
S1ap_InitiatingMessage_t *initiating_p)
|
||||
{
|
||||
int ret;
|
||||
char *message_string = NULL;
|
||||
|
||||
d_assert(initiating_p, return -1, "Null param");
|
||||
message_string = calloc (10000, sizeof (char));
|
||||
s1ap_string_total_size = 0;
|
||||
|
||||
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_s1ap_uplinknastransport(s1ap_xer__print2sp,
|
||||
message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_s1setuprequesties(
|
||||
&message->msg.s1ap_S1SetupRequestIEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_s1ap_s1setuprequest(s1ap_xer__print2sp,
|
||||
message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_initialUEMessage:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_initialuemessage_ies(
|
||||
&message->msg.s1ap_InitialUEMessage_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_s1ap_initialuemessage(s1ap_xer__print2sp,
|
||||
message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextReleaseRequest:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_uecontextreleaserequest_ies(
|
||||
&message->msg.s1ap_UEContextReleaseRequest_IEs, &initiating_p->value);
|
||||
s1ap_xer_print_s1ap_uecontextreleaserequest(
|
||||
s1ap_xer__print2sp, message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_uecapabilityinfoindicationies(
|
||||
&message->msg.s1ap_UECapabilityInfoIndicationIEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_s1ap_uecapabilityinfoindication(
|
||||
s1ap_xer__print2sp, message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_nasnondeliveryindication_ies(
|
||||
&message->msg.s1ap_NASNonDeliveryIndication_IEs,
|
||||
&initiating_p->value);
|
||||
s1ap_xer_print_s1ap_nasnondeliveryindication(
|
||||
s1ap_xer__print2sp, message_string, message);
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
printf("%s\n", message_string);
|
||||
free_wrapper (message_string);
|
||||
return ret;
|
||||
}
|
||||
|
||||
S1ap_InitiatingMessage_t *initiating_p);
|
||||
static int s1ap_decode_successfull_outcome(s1ap_message *message,
|
||||
S1ap_SuccessfulOutcome_t *successfullOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
char *message_string = NULL;
|
||||
|
||||
d_assert(successfullOutcome_p, return -1, "Null param");
|
||||
message_string = calloc (10000, sizeof (char));
|
||||
s1ap_string_total_size = 0;
|
||||
|
||||
switch (successfullOutcome_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_initialcontextsetupresponseies(
|
||||
&message->msg.s1ap_InitialContextSetupResponseIEs,
|
||||
&successfullOutcome_p->value);
|
||||
s1ap_xer_print_s1ap_initialcontextsetupresponse(s1ap_xer__print2sp,
|
||||
message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_uecontextreleasecomplete_ies(
|
||||
&message->msg.s1ap_UEContextReleaseComplete_IEs,
|
||||
&successfullOutcome_p->value);
|
||||
s1ap_xer_print_s1ap_uecontextreleasecomplete(s1ap_xer__print2sp,
|
||||
message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
d_error("Unknown procedure ID (%ld) for successfull "
|
||||
"outcome message", successfullOutcome_p->procedureCode);
|
||||
break;
|
||||
}
|
||||
|
||||
printf("%s\n", message_string);
|
||||
free_wrapper (message_string);
|
||||
return ret;
|
||||
}
|
||||
|
||||
S1ap_SuccessfulOutcome_t *successfullOutcome_p);
|
||||
static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
|
||||
S1ap_UnsuccessfulOutcome_t *unSuccessfulOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
char *message_string = NULL;
|
||||
S1ap_UnsuccessfulOutcome_t *unSuccessfulOutcome_p);
|
||||
|
||||
d_assert(unSuccessfulOutcome_p, return -1, "Null param");
|
||||
message_string = calloc (10000, sizeof (char));
|
||||
s1ap_string_total_size = 0;
|
||||
|
||||
switch (unSuccessfulOutcome_p->procedureCode)
|
||||
{
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
{
|
||||
ret = s1ap_decode_s1ap_initialcontextsetupfailureies(
|
||||
&message->msg.s1ap_InitialContextSetupFailureIEs,
|
||||
&unSuccessfulOutcome_p->value);
|
||||
s1ap_xer_print_s1ap_initialcontextsetupfailure(s1ap_xer__print2sp,
|
||||
message_string, message);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
d_error("Unknown procedure ID (%d) for "
|
||||
"unsuccessfull outcome message",
|
||||
(int)unSuccessfulOutcome_p->procedureCode);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
printf("%s\n", message_string);
|
||||
free_wrapper (message_string);
|
||||
return ret;
|
||||
}
|
||||
static void s1ap_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_decode_pdu(s1ap_message *message, pkbuf_t *pkb)
|
||||
{
|
||||
|
@ -217,3 +88,179 @@ int s1ap_decode_pdu(s1ap_message *message, pkbuf_t *pkb)
|
|||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
static int s1ap_decode_initiating(s1ap_message *message,
|
||||
S1ap_InitiatingMessage_t *initiating_p)
|
||||
{
|
||||
int ret;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int s1ap_decode_successfull_outcome(s1ap_message *message,
|
||||
S1ap_SuccessfulOutcome_t *successfullOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
d_assert(successfullOutcome_p, return -1, "Null param");
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
default:
|
||||
d_error("Unknown procedure ID (%ld) for successfull "
|
||||
"outcome message", successfullOutcome_p->procedureCode);
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int s1ap_decode_unsuccessfull_outcome(s1ap_message *message,
|
||||
S1ap_UnsuccessfulOutcome_t *unSuccessfulOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
d_assert(unSuccessfulOutcome_p, return -1, "Null param");
|
||||
|
||||
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;
|
||||
|
||||
default:
|
||||
{
|
||||
d_error("Unknown procedure ID (%d) for "
|
||||
"unsuccessfull outcome message",
|
||||
(int)unSuccessfulOutcome_p->procedureCode);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define S1AP_MAX_MESSAGE_STRING 2048
|
||||
static char s1ap_message_string[S1AP_MAX_MESSAGE_STRING];
|
||||
|
||||
static void s1ap_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_message_string, 0, S1AP_MAX_MESSAGE_STRING);
|
||||
|
||||
func(cb, s1ap_message_string, message_p);
|
||||
|
||||
printf("%s\n", s1ap_message_string);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,69 @@
|
|||
#include "core_debug.h"
|
||||
/*
|
||||
* Copyright (c) 2015, EURECOM (www.eurecom.fr)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those
|
||||
* of the authors and should not be interpreted as representing official policies,
|
||||
* either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
|
||||
#define TRACE_MODULE encoder
|
||||
|
||||
#include "core_debug.h"
|
||||
#include "s1ap_message.h"
|
||||
|
||||
extern void free_wrapper(void *ptr);
|
||||
static inline int s1ap_encode_initiating(
|
||||
s1ap_message *message_p, uint8_t **buffer, uint32_t *length);
|
||||
static inline int s1ap_encode_successfull_outcome(
|
||||
s1ap_message *message_p, uint8_t **buffer, uint32_t *length);
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
case S1AP_PDU_PR_successfulOutcome:
|
||||
return s1ap_encode_successfull_outcome(message_p, buffer, length);
|
||||
|
||||
case S1AP_PDU_PR_unsuccessfulOutcome:
|
||||
return s1ap_encode_unsuccessfull_outcome(message_p, buffer, length);
|
||||
|
||||
default:
|
||||
d_warn("Unknown message outcome (%d) or not implemented",
|
||||
(int)message_p->direction);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
ssize_t s1ap_generate_initiating_message(uint8_t **buffer, uint32_t *length,
|
||||
e_S1ap_ProcedureCode procedureCode, S1ap_Criticality_t criticality,
|
||||
|
@ -227,7 +288,7 @@ static inline int s1ap_encode_initiating(
|
|||
return -1;
|
||||
}
|
||||
|
||||
static inline int s1ap_encode_successfull_outcome (
|
||||
static inline int s1ap_encode_successfull_outcome(
|
||||
s1ap_message *message_p, uint8_t **buffer, uint32_t *length)
|
||||
{
|
||||
switch (message_p->procedureCode)
|
||||
|
@ -261,28 +322,3 @@ static inline int s1ap_encode_unsuccessfull_outcome(
|
|||
return -1;
|
||||
}
|
||||
|
||||
int s1ap_encode_pdu(s1ap_message *message_p, uint8_t **buffer, uint32_t *length)
|
||||
{
|
||||
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);
|
||||
|
||||
case S1AP_PDU_PR_successfulOutcome:
|
||||
return s1ap_encode_successfull_outcome(message_p, buffer, length);
|
||||
|
||||
case S1AP_PDU_PR_unsuccessfulOutcome:
|
||||
return s1ap_encode_unsuccessfull_outcome(message_p, buffer, length);
|
||||
|
||||
default:
|
||||
d_warn("Unknown message outcome (%d) or not implemented",
|
||||
(int)message_p->direction);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
#define _S1AP_MESSAGE_H__
|
||||
|
||||
#include "core_pkbuf.h"
|
||||
|
||||
#include "s1ap_ies_defs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -71,6 +71,10 @@ static void s1ap_test3(abts_case *tc, void *data)
|
|||
abts_suite *test_s1ap(abts_suite *suite)
|
||||
{
|
||||
suite = ADD_SUITE(suite)
|
||||
{
|
||||
extern int _decoder;
|
||||
d_trace_level(&_decoder, 100);
|
||||
}
|
||||
|
||||
abts_run_test(suite, s1ap_test1, NULL);
|
||||
abts_run_test(suite, s1ap_test2, NULL);
|
||||
|
|
Loading…
Reference in New Issue