Merge remote-tracking branch 'origin/develop' into enhancement-ltem
Conflicts: openair1/PHY/INIT/lte_init.c openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c openair1/PHY/LTE_TRANSPORT/dci.c openair1/PHY/LTE_TRANSPORT/dci_tools.c openair1/PHY/LTE_TRANSPORT/dlsch_coding.c openair1/PHY/LTE_TRANSPORT/edci.c openair1/PHY/LTE_TRANSPORT/if4_tools.c openair1/PHY/LTE_TRANSPORT/prach.c openair1/PHY/LTE_TRANSPORT/print_stats.c openair1/PHY/LTE_TRANSPORT/pucch.c openair1/PHY/LTE_TRANSPORT/transport_eNB.h openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h openair1/PHY/impl_defs_lte.h openair1/SCHED/fapi_l1.c openair1/SCHED/phy_procedures_lte_eNb.c openair2/COMMON/rrc_messages_types.h openair2/ENB_APP/enb_config.c openair2/ENB_APP/enb_paramdef.h openair2/LAYER2/MAC/config.c openair2/LAYER2/MAC/defs.h openair2/LAYER2/MAC/eNB_scheduler.c openair2/LAYER2/MAC/eNB_scheduler_RA.c openair2/LAYER2/MAC/eNB_scheduler_bch.c openair2/LAYER2/MAC/eNB_scheduler_dlsch.c openair2/LAYER2/MAC/eNB_scheduler_primitives.c openair2/LAYER2/MAC/eNB_scheduler_ulsch.c openair2/LAYER2/MAC/pre_processor.c openair2/LAYER2/MAC/rar_tools.c openair2/LAYER2/MAC/ue_procedures.c openair2/PHY_INTERFACE/IF_Module.c openair2/RRC/LITE/rrc_common.c openair2/RRC/LTE/L2_interface_ue.c openair2/RRC/LTE/MESSAGES/asn1_msg.c openair2/RRC/LTE/rrc_eNB.c targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp targets/RT/USER/lte-enb.c targets/RT/USER/lte-ru.c
This commit is contained in:
+3
-6
@@ -13,11 +13,8 @@ eNBs =
|
||||
eNB_name = "eNB_Eurecom_LTEBox";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = "1";
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "95";
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ( { mcc = 208; mnc = 95; mnc_length = 2; } );
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -45,7 +42,7 @@ eNBs =
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pucch_n1_AN = 0;
|
||||
pdsch_referenceSignalPower = -26;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
|
||||
@@ -13,10 +13,8 @@ eNBs =
|
||||
eNB_name = "eNB_Eurecom_LTEBox";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = "1";
|
||||
|
||||
mobile_country_code = "208";
|
||||
mobile_network_code = "95";
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ( { mcc = 208; mnc = 95; mnc_length = 2; } );
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -44,7 +42,7 @@ eNBs =
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pucch_n1_AN = 0;
|
||||
pdsch_referenceSignalPower = -26;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
#ifdef CMAKER
|
||||
#include "SystemInformationBlockType2.h"
|
||||
#else
|
||||
#include "RRC/LITE/MESSAGES/SystemInformationBlockType2.h"
|
||||
#include "RRC/LTE/MESSAGES/SystemInformationBlockType2.h"
|
||||
#endif
|
||||
|
||||
#define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\
|
||||
|
||||
@@ -46,8 +46,6 @@
|
||||
#include <pthread.h>
|
||||
|
||||
|
||||
#include "intertask_interface_init.h"
|
||||
#include "timer.h"
|
||||
#include "assertions.h"
|
||||
#include "s1ap_common.h"
|
||||
#include "intertask_interface.h"
|
||||
@@ -1206,7 +1204,7 @@ int main( int argc, char **argv )
|
||||
logInit();
|
||||
set_glog(LOG_TRACE, LOG_MED);
|
||||
|
||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, NULL);
|
||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
|
||||
|
||||
set_comp_log(ENB_APP, LOG_TRACE, LOG_MED, 1);
|
||||
set_comp_log(S1AP, LOG_TRACE, LOG_MED, 1);
|
||||
|
||||
@@ -29,140 +29,20 @@
|
||||
|
||||
#include "intertask_interface.h"
|
||||
#include "platform_types.h"
|
||||
#include "s1ap_ies_defs.h"
|
||||
#include "s1ap_eNB_decoder.h"
|
||||
#include "assertions.h"
|
||||
#include "play_scenario.h"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
int et_s1ap_decode_initiating_message(s1ap_message *message, S1ap_InitiatingMessage_t *initiating_p)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
DevAssert(initiating_p != NULL);
|
||||
|
||||
message->procedureCode = initiating_p->procedureCode;
|
||||
message->criticality = initiating_p->criticality;
|
||||
|
||||
switch(initiating_p->procedureCode) {
|
||||
case S1ap_ProcedureCode_id_downlinkNASTransport:
|
||||
ret = s1ap_decode_s1ap_downlinknastransporties(&message->msg.s1ap_DownlinkNASTransportIEs,&initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
ret = s1ap_decode_s1ap_initialcontextsetuprequesties(&message->msg.s1ap_InitialContextSetupRequestIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
ret = s1ap_decode_s1ap_uecontextreleasecommandies(&message->msg.s1ap_UEContextReleaseCommandIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_Paging:
|
||||
ret = s1ap_decode_s1ap_pagingies(&message->msg.s1ap_PagingIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_uplinkNASTransport:
|
||||
ret = s1ap_decode_s1ap_uplinknastransporties (&message->msg.s1ap_UplinkNASTransportIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
ret = s1ap_decode_s1ap_s1setuprequesties (&message->msg.s1ap_S1SetupRequestIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_initialUEMessage:
|
||||
ret = s1ap_decode_s1ap_initialuemessageies (&message->msg.s1ap_InitialUEMessageIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextReleaseRequest:
|
||||
ret = s1ap_decode_s1ap_uecontextreleaserequesties (&message->msg.s1ap_UEContextReleaseRequestIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
|
||||
ret = s1ap_decode_s1ap_uecapabilityinfoindicationies (&message->msg.s1ap_UECapabilityInfoIndicationIEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
|
||||
ret = s1ap_decode_s1ap_nasnondeliveryindication_ies (&message->msg.s1ap_NASNonDeliveryIndication_IEs, &initiating_p->value);
|
||||
break;
|
||||
|
||||
default:
|
||||
AssertFatal( 0 , "Unknown procedure ID (%d) for initiating message\n",
|
||||
(int)initiating_p->procedureCode);
|
||||
return -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
int et_s1ap_decode_successful_outcome(s1ap_message *message, S1ap_SuccessfulOutcome_t *successfullOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
DevAssert(successfullOutcome_p != NULL);
|
||||
|
||||
message->procedureCode = successfullOutcome_p->procedureCode;
|
||||
message->criticality = successfullOutcome_p->criticality;
|
||||
|
||||
switch(successfullOutcome_p->procedureCode) {
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
ret = s1ap_decode_s1ap_s1setupresponseies(
|
||||
&message->msg.s1ap_S1SetupResponseIEs, &successfullOutcome_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
ret = s1ap_decode_s1ap_initialcontextsetupresponseies (&message->msg.s1ap_InitialContextSetupResponseIEs, &successfullOutcome_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
ret = s1ap_decode_s1ap_uecontextreleasecompleteies (&message->msg.s1ap_UEContextReleaseCompleteIEs, &successfullOutcome_p->value);
|
||||
break;
|
||||
|
||||
default:
|
||||
AssertFatal(0, "Unknown procedure ID (%d) for successfull outcome message\n",
|
||||
(int)successfullOutcome_p->procedureCode);
|
||||
return -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
int et_s1ap_decode_unsuccessful_outcome(s1ap_message *message, S1ap_UnsuccessfulOutcome_t *unSuccessfullOutcome_p)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
DevAssert(unSuccessfullOutcome_p != NULL);
|
||||
|
||||
message->procedureCode = unSuccessfullOutcome_p->procedureCode;
|
||||
message->criticality = unSuccessfullOutcome_p->criticality;
|
||||
|
||||
switch(unSuccessfullOutcome_p->procedureCode) {
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
ret = s1ap_decode_s1ap_s1setupfailureies(&message->msg.s1ap_S1SetupFailureIEs, &unSuccessfullOutcome_p->value);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
ret = s1ap_decode_s1ap_initialcontextsetupfailureies (&message->msg.s1ap_InitialContextSetupFailureIEs, &unSuccessfullOutcome_p->value);
|
||||
break;
|
||||
|
||||
default:
|
||||
AssertFatal(0,"Unknown procedure ID (%d) for unsuccessfull outcome message\n",
|
||||
(int)unSuccessfullOutcome_p->procedureCode);
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
int et_s1ap_decode_pdu(S1AP_PDU_t * const pdu, s1ap_message * const message, const uint8_t * const buffer, const uint32_t length)
|
||||
int et_s1ap_decode_pdu(S1AP_PDU_t *const pdu, const uint8_t *const buffer, const uint32_t length)
|
||||
{
|
||||
asn_dec_rval_t dec_ret;
|
||||
|
||||
DevAssert(buffer != NULL);
|
||||
|
||||
memset((void *)pdu, 0, sizeof(S1AP_PDU_t));
|
||||
|
||||
memset((void *)pdu, 0, sizeof(S1AP_S1AP_PDU_t));
|
||||
dec_ret = aper_decode(NULL,
|
||||
&asn_DEF_S1AP_PDU,
|
||||
&asn_DEF_S1AP_S1AP_PDU,
|
||||
(void **)&pdu,
|
||||
buffer,
|
||||
length,
|
||||
@@ -174,32 +54,14 @@ int et_s1ap_decode_pdu(S1AP_PDU_t * const pdu, s1ap_message * const message, con
|
||||
return -1;
|
||||
}
|
||||
|
||||
message->direction = pdu->present;
|
||||
|
||||
switch(pdu->present) {
|
||||
case S1AP_PDU_PR_initiatingMessage:
|
||||
return et_s1ap_decode_initiating_message(message,
|
||||
&pdu->choice.initiatingMessage);
|
||||
|
||||
case S1AP_PDU_PR_successfulOutcome:
|
||||
return et_s1ap_decode_successful_outcome(message,
|
||||
&pdu->choice.successfulOutcome);
|
||||
|
||||
case S1AP_PDU_PR_unsuccessfulOutcome:
|
||||
return et_s1ap_decode_unsuccessful_outcome(message,
|
||||
&pdu->choice.unsuccessfulOutcome);
|
||||
|
||||
default:
|
||||
AssertFatal(0, "Unknown presence (%d) or not implemented\n", (int)pdu->present);
|
||||
break;
|
||||
}
|
||||
return -1;
|
||||
return dec_ret.code;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void et_decode_s1ap(et_s1ap_t * const s1ap)
|
||||
void et_decode_s1ap(et_s1ap_t *const s1ap)
|
||||
{
|
||||
if (NULL != s1ap) {
|
||||
if (et_s1ap_decode_pdu(&s1ap->pdu, &s1ap->message, s1ap->binary_stream, s1ap->binary_stream_allocated_size) < 0) {
|
||||
if (et_s1ap_decode_pdu(&s1ap->pdu, s1ap->binary_stream, s1ap->binary_stream_allocated_size) < 0) {
|
||||
AssertFatal (0, "ERROR %s() Cannot decode S1AP message!\n", __FUNCTION__);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
#include "play_scenario.h"
|
||||
#include "s1ap_ies_defs.h"
|
||||
#include "play_scenario_s1ap_eNB_defs.h"
|
||||
#include "timer.h"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
extern int g_max_speed;
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
|
||||
|
||||
#include "intertask_interface.h"
|
||||
#include "timer.h"
|
||||
#include "platform_types.h"
|
||||
#include "assertions.h"
|
||||
#include "conversions.h"
|
||||
@@ -181,15 +180,15 @@ void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id,
|
||||
//------------------------------------------------------------------------------
|
||||
int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packet_t * const rx_packet)
|
||||
{
|
||||
S1ap_MME_UE_S1AP_ID_t scenario_mme_ue_s1ap_id = 0;
|
||||
S1ap_MME_UE_S1AP_ID_t rx_mme_ue_s1ap_id = 0;
|
||||
S1AP_MME_UE_S1AP_ID_t scenario_mme_ue_s1ap_id = 0;
|
||||
S1AP_MME_UE_S1AP_ID_t rx_mme_ue_s1ap_id = 0;
|
||||
S1AP_PDU_PR present;
|
||||
|
||||
present = rx_packet->sctp_hdr.u.data_hdr.payload.pdu.present;
|
||||
|
||||
switch (rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode) {
|
||||
case S1ap_ProcedureCode_id_HandoverPreparation:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
case S1AP_ProcedureCode_id_HandoverPreparation:
|
||||
if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequiredIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequiredIEs.mme_ue_s1ap_id;
|
||||
} else {
|
||||
@@ -198,36 +197,36 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_HandoverResourceAllocation:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
case S1AP_ProcedureCode_id_HandoverResourceAllocation:
|
||||
if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestIEs.mme_ue_s1ap_id;
|
||||
} else if (present == S1AP_PDU_PR_successfulOutcome) {
|
||||
} else if (present == S1AP_S1AP_PDU_PR_successfulOutcome) {
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestAcknowledgeIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestAcknowledgeIEs.mme_ue_s1ap_id;
|
||||
} else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
|
||||
} else if (present == S1AP_S1AP_PDU_PR_unsuccessfulOutcome) {
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverFailureIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverFailureIEs.mme_ue_s1ap_id;
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_HandoverNotification:
|
||||
case S1AP_ProcedureCode_id_HandoverNotification:
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverNotifyIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverNotifyIEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_PathSwitchRequest:
|
||||
case S1AP_ProcedureCode_id_PathSwitchRequest:
|
||||
//rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PathSwitchRequestIEs.mme_ue_s1ap_id;
|
||||
//scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PathSwitchRequestIEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_HandoverCancel:
|
||||
case S1AP_ProcedureCode_id_HandoverCancel:
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCancelIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCancelIEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_E_RABSetup:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
case S1AP_ProcedureCode_id_E_RABSetup:
|
||||
if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupRequestIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupRequestIEs.mme_ue_s1ap_id;
|
||||
} else {
|
||||
@@ -456,29 +455,29 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
|
||||
}*/
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_eNBDirectInformationTransfer:
|
||||
case S1AP_ProcedureCode_id_eNBDirectInformationTransfer:
|
||||
//rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBDirectInformationTransferIEs.mme_ue_s1ap_id;
|
||||
//scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBDirectInformationTransferIEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_MMEDirectInformationTransfer:
|
||||
case S1AP_ProcedureCode_id_MMEDirectInformationTransfer:
|
||||
//rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEDirectInformationTransferIEs.mme_ue_s1ap_id;
|
||||
//scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEDirectInformationTransferIEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_PrivateMessage:
|
||||
case S1ap_ProcedureCode_id_eNBConfigurationTransfer:
|
||||
case S1ap_ProcedureCode_id_MMEConfigurationTransfer:
|
||||
case S1AP_ProcedureCode_id_PrivateMessage:
|
||||
case S1AP_ProcedureCode_id_eNBConfigurationTransfer:
|
||||
case S1AP_ProcedureCode_id_MMEConfigurationTransfer:
|
||||
AssertFatal(0, "TODO");
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_CellTrafficTrace:
|
||||
case S1AP_ProcedureCode_id_CellTrafficTrace:
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_CellTrafficTraceIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_CellTrafficTraceIEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_Kill:
|
||||
/*if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
case S1AP_ProcedureCode_id_Kill:
|
||||
/*if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillRequestIEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillRequestIEs.mme_ue_s1ap_id;
|
||||
} else {
|
||||
@@ -487,22 +486,22 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
|
||||
}*/
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_downlinkUEAssociatedLPPaTransport:
|
||||
case S1AP_ProcedureCode_id_downlinkUEAssociatedLPPaTransport:
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_uplinkUEAssociatedLPPaTransport:
|
||||
case S1AP_ProcedureCode_id_uplinkUEAssociatedLPPaTransport:
|
||||
rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport:
|
||||
case S1AP_ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport:
|
||||
//rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
//scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport:
|
||||
case S1AP_ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport:
|
||||
//rx_mme_ue_s1ap_id = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
//scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
|
||||
break;
|
||||
@@ -510,9 +509,11 @@ int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packe
|
||||
default:
|
||||
AssertFatal(0, "Unknown procedure code %ld", rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode);
|
||||
}
|
||||
|
||||
if (scenario_mme_ue_s1ap_id != rx_mme_ue_s1ap_id) {
|
||||
S1AP_DEBUG("%s() Updating mme_ue_s1ap_id %u -> %u \n", __FUNCTION__, scenario_mme_ue_s1ap_id, rx_mme_ue_s1ap_id);
|
||||
et_packet_t * p = spacket;
|
||||
et_packet_t *p = spacket;
|
||||
|
||||
while (p) {
|
||||
et_s1ap_update_mme_ue_s1ap_id(p, scenario_mme_ue_s1ap_id, rx_mme_ue_s1ap_id);
|
||||
p = p->next;
|
||||
@@ -672,8 +673,9 @@ int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind)
|
||||
packet->packet_number, packet->original_frame_number);
|
||||
while (comp_results) {
|
||||
S1AP_DEBUG("Result err code %s(%u) ASN1 struct name %s\n",
|
||||
et_error_match2str(comp_results->err_code), comp_results->err_code, comp_results->name);
|
||||
// (each asn1 rc <= 166 (enum e_S1ap_ProtocolIE_ID, in generated file S1ap_ProtocolIE_ID.h))
|
||||
et_error_match2str(comp_results->err_code), comp_results->err_code, comp_results->name);
|
||||
|
||||
// (each asn1 rc <= 166 (enum e_S1AP_ProtocolIE_ID, in generated file S1AP_ProtocolIE_ID.h))
|
||||
if (comp_results->err_code == COMPARE_ERR_CODE_NO_MATCH) {
|
||||
//TODO MME_UE_S1AP_ID, etc.
|
||||
// get latest error code
|
||||
@@ -1089,6 +1091,7 @@ void *et_s1ap_eNB_task(void *arg)
|
||||
|
||||
switch (ITTI_MSG_ID(received_msg)) {
|
||||
case TERMINATE_MESSAGE:
|
||||
S1AP_WARN("*** Exiting S1AP thread\n");
|
||||
itti_exit_task();
|
||||
break;
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
|
||||
|
||||
#include "intertask_interface.h"
|
||||
#include "timer.h"
|
||||
#include "platform_types.h"
|
||||
#include "assertions.h"
|
||||
#include "conversions.h"
|
||||
@@ -56,400 +55,9 @@ extern et_scenario_t *g_scenario;
|
||||
extern uint32_t g_constraints;
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
asn_comp_rval_t * et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message * const m1, s1ap_message * const m2, const uint32_t constraints)
|
||||
{
|
||||
asn_comp_rval_t *ret = NULL;
|
||||
AssertFatal(m1 != NULL, "bad parameter m1");
|
||||
AssertFatal(m2 != NULL, "bad parameter m2");
|
||||
AssertFatal((present == S1AP_PDU_PR_initiatingMessage) ||
|
||||
(present == S1AP_PDU_PR_successfulOutcome) ||
|
||||
(present == S1AP_PDU_PR_unsuccessfulOutcome) , "Bad parameter S1AP_PDU_PR present ");
|
||||
AssertFatal( m1->procedureCode == m2->procedureCode, "Bad parameters: no matching procedure codes");
|
||||
|
||||
|
||||
// some cases can never occur since uplink only.
|
||||
switch (m1->procedureCode) {
|
||||
case S1ap_ProcedureCode_id_HandoverPreparation:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_handoverrequiredies(
|
||||
&m1->msg.s1ap_HandoverRequiredIEs,
|
||||
&m2->msg.s1ap_HandoverRequiredIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_handovercommandies(
|
||||
&m1->msg.s1ap_HandoverCommandIEs,
|
||||
&m2->msg.s1ap_HandoverCommandIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_HandoverResourceAllocation:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_handoverrequesties(
|
||||
&m1->msg.s1ap_HandoverRequestIEs,
|
||||
&m2->msg.s1ap_HandoverRequestIEs);
|
||||
} else if (present == S1AP_PDU_PR_successfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_handoverrequestacknowledgeies(
|
||||
&m1->msg.s1ap_HandoverRequestAcknowledgeIEs,
|
||||
&m2->msg.s1ap_HandoverRequestAcknowledgeIEs);
|
||||
} else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_handoverfailureies(
|
||||
&m1->msg.s1ap_HandoverFailureIEs,
|
||||
&m2->msg.s1ap_HandoverFailureIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_HandoverNotification:
|
||||
ret = s1ap_compare_s1ap_handovernotifyies(
|
||||
&m1->msg.s1ap_HandoverNotifyIEs,
|
||||
&m2->msg.s1ap_HandoverNotifyIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_PathSwitchRequest:
|
||||
ret = s1ap_compare_s1ap_pathswitchrequesties(
|
||||
&m1->msg.s1ap_PathSwitchRequestIEs,
|
||||
&m2->msg.s1ap_PathSwitchRequestIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_HandoverCancel:
|
||||
ret = s1ap_compare_s1ap_handovercancelies(
|
||||
&m1->msg.s1ap_HandoverCancelIEs,
|
||||
&m2->msg.s1ap_HandoverCancelIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_E_RABSetup:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_e_rabsetuprequesties(
|
||||
&m1->msg.s1ap_E_RABSetupRequestIEs,
|
||||
&m2->msg.s1ap_E_RABSetupRequestIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_e_rabsetupresponseies(
|
||||
&m1->msg.s1ap_E_RABSetupResponseIEs,
|
||||
&m2->msg.s1ap_E_RABSetupResponseIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_E_RABModify:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_e_rabmodifyrequesties(
|
||||
&m1->msg.s1ap_E_RABModifyRequestIEs,
|
||||
&m2->msg.s1ap_E_RABModifyRequestIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_e_rabmodifyresponseies(
|
||||
&m1->msg.s1ap_E_RABModifyResponseIEs,
|
||||
&m2->msg.s1ap_E_RABModifyResponseIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_E_RABRelease:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_e_rabreleasecommandies(
|
||||
&m1->msg.s1ap_E_RABReleaseCommandIEs,
|
||||
&m2->msg.s1ap_E_RABReleaseCommandIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_e_rabreleaseresponseies(
|
||||
&m1->msg.s1ap_E_RABReleaseResponseIEs,
|
||||
&m2->msg.s1ap_E_RABReleaseResponseIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_E_RABReleaseIndication:
|
||||
ret = s1ap_compare_s1ap_e_rabreleaseindicationies(
|
||||
&m1->msg.s1ap_E_RABReleaseIndicationIEs,
|
||||
&m2->msg.s1ap_E_RABReleaseIndicationIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_initialcontextsetuprequesties(
|
||||
&m1->msg.s1ap_InitialContextSetupRequestIEs,
|
||||
&m2->msg.s1ap_InitialContextSetupRequestIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_initialcontextsetupresponseies(
|
||||
&m1->msg.s1ap_InitialContextSetupResponseIEs,
|
||||
&m2->msg.s1ap_InitialContextSetupResponseIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_Paging:
|
||||
ret = s1ap_compare_s1ap_pagingies(
|
||||
&m1->msg.s1ap_PagingIEs,
|
||||
&m2->msg.s1ap_PagingIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_downlinkNASTransport:
|
||||
ret = s1ap_compare_s1ap_downlinknastransporties(
|
||||
&m1->msg.s1ap_DownlinkNASTransportIEs,
|
||||
&m2->msg.s1ap_DownlinkNASTransportIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_initialUEMessage:
|
||||
ret = s1ap_compare_s1ap_initialuemessageies(
|
||||
&m1->msg.s1ap_InitialUEMessageIEs,
|
||||
&m2->msg.s1ap_InitialUEMessageIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_uplinkNASTransport:
|
||||
ret = s1ap_compare_s1ap_uplinknastransporties(
|
||||
&m1->msg.s1ap_UplinkNASTransportIEs,
|
||||
&m2->msg.s1ap_UplinkNASTransportIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_Reset:
|
||||
ret = s1ap_compare_s1ap_reseties(
|
||||
&m1->msg.s1ap_ResetIEs,
|
||||
&m2->msg.s1ap_ResetIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_ErrorIndication:
|
||||
ret = s1ap_compare_s1ap_errorindicationies(
|
||||
&m1->msg.s1ap_ErrorIndicationIEs,
|
||||
&m2->msg.s1ap_ErrorIndicationIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_NASNonDeliveryIndication:
|
||||
ret = s1ap_compare_s1ap_nasnondeliveryindication_ies(
|
||||
&m1->msg.s1ap_NASNonDeliveryIndication_IEs,
|
||||
&m2->msg.s1ap_NASNonDeliveryIndication_IEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_S1Setup:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_s1setuprequesties(
|
||||
&m1->msg.s1ap_S1SetupRequestIEs,
|
||||
&m2->msg.s1ap_S1SetupRequestIEs);
|
||||
} else if (present == S1AP_PDU_PR_successfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_s1setupresponseies(
|
||||
&m1->msg.s1ap_S1SetupResponseIEs,
|
||||
&m2->msg.s1ap_S1SetupResponseIEs);
|
||||
} else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_s1setupfailureies(
|
||||
&m1->msg.s1ap_S1SetupFailureIEs,
|
||||
&m2->msg.s1ap_S1SetupFailureIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextReleaseRequest:
|
||||
ret = s1ap_compare_s1ap_uecontextreleaserequesties(
|
||||
&m1->msg.s1ap_UEContextReleaseRequestIEs,
|
||||
&m2->msg.s1ap_UEContextReleaseRequestIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_DownlinkS1cdma2000tunneling:
|
||||
ret = s1ap_compare_s1ap_downlinks1cdma2000tunnelingies(
|
||||
&m1->msg.s1ap_DownlinkS1cdma2000tunnelingIEs,
|
||||
&m2->msg.s1ap_DownlinkS1cdma2000tunnelingIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UplinkS1cdma2000tunneling:
|
||||
ret = s1ap_compare_s1ap_uplinks1cdma2000tunnelingies(
|
||||
&m1->msg.s1ap_UplinkS1cdma2000tunnelingIEs,
|
||||
&m2->msg.s1ap_UplinkS1cdma2000tunnelingIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextModification:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_uecontextmodificationrequesties(
|
||||
&m1->msg.s1ap_UEContextModificationRequestIEs,
|
||||
&m2->msg.s1ap_UEContextModificationRequestIEs);
|
||||
} else if (present == S1AP_PDU_PR_successfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_uecontextmodificationresponseies(
|
||||
&m1->msg.s1ap_UEContextModificationResponseIEs,
|
||||
&m2->msg.s1ap_UEContextModificationResponseIEs);
|
||||
} else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_uecontextmodificationfailureies(
|
||||
&m1->msg.s1ap_UEContextModificationFailureIEs,
|
||||
&m2->msg.s1ap_UEContextModificationFailureIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
|
||||
ret = s1ap_compare_s1ap_uecapabilityinfoindicationies(
|
||||
&m1->msg.s1ap_UECapabilityInfoIndicationIEs,
|
||||
&m2->msg.s1ap_UECapabilityInfoIndicationIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_uecontextreleasecommandies(
|
||||
&m1->msg.s1ap_UEContextReleaseCommandIEs,
|
||||
&m2->msg.s1ap_UEContextReleaseCommandIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_uecontextreleasecompleteies(
|
||||
&m1->msg.s1ap_UEContextReleaseCompleteIEs,
|
||||
&m2->msg.s1ap_UEContextReleaseCompleteIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_eNBStatusTransfer:
|
||||
ret = s1ap_compare_s1ap_enbstatustransferies(
|
||||
&m1->msg.s1ap_ENBStatusTransferIEs,
|
||||
&m2->msg.s1ap_ENBStatusTransferIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_MMEStatusTransfer:
|
||||
ret = s1ap_compare_s1ap_mmestatustransferies(
|
||||
&m1->msg.s1ap_MMEStatusTransferIEs,
|
||||
&m2->msg.s1ap_MMEStatusTransferIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_DeactivateTrace:
|
||||
ret = s1ap_compare_s1ap_deactivatetraceies(
|
||||
&m1->msg.s1ap_DeactivateTraceIEs,
|
||||
&m2->msg.s1ap_DeactivateTraceIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_TraceStart:
|
||||
ret = s1ap_compare_s1ap_tracestarties(
|
||||
&m1->msg.s1ap_TraceStartIEs,
|
||||
&m2->msg.s1ap_TraceStartIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_TraceFailureIndication:
|
||||
ret = s1ap_compare_s1ap_tracefailureindicationies(
|
||||
&m1->msg.s1ap_TraceFailureIndicationIEs,
|
||||
&m2->msg.s1ap_TraceFailureIndicationIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_ENBConfigurationUpdate:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_enbconfigurationupdateies(
|
||||
&m1->msg.s1ap_ENBConfigurationUpdateIEs,
|
||||
&m2->msg.s1ap_ENBConfigurationUpdateIEs);
|
||||
} else if (present == S1AP_PDU_PR_successfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_enbconfigurationupdateacknowledgeies(
|
||||
&m1->msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs,
|
||||
&m2->msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_enbconfigurationupdatefailureies(
|
||||
&m1->msg.s1ap_ENBConfigurationUpdateFailureIEs,
|
||||
&m2->msg.s1ap_ENBConfigurationUpdateFailureIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_MMEConfigurationUpdate:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_mmeconfigurationupdateies(
|
||||
&m1->msg.s1ap_MMEConfigurationUpdateIEs,
|
||||
&m2->msg.s1ap_MMEConfigurationUpdateIEs);
|
||||
} else if (present == S1AP_PDU_PR_successfulOutcome) {
|
||||
ret = s1ap_compare_s1ap_mmeconfigurationupdateacknowledgeies(
|
||||
&m1->msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs,
|
||||
&m2->msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_mmeconfigurationupdatefailureies(
|
||||
&m1->msg.s1ap_MMEConfigurationUpdateFailureIEs,
|
||||
&m2->msg.s1ap_MMEConfigurationUpdateFailureIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_LocationReportingControl:
|
||||
ret = s1ap_compare_s1ap_locationreportingcontrolies(
|
||||
&m1->msg.s1ap_LocationReportingControlIEs,
|
||||
&m2->msg.s1ap_LocationReportingControlIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_LocationReportingFailureIndication:
|
||||
ret = s1ap_compare_s1ap_locationreportingfailureindicationies(
|
||||
&m1->msg.s1ap_LocationReportingFailureIndicationIEs,
|
||||
&m2->msg.s1ap_LocationReportingFailureIndicationIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_LocationReport:
|
||||
ret = s1ap_compare_s1ap_locationreporties(
|
||||
&m1->msg.s1ap_LocationReportIEs,
|
||||
&m2->msg.s1ap_LocationReportIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_OverloadStart:
|
||||
ret = s1ap_compare_s1ap_overloadstarties(
|
||||
&m1->msg.s1ap_OverloadStartIEs,
|
||||
&m2->msg.s1ap_OverloadStartIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_OverloadStop:
|
||||
ret = s1ap_compare_s1ap_overloadstopies(
|
||||
&m1->msg.s1ap_OverloadStopIEs,
|
||||
&m2->msg.s1ap_OverloadStopIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_WriteReplaceWarning:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_writereplacewarningrequesties(
|
||||
&m1->msg.s1ap_WriteReplaceWarningRequestIEs,
|
||||
&m2->msg.s1ap_WriteReplaceWarningRequestIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_writereplacewarningresponseies(
|
||||
&m1->msg.s1ap_WriteReplaceWarningResponseIEs,
|
||||
&m2->msg.s1ap_WriteReplaceWarningResponseIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_eNBDirectInformationTransfer:
|
||||
ret = s1ap_compare_s1ap_enbdirectinformationtransferies(
|
||||
&m1->msg.s1ap_ENBDirectInformationTransferIEs,
|
||||
&m2->msg.s1ap_ENBDirectInformationTransferIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_MMEDirectInformationTransfer:
|
||||
|
||||
ret = s1ap_compare_s1ap_mmedirectinformationtransferies(
|
||||
&m1->msg.s1ap_MMEDirectInformationTransferIEs,
|
||||
&m2->msg.s1ap_MMEDirectInformationTransferIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_PrivateMessage:
|
||||
case S1ap_ProcedureCode_id_eNBConfigurationTransfer:
|
||||
case S1ap_ProcedureCode_id_MMEConfigurationTransfer:
|
||||
AssertFatal(0, "TODO");
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_CellTrafficTrace:
|
||||
ret = s1ap_compare_s1ap_celltraffictraceies(
|
||||
&m1->msg.s1ap_CellTrafficTraceIEs,
|
||||
&m2->msg.s1ap_CellTrafficTraceIEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_Kill:
|
||||
if (present == S1AP_PDU_PR_initiatingMessage) {
|
||||
ret = s1ap_compare_s1ap_killrequesties(
|
||||
&m1->msg.s1ap_KillRequestIEs,
|
||||
&m2->msg.s1ap_KillRequestIEs);
|
||||
} else {
|
||||
ret = s1ap_compare_s1ap_killresponseies(
|
||||
&m1->msg.s1ap_KillResponseIEs,
|
||||
&m2->msg.s1ap_KillResponseIEs);
|
||||
}
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_downlinkUEAssociatedLPPaTransport:
|
||||
ret = s1ap_compare_s1ap_downlinkueassociatedlppatransport_ies(
|
||||
&m1->msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs,
|
||||
&m2->msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_uplinkUEAssociatedLPPaTransport:
|
||||
ret = s1ap_compare_s1ap_uplinkueassociatedlppatransport_ies(
|
||||
&m1->msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs,
|
||||
&m2->msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport:
|
||||
ret = s1ap_compare_s1ap_downlinknonueassociatedlppatransport_ies(
|
||||
&m1->msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs,
|
||||
&m2->msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs);
|
||||
break;
|
||||
|
||||
case S1ap_ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport:
|
||||
ret = s1ap_compare_s1ap_uplinknonueassociatedlppatransport_ies(
|
||||
&m1->msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs,
|
||||
&m2->msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs);
|
||||
break;
|
||||
|
||||
default:
|
||||
AssertFatal(0, "Unknown procedure code %ld", m1->procedureCode);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
//asn_comp_rval_t * et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message * const m1, s1ap_message * const m2, const uint32_t constraints)
|
||||
//{
|
||||
//}
|
||||
|
||||
void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, const S1ap_MME_UE_S1AP_ID_t new_id)
|
||||
{
|
||||
@@ -583,8 +191,6 @@ void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t * const s1ap_payload, xmlNodeSe
|
||||
//------------------------------------------------------------------------------
|
||||
int et_s1ap_update_mme_ue_s1ap_id(et_packet_t * const packet, const S1ap_MME_UE_S1AP_ID_t old_id, const S1ap_MME_UE_S1AP_ID_t new_id)
|
||||
{
|
||||
|
||||
|
||||
xmlChar xpath_expression[ET_XPATH_EXPRESSION_MAX_LENGTH];
|
||||
int ret = 0;
|
||||
xmlDocPtr doc = NULL;
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "s1ap_common.h"
|
||||
#include "s1ap_eNB.h"
|
||||
#include "s1ap_mme.h"
|
||||
#include "s1ap_ies_defs.h"
|
||||
|
||||
char ip_addr[] = "127.0.0.1";
|
||||
|
||||
|
||||
@@ -32,13 +32,12 @@
|
||||
#include "mme_config.h"
|
||||
#include "gtpv1u_sgw_defs.h"
|
||||
|
||||
#include "intertask_interface_init.h"
|
||||
#include "intertask_interface.h"
|
||||
|
||||
#include "sctp_primitives_server.h"
|
||||
#include "udp_primitives_server.h"
|
||||
#include "s1ap_mme.h"
|
||||
#include "log.h"
|
||||
#include "timer.h"
|
||||
#include "sgw_lite_defs.h"
|
||||
#include "ipv4_defs.h"
|
||||
|
||||
@@ -69,7 +68,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
/* Calling each layer init function */
|
||||
log_init(&mme_config);
|
||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, NULL);
|
||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
|
||||
sctp_init(&mme_config);
|
||||
udp_init(&mme_config);
|
||||
s1ap_mme_init(&mme_config);
|
||||
|
||||
@@ -145,16 +145,16 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
for (i = 0; i < sizeof(s1ap_test) / sizeof(s1ap_test_t); i++) {
|
||||
struct s1ap_message_s message;
|
||||
S1AP_S1AP_PDU_t pdu;
|
||||
uint8_t *buffer;
|
||||
uint32_t length;
|
||||
memset(&message, 0, sizeof(struct s1ap_message_s));
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
printf("Trying to decode %s procedure with asn1c decoder\n",
|
||||
s1ap_test[i].procedure_name);
|
||||
|
||||
if (s1ap_mme_decode_pdu(&message, s1ap_test[i].buffer,
|
||||
if (s1ap_mme_decode_pdu(&pdu, s1ap_test[i].buffer,
|
||||
s1ap_test[i].buf_len) < 0) {
|
||||
if (s1ap_eNB_decode_pdu(&message, s1ap_test[i].buffer,
|
||||
if (s1ap_eNB_decode_pdu(&pdu, s1ap_test[i].buffer,
|
||||
s1ap_test[i].buf_len) < 0) {
|
||||
printf("Failed to decode this message\n");
|
||||
} else {
|
||||
@@ -167,7 +167,7 @@ int main(int argc, char *argv[])
|
||||
printf("Trying to encode %s procedure with asn1c encoder\n",
|
||||
s1ap_test[i].procedure_name);
|
||||
|
||||
if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
|
||||
if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
|
||||
printf("Failed to encode this message on MME side, trying eNB side\n");
|
||||
} else {
|
||||
compare_buffer(buffer, length, s1ap_test[i].buffer, s1ap_test[i].buf_len);
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "s1ap_common.h"
|
||||
#include "s1ap_eNB.h"
|
||||
#include "s1ap_mme.h"
|
||||
#include "s1ap_ies_defs.h"
|
||||
|
||||
#include "s1ap_eNB_encoder.h"
|
||||
#include "s1ap_eNB_decoder.h"
|
||||
|
||||
@@ -40,9 +40,7 @@
|
||||
|
||||
#include "UTIL/LOG/log_extern.h"
|
||||
#include "assertions.h"
|
||||
#include "intertask_interface_init.h"
|
||||
#include "intertask_interface.h"
|
||||
#include "timer.h"
|
||||
#include "sctp_eNB_task.h"
|
||||
#include "s1ap_eNB.h"
|
||||
#include "enb_config.h"
|
||||
@@ -57,7 +55,6 @@ static void *eNB_app_task (void *args_p);
|
||||
void mme_test_s1_start_test(instance_t instance);
|
||||
//------------------------------------------------------------------------------
|
||||
static char *conf_config_file_name = NULL;
|
||||
static char *itti_dump_file = NULL;
|
||||
const Enb_properties_array_t *enb_properties = NULL;
|
||||
int16_t glog_level = LOG_INFO;
|
||||
int16_t glog_verbosity = LOG_MED;
|
||||
@@ -77,10 +74,6 @@ static void get_options (int argc, char **argv)
|
||||
|
||||
while ((c = getopt_long (argc, argv, "K:g:G:O:",NULL,NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'K':
|
||||
itti_dump_file = strdup(optarg);
|
||||
break;
|
||||
|
||||
case 'O':
|
||||
conf_config_file_name = optarg;
|
||||
break;
|
||||
@@ -316,7 +309,7 @@ int main( int argc, char **argv )
|
||||
/* Read eNB configuration file */
|
||||
enb_properties = enb_config_init(conf_config_file_name);
|
||||
|
||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, itti_dump_file);
|
||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
|
||||
|
||||
itti_wait_ready(1);
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
#include "intertask_interface.h"
|
||||
#include "s1ap_eNB_default_values.h"
|
||||
#include "s1ap_common.h"
|
||||
#include "s1ap_ies_defs.h"
|
||||
#include "s1ap_eNB_defs.h"
|
||||
#include "s1ap_eNB_management_procedures.h"
|
||||
#include "assertions.h"
|
||||
@@ -162,8 +161,8 @@ void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
|
||||
}
|
||||
|
||||
void s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
|
||||
net_ip_address_t *mme_ip_address,
|
||||
net_ip_address_t *local_ip_addr)
|
||||
net_ip_address_t *mme_ip_address,
|
||||
net_ip_address_t *local_ip_addr)
|
||||
{
|
||||
MessageDef *message_p = NULL;
|
||||
sctp_new_association_req_t *sctp_new_association_req_p = NULL;
|
||||
|
||||
Reference in New Issue
Block a user