Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG-RAN
Commits
ef05c1d9
Commit
ef05c1d9
authored
Jul 13, 2016
by
Frédéric Leroy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE/EMM: move static T34XX timers to emm_data_t
parent
491f299b
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
166 additions
and
131 deletions
+166
-131
openair3/NAS/UE/EMM/Attach.c
openair3/NAS/UE/EMM/Attach.c
+34
-27
openair3/NAS/UE/EMM/Authentication.c
openair3/NAS/UE/EMM/Authentication.c
+61
-52
openair3/NAS/UE/EMM/Detach.c
openair3/NAS/UE/EMM/Detach.c
+14
-9
openair3/NAS/UE/EMM/ServiceRequestHdl.c
openair3/NAS/UE/EMM/ServiceRequestHdl.c
+3
-1
openair3/NAS/UE/EMM/TrackingAreaUpdate.c
openair3/NAS/UE/EMM/TrackingAreaUpdate.c
+3
-1
openair3/NAS/UE/EMM/emmData.h
openair3/NAS/UE/EMM/emmData.h
+19
-20
openair3/NAS/UE/EMM/emm_main.c
openair3/NAS/UE/EMM/emm_main.c
+32
-21
No files found.
openair3/NAS/UE/EMM/Attach.c
View file @
ef05c1d9
...
...
@@ -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
;
esm_sap_t
esm_sap
;
int
rc
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
LOG_TRACE
(
INFO
,
"EMM-PROC - Initiate EPS attach type = %s (%d)"
,
_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 */
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"
,
T3410
.
id
,
T3410
.
sec
);
emm_timers
->
T3410
.
id
,
emm_timers
->
T3410
.
sec
);
/* Stop T3402 and T3411 timers if running */
T3402
.
id
=
nas_timer_stop
(
T3402
.
id
);
T3411
.
id
=
nas_timer_stop
(
T3411
.
id
);
emm_timers
->
T3402
.
id
=
nas_timer_stop
(
emm_timers
->
T3402
.
id
);
emm_timers
->
T3411
.
id
=
nas_timer_stop
(
emm_timers
->
T3411
.
id
);
/*
* 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
i
;
int
j
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
LOG_TRACE
(
INFO
,
"EMM-PROC - EPS attach accepted by the network"
);
/* Stop timer T3410 */
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
T3410
.
id
);
T3410
.
id
=
nas_timer_stop
(
T3410
.
id
);
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
emm_timers
->
T3410
.
id
);
emm_timers
->
T3410
.
id
=
nas_timer_stop
(
emm_timers
->
T3410
.
id
);
/* Delete old TAI list and store the received TAI list */
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 */
T3412
.
sec
=
t3412
;
emm_timers
->
T3412
.
sec
=
t3412
;
/* Update attach failure timer value */
if
(
!
(
t3402
<
0
)
)
{
T3402
.
sec
=
t3402
;
emm_timers
->
T3402
.
sec
=
t3402
;
}
/* Update E-UTRAN deactivate ISR timer value */
if
(
!
(
t3423
<
0
)
)
{
T3423
.
sec
=
t3423
;
emm_timers
->
T3423
.
sec
=
t3423
;
}
/* 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
;
int
rc
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - EPS attach rejected by the network, "
"EMM cause = %d"
,
emm_cause
);
/* Stop timer T3410 */
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
T3410
.
id
);
T3410
.
id
=
nas_timer_stop
(
T3410
.
id
);
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
emm_timers
->
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
* the eKSI */
...
...
@@ -790,6 +793,7 @@ int emm_proc_attach_failure(int is_initial, void *args)
int
rc
=
RETURNok
;
esm_sap_t
esm_sap
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
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
);
/* Stop timer T3410 if still running */
if
(
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
T3410
.
id
);
T3410
.
id
=
nas_timer_stop
(
T3410
.
id
);
if
(
emm_timers
->
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
emm_timers
->
T3410
.
id
);
emm_timers
->
T3410
.
id
=
nas_timer_stop
(
emm_timers
->
T3410
.
id
);
}
if
(
is_initial
)
{
...
...
@@ -826,9 +830,9 @@ int emm_proc_attach_failure(int is_initial, void *args)
if
(
rc
!=
RETURNerror
)
{
/* 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"
,
T3411
.
id
,
T3411
.
sec
);
emm_timers
->
T3411
.
id
,
emm_timers
->
T3411
.
sec
);
}
LOG_FUNC_RETURN
(
rc
);
...
...
@@ -1002,13 +1006,14 @@ void *_emm_attach_t3410_handler(void *args)
LOG_FUNC_IN
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
emm_sap_t
emm_sap
;
int
rc
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - T3410 timer expired"
);
/* 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 */
_emm_attach_abnormal_cases_bcd
(
user
,
&
emm_sap
);
...
...
@@ -1045,12 +1050,13 @@ static void *_emm_attach_t3411_handler(void *args)
LOG_FUNC_IN
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
emm_sap_t
emm_sap
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - T3411 timer expired"
);
/* 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
* restarted
...
...
@@ -1090,12 +1096,13 @@ static void *_emm_attach_t3402_handler(void *args)
LOG_FUNC_IN
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
emm_sap_t
emm_sap
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - T3402 timer expired"
);
/* 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 */
_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
)
{
LOG_FUNC_IN
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - Abnormal case, attach counter = %d"
,
_emm_attach_data
.
attempt_count
);
/* Stop timer T3410 */
if
(
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
T3410
.
id
);
T3410
.
id
=
nas_timer_stop
(
T3410
.
id
);
if
(
emm_timers
->
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
emm_timers
->
T3410
.
id
);
emm_timers
->
T3410
.
id
=
nas_timer_stop
(
emm_timers
->
T3410
.
id
);
}
if
(
_emm_attach_data
.
attempt_count
<
EMM_ATTACH_COUNTER_MAX
)
{
/* Increment the attach attempt counter */
_emm_attach_data
.
attempt_count
+=
1
;
/* 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"
,
T3411
.
id
,
T3411
.
sec
);
emm_timers
->
T3411
.
id
,
emm_timers
->
T3411
.
sec
);
/*
* Notify EMM that the attempt to attach for EPS services failed and
* 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
;
/* 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"
,
T3402
.
id
,
T3402
.
sec
);
emm_timers
->
T3402
.
id
,
emm_timers
->
T3402
.
sec
);
/*
* Notify EMM that the attempt to attach for EPS services failed and
* the attach attempt counter reached its maximum value.
...
...
openair3/NAS/UE/EMM/Authentication.c
View file @
ef05c1d9
...
...
@@ -159,6 +159,7 @@ int emm_proc_authentication_request(nas_user_t *user, int native_ksi, int ksi,
int
rc
=
RETURNerror
;
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
);
...
...
@@ -172,15 +173,15 @@ int emm_proc_authentication_request(nas_user_t *user, int native_ksi, int ksi,
}
/* Stop timer T3418, if running */
if
(
T3418
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3418 (%d)"
,
T3418
.
id
);
T3418
.
id
=
nas_timer_stop
(
T3418
.
id
);
if
(
emm_timers
->
T3418
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3418 (%d)"
,
emm_timers
->
T3418
.
id
);
emm_timers
->
T3418
.
id
=
nas_timer_stop
(
emm_timers
->
T3418
.
id
);
}
/* Stop timer T3420, if running */
if
(
T3420
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3420 (%d)"
,
T3420
.
id
);
T3420
.
id
=
nas_timer_stop
(
T3420
.
id
);
if
(
emm_timers
->
T3420
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3420 (%d)"
,
emm_timers
->
T3420
.
id
);
emm_timers
->
T3420
.
id
=
nas_timer_stop
(
emm_timers
->
T3420
.
id
);
}
/* 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 */
if
(
T3416
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3416 (%d)"
,
T3416
.
id
);
T3416
.
id
=
nas_timer_stop
(
T3416
.
id
);
if
(
emm_timers
->
T3416
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3416 (%d)"
,
emm_timers
->
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"
,
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
;
int
rc
;
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"
);
...
...
@@ -407,21 +409,21 @@ int emm_proc_authentication_reject(nas_user_t *user)
user
->
emm_data
->
usim_is_valid
=
FALSE
;
/* Stop timer T3410 */
if
(
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
T3410
.
id
);
T3410
.
id
=
nas_timer_stop
(
T3410
.
id
);
if
(
emm_timers
->
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
emm_timers
->
T3410
.
id
);
emm_timers
->
T3410
.
id
=
nas_timer_stop
(
emm_timers
->
T3410
.
id
);
}
/* Stop timer T3417 */
if
(
T3417
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3417 (%d)"
,
T3417
.
id
);
T3417
.
id
=
nas_timer_stop
(
T3417
.
id
);
if
(
emm_timers
->
T3417
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3417 (%d)"
,
emm_timers
->
T3417
.
id
);
emm_timers
->
T3417
.
id
=
nas_timer_stop
(
emm_timers
->
T3417
.
id
);
}
/* Stop timer T3430 */
if
(
T3430
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3430 (%d)"
,
T3430
.
id
);
T3430
.
id
=
nas_timer_stop
(
T3430
.
id
);
if
(
emm_timers
->
T3430
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3430 (%d)"
,
emm_timers
->
T3430
.
id
);
emm_timers
->
T3430
.
id
=
nas_timer_stop
(
emm_timers
->
T3430
.
id
);
}
/* 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
;
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"
);
/* Stop timer T3416, if running */
if
(
T3416
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3416 (%d)"
,
T3416
.
id
);
T3416
.
id
=
nas_timer_stop
(
T3416
.
id
);
if
(
emm_timers
->
T3416
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3416 (%d)"
,
emm_timers
->
T3416
.
id
);
emm_timers
->
T3416
.
id
=
nas_timer_stop
(
emm_timers
->
T3416
.
id
);
}
/* Delete any previously stored RAND and RES */
...
...
@@ -511,11 +514,12 @@ static void *_authentication_t3416_handler(void *args)
{
LOG_FUNC_IN
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - T3416 timer expired"
);
/* 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 */
(
void
)
emm_proc_authentication_delete
(
user
);
...
...
@@ -546,12 +550,13 @@ static void *_authentication_t3418_handler(void *args)
int
rc
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
authentication_data_t
*
authentication_data
=
user
->
authentication_data
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - T3418 timer expired"
);
/* 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 */
authentication_data
->
mac_count
=
0
;
authentication_data
->
umts_count
=
0
;
...
...
@@ -589,11 +594,12 @@ static void *_authentication_t3420_handler(void *args)
int
rc
;
nas_user_t
*
user
=
args
;
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"
);
/* 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 */
authentication_data
->
sync_count
=
0
;
/* 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
;
authentication_data_t
*
authentication_data
=
user
->
authentication_data
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
LOG_TRACE
(
WARNING
,
"EMM-PROC - "
"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 */
authentication_data
->
mac_count
+=
1
;
/* 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
);
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
;
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 */
authentication_data
->
umts_count
+=
1
;
/* 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
);
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
;
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 */
authentication_data
->
sync_count
+=
1
;
/* 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
);
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
;
default:
...
...
@@ -809,32 +816,33 @@ static int _authentication_stop_timers(nas_user_t *user)
{
LOG_FUNC_IN
;
authentication_data_t
*
authentication_data
=
user
->
authentication_data
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
/* Stop attach timer */
if
(
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
T3410
.
id
);
T3410
.
id
=
nas_timer_stop
(
T3410
.
id
);
if
(
emm_timers
->
T3410
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3410 (%d)"
,
emm_timers
->
T3410
.
id
);
emm_timers
->
T3410
.
id
=
nas_timer_stop
(
emm_timers
->
T3410
.
id
);
authentication_data
->
timers
|=
AUTHENTICATION_T3410
;
}
/* Stop service request timer */
if
(
T3417
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3417 (%d)"
,
T3417
.
id
);
T3417
.
id
=
nas_timer_stop
(
T3417
.
id
);
if
(
emm_timers
->
T3417
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3417 (%d)"
,
emm_timers
->
T3417
.
id
);
emm_timers
->
T3417
.
id
=
nas_timer_stop
(
emm_timers
->
T3417
.
id
);
authentication_data
->
timers
|=
AUTHENTICATION_T3417
;
}
/* Stop detach timer */
if
(
T3421
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3421 (%d)"
,
T3421
.
id
);
T3421
.
id
=
nas_timer_stop
(
T3421
.
id
);
if
(
emm_timers
->
T3421
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3421 (%d)"
,
emm_timers
->
T3421
.
id
);
emm_timers
->
T3421
.
id
=
nas_timer_stop
(
emm_timers
->
T3421
.
id
);
authentication_data
->
timers
|=
AUTHENTICATION_T3421
;
}
/* Stop tracking area update timer */
if
(
T3430
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3430 (%d)"
,
T3430
.
id
);
T3430
.
id
=
nas_timer_stop
(
T3430
.
id
);
if
(
emm_timers
->
T3430
.
id
!=
NAS_TIMER_INACTIVE_ID
)
{
LOG_TRACE
(
INFO
,
"EMM-PROC - Stop timer T3430 (%d)"
,
emm_timers
->
T3430
.
id
);
emm_timers
->
T3430
.
id
=
nas_timer_stop
(
emm_timers
->
T3430
.
id
);
authentication_data
->
timers
|=
AUTHENTICATION_T3430
;
}
...
...
@@ -863,33 +871,34 @@ static int _authentication_start_timers(nas_user_t *user)
{
LOG_FUNC_IN
;
authentication_data_t
*
authentication_data
=
user
->
authentication_data
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
if
(
authentication_data
->
timers
&
AUTHENTICATION_T3410
)
{
/* 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 "
"%ld seconds"
,
T3410
.
id
,
T3410
.
sec
);
"%ld seconds"
,
emm_timers
->
T3410
.
id
,
emm_timers
->
T3410
.
sec
);
}
if
(
authentication_data
->
timers
&
AUTHENTICATION_T3417
)
{
/* 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 "
"%ld seconds"
,
T3417
.
id
,
T3417
.
sec
);
"%ld seconds"
,
emm_timers
->
T3417
.
id
,
emm_timers
->
T3417
.
sec
);
}
if
(
authentication_data
->
timers
&
AUTHENTICATION_T3421
)
{
/* 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 "
"%ld seconds"
,
T3421
.
id
,
T3421
.
sec
);
"%ld seconds"
,
emm_timers
->
T3421
.
id
,
emm_timers
->
T3421
.
sec
);
}
if
(
authentication_data
->
timers
&
AUTHENTICATION_T3430
)
{
/* 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 "
"%ld seconds"
,
T3430
.
id
,
T3430
.
sec
);
"%ld seconds"
,
emm_timers
->
T3430
.
id
,
emm_timers
->
T3430
.
sec
);
}
LOG_FUNC_RETURN
(
RETURNok
);
...
...
openair3/NAS/UE/EMM/Detach.c
View file @
ef05c1d9
...
...
@@ -203,14 +203,15 @@ int emm_proc_detach_request(void *args)
LOG_FUNC_IN
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
emm_sap_t
emm_sap
;
int
rc
;
if
(
!
_emm_detach_data
.
switch_off
)
{
/* 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"
,
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
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
int
rc
;
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
);
/* 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
...
...
@@ -299,6 +301,7 @@ int emm_proc_detach_failure(int is_initial, void *args)
LOG_FUNC_IN
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
emm_sap_t
emm_sap
;
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
);
/* 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
...
...
@@ -372,7 +375,7 @@ int emm_proc_detach_release(void *args)
** 3GPP TS 24.301, section 5.5.2.2.4 case c **
** On the first four expiries of the timer, the UE shall re- **
** 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. **
** **
** Inputs: args: handler parameters **
...
...
@@ -388,6 +391,7 @@ void *_emm_detach_t3421_handler(void *args)
LOG_FUNC_IN
;
nas_user_t
*
user
=
args
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
int
rc
;
/* 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
;
/* 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 */
emm_as
->
NASinfo
=
EMM_AS_NAS_INFO_DETACH
;
...
...
@@ -428,9 +432,9 @@ void *_emm_detach_t3421_handler(void *args)
if
(
rc
!=
RETURNerror
)
{
/* 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"
,
T3421
.
id
,
T3421
.
sec
);
"seconds"
,
emm_timers
->
T3421
.
id
,
emm_timers
->
T3421
.
sec
);
}
}
else
{
/* 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
;
emm_timers_t
*
emm_timers
=
user
->
emm_data
->
emm_timers
;
emm_sap_t
emm_sap
;
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
);
/* 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
...
...
openair3/NAS/UE/EMM/ServiceRequestHdl.c
View file @
ef05c1d9
...
...
@@ -112,11 +112,13 @@ void *_emm_service_t3417_handler(void *);
void
*
_emm_service_t3417_handler
(
void
*
args
)
{
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"
);
/* 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
);
}
...
...
openair3/NAS/UE/EMM/TrackingAreaUpdate.c
View file @
ef05c1d9
...
...
@@ -113,11 +113,13 @@ void *_emm_tau_t3430_handler(void *);
void
*
_emm_tau_t3430_handler
(
void
*
args
)
{
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"
);
/* 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
);
}
...
...
openair3/NAS/UE/EMM/emmData.h
View file @
ef05c1d9
...
...
@@ -197,6 +197,20 @@ typedef struct emm_nvdata_s {
PLMN_LIST_T
(
EMM_DATA_EPLMN_MAX
)
eplmn
;
}
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
* -------------------------
...
...
@@ -324,7 +338,11 @@ typedef struct emm_data_s {
*/
emm_security_context_t
*
security
;
/* 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
;
...
...
@@ -333,11 +351,6 @@ typedef struct emm_data_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 T3410_DEFAULT_VALUE 15
/* 15 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 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 ******************/
/****************************************************************************/
...
...
openair3/NAS/UE/EMM/emm_main.c
View file @
ef05c1d9
...
...
@@ -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 ******************/
/****************************************************************************/
/*
* 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() **
...
...
@@ -360,26 +386,12 @@ void emm_main_initialize(nas_user_t *user, emm_indication_callback_t cb, const c
/*
* Initialize EMM timers
*/
T3410
.
id
=
NAS_TIMER_INACTIVE_ID
;
T3410
.
sec
=
T3410_DEFAULT_VALUE
;
T3411
.
id
=
NAS_TIMER_INACTIVE_ID
;
T3411
.
sec
=
T3411_DEFAULT_VALUE
;
T3402
.
id
=
NAS_TIMER_INACTIVE_ID
;
T3402
.
sec
=
T3402_DEFAULT_VALUE
;
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
;
user
->
emm_data
->
emm_timers
=
calloc
(
1
,
sizeof
(
emm_timers_t
));
if
(
user
->
emm_data
->
emm_timers
==
NULL
)
{
LOG_TRACE
(
ERROR
,
"EMM-MAIN - Failed to alloc emm_timers"
);
// FIXME stop here
}
_emm_timers_initialize
(
user
->
emm_data
->
emm_timers
);
/*
* 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
*/
// FIXME REVIEW
IdleMode_initialize
(
user
,
&
_emm_main_callback
);
LOG_FUNC_OUT
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment