Commit 532b854c authored by Guido Casati's avatar Guido Casati

Introduced 5GMM state machine

* according to 5.1.3.2.1 of 3GPP TS 24.501
parent 25d61353
......@@ -478,7 +478,8 @@ void generateRegistrationRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas)
initialNasMsg->length = mm_msg_encode(mm_msg, (uint8_t*)(initialNasMsg->data), size);
registration_request_len = initialNasMsg->length;
/* set NAS 5GMM state */
nas->fiveGMM_state = FGS_REGISTERED_INITIATED;
}
void generateIdentityResponse(as_nas_info_t *initialNasMsg, uint8_t identitytype, uicc_t* uicc) {
......@@ -717,6 +718,8 @@ static void generateRegistrationComplete(nr_ue_nas_t *nas, as_nas_info_t *initia
for(int i = 0; i < 4; i++){
initialNasMsg->data[2+i] = mac[i];
}
/* Set NAS 5GMM state */
nas->fiveGMM_state = FGS_REGISTERED;
}
void decodeDownlinkNASTransport(as_nas_info_t *initialNasMsg, uint8_t * pdu_buffer){
......@@ -776,6 +779,8 @@ static void generateDeregistrationRequest(nr_ue_nas_t *nas, as_nas_info_t *initi
for(int i = 0; i < 4; i++)
initialNasMsg->data[2 + i] = mac[i];
/* Set NAS 5GMM state */
nas->fiveGMM_state = FGS_DEREGISTERED_INITIATED;
}
static void generatePduSessionEstablishRequest(nr_ue_nas_t *nas, as_nas_info_t *initialNasMsg, nas_pdu_session_req_t *pdu_req)
......@@ -1225,6 +1230,8 @@ void *nas_nrue(void *args_p)
break;
case FGS_DEREGISTRATION_ACCEPT:
LOG_I(NAS, "received deregistration accept\n");
/* Set NAS 5GMM state */
nas->fiveGMM_state = FGS_DEREGISTERED;
break;
case FGS_PDU_SESSION_ESTABLISHMENT_ACC: {
uint8_t offset = 0;
......
......@@ -83,6 +83,14 @@ typedef struct {
int hplmn_sd;
} nr_nas_msg_snssai_t;
typedef enum fgs_mm_state_e {
FGS_DEREGISTERED = 0,
FGS_DEREGISTERED_INITIATED,
FGS_REGISTERED_INITIATED,
FGS_REGISTERED,
FGS_SERVICE_REQUEST_INITIATED,
} fgs_mm_state_t;
/* Security Key for SA UE */
typedef struct {
uint8_t kausf[32];
......@@ -97,6 +105,8 @@ typedef struct {
} ue_sa_security_key_t;
typedef struct {
/* 5GS Mobility Management States (5.1.3.2.1 of 3GPP TS 24.501) */
fgs_mm_state_t fiveGMM_state;
uicc_t *uicc;
ue_sa_security_key_t security;
stream_security_container_t *security_container;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment