Introduced 5GMM state machine
* according to 5.1.3.2.1 of 3GPP TS 24.501
This commit is contained in:
@@ -505,6 +505,8 @@ void generateRegistrationRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas)
|
||||
|
||||
initialNasMsg->length = mm_msg_encode(&plain, initialNasMsg->nas_data, size);
|
||||
nas->registration_request_len = initialNasMsg->length;
|
||||
/* set NAS 5GMM state */
|
||||
nas->fiveGMM_state = FGS_REGISTERED_INITIATED;
|
||||
}
|
||||
|
||||
void generateServiceRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas)
|
||||
@@ -812,6 +814,8 @@ static void generateRegistrationComplete(nr_ue_nas_t *nas,
|
||||
for (int i = 0; i < 4; i++) {
|
||||
initialNasMsg->nas_data[2 + i] = mac[i];
|
||||
}
|
||||
/* Set NAS 5GMM state */
|
||||
nas->fiveGMM_state = FGS_REGISTERED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1004,6 +1008,8 @@ static void generateDeregistrationRequest(nr_ue_nas_t *nas, as_nas_info_t *initi
|
||||
for (int i = 0; i < 4; i++) {
|
||||
initialNasMsg->nas_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)
|
||||
@@ -1432,6 +1438,8 @@ void *nas_nrue(void *args_p)
|
||||
break;
|
||||
case FGS_DEREGISTRATION_ACCEPT_UE_ORIGINATING:
|
||||
LOG_I(NAS, "received deregistration accept\n");
|
||||
/* Set NAS 5GMM state */
|
||||
nas->fiveGMM_state = FGS_DEREGISTERED;
|
||||
break;
|
||||
case FGS_PDU_SESSION_ESTABLISHMENT_ACC:
|
||||
handle_pdu_session_accept(pdu_buffer, pdu_length);
|
||||
|
||||
@@ -51,6 +51,14 @@
|
||||
/* 3GPP TS 24.501: 9.11.3.50 Service type */
|
||||
#define SERVICE_TYPE_DATA 0x1
|
||||
|
||||
typedef enum fgs_mm_state_e {
|
||||
FGS_DEREGISTERED,
|
||||
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];
|
||||
@@ -66,6 +74,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;
|
||||
|
||||
Reference in New Issue
Block a user