forked from acouzens/open5gs
update it
This commit is contained in:
parent
38d9df9fd9
commit
ab0584dabb
|
@ -8,7 +8,7 @@
|
|||
#include "emm_handler.h"
|
||||
#include "mme_s6a_handler.h"
|
||||
|
||||
void emm_state_initial(emm_sm_t *s, event_t *e)
|
||||
void emm_state_initial(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
|
||||
|
@ -17,14 +17,14 @@ void emm_state_initial(emm_sm_t *s, event_t *e)
|
|||
FSM_TRAN(s, &emm_state_operational);
|
||||
}
|
||||
|
||||
void emm_state_final(emm_sm_t *s, event_t *e)
|
||||
void emm_state_final(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
|
||||
mme_sm_trace(1, e);
|
||||
}
|
||||
|
||||
void emm_state_operational(emm_sm_t *s, event_t *e)
|
||||
void emm_state_operational(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
d_assert(e, return, "Null param");
|
||||
|
@ -104,7 +104,7 @@ void emm_state_operational(emm_sm_t *s, event_t *e)
|
|||
}
|
||||
}
|
||||
|
||||
void emm_state_exception(emm_sm_t *s, event_t *e)
|
||||
void emm_state_exception(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
d_assert(e, return, "Null param");
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include "mme_event.h"
|
||||
#include "esm_handler.h"
|
||||
|
||||
void esm_state_initial(esm_sm_t *s, event_t *e)
|
||||
void esm_state_initial(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
|
||||
|
@ -16,14 +16,14 @@ void esm_state_initial(esm_sm_t *s, event_t *e)
|
|||
FSM_TRAN(s, &esm_state_operational);
|
||||
}
|
||||
|
||||
void esm_state_final(esm_sm_t *s, event_t *e)
|
||||
void esm_state_final(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
|
||||
mme_sm_trace(1, e);
|
||||
}
|
||||
|
||||
void esm_state_operational(esm_sm_t *s, event_t *e)
|
||||
void esm_state_operational(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
d_assert(e, return, "Null param");
|
||||
|
@ -81,7 +81,7 @@ void esm_state_operational(esm_sm_t *s, event_t *e)
|
|||
}
|
||||
}
|
||||
|
||||
void esm_state_exception(esm_sm_t *s, event_t *e)
|
||||
void esm_state_exception(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
d_assert(e, return, "Null param");
|
||||
|
|
|
@ -197,9 +197,8 @@ mme_enb_t* mme_enb_add(net_sock_t *s1ap_sock)
|
|||
list_init(&enb->ue_list);
|
||||
list_append(&self.enb_list, enb);
|
||||
|
||||
fsm_create((fsm_t*)&enb->s1ap_sm,
|
||||
s1ap_state_initial, s1ap_state_final);
|
||||
fsm_init((fsm_t*)&enb->s1ap_sm, 0);
|
||||
fsm_create(&enb->sm, s1ap_state_initial, s1ap_state_final);
|
||||
fsm_init(&enb->sm, 0);
|
||||
|
||||
return enb;
|
||||
}
|
||||
|
@ -208,8 +207,8 @@ status_t mme_enb_remove(mme_enb_t *enb)
|
|||
{
|
||||
d_assert(enb, return CORE_ERROR, "Null param");
|
||||
|
||||
fsm_final((fsm_t*)&enb->s1ap_sm, 0);
|
||||
fsm_clear((fsm_t*)&enb->s1ap_sm);
|
||||
fsm_final(&enb->sm, 0);
|
||||
fsm_clear(&enb->sm);
|
||||
|
||||
mme_ue_remove_in_enb(enb);
|
||||
|
||||
|
@ -374,9 +373,8 @@ mme_ue_t* mme_ue_add(mme_enb_t *enb)
|
|||
list_init(&ue->esm_list);
|
||||
list_append(&enb->ue_list, ue);
|
||||
|
||||
fsm_create((fsm_t*)&ue->emm_sm,
|
||||
emm_state_initial, emm_state_final);
|
||||
fsm_init((fsm_t*)&ue->emm_sm, 0);
|
||||
fsm_create(&ue->sm, emm_state_initial, emm_state_final);
|
||||
fsm_init(&ue->sm, 0);
|
||||
|
||||
return ue;
|
||||
}
|
||||
|
@ -387,8 +385,8 @@ status_t mme_ue_remove(mme_ue_t *ue)
|
|||
d_assert(ue, return CORE_ERROR, "Null param");
|
||||
d_assert(ue->enb, return CORE_ERROR, "Null param");
|
||||
|
||||
fsm_final((fsm_t*)&ue->emm_sm, 0);
|
||||
fsm_clear((fsm_t*)&ue->emm_sm);
|
||||
fsm_final(&ue->sm, 0);
|
||||
fsm_clear(&ue->sm);
|
||||
|
||||
mme_esm_remove_all(ue);
|
||||
|
||||
|
@ -509,9 +507,8 @@ mme_esm_t* mme_esm_add(mme_ue_t *ue, c_uint8_t pti)
|
|||
|
||||
list_append(&ue->esm_list, esm);
|
||||
|
||||
fsm_create((fsm_t*)&esm->sm,
|
||||
esm_state_initial, esm_state_final);
|
||||
fsm_init((fsm_t*)&esm->sm, 0);
|
||||
fsm_create(&esm->sm, esm_state_initial, esm_state_final);
|
||||
fsm_init(&esm->sm, 0);
|
||||
|
||||
return esm;
|
||||
}
|
||||
|
@ -521,8 +518,8 @@ status_t mme_esm_remove(mme_esm_t *esm)
|
|||
d_assert(esm, return CORE_ERROR, "Null param");
|
||||
d_assert(esm->ue, return CORE_ERROR, "Null param");
|
||||
|
||||
fsm_final((fsm_t*)&esm->sm, 0);
|
||||
fsm_clear((fsm_t*)&esm->sm);
|
||||
fsm_final(&esm->sm, 0);
|
||||
fsm_clear(&esm->sm);
|
||||
|
||||
list_remove(&esm->ue->esm_list, esm);
|
||||
index_free(&mme_esm_pool, esm);
|
||||
|
|
|
@ -84,10 +84,9 @@ typedef struct _mme_sgw_t {
|
|||
typedef struct _mme_enb_t {
|
||||
lnode_t node; /**< A node of list_t */
|
||||
index_t index; /**< Index key */
|
||||
fsm_t sm;
|
||||
|
||||
c_uint32_t enb_id; /** eNB_ID received from eNB */
|
||||
|
||||
s1ap_sm_t s1ap_sm;
|
||||
net_sock_t *s1ap_sock;
|
||||
|
||||
list_t ue_list;
|
||||
|
@ -97,9 +96,9 @@ typedef struct _mme_enb_t {
|
|||
typedef struct _mme_ue_t {
|
||||
lnode_t node; /**< A node of list_t */
|
||||
index_t index; /**< Index key */
|
||||
fsm_t sm;
|
||||
|
||||
/* State Machine */
|
||||
emm_sm_t emm_sm;
|
||||
|
||||
/* UE identity */
|
||||
c_uint32_t enb_ue_s1ap_id; /** eNB-UE-S1AP-ID received from eNB */
|
||||
|
@ -153,11 +152,10 @@ typedef struct _mme_ue_t {
|
|||
typedef struct _mme_esm_t {
|
||||
lnode_t node; /**< A node of list_t */
|
||||
index_t index; /**< Index key */
|
||||
fsm_t sm;
|
||||
|
||||
c_uint8_t pti; /** Procedure Trasaction Identity */
|
||||
|
||||
esm_sm_t sm;
|
||||
|
||||
mme_ue_t *ue;
|
||||
} mme_esm_t;
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ void mme_terminate(void)
|
|||
void *THREAD_FUNC mme_sm_main(thread_id id, void *data)
|
||||
{
|
||||
event_t event;
|
||||
mme_sm_t mme_sm;
|
||||
fsm_t mme_sm;
|
||||
c_time_t prev_tm, now_tm;
|
||||
status_t rv;
|
||||
|
||||
|
@ -52,9 +52,8 @@ void *THREAD_FUNC mme_sm_main(thread_id id, void *data)
|
|||
gtp_xact_init(&mme_self()->gtp_xact_ctx,
|
||||
&mme_self()->tm_service, EVT_TM_MME_S11_T3);
|
||||
|
||||
fsm_create(&mme_sm.fsm, mme_state_initial, mme_state_final);
|
||||
d_assert(&mme_sm.fsm, return NULL, "MME state machine creation failed");
|
||||
fsm_init((fsm_t*)&mme_sm, 0);
|
||||
fsm_create(&mme_sm, mme_state_initial, mme_state_final);
|
||||
fsm_init(&mme_sm, 0);
|
||||
|
||||
prev_tm = time_now();
|
||||
|
||||
|
@ -81,11 +80,11 @@ void *THREAD_FUNC mme_sm_main(thread_id id, void *data)
|
|||
continue;
|
||||
}
|
||||
|
||||
fsm_dispatch((fsm_t*)&mme_sm, (fsm_event_t*)&event);
|
||||
fsm_dispatch(&mme_sm, (fsm_event_t*)&event);
|
||||
}
|
||||
|
||||
fsm_final((fsm_t*)&mme_sm, 0);
|
||||
fsm_clear((fsm_t*)&mme_sm);
|
||||
fsm_final(&mme_sm, 0);
|
||||
fsm_clear(&mme_sm);
|
||||
|
||||
gtp_xact_final();
|
||||
event_delete(mme_self()->queue_id);
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "nas_security.h"
|
||||
#include "mme_s11_path.h"
|
||||
|
||||
void mme_state_initial(mme_sm_t *s, event_t *e)
|
||||
void mme_state_initial(fsm_t *s, event_t *e)
|
||||
{
|
||||
mme_sm_trace(1, e);
|
||||
|
||||
|
@ -19,14 +19,14 @@ void mme_state_initial(mme_sm_t *s, event_t *e)
|
|||
FSM_TRAN(s, &mme_state_operational);
|
||||
}
|
||||
|
||||
void mme_state_final(mme_sm_t *s, event_t *e)
|
||||
void mme_state_final(fsm_t *s, event_t *e)
|
||||
{
|
||||
mme_sm_trace(1, e);
|
||||
|
||||
d_assert(s, return, "Null param");
|
||||
}
|
||||
|
||||
void mme_state_operational(mme_sm_t *s, event_t *e)
|
||||
void mme_state_operational(fsm_t *s, event_t *e)
|
||||
{
|
||||
status_t rv;
|
||||
char buf[INET_ADDRSTRLEN];
|
||||
|
@ -131,14 +131,14 @@ void mme_state_operational(mme_sm_t *s, event_t *e)
|
|||
d_assert(index, pkbuf_free(pkbuf); break, "Null param");
|
||||
d_assert(enb = mme_enb_find(index),
|
||||
pkbuf_free(pkbuf); break, "No eNB context");
|
||||
d_assert(FSM_STATE(&enb->s1ap_sm),
|
||||
d_assert(FSM_STATE(&enb->sm),
|
||||
pkbuf_free(pkbuf); break, "No S1AP State Machine");
|
||||
|
||||
d_assert(s1ap_decode_pdu(&message, pkbuf) == CORE_OK,
|
||||
pkbuf_free(pkbuf); break, "Can't decode S1AP_PDU");
|
||||
|
||||
event_set_param3(e, (c_uintptr_t)&message);
|
||||
fsm_dispatch((fsm_t*)&enb->s1ap_sm, (fsm_event_t*)e);
|
||||
fsm_dispatch(&enb->sm, (fsm_event_t*)e);
|
||||
|
||||
s1ap_free_pdu(&message);
|
||||
pkbuf_free(pkbuf);
|
||||
|
@ -155,14 +155,14 @@ void mme_state_operational(mme_sm_t *s, event_t *e)
|
|||
d_assert(index, pkbuf_free(pkbuf); break, "Null param");
|
||||
ue = mme_ue_find(index);
|
||||
d_assert(ue, pkbuf_free(pkbuf); break, "No UE context");
|
||||
d_assert(FSM_STATE(&ue->emm_sm),
|
||||
d_assert(FSM_STATE(&ue->sm),
|
||||
pkbuf_free(pkbuf); break, "No EMM State Machine");
|
||||
|
||||
d_assert(nas_security_decode(&message, ue, pkbuf) == CORE_OK,
|
||||
pkbuf_free(pkbuf); break, "Can't decode NAS_EMM");
|
||||
|
||||
event_set_param3(e, (c_uintptr_t)&message);
|
||||
fsm_dispatch((fsm_t*)&ue->emm_sm, (fsm_event_t*)e);
|
||||
fsm_dispatch(&ue->sm, (fsm_event_t*)e);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
break;
|
||||
|
@ -187,7 +187,7 @@ void mme_state_operational(mme_sm_t *s, event_t *e)
|
|||
pkbuf_free(pkbuf); break, "Can't decode NAS_ESM");
|
||||
|
||||
event_set_param3(e, (c_uintptr_t)&message);
|
||||
fsm_dispatch((fsm_t*)&esm->sm, (fsm_event_t*)e);
|
||||
fsm_dispatch(&esm->sm, (fsm_event_t*)e);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
break;
|
||||
|
|
|
@ -9,41 +9,25 @@
|
|||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
typedef struct _mme_sm_t {
|
||||
fsm_t fsm;
|
||||
} mme_sm_t;
|
||||
void mme_state_initial(fsm_t *s, event_t *e);
|
||||
void mme_state_final(fsm_t *s, event_t *e);
|
||||
void mme_state_operational(fsm_t *s, event_t *e);
|
||||
void mme_state_exception(fsm_t *s, event_t *e);
|
||||
|
||||
void mme_state_initial(mme_sm_t *s, event_t *e);
|
||||
void mme_state_final(mme_sm_t *s, event_t *e);
|
||||
void mme_state_operational(mme_sm_t *s, event_t *e);
|
||||
void mme_state_exception(mme_sm_t *s, event_t *e);
|
||||
void s1ap_state_initial(fsm_t *s, event_t *e);
|
||||
void s1ap_state_final(fsm_t *s, event_t *e);
|
||||
void s1ap_state_operational(fsm_t *s, event_t *e);
|
||||
void s1ap_state_exception(fsm_t *s, event_t *e);
|
||||
|
||||
typedef struct _s1ap_sm_t {
|
||||
fsm_t fsm;
|
||||
} s1ap_sm_t;
|
||||
void emm_state_initial(fsm_t *s, event_t *e);
|
||||
void emm_state_final(fsm_t *s, event_t *e);
|
||||
void emm_state_operational(fsm_t *s, event_t *e);
|
||||
void emm_state_exception(fsm_t *s, event_t *e);
|
||||
|
||||
void s1ap_state_initial(s1ap_sm_t *s, event_t *e);
|
||||
void s1ap_state_final(s1ap_sm_t *s, event_t *e);
|
||||
void s1ap_state_operational(s1ap_sm_t *s, event_t *e);
|
||||
void s1ap_state_exception(s1ap_sm_t *s, event_t *e);
|
||||
|
||||
typedef struct _emm_sm_t {
|
||||
fsm_t fsm;
|
||||
} emm_sm_t;
|
||||
|
||||
void emm_state_initial(emm_sm_t *s, event_t *e);
|
||||
void emm_state_final(emm_sm_t *s, event_t *e);
|
||||
void emm_state_operational(emm_sm_t *s, event_t *e);
|
||||
void emm_state_exception(emm_sm_t *s, event_t *e);
|
||||
|
||||
typedef struct _esm_sm_t {
|
||||
fsm_t fsm;
|
||||
} esm_sm_t;
|
||||
|
||||
void esm_state_initial(esm_sm_t *s, event_t *e);
|
||||
void esm_state_final(esm_sm_t *s, event_t *e);
|
||||
void esm_state_operational(esm_sm_t *s, event_t *e);
|
||||
void esm_state_exception(esm_sm_t *s, event_t *e);
|
||||
void esm_state_initial(fsm_t *s, event_t *e);
|
||||
void esm_state_final(fsm_t *s, event_t *e);
|
||||
void esm_state_operational(fsm_t *s, event_t *e);
|
||||
void esm_state_exception(fsm_t *s, event_t *e);
|
||||
|
||||
#define mme_sm_print(__pe) \
|
||||
d_print("%s(): %s\n", __func__, mme_event_get_name(__pe))
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include "s1ap_build.h"
|
||||
#include "s1ap_handler.h"
|
||||
|
||||
void s1ap_state_initial(s1ap_sm_t *s, event_t *e)
|
||||
void s1ap_state_initial(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
|
||||
|
@ -16,14 +16,14 @@ void s1ap_state_initial(s1ap_sm_t *s, event_t *e)
|
|||
FSM_TRAN(s, &s1ap_state_operational);
|
||||
}
|
||||
|
||||
void s1ap_state_final(s1ap_sm_t *s, event_t *e)
|
||||
void s1ap_state_final(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
|
||||
mme_sm_trace(1, e);
|
||||
}
|
||||
|
||||
void s1ap_state_operational(s1ap_sm_t *s, event_t *e)
|
||||
void s1ap_state_operational(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
d_assert(e, return, "Null param");
|
||||
|
@ -117,7 +117,7 @@ void s1ap_state_operational(s1ap_sm_t *s, event_t *e)
|
|||
}
|
||||
}
|
||||
|
||||
void s1ap_state_exception(s1ap_sm_t *s, event_t *e)
|
||||
void s1ap_state_exception(fsm_t *s, event_t *e)
|
||||
{
|
||||
d_assert(s, return, "Null param");
|
||||
d_assert(e, return, "Null param");
|
||||
|
|
Loading…
Reference in New Issue