forked from acouzens/open5gs
[#231] TAI-LAI configuration changed
This commit is contained in:
parent
a40d1dd2af
commit
78eeb1ad45
|
@ -113,13 +113,13 @@ int emm_build_attach_accept(
|
||||||
eps_network_feature_support->ims_vops = 1;
|
eps_network_feature_support->ims_vops = 1;
|
||||||
|
|
||||||
if (MME_P_TMSI_IS_AVAILABLE(mme_ue)) {
|
if (MME_P_TMSI_IS_AVAILABLE(mme_ue)) {
|
||||||
ogs_assert(mme_ue->vlr);
|
ogs_assert(mme_ue->csmap);
|
||||||
ogs_assert(mme_ue->p_tmsi);
|
ogs_assert(mme_ue->p_tmsi);
|
||||||
|
|
||||||
attach_accept->presencemask |=
|
attach_accept->presencemask |=
|
||||||
NAS_ATTACH_ACCEPT_LOCATION_AREA_IDENTIFICATION_PRESENT;
|
NAS_ATTACH_ACCEPT_LOCATION_AREA_IDENTIFICATION_PRESENT;
|
||||||
lai->nas_plmn_id = mme_ue->vlr->lai.nas_plmn_id;
|
lai->nas_plmn_id = mme_ue->csmap->lai.nas_plmn_id;
|
||||||
lai->lac = mme_ue->vlr->lai.lac;
|
lai->lac = mme_ue->csmap->lai.lac;
|
||||||
ogs_debug(" LAI[PLMN_ID:%06x,LAC:%d]",
|
ogs_debug(" LAI[PLMN_ID:%06x,LAC:%d]",
|
||||||
plmn_id_hexdump(&lai->nas_plmn_id), lai->lac);
|
plmn_id_hexdump(&lai->nas_plmn_id), lai->lac);
|
||||||
|
|
||||||
|
|
|
@ -137,10 +137,10 @@ int esm_handle_information_response(mme_sess_t *sess,
|
||||||
if (sess->pdn) {
|
if (sess->pdn) {
|
||||||
ogs_debug(" APN[%s]", sess->pdn->apn);
|
ogs_debug(" APN[%s]", sess->pdn->apn);
|
||||||
if (SESSION_CONTEXT_IS_AVAILABLE(mme_ue)) {
|
if (SESSION_CONTEXT_IS_AVAILABLE(mme_ue)) {
|
||||||
mme_vlr_t *vlr = mme_vlr_find_by_tai(&mme_ue->tai);
|
mme_csmap_t *csmap = mme_csmap_find_by_tai(&mme_ue->tai);
|
||||||
mme_ue->vlr = vlr;
|
mme_ue->csmap = csmap;
|
||||||
|
|
||||||
if (vlr) {
|
if (csmap) {
|
||||||
sgsap_send_location_update_request(mme_ue);
|
sgsap_send_location_update_request(mme_ue);
|
||||||
} else {
|
} else {
|
||||||
CLEAR_MME_UE_TIMER(mme_ue->t3450);
|
CLEAR_MME_UE_TIMER(mme_ue->t3450);
|
||||||
|
|
|
@ -1783,35 +1783,6 @@ mme_vlr_t *mme_vlr_find_by_addr(ogs_sockaddr_t *addr)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mme_vlr_t *mme_vlr_find_by_tai(tai_t *tai)
|
|
||||||
{
|
|
||||||
mme_vlr_t *vlr = NULL;
|
|
||||||
ogs_assert(tai);
|
|
||||||
|
|
||||||
ogs_list_for_each(&self.vlr_list, vlr) {
|
|
||||||
nas_tai_t nas_tai;
|
|
||||||
nas_from_plmn_id(&nas_tai.nas_plmn_id, &tai->plmn_id);
|
|
||||||
nas_tai.tac = tai->tac;
|
|
||||||
if (memcmp(&vlr->tai, &nas_tai, sizeof(nas_tai_t)) == 0)
|
|
||||||
return vlr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
mme_vlr_t *mme_vlr_find_by_nas_lai(nas_lai_t *lai)
|
|
||||||
{
|
|
||||||
mme_vlr_t *vlr = NULL;
|
|
||||||
ogs_assert(lai);
|
|
||||||
|
|
||||||
ogs_list_for_each(&self.vlr_list, vlr) {
|
|
||||||
if (memcmp(&vlr->lai, lai, sizeof *lai) == 0)
|
|
||||||
return vlr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
mme_csmap_t *mme_csmap_add(mme_vlr_t *vlr)
|
mme_csmap_t *mme_csmap_add(mme_vlr_t *vlr)
|
||||||
{
|
{
|
||||||
mme_csmap_t *csmap = NULL;
|
mme_csmap_t *csmap = NULL;
|
||||||
|
@ -2205,7 +2176,7 @@ mme_ue_t *mme_ue_add(enb_ue_t *enb_ue)
|
||||||
ogs_assert_if_reached();
|
ogs_assert_if_reached();
|
||||||
|
|
||||||
/* Clear VLR */
|
/* Clear VLR */
|
||||||
mme_ue->vlr = NULL;
|
mme_ue->csmap = NULL;
|
||||||
mme_ue->vlr_ostream_id = 0;
|
mme_ue->vlr_ostream_id = 0;
|
||||||
|
|
||||||
/* Add All Timers */
|
/* Add All Timers */
|
||||||
|
|
|
@ -187,8 +187,8 @@ typedef struct mme_pgw_s {
|
||||||
} mme_pgw_t;
|
} mme_pgw_t;
|
||||||
|
|
||||||
#define MME_SGSAP_IS_CONNECTED(__mME) \
|
#define MME_SGSAP_IS_CONNECTED(__mME) \
|
||||||
((__mME) && ((__mME)->vlr) && \
|
((__mME) && ((__mME)->csmap) && ((__mME)->csmap->vlr) && \
|
||||||
(OGS_FSM_CHECK(&(__mME)->vlr->sm, sgsap_state_connected)))
|
(OGS_FSM_CHECK(&(__mME)->csmap->vlr->sm, sgsap_state_connected)))
|
||||||
#define MME_P_TMSI_IS_AVAILABLE(__mME) \
|
#define MME_P_TMSI_IS_AVAILABLE(__mME) \
|
||||||
(MME_SGSAP_IS_CONNECTED(__mME) && (__mME)->p_tmsi)
|
(MME_SGSAP_IS_CONNECTED(__mME) && (__mME)->p_tmsi)
|
||||||
|
|
||||||
|
@ -199,9 +199,6 @@ typedef struct mme_vlr_s {
|
||||||
|
|
||||||
ogs_timer_t *t_conn; /* client timer to connect to server */
|
ogs_timer_t *t_conn; /* client timer to connect to server */
|
||||||
|
|
||||||
nas_tai_t tai;
|
|
||||||
nas_lai_t lai;
|
|
||||||
|
|
||||||
uint16_t max_num_of_ostreams;/* SCTP Max num of outbound streams */
|
uint16_t max_num_of_ostreams;/* SCTP Max num of outbound streams */
|
||||||
uint16_t ostream_id; /* vlr_ostream_id generator */
|
uint16_t ostream_id; /* vlr_ostream_id generator */
|
||||||
|
|
||||||
|
@ -506,7 +503,7 @@ struct mme_ue_s {
|
||||||
int session_context_will_deleted;
|
int session_context_will_deleted;
|
||||||
|
|
||||||
gtp_node_t *gnode;
|
gtp_node_t *gnode;
|
||||||
mme_vlr_t *vlr;
|
mme_csmap_t *csmap;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MME_HAVE_SGW_S1U_PATH(__sESS) \
|
#define MME_HAVE_SGW_S1U_PATH(__sESS) \
|
||||||
|
@ -665,10 +662,7 @@ void mme_vlr_remove_all();
|
||||||
|
|
||||||
ogs_socknode_t *mme_vlr_new_node(mme_vlr_t *vlr);
|
ogs_socknode_t *mme_vlr_new_node(mme_vlr_t *vlr);
|
||||||
void mme_vlr_free_node(mme_vlr_t *vlr);
|
void mme_vlr_free_node(mme_vlr_t *vlr);
|
||||||
|
|
||||||
mme_vlr_t *mme_vlr_find_by_addr(ogs_sockaddr_t *addr);
|
mme_vlr_t *mme_vlr_find_by_addr(ogs_sockaddr_t *addr);
|
||||||
mme_vlr_t *mme_vlr_find_by_tai(tai_t *tai);
|
|
||||||
mme_vlr_t *mme_vlr_find_by_nas_lai(nas_lai_t *lai);
|
|
||||||
|
|
||||||
mme_csmap_t *mme_csmap_add(mme_vlr_t *vlr);
|
mme_csmap_t *mme_csmap_add(mme_vlr_t *vlr);
|
||||||
void mme_csmap_remove(mme_csmap_t *csmap);
|
void mme_csmap_remove(mme_csmap_t *csmap);
|
||||||
|
|
|
@ -110,10 +110,10 @@ void mme_s11_handle_create_session_response(
|
||||||
ogs_assert(rv == OGS_OK);
|
ogs_assert(rv == OGS_OK);
|
||||||
|
|
||||||
if (OGS_FSM_CHECK(&mme_ue->sm, emm_state_initial_context_setup)) {
|
if (OGS_FSM_CHECK(&mme_ue->sm, emm_state_initial_context_setup)) {
|
||||||
mme_vlr_t *vlr = mme_vlr_find_by_tai(&mme_ue->tai);
|
mme_csmap_t *csmap = mme_csmap_find_by_tai(&mme_ue->tai);
|
||||||
mme_ue->vlr = vlr;
|
mme_ue->csmap = csmap;
|
||||||
|
|
||||||
if (vlr) {
|
if (csmap) {
|
||||||
sgsap_send_location_update_request(mme_ue);
|
sgsap_send_location_update_request(mme_ue);
|
||||||
} else {
|
} else {
|
||||||
CLEAR_MME_UE_TIMER(mme_ue->t3450);
|
CLEAR_MME_UE_TIMER(mme_ue->t3450);
|
||||||
|
|
|
@ -523,9 +523,9 @@ int s1ap_build_initial_context_setup_request(
|
||||||
|
|
||||||
s1ap_buffer_to_OCTET_STRING(&mme_ue->tai.plmn_id, sizeof(plmn_id_t),
|
s1ap_buffer_to_OCTET_STRING(&mme_ue->tai.plmn_id, sizeof(plmn_id_t),
|
||||||
&LAI->pLMNidentity);
|
&LAI->pLMNidentity);
|
||||||
ogs_assert(mme_ue->vlr);
|
ogs_assert(mme_ue->csmap);
|
||||||
ogs_assert(mme_ue->p_tmsi);
|
ogs_assert(mme_ue->p_tmsi);
|
||||||
s1ap_uint16_to_OCTET_STRING(mme_ue->vlr->lai.lac, &LAI->lAC);
|
s1ap_uint16_to_OCTET_STRING(mme_ue->csmap->lai.lac, &LAI->lAC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set UeRadioCapability if exists */
|
/* Set UeRadioCapability if exists */
|
||||||
|
@ -654,9 +654,9 @@ int s1ap_build_ue_context_modification_request(
|
||||||
|
|
||||||
s1ap_buffer_to_OCTET_STRING(&mme_ue->tai.plmn_id, sizeof(plmn_id_t),
|
s1ap_buffer_to_OCTET_STRING(&mme_ue->tai.plmn_id, sizeof(plmn_id_t),
|
||||||
&LAI->pLMNidentity);
|
&LAI->pLMNidentity);
|
||||||
ogs_assert(mme_ue->vlr);
|
ogs_assert(mme_ue->csmap);
|
||||||
ogs_assert(mme_ue->p_tmsi);
|
ogs_assert(mme_ue->p_tmsi);
|
||||||
s1ap_uint16_to_OCTET_STRING(mme_ue->vlr->lai.lac, &LAI->lAC);
|
s1ap_uint16_to_OCTET_STRING(mme_ue->csmap->lai.lac, &LAI->lAC);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ie = ogs_calloc(1, sizeof(S1AP_UEContextModificationRequestIEs_t));
|
ie = ogs_calloc(1, sizeof(S1AP_UEContextModificationRequestIEs_t));
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
ogs_pkbuf_t *sgsap_build_location_update_request(mme_ue_t *mme_ue)
|
ogs_pkbuf_t *sgsap_build_location_update_request(mme_ue_t *mme_ue)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_tlv_t *root = NULL;
|
ogs_tlv_t *root = NULL;
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
|
@ -36,7 +37,9 @@ ogs_pkbuf_t *sgsap_build_location_update_request(mme_ue_t *mme_ue)
|
||||||
nas_lai_t lai;
|
nas_lai_t lai;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
vlr = mme_ue->vlr;
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
ogs_assert(vlr);
|
ogs_assert(vlr);
|
||||||
|
|
||||||
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
||||||
|
@ -50,7 +53,7 @@ ogs_pkbuf_t *sgsap_build_location_update_request(mme_ue_t *mme_ue)
|
||||||
eps_update_type = SGSAP_EPS_UPDATE_IMSI_ATTACH;
|
eps_update_type = SGSAP_EPS_UPDATE_IMSI_ATTACH;
|
||||||
ogs_tlv_add(root, SGSAP_IE_EPS_UPDATE_TYPE, SGSAP_IE_EPS_UPDATE_LEN, 0,
|
ogs_tlv_add(root, SGSAP_IE_EPS_UPDATE_TYPE, SGSAP_IE_EPS_UPDATE_LEN, 0,
|
||||||
&eps_update_type);
|
&eps_update_type);
|
||||||
memcpy(&lai, &vlr->lai, sizeof(nas_lai_t));
|
memcpy(&lai, &csmap->lai, sizeof(nas_lai_t));
|
||||||
lai.lac = htons(lai.lac);
|
lai.lac = htons(lai.lac);
|
||||||
ogs_tlv_add(root, SGSAP_IE_LAI_TYPE, SGSAP_IE_LAI_LEN, 0, &lai);
|
ogs_tlv_add(root, SGSAP_IE_LAI_TYPE, SGSAP_IE_LAI_LEN, 0, &lai);
|
||||||
|
|
||||||
|
@ -67,12 +70,15 @@ ogs_pkbuf_t *sgsap_build_location_update_request(mme_ue_t *mme_ue)
|
||||||
}
|
}
|
||||||
ogs_pkbuf_t *sgsap_build_tmsi_reallocation_complete(mme_ue_t *mme_ue)
|
ogs_pkbuf_t *sgsap_build_tmsi_reallocation_complete(mme_ue_t *mme_ue)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_tlv_t *root = NULL;
|
ogs_tlv_t *root = NULL;
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
vlr = mme_ue->vlr;
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
ogs_assert(vlr);
|
ogs_assert(vlr);
|
||||||
|
|
||||||
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
||||||
|
@ -92,6 +98,7 @@ ogs_pkbuf_t *sgsap_build_tmsi_reallocation_complete(mme_ue_t *mme_ue)
|
||||||
|
|
||||||
ogs_pkbuf_t *sgsap_build_detach_indication(mme_ue_t *mme_ue)
|
ogs_pkbuf_t *sgsap_build_detach_indication(mme_ue_t *mme_ue)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_tlv_t *root = NULL;
|
ogs_tlv_t *root = NULL;
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
|
@ -103,7 +110,9 @@ ogs_pkbuf_t *sgsap_build_detach_indication(mme_ue_t *mme_ue)
|
||||||
uint8_t indication = SGSAP_EPS_DETACH_UE_INITIATED;
|
uint8_t indication = SGSAP_EPS_DETACH_UE_INITIATED;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
vlr = mme_ue->vlr;
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
ogs_assert(vlr);
|
ogs_assert(vlr);
|
||||||
|
|
||||||
switch (mme_ue->nas_eps.detach.detach_type) {
|
switch (mme_ue->nas_eps.detach.detach_type) {
|
||||||
|
@ -165,12 +174,15 @@ ogs_pkbuf_t *sgsap_build_detach_indication(mme_ue_t *mme_ue)
|
||||||
|
|
||||||
ogs_pkbuf_t *sgsap_build_mo_csfb_indication(mme_ue_t *mme_ue)
|
ogs_pkbuf_t *sgsap_build_mo_csfb_indication(mme_ue_t *mme_ue)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_tlv_t *root = NULL;
|
ogs_tlv_t *root = NULL;
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
vlr = mme_ue->vlr;
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
ogs_assert(vlr);
|
ogs_assert(vlr);
|
||||||
|
|
||||||
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
||||||
|
@ -220,12 +232,15 @@ ogs_pkbuf_t *sgsap_build_paging_reject(
|
||||||
|
|
||||||
ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue, uint8_t emm_mode)
|
ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue, uint8_t emm_mode)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_tlv_t *root = NULL;
|
ogs_tlv_t *root = NULL;
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
vlr = mme_ue->vlr;
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
ogs_assert(vlr);
|
ogs_assert(vlr);
|
||||||
|
|
||||||
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
||||||
|
@ -281,15 +296,19 @@ ogs_pkbuf_t *sgsap_build_reset_ack(mme_vlr_t *vlr)
|
||||||
ogs_pkbuf_t *sgsap_build_uplink_unidata(
|
ogs_pkbuf_t *sgsap_build_uplink_unidata(
|
||||||
mme_ue_t *mme_ue, nas_message_container_t *nas_message_container)
|
mme_ue_t *mme_ue, nas_message_container_t *nas_message_container)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_tlv_t *root = NULL;
|
ogs_tlv_t *root = NULL;
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
|
||||||
vlr = mme_ue->vlr;
|
|
||||||
ogs_assert(vlr);
|
|
||||||
ogs_assert(nas_message_container);
|
ogs_assert(nas_message_container);
|
||||||
|
|
||||||
|
ogs_assert(mme_ue);
|
||||||
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
|
ogs_assert(vlr);
|
||||||
|
|
||||||
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
||||||
&mme_ue->nas_mobile_identity_imsi);
|
&mme_ue->nas_mobile_identity_imsi);
|
||||||
|
|
||||||
|
@ -310,12 +329,15 @@ ogs_pkbuf_t *sgsap_build_uplink_unidata(
|
||||||
|
|
||||||
ogs_pkbuf_t *sgsap_build_ue_unreachable(mme_ue_t *mme_ue, uint8_t sgs_cause)
|
ogs_pkbuf_t *sgsap_build_ue_unreachable(mme_ue_t *mme_ue, uint8_t sgs_cause)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_tlv_t *root = NULL;
|
ogs_tlv_t *root = NULL;
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
|
|
||||||
ogs_assert(mme_ue);
|
ogs_assert(mme_ue);
|
||||||
vlr = mme_ue->vlr;
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
ogs_assert(vlr);
|
ogs_assert(vlr);
|
||||||
|
|
||||||
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
root = ogs_tlv_add(NULL, SGSAP_IE_IMSI_TYPE, SGSAP_IE_IMSI_LEN, 0,
|
||||||
|
|
|
@ -89,11 +89,6 @@ int sgsap_send_to_vlr_with_sid(
|
||||||
ogs_assert(sock);
|
ogs_assert(sock);
|
||||||
|
|
||||||
ogs_debug(" VLR-IP[%s]", OGS_ADDR(node->addr, buf));
|
ogs_debug(" VLR-IP[%s]", OGS_ADDR(node->addr, buf));
|
||||||
ogs_debug(" TAI[PLMN_ID:%06x,TAC:%d]",
|
|
||||||
plmn_id_hexdump(&vlr->tai.nas_plmn_id), vlr->tai.tac);
|
|
||||||
ogs_debug(" LAI[PLMN_ID:%06x,LAC:%d]",
|
|
||||||
plmn_id_hexdump(&vlr->lai.nas_plmn_id), vlr->lai.lac);
|
|
||||||
|
|
||||||
rv = sgsap_send(sock, pkbuf, node->addr, stream_no);
|
rv = sgsap_send(sock, pkbuf, node->addr, stream_no);
|
||||||
if (rv != OGS_OK) {
|
if (rv != OGS_OK) {
|
||||||
ogs_error("sgsap_send() failed");
|
ogs_error("sgsap_send() failed");
|
||||||
|
@ -108,12 +103,22 @@ int sgsap_send_to_vlr_with_sid(
|
||||||
|
|
||||||
int sgsap_send_to_vlr(mme_ue_t *mme_ue, ogs_pkbuf_t *pkbuf)
|
int sgsap_send_to_vlr(mme_ue_t *mme_ue, ogs_pkbuf_t *pkbuf)
|
||||||
{
|
{
|
||||||
|
mme_csmap_t *csmap = NULL;
|
||||||
mme_vlr_t *vlr = NULL;
|
mme_vlr_t *vlr = NULL;
|
||||||
ogs_assert(mme_ue);
|
|
||||||
ogs_assert(pkbuf);
|
ogs_assert(pkbuf);
|
||||||
vlr = mme_ue->vlr;
|
|
||||||
|
ogs_assert(mme_ue);
|
||||||
|
csmap = mme_ue->csmap;
|
||||||
|
ogs_assert(csmap);
|
||||||
|
vlr = csmap->vlr;
|
||||||
ogs_assert(vlr);
|
ogs_assert(vlr);
|
||||||
|
|
||||||
|
ogs_debug(" TAI[PLMN_ID:%06x,TAC:%d]",
|
||||||
|
plmn_id_hexdump(&csmap->tai.nas_plmn_id), csmap->tai.tac);
|
||||||
|
ogs_debug(" LAI[PLMN_ID:%06x,LAC:%d]",
|
||||||
|
plmn_id_hexdump(&csmap->lai.nas_plmn_id), csmap->lai.lac);
|
||||||
|
|
||||||
return sgsap_send_to_vlr_with_sid(vlr, pkbuf, mme_ue->vlr_ostream_id);
|
return sgsap_send_to_vlr_with_sid(vlr, pkbuf, mme_ue->vlr_ostream_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3254,13 +3254,13 @@ int testsgsap_location_update_accept(ogs_pkbuf_t **pkbuf, int i)
|
||||||
{
|
{
|
||||||
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
||||||
"0a01082926240000 111893040509f107 09260e05f49ee88e 64",
|
"0a01082926240000 111893040509f107 09260e05f49ee88e 64",
|
||||||
"",
|
"0a01087942120000 000030040527f412 c9580e05f437ab9c c5",
|
||||||
"",
|
"",
|
||||||
|
|
||||||
};
|
};
|
||||||
uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
||||||
25,
|
25,
|
||||||
0,
|
25,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
char hexbuf[MAX_SDU_LEN];
|
char hexbuf[MAX_SDU_LEN];
|
||||||
|
|
|
@ -160,18 +160,16 @@ static void test1_func(abts_case *tc, void *data)
|
||||||
rv = testenb_s1ap_send(s1ap, sendbuf);
|
rv = testenb_s1ap_send(s1ap, sendbuf);
|
||||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Receive SGsAP-Location-Update-Request */
|
/* Receive SGsAP-Location-Update-Request */
|
||||||
recvbuf = testvlr_sgsap_read(sgsap);
|
recvbuf = testvlr_sgsap_read(sgsap);
|
||||||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||||
ogs_pkbuf_free(recvbuf);
|
ogs_pkbuf_free(recvbuf);
|
||||||
|
|
||||||
/* Send SGsAP-Location-Update-Accept */
|
/* Send SGsAP-Location-Update-Accept */
|
||||||
rv = testsgsap_location_update_accept(&sendbuf, 0);
|
rv = testsgsap_location_update_accept(&sendbuf, 1);
|
||||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||||
rv = testvlr_sgsap_send(sgsap, sendbuf);
|
rv = testvlr_sgsap_send(sgsap, sendbuf);
|
||||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Receive Initial Context Setup Request +
|
/* Receive Initial Context Setup Request +
|
||||||
* Attach Accept +
|
* Attach Accept +
|
||||||
|
|
|
@ -52,7 +52,7 @@ mme:
|
||||||
plmn_id:
|
plmn_id:
|
||||||
mcc: 724
|
mcc: 724
|
||||||
mnc: 21
|
mnc: 21
|
||||||
lac: 2342
|
lac: 51544
|
||||||
gummei:
|
gummei:
|
||||||
plmn_id:
|
plmn_id:
|
||||||
mcc: 901
|
mcc: 901
|
||||||
|
|
Loading…
Reference in New Issue