Use GTP-U Buffering instead of Deletion[#592,#568]
This commit is contained in:
parent
0eb68eefe2
commit
d64db21050
|
@ -296,6 +296,7 @@ void nas_5gs_send_configuration_update_command(
|
|||
amf_timer_cfg(AMF_TIMER_T3555)->duration);
|
||||
|
||||
} else {
|
||||
ogs_expect_or_return(param);
|
||||
gmmbuf = gmm_build_configuration_update_command(amf_ue, param);
|
||||
ogs_expect_or_return(gmmbuf);
|
||||
|
||||
|
|
|
@ -183,15 +183,13 @@ ogs_pkbuf_t *emm_build_identity_request(mme_ue_t *mme_ue)
|
|||
return ogs_nas_eps_plain_encode(&message);
|
||||
}
|
||||
|
||||
ogs_pkbuf_t *emm_build_authentication_request(mme_ue_t *mme_ue,
|
||||
ogs_diam_e_utran_vector_t *e_utran_vector)
|
||||
ogs_pkbuf_t *emm_build_authentication_request(mme_ue_t *mme_ue)
|
||||
{
|
||||
ogs_nas_eps_message_t message;
|
||||
ogs_nas_eps_authentication_request_t *authentication_request =
|
||||
&message.emm.authentication_request;
|
||||
|
||||
ogs_assert(mme_ue);
|
||||
ogs_assert(e_utran_vector);
|
||||
|
||||
memset(&message, 0, sizeof(message));
|
||||
message.emm.h.protocol_discriminator = OGS_NAS_PROTOCOL_DISCRIMINATOR_EMM;
|
||||
|
@ -201,9 +199,9 @@ ogs_pkbuf_t *emm_build_authentication_request(mme_ue_t *mme_ue,
|
|||
authentication_request->nas_key_set_identifierasme.value =
|
||||
mme_ue->nas_eps.ksi;
|
||||
memcpy(authentication_request->authentication_parameter_rand.rand,
|
||||
e_utran_vector->rand, OGS_RAND_LEN);
|
||||
mme_ue->rand, OGS_RAND_LEN);
|
||||
memcpy(authentication_request->authentication_parameter_autn.autn,
|
||||
e_utran_vector->autn, OGS_AUTN_LEN);
|
||||
mme_ue->autn, OGS_AUTN_LEN);
|
||||
authentication_request->authentication_parameter_autn.length =
|
||||
OGS_AUTN_LEN;
|
||||
|
||||
|
|
|
@ -34,8 +34,7 @@ ogs_pkbuf_t *emm_build_attach_reject(
|
|||
ogs_pkbuf_t *emm_build_identity_request(mme_ue_t *mme_ue);
|
||||
ogs_pkbuf_t *emm_build_security_mode_command(mme_ue_t *mme_ue);
|
||||
|
||||
ogs_pkbuf_t *emm_build_authentication_request(mme_ue_t *mme_ue,
|
||||
ogs_diam_e_utran_vector_t *e_utran_vector);
|
||||
ogs_pkbuf_t *emm_build_authentication_request(mme_ue_t *mme_ue);
|
||||
ogs_pkbuf_t *emm_build_authentication_reject(void);
|
||||
|
||||
ogs_pkbuf_t *emm_build_detach_accept(mme_ue_t *mme_ue);
|
||||
|
|
|
@ -641,7 +641,7 @@ void emm_state_authentication(ogs_fsm_t *s, mme_event_t *e)
|
|||
nas_eps_send_authentication_reject(mme_ue);
|
||||
} else {
|
||||
mme_ue->t3460.retry_count++;
|
||||
nas_eps_send_authentication_request(mme_ue, NULL);
|
||||
nas_eps_send_authentication_request(mme_ue);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -355,6 +355,7 @@ struct mme_ue_s {
|
|||
uint8_t xres_len;
|
||||
uint8_t kasme[OGS_SHA256_DIGEST_SIZE];
|
||||
uint8_t rand[OGS_RAND_LEN];
|
||||
uint8_t autn[OGS_AUTN_LEN];
|
||||
uint8_t knas_int[OGS_SHA256_DIGEST_SIZE/2];
|
||||
uint8_t knas_enc[OGS_SHA256_DIGEST_SIZE/2];
|
||||
uint32_t dl_count;
|
||||
|
|
|
@ -253,7 +253,8 @@ static void mme_s6a_aia_cb(void *data, struct msg **msg)
|
|||
ret = fd_msg_search_avp(*msg, ogs_diam_experimental_result, &avp);
|
||||
ogs_assert(ret == 0);
|
||||
if (avp) {
|
||||
ret = fd_avp_search_avp(avp, ogs_diam_experimental_result_code, &avpch);
|
||||
ret = fd_avp_search_avp(
|
||||
avp, ogs_diam_experimental_result_code, &avpch);
|
||||
ogs_assert(ret == 0);
|
||||
if (avpch) {
|
||||
ret = fd_msg_avp_hdr(avpch, &hdr);
|
||||
|
@ -319,7 +320,8 @@ static void mme_s6a_aia_cb(void *data, struct msg **msg)
|
|||
error++;
|
||||
}
|
||||
|
||||
ret = fd_avp_search_avp(avp, ogs_diam_s6a_e_utran_vector, &avp_e_utran_vector);
|
||||
ret = fd_avp_search_avp(
|
||||
avp, ogs_diam_s6a_e_utran_vector, &avp_e_utran_vector);
|
||||
ogs_assert(ret == 0);
|
||||
if (avp) {
|
||||
ret = fd_msg_avp_hdr(avp_e_utran_vector, &hdr);
|
||||
|
|
|
@ -51,14 +51,14 @@ void mme_send_delete_session_or_mme_ue_context_release(mme_ue_t *mme_ue)
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
void mme_send_release_access_bearer_or_ue_context_release(enb_ue_t *enb_ue)
|
||||
{
|
||||
mme_ue_t *mme_ue = NULL;
|
||||
ogs_assert(enb_ue);
|
||||
|
||||
mme_ue = enb_ue->mme_ue;
|
||||
if (mme_ue && BEARER_CONTEXT_IS_ACTIVE(mme_ue)) {
|
||||
if (mme_ue) {
|
||||
ogs_debug("[%s] Release access bearer request", mme_ue->imsi_bcd);
|
||||
mme_gtp_send_release_access_bearers_request(mme_ue);
|
||||
} else {
|
||||
|
|
|
@ -28,7 +28,6 @@ extern "C" {
|
|||
|
||||
void mme_send_delete_session_or_detach(mme_ue_t *mme_ue);
|
||||
void mme_send_delete_session_or_mme_ue_context_release(mme_ue_t *mme_ue);
|
||||
void mme_send_delete_session_or_enb_ue_context_release(enb_ue_t *enb_ue);
|
||||
void mme_send_release_access_bearer_or_ue_context_release(enb_ue_t *enb_ue);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -37,13 +37,14 @@ void mme_s6a_handle_aia(mme_ue_t *mme_ue,
|
|||
memcpy(mme_ue->xres, e_utran_vector->xres, mme_ue->xres_len);
|
||||
memcpy(mme_ue->kasme, e_utran_vector->kasme, OGS_SHA256_DIGEST_SIZE);
|
||||
memcpy(mme_ue->rand, e_utran_vector->rand, OGS_RAND_LEN);
|
||||
memcpy(mme_ue->autn, e_utran_vector->autn, OGS_AUTN_LEN);
|
||||
|
||||
CLEAR_MME_UE_TIMER(mme_ue->t3460);
|
||||
|
||||
if (mme_ue->nas_eps.ksi == OGS_NAS_KSI_NO_KEY_IS_AVAILABLE)
|
||||
mme_ue->nas_eps.ksi = 0;
|
||||
|
||||
nas_eps_send_authentication_request(mme_ue, e_utran_vector);
|
||||
nas_eps_send_authentication_request(mme_ue);
|
||||
}
|
||||
|
||||
void mme_s6a_handle_ula(mme_ue_t *mme_ue,
|
||||
|
|
|
@ -166,6 +166,9 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
addr = e->addr;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_assert(addr->ogs_sa_family == AF_INET ||
|
||||
addr->ogs_sa_family == AF_INET6);
|
||||
|
||||
ogs_info("eNB-S1 accepted[%s] in master_sm module",
|
||||
OGS_ADDR(addr, buf));
|
||||
|
||||
|
@ -189,6 +192,9 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
addr = e->addr;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_assert(addr->ogs_sa_family == AF_INET ||
|
||||
addr->ogs_sa_family == AF_INET6);
|
||||
|
||||
max_num_of_ostreams = e->max_num_of_ostreams;
|
||||
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
|
@ -213,6 +219,9 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
addr = e->addr;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_assert(addr->ogs_sa_family == AF_INET ||
|
||||
addr->ogs_sa_family == AF_INET6);
|
||||
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
if (enb) {
|
||||
ogs_info("eNB-S1[%s] connection refused!!!", OGS_ADDR(addr, buf));
|
||||
|
@ -232,6 +241,9 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
pkbuf = e->pkbuf;
|
||||
ogs_assert(pkbuf);
|
||||
|
||||
ogs_assert(addr->ogs_sa_family == AF_INET ||
|
||||
addr->ogs_sa_family == AF_INET6);
|
||||
|
||||
enb = mme_enb_find_by_addr(addr);
|
||||
ogs_free(addr);
|
||||
|
||||
|
@ -644,6 +656,9 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
addr = e->addr;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_assert(addr->ogs_sa_family == AF_INET ||
|
||||
addr->ogs_sa_family == AF_INET6);
|
||||
|
||||
max_num_of_ostreams = e->max_num_of_ostreams;
|
||||
|
||||
vlr = mme_vlr_find_by_addr(addr);
|
||||
|
@ -668,6 +683,9 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
addr = e->addr;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_assert(addr->ogs_sa_family == AF_INET ||
|
||||
addr->ogs_sa_family == AF_INET6);
|
||||
|
||||
vlr = mme_vlr_find_by_addr(addr);
|
||||
ogs_free(addr);
|
||||
|
||||
|
@ -695,6 +713,9 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
pkbuf = e->pkbuf;
|
||||
ogs_assert(pkbuf);
|
||||
|
||||
ogs_assert(addr->ogs_sa_family == AF_INET ||
|
||||
addr->ogs_sa_family == AF_INET6);
|
||||
|
||||
vlr = mme_vlr_find_by_addr(addr);
|
||||
ogs_free(addr);
|
||||
|
||||
|
|
|
@ -172,8 +172,7 @@ void nas_eps_send_identity_request(mme_ue_t *mme_ue)
|
|||
ogs_expect(rv == OGS_OK);
|
||||
}
|
||||
|
||||
void nas_eps_send_authentication_request(
|
||||
mme_ue_t *mme_ue, ogs_diam_e_utran_vector_t *e_utran_vector)
|
||||
void nas_eps_send_authentication_request(mme_ue_t *mme_ue)
|
||||
{
|
||||
int rv;
|
||||
ogs_pkbuf_t *emmbuf = NULL;
|
||||
|
@ -187,8 +186,7 @@ void nas_eps_send_authentication_request(
|
|||
emmbuf = mme_ue->t3460.pkbuf;
|
||||
ogs_expect_or_return(emmbuf);
|
||||
} else {
|
||||
ogs_assert(e_utran_vector);
|
||||
emmbuf = emm_build_authentication_request(mme_ue, e_utran_vector);
|
||||
emmbuf = emm_build_authentication_request(mme_ue);
|
||||
ogs_expect_or_return(emmbuf);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,8 +38,7 @@ void nas_eps_send_attach_reject(mme_ue_t *mme_ue,
|
|||
|
||||
void nas_eps_send_identity_request(mme_ue_t *mme_ue);
|
||||
|
||||
void nas_eps_send_authentication_request(
|
||||
mme_ue_t *mme_ue, ogs_diam_e_utran_vector_t *e_utran_vector);
|
||||
void nas_eps_send_authentication_request(mme_ue_t *mme_ue);
|
||||
void nas_eps_send_authentication_reject(mme_ue_t *mme_ue);
|
||||
|
||||
void nas_eps_send_security_mode_command(mme_ue_t *mme_ue);
|
||||
|
|
Loading…
Reference in New Issue