Switch to new enb when receive s1ap_path_switch_req

This commit is contained in:
James Park 2017-09-15 14:02:14 -07:00
parent d0fd6c4a73
commit f7a21fee06
3 changed files with 23 additions and 0 deletions

View File

@ -1079,6 +1079,24 @@ status_t enb_ue_remove_in_enb(mme_enb_t *enb)
return CORE_OK;
}
status_t enb_ue_switch_to_enb(enb_ue_t *enb_ue, mme_enb_t *new_enb)
{
d_assert(enb_ue, return CORE_ERROR, "Null param");
d_assert(enb_ue->enb, return CORE_ERROR, "Null param");
d_assert(new_enb, return CORE_ERROR, "Null param");
/* Remove from the old enb */
list_remove(&enb_ue->enb->enb_ue_list, enb_ue);
/* Add to the new enb */
list_append(&new_enb->enb_ue_list, enb_ue);
/* Switch to enb */
enb_ue->enb = new_enb;
return CORE_ERROR;
}
enb_ue_t* enb_ue_find(index_t index)
{
d_assert(index, return NULL, "Invalid Index");

View File

@ -509,6 +509,8 @@ CORE_DECLARE(enb_ue_t*) enb_ue_add(mme_enb_t *enb);
CORE_DECLARE(unsigned int) enb_ue_count();
CORE_DECLARE(status_t) enb_ue_remove(enb_ue_t *enb_ue);
CORE_DECLARE(status_t) enb_ue_remove_in_enb(mme_enb_t *enb);
CORE_DECLARE(status_t) enb_ue_switch_to_enb(enb_ue_t *enb_ue,
mme_enb_t *new_enb);
CORE_DECLARE(enb_ue_t*) enb_ue_find(index_t index);
CORE_DECLARE(enb_ue_t*) enb_ue_find_by_enb_ue_s1ap_id(mme_enb_t *enb,
c_uint32_t enb_ue_s1ap_id);

View File

@ -638,6 +638,9 @@ void s1ap_handle_path_switch_request(
d_assert(rv == CORE_OK, return, "gtp send failed");
}
/* Switch to enb */
enb_ue_switch_to_enb(enb_ue, enb);
d_trace(3, "[S1AP] PathSwitchRequest : "
"UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
enb_ue->enb_ue_s1ap_id,