change d_assert to d_error if target eNB is not found

This commit is contained in:
Sukchan Lee 2018-03-23 13:14:56 +09:00
parent 6ff80f4457
commit 82dee88309
6 changed files with 41 additions and 36 deletions

View File

@ -1600,7 +1600,6 @@ status_t s1ap_build_handover_request(
S1AP_MME_UE_S1AP_ID_t *mme_ue_s1ap_id,
S1AP_HandoverType_t *handovertype,
S1AP_Cause_t *cause,
S1AP_TargetID_t *targetid,
S1AP_Source_ToTarget_TransparentContainer_t
*source_totarget_transparentContainer)
{

View File

@ -42,7 +42,6 @@ CORE_DECLARE(status_t) s1ap_build_handover_request(
S1AP_MME_UE_S1AP_ID_t *mme_ue_s1ap_id,
S1AP_HandoverType_t *handovertype,
S1AP_Cause_t *cause,
S1AP_TargetID_t *targetid,
S1AP_Source_ToTarget_TransparentContainer_t
*source_totarget_transparentContainer);

View File

@ -1347,8 +1347,12 @@ void s1ap_handle_enb_configuration_transfer(
target_enb_id, target_tac);
target_enb = mme_enb_find_by_enb_id(target_enb_id);
d_assert(target_enb, return,
"Cannot find target eNB = %d", target_enb_id);
if (target_enb == NULL)
{
d_error("Cannot find target eNB-id[%d] "
"in eNB-Configuration-Transfer", target_enb_id);
return;
}
rv = s1ap_send_mme_configuration_transfer(target_enb, pkbuf);
d_assert(rv == CORE_OK,,);
@ -1384,6 +1388,8 @@ void s1ap_handle_handover_required(mme_enb_t *enb, s1ap_message_t *message)
enb_ue_t *source_ue = NULL;
mme_ue_t *mme_ue = NULL;
mme_enb_t *target_enb = NULL;
c_uint32_t target_enb_id = 0;
d_trace(3, "[MME] Handover required\n");
for (i = 0; i < HandoverRequired->protocolIEs.list.count; i++)
@ -1418,6 +1424,31 @@ void s1ap_handle_handover_required(mme_enb_t *enb, s1ap_message_t *message)
d_trace(5, " IP[%s] ENB_ID[%d]\n",
CORE_ADDR(enb->addr, buf), enb->enb_id);
d_assert(TargetID, return,);
switch(TargetID->present)
{
case S1AP_TargetID_PR_targeteNB_ID:
{
s1ap_ENB_ID_to_uint32(
&TargetID->choice.targeteNB_ID->global_ENB_ID.eNB_ID,
&target_enb_id);
break;
}
default:
{
d_error("Not implemented(%d)", TargetID->present);
return;
}
}
target_enb = mme_enb_find_by_enb_id(target_enb_id);
if (target_enb == NULL)
{
d_error("Cannot find target eNB-id[%d] in Handover-Required",
target_enb_id);
return;
}
d_assert(ENB_UE_S1AP_ID, return,);
d_assert(MME_UE_S1AP_ID, return,);
source_ue = enb_ue_find_by_enb_ue_s1ap_id(enb, *ENB_UE_S1AP_ID);
@ -1453,9 +1484,9 @@ void s1ap_handle_handover_required(mme_enb_t *enb, s1ap_message_t *message)
d_assert(HandoverType, return,);
source_ue->handover_type = *HandoverType;
rv = s1ap_send_handover_request(mme_ue,
rv = s1ap_send_handover_request(mme_ue, target_enb,
ENB_UE_S1AP_ID, MME_UE_S1AP_ID,
HandoverType, Cause, TargetID,
HandoverType, Cause,
Source_ToTarget_TransparentContainer);
d_assert(rv == CORE_OK,, "s1ap send error");
}

View File

@ -372,50 +372,26 @@ status_t s1ap_send_handover_cancel_ack(enb_ue_t *source_ue)
status_t s1ap_send_handover_request(
mme_ue_t *mme_ue,
mme_enb_t *target_enb,
S1AP_ENB_UE_S1AP_ID_t *enb_ue_s1ap_id,
S1AP_MME_UE_S1AP_ID_t *mme_ue_s1ap_id,
S1AP_HandoverType_t *handovertype,
S1AP_Cause_t *cause,
S1AP_TargetID_t *targetid,
S1AP_Source_ToTarget_TransparentContainer_t
*source_totarget_transparentContainer)
{
status_t rv;
pkbuf_t *s1apbuf = NULL;
S1AP_TargetID_t *targetID = NULL;
c_uint32_t enb_id;
mme_enb_t *target_enb = NULL;
enb_ue_t *source_ue = NULL, *target_ue = NULL;
d_trace(3, "[MME] Handover request\n");
d_assert(target_enb, return CORE_ERROR, "Cannot find target eNB");
d_assert(mme_ue, return CORE_ERROR,);
source_ue = mme_ue->enb_ue;
d_assert(source_ue, return CORE_ERROR,);
d_assert(targetid, return CORE_ERROR,);
switch(targetid->present)
{
case S1AP_TargetID_PR_targeteNB_ID:
{
s1ap_ENB_ID_to_uint32(
&targetid->choice.targeteNB_ID->global_ENB_ID.eNB_ID,
&enb_id);
break;
}
default:
{
d_error("Not implemented(%d)", targetID->present);
return CORE_ERROR;
}
}
target_enb = mme_enb_find_by_enb_id(enb_id);
d_assert(target_enb, return CORE_ERROR,
"Cannot find target eNB = %d", enb_id);
d_assert(source_ue->target_ue == NULL, return CORE_ERROR,
"Handover Required Duplicated");
@ -432,7 +408,7 @@ status_t s1ap_send_handover_request(
rv = s1ap_build_handover_request(&s1apbuf, mme_ue, target_ue,
enb_ue_s1ap_id, mme_ue_s1ap_id,
handovertype, cause, targetid,
handovertype, cause,
source_totarget_transparentContainer);
d_assert(rv == CORE_OK && s1apbuf, return CORE_ERROR, "s1ap build error");

View File

@ -53,11 +53,11 @@ CORE_DECLARE(status_t) s1ap_send_handover_preparation_failure(
CORE_DECLARE(status_t) s1ap_send_handover_request(
mme_ue_t *mme_ue,
mme_enb_t *target_enb,
S1AP_ENB_UE_S1AP_ID_t *enb_ue_s1ap_id,
S1AP_MME_UE_S1AP_ID_t *mme_ue_s1ap_id,
S1AP_HandoverType_t *handovertype,
S1AP_Cause_t *cause,
S1AP_TargetID_t *targetid,
S1AP_Source_ToTarget_TransparentContainer_t
*source_totarget_transparentContainer);

View File

@ -619,7 +619,7 @@ static void handover_test2(abts_case *tc, void *data)
rv = tests1ap_enb_send(sock1, sendbuf);
ABTS_INT_EQUAL(tc, CORE_OK, rv);
/* Receive Handover Request */
/* Receive MME configuration transfer */
recvbuf = pkbuf_alloc(0, MAX_SDU_LEN);
rv = tests1ap_enb_read(sock2, recvbuf);
ABTS_INT_EQUAL(tc, CORE_OK, rv);