UE/EMM: move static T34XX timers to emm_data_t
This commit is contained in:
@@ -148,6 +148,7 @@ int emm_proc_attach(nas_user_t *user, emm_proc_attach_type_t type)
|
|||||||
emm_as_establish_t *emm_as = &emm_sap.u.emm_as.u.establish;
|
emm_as_establish_t *emm_as = &emm_sap.u.emm_as.u.establish;
|
||||||
esm_sap_t esm_sap;
|
esm_sap_t esm_sap;
|
||||||
int rc;
|
int rc;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Initiate EPS attach type = %s (%d)",
|
LOG_TRACE(INFO, "EMM-PROC - Initiate EPS attach type = %s (%d)",
|
||||||
_emm_attach_type_str[type], type);
|
_emm_attach_type_str[type], type);
|
||||||
@@ -260,12 +261,12 @@ int emm_proc_attach(nas_user_t *user, emm_proc_attach_type_t type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Start T3410 timer */
|
/* Start T3410 timer */
|
||||||
T3410.id = nas_timer_start(T3410.sec, _emm_attach_t3410_handler, user);
|
emm_timers->T3410.id = nas_timer_start(emm_timers->T3410.sec, _emm_attach_t3410_handler, user);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3410 (%d) expires in %ld seconds",
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3410 (%d) expires in %ld seconds",
|
||||||
T3410.id, T3410.sec);
|
emm_timers->T3410.id, emm_timers->T3410.sec);
|
||||||
/* Stop T3402 and T3411 timers if running */
|
/* Stop T3402 and T3411 timers if running */
|
||||||
T3402.id = nas_timer_stop(T3402.id);
|
emm_timers->T3402.id = nas_timer_stop(emm_timers->T3402.id);
|
||||||
T3411.id = nas_timer_stop(T3411.id);
|
emm_timers->T3411.id = nas_timer_stop(emm_timers->T3411.id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Notify EMM-AS SAP that a RRC connection establishment procedure
|
* Notify EMM-AS SAP that a RRC connection establishment procedure
|
||||||
@@ -357,12 +358,13 @@ int emm_proc_attach_accept(nas_user_t *user, long t3412, long t3402, long t3423,
|
|||||||
int rc;
|
int rc;
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(INFO, "EMM-PROC - EPS attach accepted by the network");
|
LOG_TRACE(INFO, "EMM-PROC - EPS attach accepted by the network");
|
||||||
|
|
||||||
/* Stop timer T3410 */
|
/* Stop timer T3410 */
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", T3410.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", emm_timers->T3410.id);
|
||||||
T3410.id = nas_timer_stop(T3410.id);
|
emm_timers->T3410.id = nas_timer_stop(emm_timers->T3410.id);
|
||||||
|
|
||||||
/* Delete old TAI list and store the received TAI list */
|
/* Delete old TAI list and store the received TAI list */
|
||||||
user->emm_data->ltai.n_tais = n_tais;
|
user->emm_data->ltai.n_tais = n_tais;
|
||||||
@@ -372,16 +374,16 @@ int emm_proc_attach_accept(nas_user_t *user, long t3412, long t3402, long t3423,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Update periodic tracking area update timer value */
|
/* Update periodic tracking area update timer value */
|
||||||
T3412.sec = t3412;
|
emm_timers->T3412.sec = t3412;
|
||||||
|
|
||||||
/* Update attach failure timer value */
|
/* Update attach failure timer value */
|
||||||
if ( !(t3402 < 0) ) {
|
if ( !(t3402 < 0) ) {
|
||||||
T3402.sec = t3402;
|
emm_timers->T3402.sec = t3402;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update E-UTRAN deactivate ISR timer value */
|
/* Update E-UTRAN deactivate ISR timer value */
|
||||||
if ( !(t3423 < 0) ) {
|
if ( !(t3423 < 0) ) {
|
||||||
T3423.sec = t3423;
|
emm_timers->T3423.sec = t3423;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete old GUTI and store the new assigned GUTI if provided */
|
/* Delete old GUTI and store the new assigned GUTI if provided */
|
||||||
@@ -506,13 +508,14 @@ int emm_proc_attach_reject(nas_user_t *user, int emm_cause, const OctetString *e
|
|||||||
|
|
||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
int rc;
|
int rc;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - EPS attach rejected by the network, "
|
LOG_TRACE(WARNING, "EMM-PROC - EPS attach rejected by the network, "
|
||||||
"EMM cause = %d", emm_cause);
|
"EMM cause = %d", emm_cause);
|
||||||
|
|
||||||
/* Stop timer T3410 */
|
/* Stop timer T3410 */
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", T3410.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", emm_timers->T3410.id);
|
||||||
T3410.id = nas_timer_stop(T3410.id);
|
emm_timers->T3410.id = nas_timer_stop(emm_timers->T3410.id);
|
||||||
|
|
||||||
/* Update the EPS update status, the GUTI, the visited registered TAI and
|
/* Update the EPS update status, the GUTI, the visited registered TAI and
|
||||||
* the eKSI */
|
* the eKSI */
|
||||||
@@ -790,6 +793,7 @@ int emm_proc_attach_failure(int is_initial, void *args)
|
|||||||
int rc = RETURNok;
|
int rc = RETURNok;
|
||||||
esm_sap_t esm_sap;
|
esm_sap_t esm_sap;
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - EPS attach failure");
|
LOG_TRACE(WARNING, "EMM-PROC - EPS attach failure");
|
||||||
|
|
||||||
@@ -797,9 +801,9 @@ int emm_proc_attach_failure(int is_initial, void *args)
|
|||||||
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
/* Stop timer T3410 if still running */
|
/* Stop timer T3410 if still running */
|
||||||
if (T3410.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3410.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", T3410.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", emm_timers->T3410.id);
|
||||||
T3410.id = nas_timer_stop(T3410.id);
|
emm_timers->T3410.id = nas_timer_stop(emm_timers->T3410.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_initial) {
|
if (is_initial) {
|
||||||
@@ -826,9 +830,9 @@ int emm_proc_attach_failure(int is_initial, void *args)
|
|||||||
|
|
||||||
if (rc != RETURNerror) {
|
if (rc != RETURNerror) {
|
||||||
/* Start T3411 timer */
|
/* Start T3411 timer */
|
||||||
T3411.id = nas_timer_start(T3411.sec, _emm_attach_t3411_handler, NULL);
|
emm_timers->T3411.id = nas_timer_start(emm_timers->T3411.sec, _emm_attach_t3411_handler, NULL);
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Timer T3411 (%d) expires in %ld seconds",
|
LOG_TRACE(INFO, "EMM-PROC - Timer T3411 (%d) expires in %ld seconds",
|
||||||
T3411.id, T3411.sec);
|
emm_timers->T3411.id, emm_timers->T3411.sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_FUNC_RETURN(rc);
|
LOG_FUNC_RETURN(rc);
|
||||||
@@ -1002,13 +1006,14 @@ void *_emm_attach_t3410_handler(void *args)
|
|||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3410 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3410 timer expired");
|
||||||
|
|
||||||
/* Stop T3410 timer */
|
/* Stop T3410 timer */
|
||||||
T3410.id = nas_timer_stop(T3410.id);
|
emm_timers->T3410.id = nas_timer_stop(emm_timers->T3410.id);
|
||||||
/* Execute abnormal case attach procedure */
|
/* Execute abnormal case attach procedure */
|
||||||
_emm_attach_abnormal_cases_bcd(user, &emm_sap);
|
_emm_attach_abnormal_cases_bcd(user, &emm_sap);
|
||||||
|
|
||||||
@@ -1045,12 +1050,13 @@ static void *_emm_attach_t3411_handler(void *args)
|
|||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3411 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3411 timer expired");
|
||||||
|
|
||||||
/* Stop T3411 timer */
|
/* Stop T3411 timer */
|
||||||
T3411.id = nas_timer_stop(T3411.id);
|
emm_timers->T3411.id = nas_timer_stop(emm_timers->T3411.id);
|
||||||
/*
|
/*
|
||||||
* Notify EMM that timer T3411 expired and attach procedure has to be
|
* Notify EMM that timer T3411 expired and attach procedure has to be
|
||||||
* restarted
|
* restarted
|
||||||
@@ -1090,12 +1096,13 @@ static void *_emm_attach_t3402_handler(void *args)
|
|||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3402 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3402 timer expired");
|
||||||
|
|
||||||
/* Stop T3402 timer */
|
/* Stop T3402 timer */
|
||||||
T3402.id = nas_timer_stop(T3402.id);
|
emm_timers->T3402.id = nas_timer_stop(emm_timers->T3402.id);
|
||||||
/* Reset the attach attempt counter */
|
/* Reset the attach attempt counter */
|
||||||
_emm_attach_data.attempt_count = 0;
|
_emm_attach_data.attempt_count = 0;
|
||||||
/*
|
/*
|
||||||
@@ -1140,23 +1147,23 @@ static void *_emm_attach_t3402_handler(void *args)
|
|||||||
static void _emm_attach_abnormal_cases_bcd(nas_user_t *user, emm_sap_t *emm_sap)
|
static void _emm_attach_abnormal_cases_bcd(nas_user_t *user, emm_sap_t *emm_sap)
|
||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - Abnormal case, attach counter = %d",
|
LOG_TRACE(WARNING, "EMM-PROC - Abnormal case, attach counter = %d",
|
||||||
_emm_attach_data.attempt_count);
|
_emm_attach_data.attempt_count);
|
||||||
|
|
||||||
/* Stop timer T3410 */
|
/* Stop timer T3410 */
|
||||||
if (T3410.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3410.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", T3410.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", emm_timers->T3410.id);
|
||||||
T3410.id = nas_timer_stop(T3410.id);
|
emm_timers->T3410.id = nas_timer_stop(emm_timers->T3410.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_emm_attach_data.attempt_count < EMM_ATTACH_COUNTER_MAX) {
|
if (_emm_attach_data.attempt_count < EMM_ATTACH_COUNTER_MAX) {
|
||||||
/* Increment the attach attempt counter */
|
/* Increment the attach attempt counter */
|
||||||
_emm_attach_data.attempt_count += 1;
|
_emm_attach_data.attempt_count += 1;
|
||||||
/* Start T3411 timer */
|
/* Start T3411 timer */
|
||||||
T3411.id = nas_timer_start(T3411.sec, _emm_attach_t3411_handler, NULL);
|
emm_timers->T3411.id = nas_timer_start(emm_timers->T3411.sec, _emm_attach_t3411_handler, NULL);
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Timer T3411 (%d) expires in %ld seconds",
|
LOG_TRACE(INFO, "EMM-PROC - Timer T3411 (%d) expires in %ld seconds",
|
||||||
T3411.id, T3411.sec);
|
emm_timers->T3411.id, emm_timers->T3411.sec);
|
||||||
/*
|
/*
|
||||||
* Notify EMM that the attempt to attach for EPS services failed and
|
* Notify EMM that the attempt to attach for EPS services failed and
|
||||||
* the attach attempt counter didn't reach its maximum value; network
|
* the attach attempt counter didn't reach its maximum value; network
|
||||||
@@ -1182,9 +1189,9 @@ static void _emm_attach_abnormal_cases_bcd(nas_user_t *user, emm_sap_t *emm_sap)
|
|||||||
user->emm_data->status = EU2_NOT_UPDATED;
|
user->emm_data->status = EU2_NOT_UPDATED;
|
||||||
|
|
||||||
/* Start T3402 timer */
|
/* Start T3402 timer */
|
||||||
T3402.id = nas_timer_start(T3402.sec, _emm_attach_t3402_handler, user);
|
emm_timers->T3402.id = nas_timer_start(emm_timers->T3402.sec, _emm_attach_t3402_handler, user);
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Timer T3402 (%d) expires in %ld seconds",
|
LOG_TRACE(INFO, "EMM-PROC - Timer T3402 (%d) expires in %ld seconds",
|
||||||
T3402.id, T3402.sec);
|
emm_timers->T3402.id, emm_timers->T3402.sec);
|
||||||
/*
|
/*
|
||||||
* Notify EMM that the attempt to attach for EPS services failed and
|
* Notify EMM that the attempt to attach for EPS services failed and
|
||||||
* the attach attempt counter reached its maximum value.
|
* the attach attempt counter reached its maximum value.
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ int emm_proc_authentication_request(nas_user_t *user, int native_ksi, int ksi,
|
|||||||
|
|
||||||
int rc = RETURNerror;
|
int rc = RETURNerror;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Authentication requested ksi type = %s, ksi = %d", native_ksi ? "native" : "mapped", ksi);
|
LOG_TRACE(INFO, "EMM-PROC - Authentication requested ksi type = %s, ksi = %d", native_ksi ? "native" : "mapped", ksi);
|
||||||
|
|
||||||
@@ -172,15 +173,15 @@ int emm_proc_authentication_request(nas_user_t *user, int native_ksi, int ksi,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Stop timer T3418, if running */
|
/* Stop timer T3418, if running */
|
||||||
if (T3418.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3418.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3418 (%d)", T3418.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3418 (%d)", emm_timers->T3418.id);
|
||||||
T3418.id = nas_timer_stop(T3418.id);
|
emm_timers->T3418.id = nas_timer_stop(emm_timers->T3418.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop timer T3420, if running */
|
/* Stop timer T3420, if running */
|
||||||
if (T3420.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3420.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3420 (%d)", T3420.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3420 (%d)", emm_timers->T3420.id);
|
||||||
T3420.id = nas_timer_stop(T3420.id);
|
emm_timers->T3420.id = nas_timer_stop(emm_timers->T3420.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup security keys */
|
/* Setup security keys */
|
||||||
@@ -269,14 +270,14 @@ int emm_proc_authentication_request(nas_user_t *user, int native_ksi, int ksi,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Start, or reset and restart timer T3416 */
|
/* Start, or reset and restart timer T3416 */
|
||||||
if (T3416.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3416.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3416 (%d)", T3416.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3416 (%d)", emm_timers->T3416.id);
|
||||||
T3416.id = nas_timer_stop(T3416.id);
|
emm_timers->T3416.id = nas_timer_stop(emm_timers->T3416.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
T3416.id = nas_timer_start(T3416.sec, _authentication_t3416_handler, NULL);
|
emm_timers->T3416.id = nas_timer_start(emm_timers->T3416.sec, _authentication_t3416_handler, NULL);
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Timer T3416 (%d) expires in %ld seconds",
|
LOG_TRACE(INFO, "EMM-PROC - Timer T3416 (%d) expires in %ld seconds",
|
||||||
T3416.id, T3416.sec);
|
emm_timers->T3416.id, emm_timers->T3416.sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -383,6 +384,7 @@ int emm_proc_authentication_reject(nas_user_t *user)
|
|||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
int rc;
|
int rc;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - Authentication not accepted by the network");
|
LOG_TRACE(WARNING, "EMM-PROC - Authentication not accepted by the network");
|
||||||
|
|
||||||
@@ -407,21 +409,21 @@ int emm_proc_authentication_reject(nas_user_t *user)
|
|||||||
user->emm_data->usim_is_valid = FALSE;
|
user->emm_data->usim_is_valid = FALSE;
|
||||||
|
|
||||||
/* Stop timer T3410 */
|
/* Stop timer T3410 */
|
||||||
if (T3410.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3410.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", T3410.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", emm_timers->T3410.id);
|
||||||
T3410.id = nas_timer_stop(T3410.id);
|
emm_timers->T3410.id = nas_timer_stop(emm_timers->T3410.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop timer T3417 */
|
/* Stop timer T3417 */
|
||||||
if (T3417.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3417.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3417 (%d)", T3417.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3417 (%d)", emm_timers->T3417.id);
|
||||||
T3417.id = nas_timer_stop(T3417.id);
|
emm_timers->T3417.id = nas_timer_stop(emm_timers->T3417.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop timer T3430 */
|
/* Stop timer T3430 */
|
||||||
if (T3430.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3430.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3430 (%d)", T3430.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3430 (%d)", emm_timers->T3430.id);
|
||||||
T3430.id = nas_timer_stop(T3430.id);
|
emm_timers->T3430.id = nas_timer_stop(emm_timers->T3430.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Abort any EMM signalling procedure (prevent the retransmission timers to
|
/* Abort any EMM signalling procedure (prevent the retransmission timers to
|
||||||
@@ -462,13 +464,14 @@ int emm_proc_authentication_delete(nas_user_t *user)
|
|||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Delete authentication data RAND and RES");
|
LOG_TRACE(INFO, "EMM-PROC - Delete authentication data RAND and RES");
|
||||||
|
|
||||||
/* Stop timer T3416, if running */
|
/* Stop timer T3416, if running */
|
||||||
if (T3416.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3416.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3416 (%d)", T3416.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3416 (%d)", emm_timers->T3416.id);
|
||||||
T3416.id = nas_timer_stop(T3416.id);
|
emm_timers->T3416.id = nas_timer_stop(emm_timers->T3416.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete any previously stored RAND and RES */
|
/* Delete any previously stored RAND and RES */
|
||||||
@@ -511,11 +514,12 @@ static void *_authentication_t3416_handler(void *args)
|
|||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3416 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3416 timer expired");
|
||||||
|
|
||||||
/* Stop timer T3416 */
|
/* Stop timer T3416 */
|
||||||
T3416.id = nas_timer_stop(T3416.id);
|
emm_timers->T3416.id = nas_timer_stop(emm_timers->T3416.id);
|
||||||
/* Delete previouly stored RAND and RES authentication data */
|
/* Delete previouly stored RAND and RES authentication data */
|
||||||
(void) emm_proc_authentication_delete(user);
|
(void) emm_proc_authentication_delete(user);
|
||||||
|
|
||||||
@@ -546,12 +550,13 @@ static void *_authentication_t3418_handler(void *args)
|
|||||||
|
|
||||||
int rc;
|
int rc;
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3418 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3418 timer expired");
|
||||||
|
|
||||||
/* Stop timer T3418 */
|
/* Stop timer T3418 */
|
||||||
T3418.id = nas_timer_stop(T3418.id);
|
emm_timers->T3418.id = nas_timer_stop(emm_timers->T3418.id);
|
||||||
/* Reset the MAC failure and UMTS challenge failure counters */
|
/* Reset the MAC failure and UMTS challenge failure counters */
|
||||||
authentication_data->mac_count = 0;
|
authentication_data->mac_count = 0;
|
||||||
authentication_data->umts_count = 0;
|
authentication_data->umts_count = 0;
|
||||||
@@ -589,11 +594,12 @@ static void *_authentication_t3420_handler(void *args)
|
|||||||
int rc;
|
int rc;
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3420 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3420 timer expired");
|
||||||
|
|
||||||
/* Stop timer T3420 */
|
/* Stop timer T3420 */
|
||||||
T3420.id = nas_timer_stop(T3420.id);
|
emm_timers->T3420.id = nas_timer_stop(emm_timers->T3420.id);
|
||||||
/* Reset the sync failure counter */
|
/* Reset the sync failure counter */
|
||||||
authentication_data->sync_count = 0;
|
authentication_data->sync_count = 0;
|
||||||
/* 3GPP TS 24.301, section 5.4.2.7, case f */
|
/* 3GPP TS 24.301, section 5.4.2.7, case f */
|
||||||
@@ -634,6 +640,7 @@ static int _authentication_abnormal_cases_cde(nas_user_t *user, int emm_cause,
|
|||||||
|
|
||||||
int rc;
|
int rc;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - "
|
LOG_TRACE(WARNING, "EMM-PROC - "
|
||||||
"Abnormal case, authentication counters c/d/e = %d/%d/%d",
|
"Abnormal case, authentication counters c/d/e = %d/%d/%d",
|
||||||
@@ -666,10 +673,10 @@ static int _authentication_abnormal_cases_cde(nas_user_t *user, int emm_cause,
|
|||||||
* Update the MAC failure counter */
|
* Update the MAC failure counter */
|
||||||
authentication_data->mac_count += 1;
|
authentication_data->mac_count += 1;
|
||||||
/* Start timer T3418 */
|
/* Start timer T3418 */
|
||||||
T3418.id = nas_timer_start(T3418.sec,
|
emm_timers->T3418.id = nas_timer_start(emm_timers->T3418.sec,
|
||||||
_authentication_t3418_handler, user);
|
_authentication_t3418_handler, user);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3418 (%d) expires in "
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3418 (%d) expires in "
|
||||||
"%ld seconds", T3418.id, T3418.sec);
|
"%ld seconds", emm_timers->T3418.id, emm_timers->T3418.sec);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EMM_CAUSE_NON_EPS_AUTH_UNACCEPTABLE:
|
case EMM_CAUSE_NON_EPS_AUTH_UNACCEPTABLE:
|
||||||
@@ -677,10 +684,10 @@ static int _authentication_abnormal_cases_cde(nas_user_t *user, int emm_cause,
|
|||||||
* Update the UMTS challenge failure counter */
|
* Update the UMTS challenge failure counter */
|
||||||
authentication_data->umts_count += 1;
|
authentication_data->umts_count += 1;
|
||||||
/* Start timer T3418 */
|
/* Start timer T3418 */
|
||||||
T3418.id = nas_timer_start(T3418.sec,
|
emm_timers->T3418.id = nas_timer_start(emm_timers->T3418.sec,
|
||||||
_authentication_t3418_handler, user);
|
_authentication_t3418_handler, user);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3418 (%d) expires in "
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3418 (%d) expires in "
|
||||||
"%ld seconds", T3418.id, T3418.sec);
|
"%ld seconds", emm_timers->T3418.id, emm_timers->T3418.sec);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EMM_CAUSE_SYNCH_FAILURE:
|
case EMM_CAUSE_SYNCH_FAILURE:
|
||||||
@@ -688,10 +695,10 @@ static int _authentication_abnormal_cases_cde(nas_user_t *user, int emm_cause,
|
|||||||
* Update the synch failure counter */
|
* Update the synch failure counter */
|
||||||
authentication_data->sync_count += 1;
|
authentication_data->sync_count += 1;
|
||||||
/* Start timer T3420 */
|
/* Start timer T3420 */
|
||||||
T3420.id = nas_timer_start(T3420.sec,
|
emm_timers->T3420.id = nas_timer_start(emm_timers->T3420.sec,
|
||||||
_authentication_t3420_handler, user);
|
_authentication_t3420_handler, user);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3420 (%d) expires in "
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3420 (%d) expires in "
|
||||||
"%ld seconds", T3420.id, T3420.sec);
|
"%ld seconds", emm_timers->T3420.id, emm_timers->T3420.sec);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -809,32 +816,33 @@ static int _authentication_stop_timers(nas_user_t *user)
|
|||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
/* Stop attach timer */
|
/* Stop attach timer */
|
||||||
if (T3410.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3410.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", T3410.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3410 (%d)", emm_timers->T3410.id);
|
||||||
T3410.id = nas_timer_stop(T3410.id);
|
emm_timers->T3410.id = nas_timer_stop(emm_timers->T3410.id);
|
||||||
authentication_data->timers |= AUTHENTICATION_T3410;
|
authentication_data->timers |= AUTHENTICATION_T3410;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop service request timer */
|
/* Stop service request timer */
|
||||||
if (T3417.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3417.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3417 (%d)", T3417.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3417 (%d)", emm_timers->T3417.id);
|
||||||
T3417.id = nas_timer_stop(T3417.id);
|
emm_timers->T3417.id = nas_timer_stop(emm_timers->T3417.id);
|
||||||
authentication_data->timers |= AUTHENTICATION_T3417;
|
authentication_data->timers |= AUTHENTICATION_T3417;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop detach timer */
|
/* Stop detach timer */
|
||||||
if (T3421.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3421.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3421 (%d)", T3421.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3421 (%d)", emm_timers->T3421.id);
|
||||||
T3421.id = nas_timer_stop(T3421.id);
|
emm_timers->T3421.id = nas_timer_stop(emm_timers->T3421.id);
|
||||||
authentication_data->timers |= AUTHENTICATION_T3421;
|
authentication_data->timers |= AUTHENTICATION_T3421;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop tracking area update timer */
|
/* Stop tracking area update timer */
|
||||||
if (T3430.id != NAS_TIMER_INACTIVE_ID) {
|
if (emm_timers->T3430.id != NAS_TIMER_INACTIVE_ID) {
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3430 (%d)", T3430.id);
|
LOG_TRACE(INFO, "EMM-PROC - Stop timer T3430 (%d)", emm_timers->T3430.id);
|
||||||
T3430.id = nas_timer_stop(T3430.id);
|
emm_timers->T3430.id = nas_timer_stop(emm_timers->T3430.id);
|
||||||
authentication_data->timers |= AUTHENTICATION_T3430;
|
authentication_data->timers |= AUTHENTICATION_T3430;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -863,33 +871,34 @@ static int _authentication_start_timers(nas_user_t *user)
|
|||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
authentication_data_t *authentication_data = user->authentication_data;
|
authentication_data_t *authentication_data = user->authentication_data;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
if (authentication_data->timers & AUTHENTICATION_T3410) {
|
if (authentication_data->timers & AUTHENTICATION_T3410) {
|
||||||
/* Start attach timer */
|
/* Start attach timer */
|
||||||
T3410.id = nas_timer_start(T3410.sec, _emm_attach_t3410_handler, NULL);
|
emm_timers->T3410.id = nas_timer_start(emm_timers->T3410.sec, _emm_attach_t3410_handler, NULL);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3410 (%d) expires in "
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3410 (%d) expires in "
|
||||||
"%ld seconds", T3410.id, T3410.sec);
|
"%ld seconds", emm_timers->T3410.id, emm_timers->T3410.sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (authentication_data->timers & AUTHENTICATION_T3417) {
|
if (authentication_data->timers & AUTHENTICATION_T3417) {
|
||||||
/* Start service request timer */
|
/* Start service request timer */
|
||||||
T3417.id = nas_timer_start(T3417.sec, _emm_service_t3417_handler, NULL);
|
emm_timers->T3417.id = nas_timer_start(emm_timers->T3417.sec, _emm_service_t3417_handler, NULL);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3417 (%d) expires in "
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3417 (%d) expires in "
|
||||||
"%ld seconds", T3417.id, T3417.sec);
|
"%ld seconds", emm_timers->T3417.id, emm_timers->T3417.sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (authentication_data->timers & AUTHENTICATION_T3421) {
|
if (authentication_data->timers & AUTHENTICATION_T3421) {
|
||||||
/* Start detach timer */
|
/* Start detach timer */
|
||||||
T3421.id = nas_timer_start(T3421.sec, _emm_detach_t3421_handler, NULL);
|
emm_timers->T3421.id = nas_timer_start(emm_timers->T3421.sec, _emm_detach_t3421_handler, NULL);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3421 (%d) expires in "
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3421 (%d) expires in "
|
||||||
"%ld seconds", T3421.id, T3421.sec);
|
"%ld seconds", emm_timers->T3421.id, emm_timers->T3421.sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (authentication_data->timers & AUTHENTICATION_T3430) {
|
if (authentication_data->timers & AUTHENTICATION_T3430) {
|
||||||
/* Start tracking area update timer */
|
/* Start tracking area update timer */
|
||||||
T3430.id = nas_timer_start(T3430.sec, _emm_tau_t3430_handler, NULL);
|
emm_timers->T3430.id = nas_timer_start(emm_timers->T3430.sec, _emm_tau_t3430_handler, NULL);
|
||||||
LOG_TRACE(INFO,"EMM-PROC - Timer T3430 (%d) expires in "
|
LOG_TRACE(INFO,"EMM-PROC - Timer T3430 (%d) expires in "
|
||||||
"%ld seconds", T3430.id, T3430.sec);
|
"%ld seconds", emm_timers->T3430.id, emm_timers->T3430.sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_FUNC_RETURN (RETURNok);
|
LOG_FUNC_RETURN (RETURNok);
|
||||||
|
|||||||
@@ -203,14 +203,15 @@ int emm_proc_detach_request(void *args)
|
|||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if ( !_emm_detach_data.switch_off ) {
|
if ( !_emm_detach_data.switch_off ) {
|
||||||
/* Start T3421 timer */
|
/* Start T3421 timer */
|
||||||
T3421.id = nas_timer_start(T3421.sec, _emm_detach_t3421_handler, user);
|
emm_timers->T3421.id = nas_timer_start(emm_timers->T3421.sec, _emm_detach_t3421_handler, user);
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Timer T3421 (%d) expires in %ld seconds",
|
LOG_TRACE(INFO, "EMM-PROC - Timer T3421 (%d) expires in %ld seconds",
|
||||||
T3421.id, T3421.sec);
|
emm_timers->T3421.id, emm_timers->T3421.sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -249,6 +250,7 @@ int emm_proc_detach_accept(void* args)
|
|||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
LOG_TRACE(INFO, "EMM-PROC - UE initiated detach procedure completion");
|
LOG_TRACE(INFO, "EMM-PROC - UE initiated detach procedure completion");
|
||||||
@@ -257,7 +259,7 @@ int emm_proc_detach_accept(void* args)
|
|||||||
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
/* Stop timer T3421 */
|
/* Stop timer T3421 */
|
||||||
T3421.id = nas_timer_stop(T3421.id);
|
emm_timers->T3421.id = nas_timer_stop(emm_timers->T3421.id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Notify ESM that all EPS bearer contexts have to be locally deactivated
|
* Notify ESM that all EPS bearer contexts have to be locally deactivated
|
||||||
@@ -299,6 +301,7 @@ int emm_proc_detach_failure(int is_initial, void *args)
|
|||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@@ -308,7 +311,7 @@ int emm_proc_detach_failure(int is_initial, void *args)
|
|||||||
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
/* Stop timer T3421 */
|
/* Stop timer T3421 */
|
||||||
T3421.id = nas_timer_stop(T3421.id);
|
emm_timers->T3421.id = nas_timer_stop(emm_timers->T3421.id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Notify EMM that detach procedure has to be restarted
|
* Notify EMM that detach procedure has to be restarted
|
||||||
@@ -372,7 +375,7 @@ int emm_proc_detach_release(void *args)
|
|||||||
** 3GPP TS 24.301, section 5.5.2.2.4 case c **
|
** 3GPP TS 24.301, section 5.5.2.2.4 case c **
|
||||||
** On the first four expiries of the timer, the UE shall re- **
|
** On the first four expiries of the timer, the UE shall re- **
|
||||||
** transmit the DETACH REQUEST message and shall reset and **
|
** transmit the DETACH REQUEST message and shall reset and **
|
||||||
** restart timer T3421. On the fifth expiry of timer T3421, **
|
** restart timer emm_timers->T3421. On the fifth expiry of timer T3421, **
|
||||||
** the detach procedure shall be aborted. **
|
** the detach procedure shall be aborted. **
|
||||||
** **
|
** **
|
||||||
** Inputs: args: handler parameters **
|
** Inputs: args: handler parameters **
|
||||||
@@ -388,6 +391,7 @@ void *_emm_detach_t3421_handler(void *args)
|
|||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
nas_user_t *user=args;
|
nas_user_t *user=args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Increment the retransmission counter */
|
/* Increment the retransmission counter */
|
||||||
@@ -402,7 +406,7 @@ void *_emm_detach_t3421_handler(void *args)
|
|||||||
emm_as_data_t *emm_as = &emm_sap.u.emm_as.u.data;
|
emm_as_data_t *emm_as = &emm_sap.u.emm_as.u.data;
|
||||||
|
|
||||||
/* Stop timer T3421 */
|
/* Stop timer T3421 */
|
||||||
T3421.id = nas_timer_stop(T3421.id);
|
emm_timers->T3421.id = nas_timer_stop(emm_timers->T3421.id);
|
||||||
|
|
||||||
/* Setup NAS information message to transfer */
|
/* Setup NAS information message to transfer */
|
||||||
emm_as->NASinfo = EMM_AS_NAS_INFO_DETACH;
|
emm_as->NASinfo = EMM_AS_NAS_INFO_DETACH;
|
||||||
@@ -428,9 +432,9 @@ void *_emm_detach_t3421_handler(void *args)
|
|||||||
|
|
||||||
if (rc != RETURNerror) {
|
if (rc != RETURNerror) {
|
||||||
/* Start T3421 timer */
|
/* Start T3421 timer */
|
||||||
T3421.id = nas_timer_start(T3421.sec, _emm_detach_t3421_handler, user);
|
emm_timers->T3421.id = nas_timer_start(emm_timers->T3421.sec, _emm_detach_t3421_handler, user);
|
||||||
LOG_TRACE(INFO, "EMM-PROC - Timer T3421 (%d) expires in %ld "
|
LOG_TRACE(INFO, "EMM-PROC - Timer T3421 (%d) expires in %ld "
|
||||||
"seconds", T3421.id, T3421.sec);
|
"seconds", emm_timers->T3421.id, emm_timers->T3421.sec);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Abort the detach procedure */
|
/* Abort the detach procedure */
|
||||||
@@ -464,6 +468,7 @@ static int _emm_detach_abort(nas_user_t *user, emm_proc_detach_type_t type)
|
|||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
emm_sap_t emm_sap;
|
emm_sap_t emm_sap;
|
||||||
int rc ;
|
int rc ;
|
||||||
|
|
||||||
@@ -473,7 +478,7 @@ static int _emm_detach_abort(nas_user_t *user, emm_proc_detach_type_t type)
|
|||||||
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
(void) emm_proc_lowerlayer_initialize(NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
/* Stop timer T3421 */
|
/* Stop timer T3421 */
|
||||||
T3421.id = nas_timer_stop(T3421.id);
|
emm_timers->T3421.id = nas_timer_stop(emm_timers->T3421.id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Notify EMM that detach procedure failed
|
* Notify EMM that detach procedure failed
|
||||||
|
|||||||
@@ -112,11 +112,13 @@ void *_emm_service_t3417_handler(void *);
|
|||||||
void *_emm_service_t3417_handler(void *args)
|
void *_emm_service_t3417_handler(void *args)
|
||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
nas_user_t *user = args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3417 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3417 timer expired");
|
||||||
|
|
||||||
/* Stop timer T3417 */
|
/* Stop timer T3417 */
|
||||||
T3417.id = nas_timer_stop(T3417.id);
|
emm_timers->T3417.id = nas_timer_stop(emm_timers->T3417.id);
|
||||||
|
|
||||||
LOG_FUNC_RETURN(NULL);
|
LOG_FUNC_RETURN(NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,11 +113,13 @@ void *_emm_tau_t3430_handler(void *);
|
|||||||
void *_emm_tau_t3430_handler(void *args)
|
void *_emm_tau_t3430_handler(void *args)
|
||||||
{
|
{
|
||||||
LOG_FUNC_IN;
|
LOG_FUNC_IN;
|
||||||
|
nas_user_t *user = args;
|
||||||
|
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||||
|
|
||||||
LOG_TRACE(WARNING, "EMM-PROC - T3430 timer expired");
|
LOG_TRACE(WARNING, "EMM-PROC - T3430 timer expired");
|
||||||
|
|
||||||
/* Stop timer T3430 */
|
/* Stop timer T3430 */
|
||||||
T3430.id = nas_timer_stop(T3430.id);
|
emm_timers->T3430.id = nas_timer_stop(emm_timers->T3430.id);
|
||||||
|
|
||||||
LOG_FUNC_RETURN(NULL);
|
LOG_FUNC_RETURN(NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,6 +197,20 @@ typedef struct emm_nvdata_s {
|
|||||||
PLMN_LIST_T(EMM_DATA_EPLMN_MAX) eplmn;
|
PLMN_LIST_T(EMM_DATA_EPLMN_MAX) eplmn;
|
||||||
} emm_nvdata_t;
|
} emm_nvdata_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct nas_timer_t T3402; /* attach failure timer */
|
||||||
|
struct nas_timer_t T3410; /* attach timer */
|
||||||
|
struct nas_timer_t T3411; /* attach restart timer */
|
||||||
|
struct nas_timer_t T3412; /* periodic tracking area update timer */
|
||||||
|
struct nas_timer_t T3416; /* EPS authentication challenge timer */
|
||||||
|
struct nas_timer_t T3417; /* Service request timer */
|
||||||
|
struct nas_timer_t T3418; /* MAC authentication failure timer */
|
||||||
|
struct nas_timer_t T3420; /* Synch authentication failure timer */
|
||||||
|
struct nas_timer_t T3421; /* Detach timer */
|
||||||
|
struct nas_timer_t T3430; /* tracking area update timer */
|
||||||
|
struct nas_timer_t T3423; /* E-UTRAN deactivate ISR timer */
|
||||||
|
} emm_timers_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Structure of the EMM data
|
* Structure of the EMM data
|
||||||
* -------------------------
|
* -------------------------
|
||||||
@@ -324,7 +338,11 @@ typedef struct emm_data_s {
|
|||||||
*/
|
*/
|
||||||
emm_security_context_t *security; /* current security context */
|
emm_security_context_t *security; /* current security context */
|
||||||
emm_security_context_t *non_current; /* non-current security context */
|
emm_security_context_t *non_current; /* non-current security context */
|
||||||
|
/*
|
||||||
|
* EPS mobility management timers – UE side
|
||||||
|
* ----------------------------------------
|
||||||
|
*/
|
||||||
|
emm_timers_t *emm_timers;
|
||||||
} emm_data_t;
|
} emm_data_t;
|
||||||
|
|
||||||
|
|
||||||
@@ -333,11 +351,6 @@ typedef struct emm_data_s {
|
|||||||
/******************** G L O B A L V A R I A B L E S ********************/
|
/******************** G L O B A L V A R I A B L E S ********************/
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* --------------------------------------------------------------------------
|
|
||||||
* EPS mobility management timers – UE side
|
|
||||||
* --------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
#define T3402_DEFAULT_VALUE 720 /* 12 minutes */
|
#define T3402_DEFAULT_VALUE 720 /* 12 minutes */
|
||||||
#define T3410_DEFAULT_VALUE 15 /* 15 seconds */
|
#define T3410_DEFAULT_VALUE 15 /* 15 seconds */
|
||||||
#define T3411_DEFAULT_VALUE 10 /* 10 seconds */
|
#define T3411_DEFAULT_VALUE 10 /* 10 seconds */
|
||||||
@@ -352,20 +365,6 @@ typedef struct emm_data_s {
|
|||||||
#define T3430_DEFAULT_VALUE 15 /* 15 seconds */
|
#define T3430_DEFAULT_VALUE 15 /* 15 seconds */
|
||||||
#define T3440_DEFAULT_VALUE 10 /* 10 seconds */
|
#define T3440_DEFAULT_VALUE 10 /* 10 seconds */
|
||||||
|
|
||||||
// FIXME put in another structure
|
|
||||||
struct nas_timer_t T3402; /* attach failure timer */
|
|
||||||
struct nas_timer_t T3410; /* attach timer */
|
|
||||||
struct nas_timer_t T3411; /* attach restart timer */
|
|
||||||
struct nas_timer_t T3412; /* periodic tracking area update timer */
|
|
||||||
struct nas_timer_t T3416; /* EPS authentication challenge timer */
|
|
||||||
struct nas_timer_t T3417; /* Service request timer */
|
|
||||||
struct nas_timer_t T3418; /* MAC authentication failure timer */
|
|
||||||
struct nas_timer_t T3420; /* Synch authentication failure timer */
|
|
||||||
struct nas_timer_t T3421; /* Detach timer */
|
|
||||||
struct nas_timer_t T3430; /* tracking area update timer */
|
|
||||||
|
|
||||||
struct nas_timer_t T3423; /* E-UTRAN deactivate ISR timer */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/****************** E X P O R T E D F U N C T I O N S ******************/
|
/****************** E X P O R T E D F U N C T I O N S ******************/
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|||||||
@@ -79,6 +79,32 @@ static int _emm_main_callback(emm_data_t *emm_data, int);
|
|||||||
/****************** E X P O R T E D F U N C T I O N S ******************/
|
/****************** E X P O R T E D F U N C T I O N S ******************/
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize EMM timers
|
||||||
|
*/
|
||||||
|
void _emm_timers_initialize(emm_timers_t *emm_timers) {
|
||||||
|
emm_timers->T3410.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3410.sec = T3410_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3411.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3411.sec = T3411_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3402.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3402.sec = T3402_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3416.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3416.sec = T3416_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3417.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3417.sec = T3417_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3418.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3418.sec = T3418_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3420.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3420.sec = T3420_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3421.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3421.sec = T3421_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3423.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3423.sec = T3423_DEFAULT_VALUE;
|
||||||
|
emm_timers->T3430.id = NAS_TIMER_INACTIVE_ID;
|
||||||
|
emm_timers->T3430.sec = T3430_DEFAULT_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
** **
|
** **
|
||||||
** Name: emm_main_initialize() **
|
** Name: emm_main_initialize() **
|
||||||
@@ -360,26 +386,12 @@ void emm_main_initialize(nas_user_t *user, emm_indication_callback_t cb, const c
|
|||||||
/*
|
/*
|
||||||
* Initialize EMM timers
|
* Initialize EMM timers
|
||||||
*/
|
*/
|
||||||
T3410.id = NAS_TIMER_INACTIVE_ID;
|
user->emm_data->emm_timers = calloc(1, sizeof(emm_timers_t));
|
||||||
T3410.sec = T3410_DEFAULT_VALUE;
|
if ( user->emm_data->emm_timers == NULL ) {
|
||||||
T3411.id = NAS_TIMER_INACTIVE_ID;
|
LOG_TRACE(ERROR, "EMM-MAIN - Failed to alloc emm_timers");
|
||||||
T3411.sec = T3411_DEFAULT_VALUE;
|
// FIXME stop here
|
||||||
T3402.id = NAS_TIMER_INACTIVE_ID;
|
}
|
||||||
T3402.sec = T3402_DEFAULT_VALUE;
|
_emm_timers_initialize(user->emm_data->emm_timers);
|
||||||
T3416.id = NAS_TIMER_INACTIVE_ID;
|
|
||||||
T3416.sec = T3416_DEFAULT_VALUE;
|
|
||||||
T3417.id = NAS_TIMER_INACTIVE_ID;
|
|
||||||
T3417.sec = T3417_DEFAULT_VALUE;
|
|
||||||
T3418.id = NAS_TIMER_INACTIVE_ID;
|
|
||||||
T3418.sec = T3418_DEFAULT_VALUE;
|
|
||||||
T3420.id = NAS_TIMER_INACTIVE_ID;
|
|
||||||
T3420.sec = T3420_DEFAULT_VALUE;
|
|
||||||
T3421.id = NAS_TIMER_INACTIVE_ID;
|
|
||||||
T3421.sec = T3421_DEFAULT_VALUE;
|
|
||||||
T3423.id = NAS_TIMER_INACTIVE_ID;
|
|
||||||
T3423.sec = T3423_DEFAULT_VALUE;
|
|
||||||
T3430.id = NAS_TIMER_INACTIVE_ID;
|
|
||||||
T3430.sec = T3430_DEFAULT_VALUE;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize the user notification callback
|
* Initialize the user notification callback
|
||||||
@@ -389,7 +401,6 @@ void emm_main_initialize(nas_user_t *user, emm_indication_callback_t cb, const c
|
|||||||
/*
|
/*
|
||||||
* Initialize EMM internal data used for UE in idle mode
|
* Initialize EMM internal data used for UE in idle mode
|
||||||
*/
|
*/
|
||||||
// FIXME REVIEW
|
|
||||||
IdleMode_initialize(user, &_emm_main_callback);
|
IdleMode_initialize(user, &_emm_main_callback);
|
||||||
|
|
||||||
LOG_FUNC_OUT;
|
LOG_FUNC_OUT;
|
||||||
|
|||||||
Reference in New Issue
Block a user