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
wangjie
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
Expand all
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)
...
@@ -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)
...
@@ -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,
...
@@ -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,
...
@@ -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
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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.
...
...
openair3/NAS/UE/EMM/Authentication.c
View file @
ef05c1d9
This diff is collapsed.
Click to expand it.
openair3/NAS/UE/EMM/Detach.c
View file @
ef05c1d9
...
@@ -203,14 +203,15 @@ int emm_proc_detach_request(void *args)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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)
...
@@ -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
...
...
openair3/NAS/UE/EMM/ServiceRequestHdl.c
View file @
ef05c1d9
...
@@ -112,11 +112,13 @@ void *_emm_service_t3417_handler(void *);
...
@@ -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
);
}
}
...
...
openair3/NAS/UE/EMM/TrackingAreaUpdate.c
View file @
ef05c1d9
...
@@ -113,11 +113,13 @@ void *_emm_tau_t3430_handler(void *);
...
@@ -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
);
}
}
...
...
openair3/NAS/UE/EMM/emmData.h
View file @
ef05c1d9
...
@@ -197,6 +197,20 @@ typedef struct emm_nvdata_s {
...
@@ -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 {
...
@@ -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 {
...
@@ -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 {
...
@@ -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 ******************/
/****************************************************************************/
/****************************************************************************/
...
...
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);
...
@@ -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
...
@@ -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
...
@@ -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
;
...
...
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