Distinguish the type of session creation

This commit is contained in:
Sukchan Lee 2022-04-14 17:34:55 +09:00
parent 80cd9d725f
commit 433d5f6bf3
40 changed files with 184 additions and 196 deletions

View File

@ -138,9 +138,6 @@ nrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -140,9 +140,6 @@ nrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -31,9 +31,6 @@ hss:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -87,9 +87,6 @@ nrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -180,9 +180,6 @@ nrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -140,9 +140,6 @@ nrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -28,9 +28,6 @@ pcrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -125,9 +125,6 @@ sgwu:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -117,9 +117,6 @@ sgwc:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -506,9 +506,6 @@ upf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -138,9 +138,6 @@ nrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -140,9 +140,6 @@ nrf:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#

View File

@ -169,6 +169,10 @@ int ogs_gtp_context_parse_config(const char *local, const char *remote)
&gtpc_iter, &option);
if (rv != OGS_OK) return rv;
is_option = true;
} else if (!strcmp(gtpc_key, "tac")) {
/* Nothing */
} else if (!strcmp(gtpc_key, "e_cell_id")) {
/* Nothing */
} else
ogs_warn("unknown key `%s`", gtpc_key);
}

View File

@ -111,7 +111,10 @@ typedef struct ogs_gtp_xact_s {
#define OGS_GTP_DELETE_INDIRECT_HANDOVER_CANCEL 2
int delete_indirect_action;
bool esm_piggybacked;
#define OGS_GTP_CREATE_IN_ATTACH_REQUEST 1
#define OGS_GTP_CREATE_IN_UPLINK_NAS_TRANSPORT 2
#define OGS_GTP_CREATE_IN_PATH_SWITCH_REQUEST 3
int create_action;
} ogs_gtp_xact_t;
int ogs_gtp_xact_init(void);

View File

@ -25,7 +25,7 @@
#define OGS_LOG_DOMAIN __esm_log_domain
ogs_pkbuf_t *esm_build_pdn_connectivity_reject(
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, bool esm_piggybacked)
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, int create_action)
{
mme_ue_t *mme_ue = NULL;
ogs_nas_eps_message_t message;
@ -41,7 +41,7 @@ ogs_pkbuf_t *esm_build_pdn_connectivity_reject(
mme_ue->imsi_bcd, sess->pti, esm_cause);
memset(&message, 0, sizeof(message));
if (esm_piggybacked == true) {
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST) {
/* Nothing */
} else {
message.h.security_header_type =
@ -55,7 +55,7 @@ ogs_pkbuf_t *esm_build_pdn_connectivity_reject(
pdn_connectivity_reject->esm_cause = esm_cause;
if (esm_piggybacked == true)
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST)
return ogs_nas_eps_plain_encode(&message);
else
return nas_eps_security_encode(mme_ue, &message);
@ -90,7 +90,7 @@ ogs_pkbuf_t *esm_build_information_request(mme_bearer_t *bearer)
}
ogs_pkbuf_t *esm_build_activate_default_bearer_context_request(
mme_sess_t *sess, bool esm_piggybacked)
mme_sess_t *sess, int create_action)
{
ogs_nas_eps_message_t message;
ogs_nas_eps_activate_default_eps_bearer_context_request_t
@ -131,7 +131,7 @@ ogs_pkbuf_t *esm_build_activate_default_bearer_context_request(
mme_ue->imsi_bcd, sess->pti, bearer->ebi);
memset(&message, 0, sizeof(message));
if (esm_piggybacked == true) {
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST) {
/* Nothing */
} else {
message.h.security_header_type =
@ -245,7 +245,7 @@ ogs_pkbuf_t *esm_build_activate_default_bearer_context_request(
}
}
if (esm_piggybacked == true)
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST)
return ogs_nas_eps_plain_encode(&message);
else
return nas_eps_security_encode(mme_ue, &message);

View File

@ -27,10 +27,10 @@ extern "C" {
#endif
ogs_pkbuf_t *esm_build_pdn_connectivity_reject(
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, bool esm_piggybacked);
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, int create_action);
ogs_pkbuf_t *esm_build_information_request(mme_bearer_t *bearer);
ogs_pkbuf_t *esm_build_activate_default_bearer_context_request(
mme_sess_t *sess, bool esm_piggybacked);
mme_sess_t *sess, int create_action);
ogs_pkbuf_t *esm_build_activate_dedicated_bearer_context_request(
mme_bearer_t *bearer);
ogs_pkbuf_t *esm_build_modify_bearer_context_request(

View File

@ -29,7 +29,7 @@
#define OGS_LOG_DOMAIN __esm_log_domain
int esm_handle_pdn_connectivity_request(mme_bearer_t *bearer,
ogs_nas_eps_pdn_connectivity_request_t *req, bool esm_piggybacked)
ogs_nas_eps_pdn_connectivity_request_t *req, int create_action)
{
mme_ue_t *mme_ue = NULL;
mme_sess_t *sess = NULL;
@ -67,7 +67,7 @@ int esm_handle_pdn_connectivity_request(mme_bearer_t *bearer,
/* Invalid APN */
ogs_assert(OGS_OK ==
nas_eps_send_pdn_connectivity_reject(
sess, ESM_CAUSE_MISSING_OR_UNKNOWN_APN, esm_piggybacked));
sess, ESM_CAUSE_MISSING_OR_UNKNOWN_APN, create_action));
ogs_warn("Invalid APN[%s]", req->access_point_name.apn);
return OGS_ERROR;
}
@ -82,7 +82,7 @@ int esm_handle_pdn_connectivity_request(mme_bearer_t *bearer,
sess->request_type.type, sess->session->session_type);
ogs_assert(OGS_OK ==
nas_eps_send_pdn_connectivity_reject(
sess, ESM_CAUSE_UNKNOWN_PDN_TYPE, esm_piggybacked));
sess, ESM_CAUSE_UNKNOWN_PDN_TYPE, create_action));
return OGS_ERROR;
}
} else {
@ -134,12 +134,12 @@ int esm_handle_pdn_connectivity_request(mme_bearer_t *bearer,
}
ogs_assert(OGS_OK ==
mme_gtp_send_create_session_request(sess, esm_piggybacked));
mme_gtp_send_create_session_request(sess, create_action));
} else {
ogs_error("No APN");
ogs_assert(OGS_OK ==
nas_eps_send_pdn_connectivity_reject(
sess, ESM_CAUSE_MISSING_OR_UNKNOWN_APN, esm_piggybacked));
sess, ESM_CAUSE_MISSING_OR_UNKNOWN_APN, create_action));
return OGS_ERROR;
}
@ -185,7 +185,8 @@ int esm_handle_information_response(mme_sess_t *sess,
sess->request_type.type, sess->session->session_type);
ogs_assert(OGS_OK ==
nas_eps_send_pdn_connectivity_reject(
sess, ESM_CAUSE_UNKNOWN_PDN_TYPE, true));
sess, ESM_CAUSE_UNKNOWN_PDN_TYPE,
OGS_GTP_CREATE_IN_ATTACH_REQUEST));
return OGS_ERROR;
}
} else {
@ -207,7 +208,8 @@ int esm_handle_information_response(mme_sess_t *sess,
}
} else {
ogs_assert(OGS_OK ==
mme_gtp_send_create_session_request(sess, true));
mme_gtp_send_create_session_request(
sess, OGS_GTP_CREATE_IN_ATTACH_REQUEST));
}
} else {
if (rsp->access_point_name.length)
@ -217,7 +219,8 @@ int esm_handle_information_response(mme_sess_t *sess,
ogs_assert(OGS_OK ==
nas_eps_send_pdn_connectivity_reject(
sess, ESM_CAUSE_MISSING_OR_UNKNOWN_APN, true));
sess, ESM_CAUSE_MISSING_OR_UNKNOWN_APN,
OGS_GTP_CREATE_IN_ATTACH_REQUEST));
return OGS_ERROR;
}

View File

