change d_assert to d_error if target eNB is not found
This commit is contained in:
parent
6ff80f4457
commit
82dee88309
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue