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
73937668
Commit
73937668
authored
Jul 12, 2016
by
Frédéric Leroy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE/ESM: move _esm_pt_data to nas_user_t
parent
e6b5e1c3
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
182 additions
and
156 deletions
+182
-156
openair3/NAS/UE/ESM/PdnConnectivity.c
openair3/NAS/UE/ESM/PdnConnectivity.c
+25
-21
openair3/NAS/UE/ESM/PdnDisconnect.c
openair3/NAS/UE/ESM/PdnDisconnect.c
+11
-11
openair3/NAS/UE/ESM/SAP/esm_recv.c
openair3/NAS/UE/ESM/SAP/esm_recv.c
+10
-6
openair3/NAS/UE/ESM/SAP/esm_sap.c
openair3/NAS/UE/ESM/SAP/esm_sap.c
+3
-3
openair3/NAS/UE/ESM/esmData.h
openair3/NAS/UE/ESM/esmData.h
+0
-1
openair3/NAS/UE/ESM/esm_main.c
openair3/NAS/UE/ESM/esm_main.c
+4
-3
openair3/NAS/UE/ESM/esm_main.h
openair3/NAS/UE/ESM/esm_main.h
+2
-1
openair3/NAS/UE/ESM/esm_proc.h
openair3/NAS/UE/ESM/esm_proc.h
+2
-2
openair3/NAS/UE/ESM/esm_pt.c
openair3/NAS/UE/ESM/esm_pt.c
+50
-83
openair3/NAS/UE/ESM/esm_pt.h
openair3/NAS/UE/ESM/esm_pt.h
+9
-24
openair3/NAS/UE/ESM/esm_pt_defs.h
openair3/NAS/UE/ESM/esm_pt_defs.h
+63
-0
openair3/NAS/UE/nas_proc.c
openair3/NAS/UE/nas_proc.c
+1
-1
openair3/NAS/UE/user_defs.h
openair3/NAS/UE/user_defs.h
+2
-0
No files found.
openair3/NAS/UE/ESM/PdnConnectivity.c
View file @
73937668
...
...
@@ -133,7 +133,7 @@ static void *_pdn_connectivity_t3482_handler(void *);
** Return: RETURNok, RETURNerror **
** **
***************************************************************************/
int
esm_proc_pdn_connectivity
(
esm_data_t
*
esm_data
,
int
cid
,
int
is_to_define
,
int
esm_proc_pdn_connectivity
(
nas_user_t
*
user
,
int
cid
,
int
is_to_define
,
esm_proc_pdn_type_t
pdn_type
,
const
OctetString
*
apn
,
int
is_emergency
,
unsigned
int
*
pti
)
...
...
@@ -142,6 +142,8 @@ int esm_proc_pdn_connectivity(esm_data_t *esm_data, int cid, int is_to_define,
int
rc
=
RETURNerror
;
int
pid
=
cid
-
1
;
esm_data_t
*
esm_data
=
user
->
esm_data
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
if
(
!
is_to_define
)
{
LOG_TRACE
(
INFO
,
"ESM-PROC - Undefine PDN connection (cid=%d)"
,
cid
);
...
...
@@ -150,7 +152,7 @@ int esm_proc_pdn_connectivity(esm_data_t *esm_data, int cid, int is_to_define,
if
(
pti
!=
ESM_PT_UNASSIGNED
)
{
/* Release the procedure transaction data */
rc
=
esm_pt_release
(
pti
);
rc
=
esm_pt_release
(
esm_pt_data
,
pti
);
}
LOG_FUNC_RETURN
(
rc
);
...
...
@@ -158,7 +160,7 @@ int esm_proc_pdn_connectivity(esm_data_t *esm_data, int cid, int is_to_define,
LOG_TRACE
(
INFO
,
"ESM-PROC - Assign new procedure transaction identity "
"(cid=%d)"
,
cid
);
/* Assign new procedure transaction identity */
*
pti
=
esm_pt_assign
();
*
pti
=
esm_pt_assign
(
esm_pt_data
);
if
(
*
pti
==
ESM_PT_UNASSIGNED
)
{
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to assign new procedure "
...
...
@@ -282,7 +284,7 @@ int esm_proc_pdn_connectivity_request(nas_user_t *user, int is_standalone, int p
OctetString
*
msg
,
int
sent_by_ue
)
{
LOG_FUNC_IN
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
int
rc
=
RETURNok
;
LOG_TRACE
(
INFO
,
"ESM-PROC - Initiate PDN connectivity (pti=%d)"
,
pti
);
...
...
@@ -308,7 +310,7 @@ int esm_proc_pdn_connectivity_request(nas_user_t *user, int is_standalone, int p
if
(
rc
!=
RETURNerror
)
{
/* Set the procedure transaction state to PENDING */
rc
=
esm_pt_set_status
(
pti
,
ESM_PT_PENDING
);
rc
=
esm_pt_set_status
(
esm_pt_data
,
pti
,
ESM_PT_PENDING
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in PENDING state */
...
...
@@ -351,6 +353,7 @@ int esm_proc_pdn_connectivity_accept(nas_user_t *user, int pti, esm_proc_pdn_typ
{
LOG_FUNC_IN
;
esm_data_t
*
esm_data
=
user
->
esm_data
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
int
rc
;
int
pid
=
RETURNerror
;
char
apn_first_char
[
4
];
...
...
@@ -368,9 +371,9 @@ int esm_proc_pdn_connectivity_accept(nas_user_t *user, int pti, esm_proc_pdn_typ
esm_data_get_ipv4v6_addr
(
pdn_addr
));
/* Stop T3482 timer if running */
(
void
)
esm_pt_stop_timer
(
pti
);
esm_pt_stop_timer
(
esm_pt_data
,
pti
);
/* Set the procedure transaction state to INACTIVE */
rc
=
esm_pt_set_status
(
pti
,
ESM_PT_INACTIVE
);
rc
=
esm_pt_set_status
(
esm_pt_data
,
pti
,
ESM_PT_INACTIVE
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in INACTIVE state
...
...
@@ -440,16 +443,16 @@ int esm_proc_pdn_connectivity_accept(nas_user_t *user, int pti, esm_proc_pdn_typ
int
esm_proc_pdn_connectivity_reject
(
nas_user_t
*
user
,
int
pti
,
int
*
esm_cause
)
{
LOG_FUNC_IN
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
int
rc
;
LOG_TRACE
(
WARNING
,
"ESM-PROC - PDN connectivity rejected by "
"the network (pti=%d), ESM cause = %d"
,
pti
,
*
esm_cause
);
/* Stop T3482 timer if running */
(
void
)
esm_pt_stop_timer
(
pti
);
(
void
)
esm_pt_stop_timer
(
esm_pt_data
,
pti
);
/* Set the procedure transaction state to INACTIVE */
rc
=
esm_pt_set_status
(
pti
,
ESM_PT_INACTIVE
);
rc
=
esm_pt_set_status
(
esm_pt_data
,
pti
,
ESM_PT_INACTIVE
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in INACTIVE state */
...
...
@@ -457,7 +460,7 @@ int esm_proc_pdn_connectivity_reject(nas_user_t *user, int pti, int *esm_cause)
*
esm_cause
=
ESM_CAUSE_MESSAGE_TYPE_NOT_COMPATIBLE
;
}
else
{
/* Release the procedure transaction identity */
rc
=
esm_pt_release
(
pti
);
rc
=
esm_pt_release
(
user
->
esm_pt_data
,
pti
);
if
(
rc
!=
RETURNok
)
{
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release PTI %d"
,
pti
);
...
...
@@ -491,18 +494,18 @@ int esm_proc_pdn_connectivity_reject(nas_user_t *user, int pti, int *esm_cause)
int
esm_proc_pdn_connectivity_complete
(
nas_user_t
*
user
)
{
LOG_FUNC_IN
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
int
rc
=
RETURNerror
;
LOG_TRACE
(
INFO
,
"ESM-PROC - PDN connectivity complete"
);
/* Get the procedure transaction identity assigned to the PDN connection
* entry which is still pending in the inactive state */
int
pti
=
esm_pt_get_pending_pti
(
ESM_PT_INACTIVE
);
int
pti
=
esm_pt_get_pending_pti
(
esm_pt_data
,
ESM_PT_INACTIVE
);
if
(
pti
!=
ESM_PT_UNASSIGNED
)
{
/* Release the procedure transaction identity */
rc
=
esm_pt_release
(
pti
);
rc
=
esm_pt_release
(
esm_pt_data
,
pti
);
}
LOG_FUNC_RETURN
(
rc
);
...
...
@@ -532,7 +535,7 @@ int esm_proc_pdn_connectivity_complete(nas_user_t *user)
int
esm_proc_pdn_connectivity_failure
(
nas_user_t
*
user
,
int
is_pending
)
{
LOG_FUNC_IN
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
int
rc
;
int
pti
;
...
...
@@ -542,7 +545,7 @@ int esm_proc_pdn_connectivity_failure(nas_user_t *user, int is_pending)
if
(
is_pending
)
{
/* Get the procedure transaction identity assigned to the pending PDN
* connection entry */
pti
=
esm_pt_get_pending_pti
(
ESM_PT_PENDING
);
pti
=
esm_pt_get_pending_pti
(
esm_pt_data
,
ESM_PT_PENDING
);
if
(
pti
==
ESM_PT_UNASSIGNED
)
{
LOG_TRACE
(
ERROR
,
"ESM-PROC - No procedure transaction is PENDING"
);
...
...
@@ -550,15 +553,15 @@ int esm_proc_pdn_connectivity_failure(nas_user_t *user, int is_pending)
}
/* Set the procedure transaction state to INACTIVE */
(
void
)
esm_pt_set_status
(
pti
,
ESM_PT_INACTIVE
);
(
void
)
esm_pt_set_status
(
esm_pt_data
,
pti
,
ESM_PT_INACTIVE
);
}
else
{
/* Get the procedure transaction identity assigned to the PDN
* connection entry which is still pending in the inactive state */
pti
=
esm_pt_get_pending_pti
(
ESM_PT_INACTIVE
);
pti
=
esm_pt_get_pending_pti
(
esm_pt_data
,
ESM_PT_INACTIVE
);
}
/* Release the procedure transaction identity */
rc
=
esm_pt_release
(
pti
);
rc
=
esm_pt_release
(
esm_pt_data
,
pti
);
if
(
rc
!=
RETURNok
)
{
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release PTI %d"
,
pti
);
...
...
@@ -612,6 +615,7 @@ static void *_pdn_connectivity_t3482_handler(void *args)
/* Get retransmission timer parameters data */
esm_pt_timer_data_t
*
data
=
args
;
nas_user_t
*
user
=
data
->
user
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
/* Increment the retransmission counter */
data
->
count
+=
1
;
...
...
@@ -639,7 +643,7 @@ static void *_pdn_connectivity_t3482_handler(void *args)
}
}
else
{
/* Set the procedure transaction state to INACTIVE */
rc
=
esm_pt_set_status
(
data
->
pti
,
ESM_PT_INACTIVE
);
rc
=
esm_pt_set_status
(
esm_pt_data
,
data
->
pti
,
ESM_PT_INACTIVE
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in INACTIVE state */
...
...
@@ -647,7 +651,7 @@ static void *_pdn_connectivity_t3482_handler(void *args)
data
->
pti
);
}
else
{
/* Release the transaction identity assigned to this procedure */
rc
=
esm_pt_release
(
data
->
pti
);
rc
=
esm_pt_release
(
esm_pt_data
,
data
->
pti
);
if
(
rc
!=
RETURNok
)
{
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release PTI %d"
,
...
...
openair3/NAS/UE/ESM/PdnDisconnect.c
View file @
73937668
...
...
@@ -173,7 +173,7 @@ int esm_proc_pdn_disconnect_request(nas_user_t *user, int is_standalone, int pti
LOG_FUNC_IN
;
int
rc
=
RETURNok
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
LOG_TRACE
(
INFO
,
"ESM-PROC - Initiate PDN disconnection (pti=%d)"
,
pti
);
if
(
is_standalone
)
{
...
...
@@ -197,7 +197,7 @@ int esm_proc_pdn_disconnect_request(nas_user_t *user, int is_standalone, int pti
if
(
rc
!=
RETURNerror
)
{
/* Set the procedure transaction state to PENDING */
rc
=
esm_pt_set_status
(
pti
,
ESM_PT_PENDING
);
rc
=
esm_pt_set_status
(
esm_pt_data
,
pti
,
ESM_PT_PENDING
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in PENDING state */
...
...
@@ -231,7 +231,7 @@ int esm_proc_pdn_disconnect_request(nas_user_t *user, int is_standalone, int pti
** Others: None **
** **
***************************************************************************/
int
esm_proc_pdn_disconnect_accept
(
int
pti
,
int
*
esm_cause
)
int
esm_proc_pdn_disconnect_accept
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
,
int
*
esm_cause
)
{
LOG_FUNC_IN
;
...
...
@@ -239,9 +239,9 @@ int esm_proc_pdn_disconnect_accept(int pti, int *esm_cause)
"(pti=%d)"
,
pti
);
/* Stop T3492 timer if running */
(
void
)
esm_pt_stop_timer
(
pti
);
(
void
)
esm_pt_stop_timer
(
esm_pt_data
,
pti
);
/* Set the procedure transaction state to INACTIVE */
int
rc
=
esm_pt_set_status
(
pti
,
ESM_PT_INACTIVE
);
int
rc
=
esm_pt_set_status
(
esm_pt_data
,
pti
,
ESM_PT_INACTIVE
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in INACTIVE state */
...
...
@@ -250,7 +250,7 @@ int esm_proc_pdn_disconnect_accept(int pti, int *esm_cause)
}
else
{
/* Immediately release the transaction identity assigned to this
* procedure */
rc
=
esm_pt_release
(
pti
);
rc
=
esm_pt_release
(
esm_pt_data
,
pti
);
if
(
rc
!=
RETURNok
)
{
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release PTI %d"
,
pti
);
...
...
@@ -293,9 +293,9 @@ int esm_proc_pdn_disconnect_reject(nas_user_t *user, int pti, int *esm_cause)
"(pti=%d), ESM cause = %d"
,
pti
,
*
esm_cause
);
/* Stop T3492 timer if running */
(
void
)
esm_pt_stop_timer
(
pti
);
(
void
)
esm_pt_stop_timer
(
user
->
esm_pt_data
,
pti
);
/* Set the procedure transaction state to INACTIVE */
rc
=
esm_pt_set_status
(
pti
,
ESM_PT_INACTIVE
);
rc
=
esm_pt_set_status
(
user
->
esm_pt_data
,
pti
,
ESM_PT_INACTIVE
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in INACTIVE state
...
...
@@ -304,7 +304,7 @@ int esm_proc_pdn_disconnect_reject(nas_user_t *user, int pti, int *esm_cause)
*
esm_cause
=
ESM_CAUSE_MESSAGE_TYPE_NOT_COMPATIBLE
;
}
else
{
/* Release the transaction identity assigned to this procedure */
rc
=
esm_pt_release
(
pti
);
rc
=
esm_pt_release
(
user
->
esm_pt_data
,
pti
);
if
(
rc
!=
RETURNok
)
{
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release PTI %d"
,
pti
);
...
...
@@ -414,7 +414,7 @@ static void *_pdn_disconnect_t3492_handler(void *args)
}
}
else
{
/* Set the procedure transaction state to INACTIVE */
rc
=
esm_pt_set_status
(
data
->
pti
,
ESM_PT_INACTIVE
);
rc
=
esm_pt_set_status
(
user
->
esm_pt_data
,
data
->
pti
,
ESM_PT_INACTIVE
);
if
(
rc
!=
RETURNok
)
{
/* The procedure transaction was already in INACTIVE state */
...
...
@@ -422,7 +422,7 @@ static void *_pdn_disconnect_t3492_handler(void *args)
data
->
pti
);
}
else
{
/* Release the transaction identity assigned to this procedure */
rc
=
esm_pt_release
(
data
->
pti
);
rc
=
esm_pt_release
(
user
->
esm_pt_data
,
data
->
pti
);
if
(
rc
!=
RETURNok
)
{
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release PTI %d"
,
...
...
openair3/NAS/UE/ESM/SAP/esm_recv.c
View file @
73937668
...
...
@@ -154,7 +154,7 @@ int esm_recv_pdn_connectivity_reject(nas_user_t *user, int pti, int ebi,
*/
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid PTI value (pti=%d)"
,
pti
);
LOG_FUNC_RETURN
(
ESM_CAUSE_INVALID_PTI_VALUE
);
}
else
if
(
esm_pt_is_not_in_use
(
pti
)
)
{
}
else
if
(
esm_pt_is_not_in_use
(
user
->
esm_pt_data
,
pti
)
)
{
/* 3GPP TS 24.301, section 7.3.1, case a
* Assigned value that does not match any PTI in use
*/
...
...
@@ -225,7 +225,7 @@ int esm_recv_pdn_disconnect_reject(nas_user_t *user, int pti, int ebi,
*/
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid PTI value (pti=%d)"
,
pti
);
LOG_FUNC_RETURN
(
ESM_CAUSE_INVALID_PTI_VALUE
);
}
else
if
(
esm_pt_is_not_in_use
(
pti
)
)
{
}
else
if
(
esm_pt_is_not_in_use
(
user
->
esm_pt_data
,
pti
)
)
{
/* 3GPP TS 24.301, section 7.3.1, case b
* Assigned value that does not match any PTI in use
*/
...
...
@@ -282,7 +282,9 @@ int esm_recv_activate_default_eps_bearer_context_request(nas_user_t *user, int p
const
activate_default_eps_bearer_context_request_msg
*
msg
)
{
LOG_FUNC_IN
;
int
esm_cause
=
ESM_CAUSE_SUCCESS
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
LOG_TRACE
(
INFO
,
"ESM-SAP - Received Activate Default EPS Bearer Context "
"Request message (pti=%d, ebi=%d)"
,
pti
,
ebi
);
...
...
@@ -296,7 +298,7 @@ int esm_recv_activate_default_eps_bearer_context_request(nas_user_t *user, int p
*/
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid PTI value (pti=%d)"
,
pti
);
LOG_FUNC_RETURN
(
ESM_CAUSE_INVALID_PTI_VALUE
);
}
else
if
(
esm_pt_is_not_in_use
(
pti
)
)
{
}
else
if
(
esm_pt_is_not_in_use
(
esm_pt_data
,
pti
)
)
{
/* 3GPP TS 24.301, section 7.3.1, case g
* Assigned value that does not match any PTI in use
*/
...
...
@@ -413,6 +415,7 @@ int esm_recv_activate_dedicated_eps_bearer_context_request(nas_user_t *user, int
int
esm_cause
=
ESM_CAUSE_SUCCESS
;
int
i
;
int
j
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
LOG_TRACE
(
INFO
,
"ESM-SAP - Received Activate Dedicated EPS Bearer "
"Context Request message (pti=%d, ebi=%d)"
,
pti
,
ebi
);
...
...
@@ -426,7 +429,7 @@ int esm_recv_activate_dedicated_eps_bearer_context_request(nas_user_t *user, int
*/
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid PTI value (pti=%d)"
,
pti
);
LOG_FUNC_RETURN
(
ESM_CAUSE_INVALID_PTI_VALUE
);
}
else
if
(
(
pti
!=
ESM_PT_UNASSIGNED
)
&&
esm_pt_is_not_in_use
(
pti
)
)
{
}
else
if
(
(
pti
!=
ESM_PT_UNASSIGNED
)
&&
esm_pt_is_not_in_use
(
esm_pt_data
,
pti
)
)
{
/* 3GPP TS 24.301, section 7.3.1, case i
* Assigned value that does not match any PTI in use
*/
...
...
@@ -620,6 +623,7 @@ int esm_recv_deactivate_eps_bearer_context_request(nas_user_t *user, int pti, in
int
rc
=
RETURNok
;
int
esm_cause
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
LOG_TRACE
(
INFO
,
"ESM-SAP - Received Deactivate EPS Bearer Context "
"Request message (pti=%d, ebi=%d)"
,
pti
,
ebi
);
...
...
@@ -633,7 +637,7 @@ int esm_recv_deactivate_eps_bearer_context_request(nas_user_t *user, int pti, in
*/
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid PTI value (pti=%d)"
,
pti
);
LOG_FUNC_RETURN
(
ESM_CAUSE_INVALID_PTI_VALUE
);
}
else
if
(
esm_pt_is_not_in_use
(
pti
)
)
{
}
else
if
(
esm_pt_is_not_in_use
(
esm_pt_data
,
pti
)
)
{
/* 3GPP TS 24.301, section 7.3.1, case m
* Assigned value does not match any PTI in use
*/
...
...
@@ -664,7 +668,7 @@ int esm_recv_deactivate_eps_bearer_context_request(nas_user_t *user, int pti, in
/* Execute the PDN disconnect procedure accepted by the network */
if
(
pti
!=
ESM_PT_UNASSIGNED
)
{
rc
=
esm_proc_pdn_disconnect_accept
(
pti
,
&
esm_cause
);
rc
=
esm_proc_pdn_disconnect_accept
(
esm_pt_data
,
pti
,
&
esm_cause
);
}
if
(
rc
!=
RETURNerror
)
{
...
...
openair3/NAS/UE/ESM/SAP/esm_sap.c
View file @
73937668
...
...
@@ -173,7 +173,7 @@ int esm_sap_send(nas_user_t *user, esm_sap_t *msg)
}
/* Define new PDN context */
rc
=
esm_proc_pdn_connectivity
(
esm_data
,
pdn_connect
->
cid
,
TRUE
,
rc
=
esm_proc_pdn_connectivity
(
user
,
pdn_connect
->
cid
,
TRUE
,
pdn_connect
->
pdn_type
,
&
apn
,
pdn_connect
->
is_emergency
,
NULL
);
...
...
@@ -185,7 +185,7 @@ int esm_sap_send(nas_user_t *user, esm_sap_t *msg)
if
(
pdn_connect
->
is_defined
)
{
unsigned
int
pti
;
/* Assign new procedure transaction identity */
rc
=
esm_proc_pdn_connectivity
(
esm_data
,
pdn_connect
->
cid
,
TRUE
,
rc
=
esm_proc_pdn_connectivity
(
user
,
pdn_connect
->
cid
,
TRUE
,
pdn_connect
->
pdn_type
,
NULL
,
pdn_connect
->
is_emergency
,
&
pti
);
...
...
@@ -207,7 +207,7 @@ int esm_sap_send(nas_user_t *user, esm_sap_t *msg)
if
(
msg
->
is_standalone
&&
pdn_connect
->
is_defined
)
{
/* Undefine the specified PDN context */
rc
=
esm_proc_pdn_connectivity
(
esm_data
,
pdn_connect
->
cid
,
FALSE
,
rc
=
esm_proc_pdn_connectivity
(
user
,
pdn_connect
->
cid
,
FALSE
,
pdn_connect
->
pdn_type
,
NULL
,
pdn_connect
->
is_emergency
,
NULL
);
}
else
if
(
msg
->
recv
!=
NULL
)
{
...
...
openair3/NAS/UE/ESM/esmData.h
View file @
73937668
...
...
@@ -185,7 +185,6 @@ typedef struct esm_data_context_s {
*/
typedef
esm_data_context_t
esm_data_t
;
/****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/
/****************************************************************************/
...
...
openair3/NAS/UE/ESM/esm_main.c
View file @
73937668
...
...
@@ -45,6 +45,7 @@ Description Defines the EPS Session Management procedure call manager,
#include "esmData.h"
#include "esm_pt.h"
#include "esm_ebr.h"
#include "user_defs.h"
/****************************************************************************/
/**************** E X T E R N A L D E F I N I T I O N S ****************/
...
...
@@ -71,7 +72,7 @@ Description Defines the EPS Session Management procedure call manager,
** Return: None **
** **
***************************************************************************/
esm_data_t
*
esm_main_initialize
(
esm_indication_callback_t
cb
)
void
esm_main_initialize
(
nas_user_t
*
user
,
esm_indication_callback_t
cb
)
{
LOG_FUNC_IN
;
...
...
@@ -81,6 +82,7 @@ esm_data_t * esm_main_initialize(esm_indication_callback_t cb)
LOG_TRACE
(
ERROR
,
"ESM-MAIN - Can't malloc esm_data"
);
// FIXME Stop here !!!
}
user
->
esm_data
=
esm_data
;
/* Total number of active EPS bearer contexts */
esm_data
->
n_ebrs
=
0
;
/* List of active PDN connections */
...
...
@@ -97,13 +99,12 @@ esm_data_t * esm_main_initialize(esm_indication_callback_t cb)
/* Initialize the procedure transaction identity manager */
esm_pt_initialize
();
user
->
esm_pt_data
=
esm_pt_initialize
();
/* Initialize the EPS bearer context manager */
esm_ebr_initialize
(
cb
);
LOG_FUNC_OUT
;
return
esm_data
;
}
...
...
openair3/NAS/UE/ESM/esm_main.h
View file @
73937668
...
...
@@ -43,6 +43,7 @@ Description Defines the EPS Session Management procedure call manager,
#include "networkDef.h"
#include "esm_ebr.h"
#include "esmData.h"
#include "user_defs.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
...
...
@@ -60,7 +61,7 @@ Description Defines the EPS Session Management procedure call manager,
/****************** E X P O R T E D F U N C T I O N S ******************/
/****************************************************************************/
esm_data_t
*
esm_main_initialize
(
esm_indication_callback_t
cb
);
void
esm_main_initialize
(
nas_user_t
*
user
,
esm_indication_callback_t
cb
);
void
esm_main_cleanup
(
esm_data_t
*
esm_data
);
...
...
openair3/NAS/UE/ESM/esm_proc.h
View file @
73937668
...
...
@@ -122,7 +122,7 @@ int esm_proc_status(nas_user_t *user, int is_standalone, int pti, OctetString *m
* PDN connectivity procedure
* --------------------------------------------------------------------------
*/
int
esm_proc_pdn_connectivity
(
esm_data_t
*
esm_data
,
int
cid
,
int
to_define
,
int
esm_proc_pdn_connectivity
(
nas_user_t
*
user
,
int
cid
,
int
to_define
,
esm_proc_pdn_type_t
pdn_type
,
const
OctetString
*
apn
,
int
is_emergency
,
unsigned
int
*
pti
);
int
esm_proc_pdn_connectivity_request
(
nas_user_t
*
user
,
int
is_standalone
,
int
pti
,
...
...
@@ -143,7 +143,7 @@ int esm_proc_pdn_disconnect(esm_data_t *esm_data, int cid, unsigned int *pti, un
int
esm_proc_pdn_disconnect_request
(
nas_user_t
*
user
,
int
is_standalone
,
int
pti
,
OctetString
*
msg
,
int
sent_by_ue
);
int
esm_proc_pdn_disconnect_accept
(
int
pti
,
int
*
esm_cause
);
int
esm_proc_pdn_disconnect_accept
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
,
int
*
esm_cause
);
int
esm_proc_pdn_disconnect_reject
(
nas_user_t
*
user
,
int
pti
,
int
*
esm_cause
);
/*
...
...
openair3/NAS/UE/ESM/esm_pt.c
View file @
73937668
...
...
@@ -37,6 +37,8 @@ Description Defines functions used to handle ESM procedure transactions.
*****************************************************************************/
#include "esm_pt.h"
#include "esm_pt_defs.h"
#include "user_defs.h"
#include "commonDef.h"
#include "nas_log.h"
...
...
@@ -48,14 +50,6 @@ Description Defines functions used to handle ESM procedure transactions.
/**************** E X T E R N A L D E F I N I T I O N S ****************/
/****************************************************************************/
/*
* Minimal and maximal value of a procedure transaction identity:
* The Procedure Transaction Identity (PTI) identifies bi-directional
* messages flows
*/
#define ESM_PTI_MIN (PROCEDURE_TRANSACTION_IDENTITY_FIRST)
#define ESM_PTI_MAX (PROCEDURE_TRANSACTION_IDENTITY_LAST)
/****************************************************************************/
/******************* L O C A L D E F I N I T I O N S *******************/
/****************************************************************************/
...
...
@@ -66,33 +60,9 @@ static const char *_esm_pt_state_str[ESM_PT_STATE_MAX] = {
"PROCEDURE TRANSACTION PENDING"
};
/*
* --------------------------
* Procedure transaction data
* --------------------------
*/
typedef
struct
{
unsigned
char
pti
;
/* Procedure transaction identity */
esm_pt_state
status
;
/* Procedure transaction status */
struct
nas_timer_t
timer
;
/* Retransmission timer */
esm_pt_timer_data_t
*
args
;
/* Retransmission timer parameters data */
}
esm_pt_context_t
;
/*
* ------------------------------
* List of procedure transactions
* ------------------------------
*/
static
struct
{
unsigned
char
index
;
/* Index of the next procedure transaction
* identity to be used */
#define ESM_PT_DATA_SIZE (ESM_PTI_MAX - ESM_PTI_MIN + 1)
esm_pt_context_t
*
context
[
ESM_PT_DATA_SIZE
+
1
];
}
_esm_pt_data
;
/* Return the index of the next available entry in the list of procedure
* transaction data */
static
int
_esm_pt_get_available_entry
(
void
);
static
int
_esm_pt_get_available_entry
(
esm_pt_data_t
*
esm_pt_data
);
/****************************************************************************/
/****************** E X P O R T E D F U N C T I O N S ******************/
...
...
@@ -109,22 +79,27 @@ static int _esm_pt_get_available_entry(void);
** **
** Outputs: None **
** Return: None **
** Others: _esm_pt_data **
** **
***************************************************************************/
void
esm_pt_initialize
(
void
)
esm_pt_data_t
*
esm_pt_initialize
(
void
)
{
LOG_FUNC_IN
;
esm_pt_data_t
*
esm_pt_data
=
calloc
(
1
,
sizeof
(
esm_pt_data_t
));
int
i
;
_esm_pt_data
.
index
=
0
;
if
(
esm_pt_data
==
NULL
)
{
LOG_TRACE
(
ERROR
,
"ESM-PT - Can't alloc esm_pt_data"
);
// FIXME Stop here !!!
}
esm_pt_data
->
index
=
0
;
for
(
i
=
0
;
i
<
ESM_PT_DATA_SIZE
+
1
;
i
++
)
{
_esm_pt_data
.
context
[
i
]
=
NULL
;
esm_pt_data
->
context
[
i
]
=
NULL
;
}
LOG_FUNC_OUT
;
return
esm_pt_data
;
}
/****************************************************************************
...
...
@@ -140,43 +115,42 @@ void esm_pt_initialize(void)
** Return: The identity of the new procedure transac- **
** tion when successfully assigned; **
** the unassigned PTI (0) otherwise. **
** Others: _esm_pt_data **
** **
***************************************************************************/
int
esm_pt_assign
(
void
)
int
esm_pt_assign
(
esm_pt_data_t
*
esm_pt_data
)
{
LOG_FUNC_IN
;
/* Search for an available procedure transaction identity */
int
i
=
_esm_pt_get_available_entry
();
int
i
=
_esm_pt_get_available_entry
(
esm_pt_data
);
if
(
i
<
0
)
{
LOG_FUNC_RETURN
(
ESM_PT_UNASSIGNED
);
}
/* Assign new procedure transaction */
_esm_pt_data
.
context
[
i
]
=
esm_pt_data
->
context
[
i
]
=
(
esm_pt_context_t
*
)
malloc
(
sizeof
(
esm_pt_context_t
));
if
(
_esm_pt_data
.
context
[
i
]
==
NULL
)
{
if
(
esm_pt_data
->
context
[
i
]
==
NULL
)
{
LOG_FUNC_RETURN
(
ESM_PT_UNASSIGNED
);
}
/* Store the index of the next available procedure transaction identity */
_esm_pt_data
.
index
=
i
+
1
;
esm_pt_data
->
index
=
i
+
1
;
/* An available procedure transaction identity is found */
_esm_pt_data
.
context
[
i
]
->
pti
=
i
+
ESM_PTI_MIN
;
esm_pt_data
->
context
[
i
]
->
pti
=
i
+
ESM_PTI_MIN
;
/* Set the procedure transaction status to INACTIVE */
_esm_pt_data
.
context
[
i
]
->
status
=
ESM_PT_INACTIVE
;
esm_pt_data
->
context
[
i
]
->
status
=
ESM_PT_INACTIVE
;
/* Disable the retransmission timer */
_esm_pt_data
.
context
[
i
]
->
timer
.
id
=
NAS_TIMER_INACTIVE_ID
;
esm_pt_data
->
context
[
i
]
->
timer
.
id
=
NAS_TIMER_INACTIVE_ID
;
/* Setup retransmission timer parameters */
_esm_pt_data
.
context
[
i
]
->
args
=
NULL
;
esm_pt_data
->
context
[
i
]
->
args
=
NULL
;
LOG_TRACE
(
INFO
,
"ESM-FSM - Procedure transaction identity %d assigned"
,
_esm_pt_data
.
context
[
i
]
->
pti
);
LOG_FUNC_RETURN
(
_esm_pt_data
.
context
[
i
]
->
pti
);
esm_pt_data
->
context
[
i
]
->
pti
);
LOG_FUNC_RETURN
(
esm_pt_data
->
context
[
i
]
->
pti
);
}
/****************************************************************************
...
...
@@ -193,10 +167,9 @@ int esm_pt_assign(void)
** Return: RETURNok if the procedure transaction iden-**
** tity has been successfully released; **
** RETURNerror otherwise. **
** Others: _esm_pt_data **
** **
***************************************************************************/
int
esm_pt_release
(
int
pti
)
int
esm_pt_release
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
)
{
LOG_FUNC_IN
;
...
...
@@ -205,7 +178,7 @@ int esm_pt_release(int pti)
}
/* Get procedure transaction data */
esm_pt_context_t
*
ctx
=
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
];
esm_pt_context_t
*
ctx
=
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
];
if
(
(
ctx
==
NULL
)
||
(
ctx
->
pti
!=
pti
)
)
{
/* Procedure transaction not assigned */
...
...
@@ -236,8 +209,8 @@ int esm_pt_release(int pti)
}
/* Release transaction procedure data */
free
(
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
]);
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
]
=
NULL
;
free
(
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
]);
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
]
=
NULL
;
LOG_TRACE
(
INFO
,
"ESM-FSM - Procedure transaction %d released"
,
pti
);
...
...
@@ -261,20 +234,20 @@ int esm_pt_release(int pti)
** **
** Outputs: None **
** Return: RETURNok, RETURNerror **
** Others: _esm_pt_data **
** **
***************************************************************************/
int
esm_pt_start_timer
(
nas_user_t
*
user
,
int
pti
,
const
OctetString
*
msg
,
long
sec
,
nas_timer_callback_t
cb
)
{
LOG_FUNC_IN
;
esm_pt_data_t
*
esm_pt_data
=
user
->
esm_pt_data
;
if
(
(
pti
<
ESM_PTI_MIN
)
||
(
pti
>
ESM_PTI_MAX
)
)
{
LOG_FUNC_RETURN
(
RETURNerror
);
}
/* Get procedure transaction data */
esm_pt_context_t
*
ctx
=
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
];
esm_pt_context_t
*
ctx
=
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
];
if
(
(
ctx
==
NULL
)
||
(
ctx
->
pti
!=
pti
)
)
{
/* Procedure transaction not assigned */
...
...
@@ -333,10 +306,9 @@ int esm_pt_start_timer(nas_user_t *user, int pti, const OctetString *msg,
** **
** Outputs: None **
** Return: RETURNok, RETURNerror **
** Others: _esm_pt_data **
** **
***************************************************************************/
int
esm_pt_stop_timer
(
int
pti
)
int
esm_pt_stop_timer
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
)
{
LOG_FUNC_IN
;
...
...
@@ -345,7 +317,7 @@ int esm_pt_stop_timer(int pti)
}
/* Get procedure transaction data */
esm_pt_context_t
*
ctx
=
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
];
esm_pt_context_t
*
ctx
=
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
];
if
(
(
ctx
==
NULL
)
||
(
ctx
->
pti
!=
pti
)
)
{
/* Procedure transaction not assigned */
...
...
@@ -385,10 +357,9 @@ int esm_pt_stop_timer(int pti)
** **
** Outputs: None **
** Return: RETURNok, RETURNerror **
** Others: _esm_pt_data **
** **
***************************************************************************/
int
esm_pt_set_status
(
int
pti
,
esm_pt_state
status
)
int
esm_pt_set_status
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
,
esm_pt_state
status
)
{
LOG_FUNC_IN
;
...
...
@@ -399,7 +370,7 @@ int esm_pt_set_status(int pti, esm_pt_state status)
}
/* Get procedure transaction data */
esm_pt_context_t
*
ctx
=
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
];
esm_pt_context_t
*
ctx
=
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
];
if
(
(
ctx
==
NULL
)
||
(
ctx
->
pti
!=
pti
)
)
{
/* Procedure transaction not assigned */
...
...
@@ -432,7 +403,6 @@ int esm_pt_set_status(int pti, esm_pt_state status)
** transaction **
** **
** Inputs: pti: The identity of the procedure transaction **
** Others: _esm_pt_data **
** **
** Outputs: None **
** Return: The current value of the ESM procedure **
...
...
@@ -440,23 +410,23 @@ int esm_pt_set_status(int pti, esm_pt_state status)
** Others: None **
** **
***************************************************************************/
esm_pt_state
esm_pt_get_status
(
int
pti
)
esm_pt_state
esm_pt_get_status
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
)
{
if
(
(
pti
<
ESM_PTI_MIN
)
||
(
pti
>
ESM_PTI_MAX
)
)
{
return
(
ESM_PT_INACTIVE
);
}
if
(
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
]
==
NULL
)
{
if
(
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
]
==
NULL
)
{
/* Procedure transaction not allocated */
return
(
ESM_PT_INACTIVE
);
}
if
(
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
]
->
pti
!=
pti
)
{
if
(
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
]
->
pti
!=
pti
)
{
/* Procedure transaction not assigned */
return
(
ESM_PT_INACTIVE
);
}
return
(
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
]
->
status
);
return
(
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
]
->
status
);
}
/****************************************************************************
...
...
@@ -468,7 +438,6 @@ esm_pt_state esm_pt_get_status(int pti)
** given state **
** **
** Inputs: status: The PDN connection status **
** Others: _esm_pt_data **
** **
** Outputs: None **
** Return: The procedure transaction identity of the **
...
...
@@ -477,18 +446,18 @@ esm_pt_state esm_pt_get_status(int pti)
** Others: None **
** **
***************************************************************************/
int
esm_pt_get_pending_pti
(
esm_pt_state
status
)
int
esm_pt_get_pending_pti
(
esm_pt_
data_t
*
esm_pt_data
,
esm_pt_
state
status
)
{
LOG_FUNC_IN
;
int
i
;
for
(
i
=
0
;
i
<
ESM_PT_DATA_SIZE
;
i
++
)
{
if
(
_esm_pt_data
.
context
[
i
]
==
NULL
)
{
if
(
esm_pt_data
->
context
[
i
]
==
NULL
)
{
continue
;
}
if
(
_esm_pt_data
.
context
[
i
]
->
status
!=
status
)
{
if
(
esm_pt_data
->
context
[
i
]
->
status
!=
status
)
{
continue
;
}
...
...
@@ -497,7 +466,7 @@ int esm_pt_get_pending_pti(esm_pt_state status)
}
if
(
i
<
ESM_PT_DATA_SIZE
)
{
LOG_FUNC_RETURN
(
_esm_pt_data
.
context
[
i
]
->
pti
);
LOG_FUNC_RETURN
(
esm_pt_data
->
context
[
i
]
->
pti
);
}
/* PDN connection entry not found */
...
...
@@ -512,18 +481,17 @@ int esm_pt_get_pending_pti(esm_pt_state status)
** does not match an assigned PTI value currently in use **
** **
** Inputs: pti: The identity of the procedure transaction **
** Others: _esm_pt_data **
** **
** Outputs: None **
** Return: TRUE, FALSE **
** Others: None **
** **
***************************************************************************/
int
esm_pt_is_not_in_use
(
int
pti
)
int
esm_pt_is_not_in_use
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
)
{
return
(
(
pti
==
ESM_PT_UNASSIGNED
)
||
(
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
]
==
NULL
)
||
(
_esm_pt_data
.
context
[
pti
-
ESM_PTI_MIN
]
->
pti
)
!=
pti
);
(
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
]
==
NULL
)
||
(
esm_pt_data
->
context
[
pti
-
ESM_PTI_MIN
]
->
pti
)
!=
pti
);
}
/****************************************************************************
...
...
@@ -558,7 +526,6 @@ int esm_pt_is_reserved(int pti)
** of procedure transaction data **
** **
** Inputs: None **
** Others: _esm_pt_data **
** **
** Outputs: None **
** Return: The index of the next available procedure **
...
...
@@ -567,20 +534,20 @@ int esm_pt_is_reserved(int pti)
** Others: None **
** **
***************************************************************************/
static
int
_esm_pt_get_available_entry
(
void
)
static
int
_esm_pt_get_available_entry
(
esm_pt_data_t
*
esm_pt_data
)
{
int
i
;
for
(
i
=
_esm_pt_data
.
index
;
i
<
ESM_PT_DATA_SIZE
;
i
++
)
{
if
(
_esm_pt_data
.
context
[
i
]
!=
NULL
)
{
for
(
i
=
esm_pt_data
->
index
;
i
<
ESM_PT_DATA_SIZE
;
i
++
)
{
if
(
esm_pt_data
->
context
[
i
]
!=
NULL
)
{
continue
;
}
return
i
;
}
for
(
i
=
0
;
i
<
_esm_pt_data
.
index
;
i
++
)
{
if
(
_esm_pt_data
.
context
[
i
]
!=
NULL
)
{
for
(
i
=
0
;
i
<
esm_pt_data
->
index
;
i
++
)
{
if
(
esm_pt_data
->
context
[
i
]
!=
NULL
)
{
continue
;
}
...
...
openair3/NAS/UE/ESM/esm_pt.h
View file @
73937668
...
...
@@ -41,6 +41,7 @@ Description Defines functions used to handle ESM procedure transactions.
#include "OctetString.h"
#include "nas_timer.h"
#include "user_defs.h"
#include "esm_pt_defs.h"
#include "ProcedureTransactionIdentity.h"
...
...
@@ -55,22 +56,6 @@ Description Defines functions used to handle ESM procedure transactions.
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/* Procedure transaction states */
typedef
enum
{
ESM_PT_INACTIVE
,
/* No procedure transaction exists */
ESM_PT_PENDING
,
/* The UE has initiated a procedure transaction
* towards the network */
ESM_PT_STATE_MAX
}
esm_pt_state
;
/* ESM message timer retransmission data */
typedef
struct
{
unsigned
char
pti
;
/* Procedure transaction identity */
unsigned
int
count
;
/* Retransmission counter */
OctetString
msg
;
/* Encoded ESM message to re-transmit */
nas_user_t
*
user
;
/* user reference */
}
esm_pt_timer_data_t
;
/****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/
/****************************************************************************/
...
...
@@ -81,19 +66,19 @@ typedef struct {
int
esm_pt_is_reserved
(
int
pti
);
void
esm_pt_initialize
(
void
);
esm_pt_data_t
*
esm_pt_initialize
(
void
);
int
esm_pt_assign
(
void
);
int
esm_pt_release
(
int
pti
);
int
esm_pt_assign
(
esm_pt_data_t
*
esm_pt_data
);
int
esm_pt_release
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
);
int
esm_pt_start_timer
(
nas_user_t
*
user
,
int
pti
,
const
OctetString
*
msg
,
long
sec
,
nas_timer_callback_t
cb
);
int
esm_pt_stop_timer
(
int
pti
);
int
esm_pt_stop_timer
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
);
int
esm_pt_set_status
(
int
pti
,
esm_pt_state
status
);
esm_pt_state
esm_pt_get_status
(
int
pti
);
int
esm_pt_get_pending_pti
(
esm_pt_state
status
);
int
esm_pt_set_status
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
,
esm_pt_state
status
);
esm_pt_state
esm_pt_get_status
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
);
int
esm_pt_get_pending_pti
(
esm_pt_
data_t
*
esm_pt_data
,
esm_pt_
state
status
);
int
esm_pt_is_not_in_use
(
int
pti
);
int
esm_pt_is_not_in_use
(
esm_pt_data_t
*
esm_pt_data
,
int
pti
);
#endif
/* __ESM_PT_H__*/
openair3/NAS/UE/ESM/esm_pt_defs.h
0 → 100644
View file @
73937668
#ifndef _ESM_PT_DEFS_H
#define _ESM_PT_DEFS_H
#include "UTIL/nas_timer.h"
#include "IES/ProcedureTransactionIdentity.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/
/*
* Minimal and maximal value of a procedure transaction identity:
* The Procedure Transaction Identity (PTI) identifies bi-directional
* messages flows
*/
#define ESM_PTI_MIN (PROCEDURE_TRANSACTION_IDENTITY_FIRST)
#define ESM_PTI_MAX (PROCEDURE_TRANSACTION_IDENTITY_LAST)
/****************************************************************************/
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/* Procedure transaction states */
typedef
enum
{
ESM_PT_INACTIVE
,
/* No procedure transaction exists */
ESM_PT_PENDING
,
/* The UE has initiated a procedure transaction
* towards the network */
ESM_PT_STATE_MAX
}
esm_pt_state
;
/* ESM message timer retransmission data */
typedef
struct
{
unsigned
char
pti
;
/* Procedure transaction identity */
unsigned
int
count
;
/* Retransmission counter */
OctetString
msg
;
/* Encoded ESM message to re-transmit */
void
*
user
;
/* user reference - void to avoid cyclic dependency */
}
esm_pt_timer_data_t
;
/*
* --------------------------
* Procedure transaction data
* --------------------------
*/
typedef
struct
{
unsigned
char
pti
;
/* Procedure transaction identity */
esm_pt_state
status
;
/* Procedure transaction status */
struct
nas_timer_t
timer
;
/* Retransmission timer */
esm_pt_timer_data_t
*
args
;
/* Retransmission timer parameters data */
}
esm_pt_context_t
;
/*
* ------------------------------
* List of procedure transactions
* ------------------------------
*/
typedef
struct
{
unsigned
char
index
;
/* Index of the next procedure transaction
* identity to be used */
#define ESM_PT_DATA_SIZE (ESM_PTI_MAX - ESM_PTI_MIN + 1)
esm_pt_context_t
*
context
[
ESM_PT_DATA_SIZE
+
1
];
}
esm_pt_data_t
;
#endif
openair3/NAS/UE/nas_proc.c
View file @
73937668
...
...
@@ -101,7 +101,7 @@ void nas_proc_initialize(nas_user_t *user, emm_indication_callback_t emm_cb,
emm_main_initialize
(
user
,
emm_cb
,
imei
);
/* Initialize the ESM procedure manager */
user
->
esm_data
=
esm_main_initialize
(
esm_cb
);
esm_main_initialize
(
user
,
esm_cb
);
LOG_FUNC_OUT
;
}
...
...
openair3/NAS/UE/user_defs.h
View file @
73937668
...
...
@@ -47,11 +47,13 @@ Description NAS type definition to manage a user equipment
#include "nas_proc_defs.h"
#include "esmData.h"
#include "esm_pt_defs.h"
typedef
struct
{
int
fd
;
proc_data_t
proc
;
esm_data_t
*
esm_data
;
// ESM internal data (used within ESM only)
esm_pt_data_t
*
esm_pt_data
;
}
nas_user_t
;
#endif
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