@ -28,7 +28,7 @@ extern "C" {
int esm_handle_pdn_connectivity_request(mme_bearer_t *bearer,
ogs_nas_eps_pdn_connectivity_request_t *pdn_connectivity_request,
bool esm_piggybacked);
int create_action);
int esm_handle_information_response(mme_sess_t *sess,
ogs_nas_eps_esm_information_response_t *bearer_information_response);
int esm_handle_bearer_resource_allocation_request(

View File

@ -107,7 +107,7 @@ void esm_state_inactive(ogs_fsm_t *s, mme_event_t *e)
mme_ue->imsi_bcd, sess->pti, bearer->ebi);
rv = esm_handle_pdn_connectivity_request(
bearer, &message->esm.pdn_connectivity_request,
e->esm_piggybacked);
e->create_action);
if (rv != OGS_OK) {
OGS_FSM_TRAN(s, esm_state_exception);
break;
@ -230,7 +230,7 @@ void esm_state_inactive(ogs_fsm_t *s, mme_event_t *e)
ogs_assert(OGS_OK ==
nas_eps_send_pdn_connectivity_reject(sess,
ESM_CAUSE_ESM_INFORMATION_NOT_RECEIVED,
e->esm_piggybacked));
e->create_action));
} else {
rv = nas_eps_send_esm_information_request(bearer);
if (rv == OGS_OK) {
@ -289,7 +289,7 @@ void esm_state_active(ogs_fsm_t *s, mme_event_t *e)
mme_ue->imsi_bcd, sess->pti, bearer->ebi);
rv = esm_handle_pdn_connectivity_request(
bearer, &message->esm.pdn_connectivity_request,
e->esm_piggybacked);
e->create_action);
if (rv != OGS_OK) {
OGS_FSM_TRAN(s, esm_state_exception);
break;
@ -397,7 +397,7 @@ void esm_state_pdn_will_disconnect(ogs_fsm_t *s, mme_event_t *e)
mme_ue->imsi_bcd, sess->pti, bearer->ebi);
rv = esm_handle_pdn_connectivity_request(
bearer, &message->esm.pdn_connectivity_request,
e->esm_piggybacked);
e->create_action);
if (rv != OGS_OK) {
OGS_FSM_TRAN(s, esm_state_exception);
break;

View File

@ -1552,8 +1552,10 @@ mme_sgw_t *mme_sgw_add(ogs_sockaddr_t *addr)
ogs_assert(sgw);
memset(sgw, 0, sizeof *sgw);
sgw->gnode = ogs_gtp_node_new(addr);
ogs_assert(sgw->gnode);
sgw->gnode.sa_list = addr;
ogs_list_init(&sgw->gnode.local_list);
ogs_list_init(&sgw->gnode.remote_list);
ogs_list_add(&self.sgw_list, sgw);
@ -1566,7 +1568,9 @@ void mme_sgw_remove(mme_sgw_t *sgw)
ogs_list_remove(&self.sgw_list, sgw);
ogs_gtp_node_free(sgw->gnode);
ogs_gtp_xact_delete_all(&sgw->gnode);
ogs_freeaddrinfo(sgw->gnode.sa_list);
ogs_pool_free(&mme_sgw_pool, sgw);
}
@ -1585,8 +1589,7 @@ mme_sgw_t *mme_sgw_find_by_addr(ogs_sockaddr_t *addr)
ogs_assert(addr);
ogs_list_for_each(&self.sgw_list, sgw) {
ogs_assert(sgw->gnode);
if (ogs_sockaddr_is_equal(&sgw->gnode->addr, addr) == true)
if (ogs_sockaddr_is_equal(&sgw->gnode.addr, addr) == true)
break;
}
@ -1603,8 +1606,7 @@ mme_pgw_t *mme_pgw_add(ogs_sockaddr_t *addr)
ogs_assert(pgw);
memset(pgw, 0, sizeof *pgw);
pgw->gnode = ogs_gtp_node_new(addr);
ogs_assert(pgw->gnode);
pgw->sa_list = addr;
ogs_list_add(&self.pgw_list, pgw);
@ -1617,7 +1619,7 @@ void mme_pgw_remove(mme_pgw_t *pgw)
ogs_list_remove(&self.pgw_list, pgw);
ogs_gtp_node_free(pgw->gnode);
ogs_freeaddrinfo(pgw->sa_list);
ogs_pool_free(&mme_pgw_pool, pgw);
}
@ -1636,8 +1638,8 @@ ogs_sockaddr_t *mme_pgw_addr_find_by_apn(
ogs_assert(list);
ogs_list_for_each(list, pgw) {
ogs_assert(pgw->gnode);
ogs_sockaddr_t *addr = pgw->gnode->sa_list;
ogs_assert(pgw->sa_list);
ogs_sockaddr_t *addr = pgw->sa_list;
while (addr) {
if (addr->ogs_sa_family == family &&
@ -2109,6 +2111,20 @@ static mme_sgw_t *selected_sgw_node(mme_sgw_t *current, enb_ue_t *enb_ue)
return next ? next : ogs_list_first(&mme_self()->sgw_list);
}
mme_sgw_t *mme_changed_sgw_node(mme_sgw_t *current, enb_ue_t *enb_ue)
{
mme_sgw_t *changed = NULL;
ogs_assert(current);
ogs_assert(enb_ue);
changed = selected_sgw_node(current, enb_ue);
if (changed && changed != current &&
compare_ue_info(changed, enb_ue) == true) return changed;
return NULL;
}
mme_ue_t *mme_ue_add(enb_ue_t *enb_ue)
{
mme_enb_t *enb = NULL;
@ -2140,10 +2156,10 @@ mme_ue_t *mme_ue_add(enb_ue_t *enb_ue)
mme_self()->sgw = ogs_list_last(&mme_self()->sgw_list);
/* setup GTP path with selected SGW */
mme_self()->sgw = selected_sgw_node(mme_self()->sgw, enb_ue);
ogs_assert(mme_self()->sgw);
OGS_SETUP_GTP_NODE(mme_ue, mme_self()->sgw->gnode);
ogs_debug("UE using SGW on IP[%s]", OGS_ADDR(&mme_ue->gnode->addr, buf));
mme_ue->sgw = mme_self()->sgw = selected_sgw_node(mme_self()->sgw, enb_ue);
ogs_assert(mme_ue->sgw);
ogs_assert(mme_ue->gnode);
ogs_debug("UE using SGW on IP[%s]", OGS_ADDR(mme_ue->gnode->sa_list, buf));
/* Clear VLR */
mme_ue->csmap = NULL;
@ -2890,7 +2906,7 @@ mme_bearer_t *mme_bearer_find_by_ue_ebi(mme_ue_t *mme_ue, uint8_t ebi)
}
mme_bearer_t *mme_bearer_find_or_add_by_message(
mme_ue_t *mme_ue, ogs_nas_eps_message_t *message, bool esm_piggybacked)
mme_ue_t *mme_ue, ogs_nas_eps_message_t *message, int create_action)
{
uint8_t pti = OGS_NAS_PROCEDURE_TRANSACTION_IDENTITY_UNASSIGNED;
uint8_t ebi = OGS_NAS_EPS_BEARER_IDENTITY_UNASSIGNED;
@ -3001,12 +3017,12 @@ mme_bearer_t *mme_bearer_find_or_add_by_message(
OGS_NAS_EPS_PDN_CONNECTIVITY_REQUEST_ACCESS_POINT_NAME_PRESENT) {
sess = mme_sess_find_by_apn(mme_ue,
pdn_connectivity_request->access_point_name.apn);
if (sess && esm_piggybacked == false) {
if (sess && create_action != OGS_GTP_CREATE_IN_ATTACH_REQUEST) {
ogs_assert(OGS_OK ==
nas_eps_send_pdn_connectivity_reject(
sess,
ESM_CAUSE_MULTIPLE_PDN_CONNECTIONS_FOR_A_GIVEN_APN_NOT_ALLOWED,
esm_piggybacked));
create_action));
ogs_warn("APN duplicated [%s]",
pdn_connectivity_request->access_point_name.apn);
return NULL;

View File

@ -147,20 +147,18 @@ typedef struct mme_context_s {
} mme_context_t;
typedef struct mme_sgw_s {
ogs_lnode_t lnode;
ogs_gtp_node_t gnode;
uint16_t tac[OGS_MAX_NUM_OF_TAI];
uint8_t num_of_tac;
uint32_t e_cell_id[OGS_MAX_NUM_OF_CELL_ID];
uint8_t num_of_e_cell_id;
ogs_gtp_node_t *gnode;
} mme_sgw_t;
typedef struct mme_pgw_s {
ogs_lnode_t lnode;
ogs_gtp_node_t *gnode;
ogs_sockaddr_t *sa_list;
const char *apn;
} mme_pgw_t;
@ -517,7 +515,10 @@ struct mme_ue_s {
*/
int session_context_will_deleted;
ogs_gtp_node_t *gnode;
union {
mme_sgw_t *sgw;
ogs_gtp_node_t *gnode;
};
mme_csmap_t *csmap;
};
@ -796,7 +797,7 @@ void mme_bearer_remove_all(mme_sess_t *sess);
mme_bearer_t *mme_bearer_find_by_sess_ebi(mme_sess_t *sess, uint8_t ebi);
mme_bearer_t *mme_bearer_find_by_ue_ebi(mme_ue_t *mme_ue, uint8_t ebi);
mme_bearer_t *mme_bearer_find_or_add_by_message(
mme_ue_t *mme_ue, ogs_nas_eps_message_t *message, bool esm_piggybacked);
mme_ue_t *mme_ue, ogs_nas_eps_message_t *message, int create_action);
mme_bearer_t *mme_default_bearer_in_sess(mme_sess_t *sess);
mme_bearer_t *mme_linked_bearer(mme_bearer_t *bearer);
mme_bearer_t *mme_bearer_first(mme_sess_t *sess);
@ -820,6 +821,8 @@ void mme_ebi_pool_clear(mme_ue_t *mme_ue);
uint8_t mme_selected_int_algorithm(mme_ue_t *mme_ue);
uint8_t mme_selected_enc_algorithm(mme_ue_t *mme_ue);
mme_sgw_t *mme_changed_sgw_node(mme_sgw_t *current, enb_ue_t *enb_ue);
#ifdef __cplusplus
}
#endif

View File

@ -83,7 +83,7 @@ typedef struct mme_event_s {
ogs_gtp_node_t *gnode;
uint8_t nas_type;
bool esm_piggybacked;
int create_action;
ogs_nas_eps_message_t *nas_message;
ogs_diam_s6a_message_t *s6a_message;

View File

@ -59,11 +59,11 @@ static void _gtpv2_c_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_free(pkbuf);
return;
}
ogs_assert(sgw->gnode);
ogs_assert(sgw);
e = mme_event_new(MME_EVT_S11_MESSAGE);
ogs_assert(e);
e->gnode = sgw->gnode;
e->gnode = (ogs_gtp_node_t *)sgw;
e->pkbuf = pkbuf;
rv = ogs_queue_push(ogs_app()->queue, e);
@ -186,7 +186,7 @@ int mme_gtp_open(void)
ogs_list_for_each(&mme_self()->sgw_list, sgw) {
rv = ogs_gtp_connect(
ogs_gtp_self()->gtpc_sock, ogs_gtp_self()->gtpc_sock6,
sgw->gnode);
(ogs_gtp_node_t *)sgw);
ogs_assert(rv == OGS_OK);
}
@ -199,7 +199,7 @@ void mme_gtp_close(void)
ogs_socknode_remove_all(&ogs_gtp_self()->gtpc_list6);
}
int mme_gtp_send_create_session_request(mme_sess_t *sess, bool esm_piggybacked)
int mme_gtp_send_create_session_request(mme_sess_t *sess, int create_action)
{
int rv;
ogs_gtp2_header_t h;
@ -219,7 +219,7 @@ int mme_gtp_send_create_session_request(mme_sess_t *sess, bool esm_piggybacked)
xact = ogs_gtp_xact_local_create(mme_ue->gnode, &h, pkbuf, timeout, sess);
ogs_expect_or_return_val(xact, OGS_ERROR);
xact->esm_piggybacked = esm_piggybacked;
xact->create_action = create_action;
rv = ogs_gtp_xact_commit(xact);
ogs_expect(rv == OGS_OK);

View File

@ -29,7 +29,7 @@ extern "C" {
int mme_gtp_open(void);
void mme_gtp_close(void);
int mme_gtp_send_create_session_request(mme_sess_t *sess, bool esm_piggybacked);
int mme_gtp_send_create_session_request(mme_sess_t *sess, int create_action);
int mme_gtp_send_modify_bearer_request(mme_bearer_t *bearer, int uli_presence);
int mme_gtp_send_delete_session_request(mme_sess_t *sess, int action);
void mme_gtp_send_delete_all_sessions(mme_ue_t *mme_ue, int action);

View File

@ -92,10 +92,10 @@ void mme_s11_handle_create_session_response(
ogs_gtp2_bearer_qos_t bearer_qos;
ogs_gtp2_ambr_t *ambr = NULL;
uint16_t decoded = 0;
bool esm_piggybacked = false;
int create_action = 0;
ogs_assert(xact);
esm_piggybacked = xact->esm_piggybacked;
create_action = xact->create_action;
ogs_assert(rsp);
ogs_debug("Create Session Response");
@ -193,7 +193,7 @@ void mme_s11_handle_create_session_response(
cause_value !=
OGS_GTP2_CAUSE_NEW_PDN_TYPE_DUE_TO_SINGLE_ADDRESS_BEARER_ONLY) {
if (mme_ue_from_teid && mme_ue) {
if (esm_piggybacked == true) {
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST) {
ogs_error("[%s] Attach reject", mme_ue->imsi_bcd);
ogs_assert(OGS_OK ==
nas_eps_send_attach_reject(mme_ue,
@ -256,7 +256,7 @@ void mme_s11_handle_create_session_response(
rv = ogs_gtp2_f_teid_to_ip(sgw_s1u_teid, &bearer->sgw_s1u_ip);
ogs_assert(rv == OGS_OK);
if (esm_piggybacked == true) {
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST) {
mme_csmap_t *csmap = mme_csmap_find_by_tai(&mme_ue->tai);
mme_ue->csmap = csmap;
@ -275,7 +275,8 @@ void mme_s11_handle_create_session_response(
} else {
ogs_assert(OGS_PDU_SESSION_TYPE_IS_VALID(session->paa.session_type));
ogs_assert(OGS_OK ==
nas_eps_send_activate_default_bearer_context_request(bearer));
nas_eps_send_activate_default_bearer_context_request(
bearer, create_action));
}
}

View File

@ -375,7 +375,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
}
bearer = mme_bearer_find_or_add_by_message(
mme_ue, &nas_message, e->esm_piggybacked);
mme_ue, &nas_message, e->create_action);
if (!bearer) {
ogs_pkbuf_free(pkbuf);
break;

View File

@ -56,7 +56,7 @@ int nas_eps_send_emm_to_esm(mme_ue_t *mme_ue,
ogs_pkbuf_put_data(esmbuf,
esm_message_container->buffer, esm_message_container->length);
rv = s1ap_send_to_esm(mme_ue, esmbuf, 0, true);
rv = s1ap_send_to_esm(mme_ue, esmbuf, 0, OGS_GTP_CREATE_IN_ATTACH_REQUEST);
ogs_expect(rv == OGS_OK);
return rv;
@ -105,7 +105,8 @@ int nas_eps_send_attach_accept(mme_ue_t *mme_ue)
ogs_debug("[%s] Attach accept", mme_ue->imsi_bcd);
esmbuf = esm_build_activate_default_bearer_context_request(sess, true);
esmbuf = esm_build_activate_default_bearer_context_request(
sess, OGS_GTP_CREATE_IN_ATTACH_REQUEST);
ogs_expect_or_return_val(esmbuf, OGS_ERROR);
emmbuf = emm_build_attach_accept(mme_ue, esmbuf);
@ -140,7 +141,8 @@ int nas_eps_send_attach_reject(mme_ue_t *mme_ue,
sess = mme_sess_first(mme_ue);
if (sess) {
esmbuf = esm_build_pdn_connectivity_reject(sess, esm_cause, true);
esmbuf = esm_build_pdn_connectivity_reject(
sess, esm_cause, OGS_GTP_CREATE_IN_ATTACH_REQUEST);
ogs_expect_or_return_val(esmbuf, OGS_ERROR);
}
@ -285,7 +287,7 @@ int nas_eps_send_detach_accept(mme_ue_t *mme_ue)
}
int nas_eps_send_pdn_connectivity_reject(
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, bool esm_piggybacked)
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, int create_action)
{
int rv;
mme_ue_t *mme_ue;
@ -295,14 +297,15 @@ int nas_eps_send_pdn_connectivity_reject(
mme_ue = sess->mme_ue;
ogs_assert(mme_ue);
if (esm_piggybacked == true) {
if (create_action == OGS_GTP_CREATE_IN_ATTACH_REQUEST) {
/* During the UE-attach process, we'll send Attach-Reject
* with pyggybacking PDN-connectivity-Reject */
rv = nas_eps_send_attach_reject(mme_ue,
EMM_CAUSE_EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED, esm_cause);
ogs_expect(rv == OGS_OK);
} else {
esmbuf = esm_build_pdn_connectivity_reject(sess, esm_cause, false);
esmbuf = esm_build_pdn_connectivity_reject(
sess, esm_cause, create_action);
ogs_expect_or_return_val(esmbuf, OGS_ERROR);
rv = nas_eps_send_to_downlink_nas_transport(mme_ue, esmbuf);
@ -341,7 +344,8 @@ int nas_eps_send_esm_information_request(mme_bearer_t *bearer)
return rv;
}
int nas_eps_send_activate_default_bearer_context_request(mme_bearer_t *bearer)
int nas_eps_send_activate_default_bearer_context_request(
mme_bearer_t *bearer, int create_action)
{
int rv;
ogs_pkbuf_t *s1apbuf = NULL;
@ -355,7 +359,8 @@ int nas_eps_send_activate_default_bearer_context_request(mme_bearer_t *bearer)
mme_ue = bearer->mme_ue;
ogs_assert(mme_ue);
esmbuf = esm_build_activate_default_bearer_context_request(sess, false);
esmbuf = esm_build_activate_default_bearer_context_request(
sess, create_action);
ogs_expect_or_return_val(esmbuf, OGS_ERROR);
s1apbuf = s1ap_build_e_rab_setup_request(bearer, esmbuf);

View File

@ -46,9 +46,10 @@ int nas_eps_send_security_mode_command(mme_ue_t *mme_ue);
int nas_eps_send_detach_accept(mme_ue_t *mme_ue);
int nas_eps_send_pdn_connectivity_reject(
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, bool esm_piggybacked);
mme_sess_t *sess, ogs_nas_esm_cause_t esm_cause, int create_action);
int nas_eps_send_esm_information_request(mme_bearer_t *bearer);
int nas_eps_send_activate_default_bearer_context_request(mme_bearer_t *bearer);
int nas_eps_send_activate_default_bearer_context_request(
mme_bearer_t *bearer, int create_action);
int nas_eps_send_activate_dedicated_bearer_context_request(
mme_bearer_t *bearer);
void nas_eps_send_activate_all_dedicated_bearers(mme_bearer_t *default_bearer);

View File

@ -117,7 +117,7 @@ int s1ap_delayed_send_to_enb_ue(
int s1ap_send_to_esm(
mme_ue_t *mme_ue, ogs_pkbuf_t *esmbuf,
uint8_t nas_type, bool esm_piggybacked)
uint8_t nas_type, int create_action)
{
int rv;
mme_event_t *e = NULL;
@ -130,7 +130,7 @@ int s1ap_send_to_esm(
e->mme_ue = mme_ue;
e->pkbuf = esmbuf;
e->nas_type = nas_type;
e->esm_piggybacked = esm_piggybacked;
e->create_action = create_action;
rv = ogs_queue_push(ogs_app()->queue, e);
if (rv != OGS_OK) {
ogs_warn("ogs_queue_push() failed:%d", (int)rv);
@ -235,7 +235,8 @@ int s1ap_send_to_nas(enb_ue_t *enb_ue,
return OGS_ERROR;
}
return s1ap_send_to_esm(
mme_ue, nasbuf, security_header_type.type, false);
mme_ue, nasbuf, security_header_type.type,
OGS_GTP_CREATE_IN_UPLINK_NAS_TRANSPORT);
} else {
ogs_error("Unknown/Unimplemented NAS Protocol discriminator 0x%02x",
h->protocol_discriminator);

View File

@ -46,7 +46,7 @@ int s1ap_send_to_nas(enb_ue_t *enb_ue,
S1AP_ProcedureCode_t procedureCode, S1AP_NAS_PDU_t *nasPdu);
int s1ap_send_to_esm(
mme_ue_t *mme_ue, ogs_pkbuf_t *esmbuf,
uint8_t nas_type, bool esm_piggybacked);
uint8_t nas_type, int create_action);
int s1ap_send_s1_setup_response(mme_enb_t *enb);
int s1ap_send_s1_setup_failure(

View File

@ -317,10 +317,12 @@ static bool compare_ue_info(ogs_pfcp_node_t *node, sgwc_sess_t *sess)
if (ogs_strcasecmp(node->dnn[i], sess->session.name) == 0) return true;
for (i = 0; i < node->num_of_e_cell_id; i++)
if (node->e_cell_id[i] == sgwc_ue->e_cgi.cell_id) return true;
if (sgwc_ue->uli_presence == true &&
node->e_cell_id[i] == sgwc_ue->e_cgi.cell_id) return true;
for (i = 0; i < node->num_of_tac; i++)
if (node->tac[i] == sgwc_ue->e_tai.tac) return true;
if (sgwc_ue->uli_presence == true &&
node->tac[i] == sgwc_ue->e_tai.tac) return true;
return false;
}
@ -681,19 +683,6 @@ sgwc_tunnel_t *sgwc_tunnel_add(
ogs_assert(pdr->apn);
}
pdr->outer_header_removal_len = 1;
if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) {
pdr->outer_header_removal.description =
OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4;
} else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) {
pdr->outer_header_removal.description =
OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV6;
} else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) {
pdr->outer_header_removal.description =
OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP;
} else
ogs_assert_if_reached();
far = ogs_pfcp_far_add(&sess->pfcp);
ogs_assert(far);

View File

@ -59,6 +59,7 @@ typedef struct sgwc_ue_s {
char imsi_bcd[OGS_MAX_IMSI_BCD_LEN+1];
/* User-Location-Info */
bool uli_presence;
ogs_eps_tai_t e_tai;
ogs_e_cgi_t e_cgi;
@ -88,13 +89,13 @@ typedef struct sgwc_sess_s {
* it is used to check if all sessions are deactivated.
*/
struct {
bool release_access_bearers;
bool create_indirect_tunnel;
bool delete_indirect_tunnel;
bool release_access_bearers;
bool create_indirect_tunnel;
bool delete_indirect_tunnel;
} state;
/* APN Configuration */
ogs_session_t session;
ogs_session_t session;
ogs_list_t bearer_list;

View File

@ -141,7 +141,7 @@ void sgwc_s11_handle_create_session_request(
if (req->imsi.presence == 0) {
ogs_error("No IMSI");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (req->bearer_contexts_to_be_created.presence == 0) {
ogs_error("No Bearer");
@ -165,15 +165,7 @@ void sgwc_s11_handle_create_session_request(
}
if (req->pgw_s5_s8_address_for_control_plane_or_pmip.presence == 0) {
ogs_error("No PGW IP");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
}
if (req->user_location_information.presence == 0) {
ogs_error("No User Location Inforamtion");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
}
if (req->pdn_type.presence == 0) {
ogs_error("No PDN Type");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (!sgwc_ue) {
@ -203,19 +195,24 @@ void sgwc_s11_handle_create_session_request(
ogs_assert(sess);
/* Set User Location Information */
decoded = ogs_gtp2_parse_uli(&uli, &req->user_location_information);
ogs_assert(req->user_location_information.len == decoded);
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
sgwc_ue->e_tai.tac = uli.tai.tac;
ogs_nas_to_plmn_id(&sgwc_ue->e_cgi.plmn_id, &uli.e_cgi.nas_plmn_id);
sgwc_ue->e_cgi.cell_id = uli.e_cgi.cell_id;
if (req->user_location_information.presence == 1) {
decoded = ogs_gtp2_parse_uli(&uli, &req->user_location_information);
ogs_assert(req->user_location_information.len == decoded);
ogs_debug(" TAI[PLMN_ID:%06x,TAC:%d]",
ogs_plmn_id_hexdump(&sgwc_ue->e_tai.plmn_id),
sgwc_ue->e_tai.tac);
ogs_debug(" E_CGI[PLMN_ID:%06x,CELL_ID:0x%x]",
ogs_plmn_id_hexdump(&sgwc_ue->e_cgi.plmn_id),
sgwc_ue->e_cgi.cell_id);
sgwc_ue->uli_presence = true;
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
sgwc_ue->e_tai.tac = uli.tai.tac;
ogs_nas_to_plmn_id(&sgwc_ue->e_cgi.plmn_id, &uli.e_cgi.nas_plmn_id);
sgwc_ue->e_cgi.cell_id = uli.e_cgi.cell_id;
ogs_debug(" TAI[PLMN_ID:%06x,TAC:%d]",
ogs_plmn_id_hexdump(&sgwc_ue->e_tai.plmn_id),
sgwc_ue->e_tai.tac);
ogs_debug(" E_CGI[PLMN_ID:%06x,CELL_ID:0x%x]",
ogs_plmn_id_hexdump(&sgwc_ue->e_cgi.plmn_id),
sgwc_ue->e_cgi.cell_id);
}
/* Select SGW-U based on UE Location Information */
sgwc_sess_select_sgwu(sess);
@ -242,10 +239,6 @@ void sgwc_s11_handle_create_session_request(
sess->session.qos.arp.pre_emption_vulnerability =
bearer_qos.pre_emption_vulnerability;
/* Set PDN Type */
sess->session.session_type = req->pdn_type.u8;
sess->session.paa.session_type = req->pdn_type.u8;
/* Remove all previous bearer */
sgwc_bearer_remove_all(sess);
@ -358,13 +351,16 @@ void sgwc_s11_handle_modify_bearer_request(
}
if (req->user_location_information.presence == 1) {
decoded = ogs_gtp2_parse_uli(
&uli, &req->user_location_information);
decoded = ogs_gtp2_parse_uli(&uli, &req->user_location_information);
ogs_assert(req->user_location_information.len == decoded);
sgwc_ue->uli_presence = true;
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
sgwc_ue->e_tai.tac = uli.tai.tac;
ogs_nas_to_plmn_id(&sgwc_ue->e_cgi.plmn_id, &uli.e_cgi.nas_plmn_id);
sgwc_ue->e_cgi.cell_id = uli.e_cgi.cell_id;
ogs_debug(" TAI[PLMN_ID:%06x,TAC:%d]",
ogs_plmn_id_hexdump(&sgwc_ue->e_tai.plmn_id),
sgwc_ue->e_tai.tac);
@ -539,10 +535,6 @@ void sgwc_s11_handle_create_bearer_response(
ogs_error("No SGW TEID");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
}
if (rsp->user_location_information.presence == 0) {
ogs_error("No User Location Inforamtion");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
}
if (s11_xact->xid & OGS_GTP_CMD_XACT_ID)
/* MME received Bearer Resource Modification Request */
@ -634,19 +626,24 @@ void sgwc_s11_handle_create_bearer_response(
&far->outer_header_creation, &far->outer_header_creation_len));
far->outer_header_creation.teid = dl_tunnel->remote_teid;
decoded = ogs_gtp2_parse_uli(&uli, &rsp->user_location_information);
ogs_assert(rsp->user_location_information.len == decoded);
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
sgwc_ue->e_tai.tac = uli.tai.tac;
ogs_nas_to_plmn_id(&sgwc_ue->e_cgi.plmn_id, &uli.e_cgi.nas_plmn_id);
sgwc_ue->e_cgi.cell_id = uli.e_cgi.cell_id;
if (rsp->user_location_information.presence == 1) {
decoded = ogs_gtp2_parse_uli(&uli, &rsp->user_location_information);
ogs_assert(rsp->user_location_information.len == decoded);
ogs_debug(" TAI[PLMN_ID:%06x,TAC:%d]",
ogs_plmn_id_hexdump(&sgwc_ue->e_tai.plmn_id),
sgwc_ue->e_tai.tac);
ogs_debug(" E_CGI[PLMN_ID:%06x,CELL_ID:0x%x]",
ogs_plmn_id_hexdump(&sgwc_ue->e_cgi.plmn_id),
sgwc_ue->e_cgi.cell_id);
sgwc_ue->uli_presence = true;
ogs_nas_to_plmn_id(&sgwc_ue->e_tai.plmn_id, &uli.tai.nas_plmn_id);
sgwc_ue->e_tai.tac = uli.tai.tac;
ogs_nas_to_plmn_id(&sgwc_ue->e_cgi.plmn_id, &uli.e_cgi.nas_plmn_id);
sgwc_ue->e_cgi.cell_id = uli.e_cgi.cell_id;
ogs_debug(" TAI[PLMN_ID:%06x,TAC:%d]",
ogs_plmn_id_hexdump(&sgwc_ue->e_tai.plmn_id),
sgwc_ue->e_tai.tac);
ogs_debug(" E_CGI[PLMN_ID:%06x,CELL_ID:0x%x]",
ogs_plmn_id_hexdump(&sgwc_ue->e_cgi.plmn_id),
sgwc_ue->e_cgi.cell_id);
}
ogs_assert(OGS_OK ==
sgwc_pfcp_send_bearer_modification_request(

View File

@ -147,11 +147,11 @@ void sgwc_s5c_handle_create_session_response(
if (rsp->pgw_s5_s8__s2a_s2b_f_teid_for_pmip_based_interface_or_for_gtp_based_control_plane_interface.presence == 0) {
ogs_error("No GTP TEID");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.presence == 0) {
ogs_error("No GTP TEID");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (rsp->cause.presence == 0) {
@ -177,12 +177,12 @@ void sgwc_s5c_handle_create_session_response(
/* Nothing */
} else {
ogs_error("Unknown PDN Type %u", paa.session_type);
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
} else {
ogs_error("No PDN Address Allocation");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) {

View File

@ -97,10 +97,6 @@ ogs_pkbuf_t *sgwc_sxa_build_session_establishment_request(
ogs_pfcp_build_create_bar(&req->create_bar, sess->pfcp.bar);
}
/* PDN Type */
req->pdn_type.presence = 1;
req->pdn_type.u8 = sess->session.paa.session_type;
pfcp_message.h.type = type;
pkbuf = ogs_pfcp_build_msg(&pfcp_message);

View File

@ -76,7 +76,7 @@ uint8_t smf_s5c_handle_create_session_request(
if (req->imsi.presence == 0) {
ogs_error("No IMSI");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (req->sender_f_teid_for_control_plane.presence == 0) {
ogs_error("No TEID");
@ -96,20 +96,20 @@ uint8_t smf_s5c_handle_create_session_request(
}
if (req->pdn_address_allocation.presence == 0) {
ogs_error("No PAA");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (req->serving_network.presence == 0) {
ogs_error("No Serving Network");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (req->serving_network.data == NULL) {
ogs_error("No Data in Serving Network");
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (req->serving_network.len != OGS_PLMN_ID_LEN) {
ogs_error("Invalid Len[%d] in Serving Network",
req->serving_network.len);
cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING;
cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING;
}
if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) {

View File

@ -120,9 +120,13 @@ void upf_n4_handle_session_establishment_request(
ogs_assert(pdr);
/* Setup UE IP address */
if (req->pdn_type.presence && pdr->ue_ip_addr_len) {
ogs_assert(OGS_PFCP_CAUSE_REQUEST_ACCEPTED ==
upf_sess_set_ue_ip(sess, req->pdn_type.u8, pdr));
if (pdr->ue_ip_addr_len) {
if (req->pdn_type.presence == 1) {
ogs_assert(OGS_PFCP_CAUSE_REQUEST_ACCEPTED ==
upf_sess_set_ue_ip(sess, req->pdn_type.u8, pdr));
} else {
ogs_error("No PDN Type");
}
}
/* Setup UPF-N3-TEID & QFI Hash */

View File

@ -95,7 +95,7 @@ int app_initialize(const char *const argv[])
*
* Note that at least 4 seconds are needed if freeDiameter is running.
*/
ogs_msleep(5000);
ogs_msleep(500);
return OGS_OK;;
}

View File

@ -60,7 +60,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue = test_ue_add_by_suci(&mobile_identity_suci, 13);
ogs_assert(test_ue);
test_ue->e_cgi.cell_id = 0x4615380;
test_ue->e_cgi.cell_id = 0x1234560;
test_ue->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;
@ -346,7 +346,7 @@ static void test1_func(abts_case *tc, void *data)
tests1ap_recv(test_ue, recvbuf);
/* Send Handover Notify */
test_ue->e_cgi.cell_id = 0x43a00;
test_ue->e_cgi.cell_id = 0xabcdef0;
sendbuf = test_s1ap_build_handover_notify(test_ue);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap2, sendbuf);
@ -467,7 +467,7 @@ static void test1_func(abts_case *tc, void *data)
tests1ap_recv(test_ue, recvbuf);
/* Send Handover Notify */
test_ue->e_cgi.cell_id = 0x1f20a0;
test_ue->e_cgi.cell_id = 0x1234560;
sendbuf = test_s1ap_build_handover_notify(test_ue);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap1, sendbuf);
@ -630,7 +630,7 @@ static void test2_func(abts_case *tc, void *data)
test_ue = test_ue_add_by_suci(&mobile_identity_suci, 13);
ogs_assert(test_ue);
test_ue->e_cgi.cell_id = 0x4615380;
test_ue->e_cgi.cell_id = 0x1234560;
test_ue->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;
@ -957,7 +957,7 @@ static void test3_func(abts_case *tc, void *data)
test_ue = test_ue_add_by_suci(&mobile_identity_suci, 13);
ogs_assert(test_ue);
test_ue->e_cgi.cell_id = 0x4615380;
test_ue->e_cgi.cell_id = 0x1234560;
test_ue->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;

View File

@ -57,7 +57,7 @@ static void test1_func(abts_case *tc, void *data)
test_ue = test_ue_add_by_suci(&mobile_identity_suci, 13);
ogs_assert(test_ue);
test_ue->e_cgi.cell_id = 0x4615380;
test_ue->e_cgi.cell_id = 0x1234560;
test_ue->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;
@ -260,7 +260,7 @@ static void test1_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf);
/* Send Path Switch Request */
test_ue->e_cgi.cell_id = 0x461530;
test_ue->e_cgi.cell_id = 0xabcdef0;
test_ue->enb_ue_s1ap_id++;
ogs_list_for_each(&sess->bearer_list, bearer) {
bearer->enb_s1u_addr = test_self()->gnb2_addr;
@ -310,7 +310,7 @@ static void test1_func(abts_case *tc, void *data)
ogs_pkbuf_free(recvbuf);
/* Send Path Switch Request */
test_ue->e_cgi.cell_id = 0x46150;
test_ue->e_cgi.cell_id = 0x1234560;
test_ue->enb_ue_s1ap_id++;
ogs_list_for_each(&sess->bearer_list, bearer) {
bearer->enb_s1u_addr = test_self()->gnb1_addr;