Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
97fdf8bb
Commit
97fdf8bb
authored
Jul 12, 2016
by
Frédéric Leroy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE/ESM: move _esm_ebr_data to nas_user_t
parent
47db200c
Changes
13
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
100 additions
and
112 deletions
+100
-112
openair3/NAS/UE/ESM/DedicatedEpsBearerContextActivation.c
openair3/NAS/UE/ESM/DedicatedEpsBearerContextActivation.c
+5
-5
openair3/NAS/UE/ESM/DefaultEpsBearerContextActivation.c
openair3/NAS/UE/ESM/DefaultEpsBearerContextActivation.c
+6
-5
openair3/NAS/UE/ESM/EpsBearerContextDeactivation.c
openair3/NAS/UE/ESM/EpsBearerContextDeactivation.c
+6
-4
openair3/NAS/UE/ESM/SAP/esm_recv.c
openair3/NAS/UE/ESM/SAP/esm_recv.c
+7
-7
openair3/NAS/UE/ESM/esm_ebr.c
openair3/NAS/UE/ESM/esm_ebr.c
+48
-67
openair3/NAS/UE/ESM/esm_ebr.h
openair3/NAS/UE/ESM/esm_ebr.h
+10
-7
openair3/NAS/UE/ESM/esm_ebr_context.c
openair3/NAS/UE/ESM/esm_ebr_context.c
+4
-7
openair3/NAS/UE/ESM/esm_main.c
openair3/NAS/UE/ESM/esm_main.c
+7
-4
openair3/NAS/UE/ESM/esm_main.h
openair3/NAS/UE/ESM/esm_main.h
+1
-1
openair3/NAS/UE/nas_proc.c
openair3/NAS/UE/nas_proc.c
+3
-3
openair3/NAS/UE/nas_proc.h
openair3/NAS/UE/nas_proc.h
+1
-1
openair3/NAS/UE/nas_user.c
openair3/NAS/UE/nas_user.c
+1
-1
openair3/NAS/UE/user_defs.h
openair3/NAS/UE/user_defs.h
+1
-0
No files found.
openair3/NAS/UE/ESM/DedicatedEpsBearerContextActivation.c
View file @
97fdf8bb
...
@@ -131,7 +131,7 @@ int esm_proc_dedicated_eps_bearer_context_request(nas_user_t *user, int ebi, int
...
@@ -131,7 +131,7 @@ int esm_proc_dedicated_eps_bearer_context_request(nas_user_t *user, int ebi, int
}
}
/* Assign dedicated EPS bearer context */
/* Assign dedicated EPS bearer context */
int
new_ebi
=
esm_ebr_assign
(
ebi
,
pid
+
1
,
FALSE
);
int
new_ebi
=
esm_ebr_assign
(
user
->
esm_ebr_data
,
ebi
,
pid
+
1
,
FALSE
);
if
(
new_ebi
==
ESM_EBI_UNASSIGNED
)
{
if
(
new_ebi
==
ESM_EBI_UNASSIGNED
)
{
/* 3GPP TS 24.301, section 6.4.2.5, abnormal cases a and b
/* 3GPP TS 24.301, section 6.4.2.5, abnormal cases a and b
...
@@ -149,7 +149,7 @@ int esm_proc_dedicated_eps_bearer_context_request(nas_user_t *user, int ebi, int
...
@@ -149,7 +149,7 @@ int esm_proc_dedicated_eps_bearer_context_request(nas_user_t *user, int ebi, int
*
esm_cause
=
ESM_CAUSE_PROTOCOL_ERROR
;
*
esm_cause
=
ESM_CAUSE_PROTOCOL_ERROR
;
}
else
{
}
else
{
/* Assign new dedicated EPS bearer context */
/* Assign new dedicated EPS bearer context */
ebi
=
esm_ebr_assign
(
ebi
,
pid
+
1
,
FALSE
);
ebi
=
esm_ebr_assign
(
user
->
esm_ebr_data
,
ebi
,
pid
+
1
,
FALSE
);
}
}
}
}
...
@@ -229,7 +229,7 @@ int esm_proc_dedicated_eps_bearer_context_accept(nas_user_t *user, int is_standa
...
@@ -229,7 +229,7 @@ int esm_proc_dedicated_eps_bearer_context_accept(nas_user_t *user, int is_standa
if
(
rc
!=
RETURNerror
)
{
if
(
rc
!=
RETURNerror
)
{
/* Set the EPS bearer context state to ACTIVE */
/* Set the EPS bearer context state to ACTIVE */
rc
=
esm_ebr_set_status
(
ebi
,
ESM_EBR_ACTIVE
,
ue_triggered
);
rc
=
esm_ebr_set_status
(
user
->
esm_ebr_data
,
ebi
,
ESM_EBR_ACTIVE
,
ue_triggered
);
if
(
rc
!=
RETURNok
)
{
if
(
rc
!=
RETURNok
)
{
/* The EPS bearer context was already in ACTIVE state */
/* The EPS bearer context was already in ACTIVE state */
...
@@ -276,9 +276,9 @@ int esm_proc_dedicated_eps_bearer_context_reject(nas_user_t *user, int is_standa
...
@@ -276,9 +276,9 @@ int esm_proc_dedicated_eps_bearer_context_reject(nas_user_t *user, int is_standa
LOG_TRACE
(
WARNING
,
"ESM-PROC - Dedicated EPS bearer context activation "
LOG_TRACE
(
WARNING
,
"ESM-PROC - Dedicated EPS bearer context activation "
"not accepted by the UE (ebi=%d)"
,
ebi
);
"not accepted by the UE (ebi=%d)"
,
ebi
);
if
(
!
esm_ebr_is_not_in_use
(
ebi
)
)
{
if
(
!
esm_ebr_is_not_in_use
(
user
->
esm_ebr_data
,
ebi
)
)
{
/* Release EPS bearer data currently in use */
/* Release EPS bearer data currently in use */
rc
=
esm_ebr_release
(
ebi
);
rc
=
esm_ebr_release
(
user
->
esm_ebr_data
,
ebi
);
}
}
if
(
rc
!=
RETURNok
)
{
if
(
rc
!=
RETURNok
)
{
...
...
openair3/NAS/UE/ESM/DefaultEpsBearerContextActivation.c
View file @
97fdf8bb
...
@@ -116,7 +116,7 @@ int esm_proc_default_eps_bearer_context_request(nas_user_t *user, int pid, int e
...
@@ -116,7 +116,7 @@ int esm_proc_default_eps_bearer_context_request(nas_user_t *user, int pid, int e
"requested by the network (ebi=%d)"
,
ebi
);
"requested by the network (ebi=%d)"
,
ebi
);
/* Assign default EPS bearer context */
/* Assign default EPS bearer context */
int
new_ebi
=
esm_ebr_assign
(
ebi
,
pid
+
1
,
TRUE
);
int
new_ebi
=
esm_ebr_assign
(
user
->
esm_ebr_data
,
ebi
,
pid
+
1
,
TRUE
);
if
(
new_ebi
==
ESM_EBI_UNASSIGNED
)
{
if
(
new_ebi
==
ESM_EBI_UNASSIGNED
)
{
/* 3GPP TS 24.301, section 6.4.1.5, abnormal cases a and b
/* 3GPP TS 24.301, section 6.4.1.5, abnormal cases a and b
...
@@ -134,7 +134,7 @@ int esm_proc_default_eps_bearer_context_request(nas_user_t *user, int pid, int e
...
@@ -134,7 +134,7 @@ int esm_proc_default_eps_bearer_context_request(nas_user_t *user, int pid, int e
*
esm_cause
=
ESM_CAUSE_PROTOCOL_ERROR
;
*
esm_cause
=
ESM_CAUSE_PROTOCOL_ERROR
;
}
else
{
}
else
{
/* Assign new default EPS bearer context */
/* Assign new default EPS bearer context */
ebi
=
esm_ebr_assign
(
ebi
,
pid
+
1
,
TRUE
);
ebi
=
esm_ebr_assign
(
user
->
esm_ebr_data
,
ebi
,
pid
+
1
,
TRUE
);
}
}
}
}
...
@@ -213,7 +213,7 @@ int esm_proc_default_eps_bearer_context_accept(nas_user_t *user, int is_standalo
...
@@ -213,7 +213,7 @@ int esm_proc_default_eps_bearer_context_accept(nas_user_t *user, int is_standalo
if
(
rc
!=
RETURNerror
)
{
if
(
rc
!=
RETURNerror
)
{
/* Set the EPS bearer context state to ACTIVE */
/* Set the EPS bearer context state to ACTIVE */
rc
=
esm_ebr_set_status
(
ebi
,
ESM_EBR_ACTIVE
,
ue_triggered
);
rc
=
esm_ebr_set_status
(
user
->
esm_ebr_data
,
ebi
,
ESM_EBR_ACTIVE
,
ue_triggered
);
if
(
rc
!=
RETURNok
)
{
if
(
rc
!=
RETURNok
)
{
/* The EPS bearer context was already in ACTIVE state */
/* The EPS bearer context was already in ACTIVE state */
...
@@ -266,9 +266,9 @@ int esm_proc_default_eps_bearer_context_reject(nas_user_t *user, int is_standalo
...
@@ -266,9 +266,9 @@ int esm_proc_default_eps_bearer_context_reject(nas_user_t *user, int is_standalo
LOG_TRACE
(
WARNING
,
"ESM-PROC - Default EPS bearer context activation "
LOG_TRACE
(
WARNING
,
"ESM-PROC - Default EPS bearer context activation "
"not accepted by the UE (ebi=%d)"
,
ebi
);
"not accepted by the UE (ebi=%d)"
,
ebi
);
if
(
!
esm_ebr_is_not_in_use
(
ebi
)
)
{
if
(
!
esm_ebr_is_not_in_use
(
user
->
esm_ebr_data
,
ebi
)
)
{
/* Release EPS bearer data currently in use */
/* Release EPS bearer data currently in use */
rc
=
esm_ebr_release
(
ebi
);
rc
=
esm_ebr_release
(
user
->
esm_ebr_data
,
ebi
);
}
}
if
(
rc
!=
RETURNok
)
{
if
(
rc
!=
RETURNok
)
{
...
@@ -280,6 +280,7 @@ int esm_proc_default_eps_bearer_context_reject(nas_user_t *user, int is_standalo
...
@@ -280,6 +280,7 @@ int esm_proc_default_eps_bearer_context_reject(nas_user_t *user, int is_standalo
* Notity EMM that ESM PDU has to be forwarded to lower layers
* Notity EMM that ESM PDU has to be forwarded to lower layers
*/
*/
emm_sap
.
primitive
=
EMMESM_UNITDATA_REQ
;
emm_sap
.
primitive
=
EMMESM_UNITDATA_REQ
;
// FIXME REVIEW
emm_sap
.
u
.
emm_esm
.
ueid
=
0
;
emm_sap
.
u
.
emm_esm
.
ueid
=
0
;
emm_esm
->
msg
.
length
=
msg
->
length
;
emm_esm
->
msg
.
length
=
msg
->
length
;
emm_esm
->
msg
.
value
=
msg
->
value
;
emm_esm
->
msg
.
value
=
msg
->
value
;
...
...
openair3/NAS/UE/ESM/EpsBearerContextDeactivation.c
View file @
97fdf8bb
...
@@ -281,6 +281,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_stand
...
@@ -281,6 +281,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_stand
LOG_FUNC_IN
;
LOG_FUNC_IN
;
int
rc
=
RETURNok
;
int
rc
=
RETURNok
;
esm_ebr_data_t
*
esm_ebr_data
=
user
->
esm_ebr_data
;
LOG_TRACE
(
INFO
,
"ESM-PROC - EPS bearer context deactivation accepted"
);
LOG_TRACE
(
INFO
,
"ESM-PROC - EPS bearer context deactivation accepted"
);
...
@@ -298,7 +299,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_stand
...
@@ -298,7 +299,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_stand
if
(
rc
!=
RETURNerror
)
{
if
(
rc
!=
RETURNerror
)
{
/* Set the EPS bearer context state to INACTIVE */
/* Set the EPS bearer context state to INACTIVE */
rc
=
esm_ebr_set_status
(
ebi
,
ESM_EBR_INACTIVE
,
ue_triggered
);
rc
=
esm_ebr_set_status
(
e
sm_ebr_data
,
e
bi
,
ESM_EBR_INACTIVE
,
ue_triggered
);
if
(
rc
!=
RETURNok
)
{
if
(
rc
!=
RETURNok
)
{
/* The EPS bearer context was already in INACTIVE state */
/* The EPS bearer context was already in INACTIVE state */
...
@@ -309,7 +310,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_stand
...
@@ -309,7 +310,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_stand
}
}
/* Release EPS bearer data */
/* Release EPS bearer data */
rc
=
esm_ebr_release
(
ebi
);
rc
=
esm_ebr_release
(
e
sm_ebr_data
,
e
bi
);
}
}
LOG_FUNC_RETURN
(
rc
);
LOG_FUNC_RETURN
(
rc
);
...
@@ -357,6 +358,7 @@ static int _eps_bearer_release(nas_user_t *user, int ebi, int *pid, int *bid)
...
@@ -357,6 +358,7 @@ static int _eps_bearer_release(nas_user_t *user, int ebi, int *pid, int *bid)
LOG_FUNC_IN
;
LOG_FUNC_IN
;
int
rc
=
RETURNerror
;
int
rc
=
RETURNerror
;
esm_ebr_data_t
*
esm_ebr_data
=
user
->
esm_ebr_data
;
/* Release the EPS bearer context entry */
/* Release the EPS bearer context entry */
ebi
=
esm_ebr_context_release
(
user
,
ebi
,
pid
,
bid
);
ebi
=
esm_ebr_context_release
(
user
,
ebi
,
pid
,
bid
);
...
@@ -365,14 +367,14 @@ static int _eps_bearer_release(nas_user_t *user, int ebi, int *pid, int *bid)
...
@@ -365,14 +367,14 @@ static int _eps_bearer_release(nas_user_t *user, int ebi, int *pid, int *bid)
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release EPS bearer context"
);
LOG_TRACE
(
WARNING
,
"ESM-PROC - Failed to release EPS bearer context"
);
}
else
{
}
else
{
/* Set the EPS bearer context state to INACTIVE */
/* Set the EPS bearer context state to INACTIVE */
rc
=
esm_ebr_set_status
(
ebi
,
ESM_EBR_INACTIVE
,
FALSE
);
rc
=
esm_ebr_set_status
(
e
sm_ebr_data
,
e
bi
,
ESM_EBR_INACTIVE
,
FALSE
);
if
(
rc
!=
RETURNok
)
{
if
(
rc
!=
RETURNok
)
{
/* The EPS bearer context was already in INACTIVE state */
/* The EPS bearer context was already in INACTIVE state */
LOG_TRACE
(
WARNING
,
"ESM-PROC - EBI %d was already INACTIVE"
,
ebi
);
LOG_TRACE
(
WARNING
,
"ESM-PROC - EBI %d was already INACTIVE"
,
ebi
);
}
else
{
}
else
{
/* Release EPS bearer data */
/* Release EPS bearer data */
rc
=
esm_ebr_release
(
ebi
);
rc
=
esm_ebr_release
(
e
sm_ebr_data
,
e
bi
);
if
(
rc
!=
RETURNok
)
{
if
(
rc
!=
RETURNok
)
{
LOG_TRACE
(
WARNING
,
LOG_TRACE
(
WARNING
,
...
...
openair3/NAS/UE/ESM/SAP/esm_recv.c
View file @
97fdf8bb
...
@@ -74,7 +74,7 @@ Description Defines functions executed at the ESM Service Access
...
@@ -74,7 +74,7 @@ Description Defines functions executed at the ESM Service Access
** **
** **
** Description: Processes ESM status message **
** Description: Processes ESM status message **
** **
** **
** Inputs:
ueid: UE local identifier
**
** Inputs: **
** pti: Procedure transaction identity **
** pti: Procedure transaction identity **
** ebi: EPS bearer identity **
** ebi: EPS bearer identity **
** msg: The received ESM message **
** msg: The received ESM message **
...
@@ -164,7 +164,7 @@ int esm_recv_pdn_connectivity_reject(nas_user_t *user, int pti, int ebi,
...
@@ -164,7 +164,7 @@ int esm_recv_pdn_connectivity_reject(nas_user_t *user, int pti, int ebi,
/*
/*
* EPS bearer identity checking
* EPS bearer identity checking
*/
*/
else
if
(
(
ebi
!=
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
ebi
)
)
{
else
if
(
(
ebi
!=
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
user
->
esm_ebr_data
,
ebi
)
)
{
/* 3GPP TS 24.301, section 7.3.2, case a
/* 3GPP TS 24.301, section 7.3.2, case a
* Assigned or reserved EPS bearer identity value */
* Assigned or reserved EPS bearer identity value */
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid EPS bearer identity (ebi=%d)"
,
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid EPS bearer identity (ebi=%d)"
,
...
@@ -235,7 +235,7 @@ int esm_recv_pdn_disconnect_reject(nas_user_t *user, int pti, int ebi,
...
@@ -235,7 +235,7 @@ int esm_recv_pdn_disconnect_reject(nas_user_t *user, int pti, int ebi,
/*
/*
* EPS bearer identity checking
* EPS bearer identity checking
*/
*/
else
if
(
(
ebi
!=
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
ebi
)
)
{
else
if
(
(
ebi
!=
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
user
->
esm_ebr_data
,
ebi
)
)
{
/* 3GPP TS 24.301, section 7.3.2, case b
/* 3GPP TS 24.301, section 7.3.2, case b
* Assigned or reserved EPS bearer identity value */
* Assigned or reserved EPS bearer identity value */
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid EPS bearer identity (ebi=%d)"
,
LOG_TRACE
(
WARNING
,
"ESM-SAP - Invalid EPS bearer identity (ebi=%d)"
,
...
@@ -308,7 +308,7 @@ int esm_recv_activate_default_eps_bearer_context_request(nas_user_t *user, int p
...
@@ -308,7 +308,7 @@ int esm_recv_activate_default_eps_bearer_context_request(nas_user_t *user, int p
/*
/*
* EPS bearer identity checking
* EPS bearer identity checking
*/
*/
else
if
(
(
ebi
==
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
ebi
)
)
{
else
if
(
(
ebi
==
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
user
->
esm_ebr_data
,
ebi
)
)
{
/* 3GPP TS 24.301, section 7.3.2, case g
/* 3GPP TS 24.301, section 7.3.2, case g
* Reserved or unassigned EPS bearer identity value
* Reserved or unassigned EPS bearer identity value
*/
*/
...
@@ -439,7 +439,7 @@ int esm_recv_activate_dedicated_eps_bearer_context_request(nas_user_t *user, int
...
@@ -439,7 +439,7 @@ int esm_recv_activate_dedicated_eps_bearer_context_request(nas_user_t *user, int
/*
/*
* EPS bearer identity checking
* EPS bearer identity checking
*/
*/
else
if
(
(
ebi
==
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
ebi
)
)
{
else
if
(
(
ebi
==
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
user
->
esm_ebr_data
,
ebi
)
)
{
/* 3GPP TS 24.301, section 7.3.2, case h
/* 3GPP TS 24.301, section 7.3.2, case h
* Reserved or unassigned EPS bearer identity value
* Reserved or unassigned EPS bearer identity value
*/
*/
...
@@ -647,8 +647,8 @@ int esm_recv_deactivate_eps_bearer_context_request(nas_user_t *user, int pti, in
...
@@ -647,8 +647,8 @@ int esm_recv_deactivate_eps_bearer_context_request(nas_user_t *user, int pti, in
/*
/*
* EPS bearer identity checking
* EPS bearer identity checking
*/
*/
else
if
(
(
ebi
==
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
ebi
)
||
else
if
(
(
ebi
==
ESM_EBI_UNASSIGNED
)
||
esm_ebr_is_reserved
(
user
->
esm_ebr_data
,
ebi
)
||
esm_ebr_is_not_in_use
(
ebi
)
)
{
esm_ebr_is_not_in_use
(
user
->
esm_ebr_data
,
ebi
)
)
{
/* 3GPP TS 24.301, section 7.3.2, case j
/* 3GPP TS 24.301, section 7.3.2, case j
* Reserved or unassigned EPS bearer identity value or,
* Reserved or unassigned EPS bearer identity value or,
* assigned value that does not match an existing EPS bearer context
* assigned value that does not match an existing EPS bearer context
...
...
openair3/NAS/UE/ESM/esm_ebr.c
View file @
97fdf8bb
This diff is collapsed.
Click to expand it.
openair3/NAS/UE/ESM/esm_ebr.h
View file @
97fdf8bb
...
@@ -45,6 +45,7 @@ Description Defines functions used to handle state of EPS bearer contexts
...
@@ -45,6 +45,7 @@ Description Defines functions used to handle state of EPS bearer contexts
#include "esmData.h"
#include "esmData.h"
#include "nas_timer.h"
#include "nas_timer.h"
#include "user_defs.h"
/****************************************************************************/
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/********************* G L O B A L C O N S T A N T S *******************/
...
@@ -72,15 +73,17 @@ typedef int (*esm_indication_callback_t) (int, network_pdn_state_t);
...
@@ -72,15 +73,17 @@ typedef int (*esm_indication_callback_t) (int, network_pdn_state_t);
/****************** 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 ******************/
/****************************************************************************/
/****************************************************************************/
int
esm_ebr_is_reserved
(
int
ebi
);
void
esm_ebr_register_callback
(
esm_indication_callback_t
cb
);
void
esm_ebr_initialize
(
esm_indication_callback_t
cb
);
int
esm_ebr_is_reserved
(
esm_ebr_data_t
*
esm_ebr_data
,
int
ebi
);
int
esm_ebr_assign
(
int
ebi
,
int
cid
,
int
default_ebr
);
int
esm_ebr_release
(
int
ebi
);
int
esm_ebr_set_status
(
int
ebi
,
esm_ebr_state
status
,
int
ue_requested
);
esm_ebr_data_t
*
esm_ebr_initialize
(
void
);
esm_ebr_state
esm_ebr_get_status
(
int
ebi
);
int
esm_ebr_assign
(
esm_ebr_data_t
*
esm_ebr_data
,
int
ebi
,
int
cid
,
int
default_ebr
);
int
esm_ebr_release
(
esm_ebr_data_t
*
esm_ebr_data
,
int
ebi
);
int
esm_ebr_is_not_in_use
(
int
ebi
);
int
esm_ebr_set_status
(
esm_ebr_data_t
*
esm_ebr_data
,
int
ebi
,
esm_ebr_state
status
,
int
ue_requested
);
esm_ebr_state
esm_ebr_get_status
(
esm_ebr_data_t
*
esm_ebr_data
,
int
ebi
);
int
esm_ebr_is_not_in_use
(
esm_ebr_data_t
*
esm_ebr_data
,
int
ebi
);
#endif
/* __ESM_EBR_H__*/
#endif
/* __ESM_EBR_H__*/
openair3/NAS/UE/ESM/esm_ebr_context.c
View file @
97fdf8bb
...
@@ -82,7 +82,7 @@ static int _esm_ebr_context_check_precedence(const network_tft_t *,
...
@@ -82,7 +82,7 @@ static int _esm_ebr_context_check_precedence(const network_tft_t *,
** Description: Creates a new EPS bearer context to the PDN with the spe- **
** Description: Creates a new EPS bearer context to the PDN with the spe- **
** cified PDN connection identifier **
** cified PDN connection identifier **
** **
** **
** Inputs:
ueid: UE identifier
**
** Inputs: **
** pid: PDN connection identifier **
** pid: PDN connection identifier **
** ebi: EPS bearer identity **
** ebi: EPS bearer identity **
** is_default: TRUE if the new bearer is a default EPS **
** is_default: TRUE if the new bearer is a default EPS **
...
@@ -105,7 +105,6 @@ int esm_ebr_context_create(
...
@@ -105,7 +105,6 @@ int esm_ebr_context_create(
int
bid
=
0
;
int
bid
=
0
;
esm_data_context_t
*
esm_ctx
=
NULL
;
esm_data_context_t
*
esm_ctx
=
NULL
;
esm_pdn_t
*
pdn
=
NULL
;
esm_pdn_t
*
pdn
=
NULL
;
//unsigned int ueid = 0;
LOG_FUNC_IN
;
LOG_FUNC_IN
;
...
@@ -314,7 +313,7 @@ int esm_ebr_context_create(
...
@@ -314,7 +313,7 @@ int esm_ebr_context_create(
** Description: Releases EPS bearer context entry previously allocated **
** Description: Releases EPS bearer context entry previously allocated **
** to the EPS bearer with the specified EPS bearer identity **
** to the EPS bearer with the specified EPS bearer identity **
** **
** **
** Inputs:
ueid: UE identifier
**
** Inputs: **
** ebi: EPS bearer identity **
** ebi: EPS bearer identity **
** **
** **
** Outputs: pid: Identifier of the PDN connection entry the **
** Outputs: pid: Identifier of the PDN connection entry the **
...
@@ -333,8 +332,6 @@ int esm_ebr_context_release(nas_user_t *user,
...
@@ -333,8 +332,6 @@ int esm_ebr_context_release(nas_user_t *user,
esm_pdn_t
*
pdn
=
NULL
;
esm_pdn_t
*
pdn
=
NULL
;
esm_data_context_t
*
esm_ctx
;
esm_data_context_t
*
esm_ctx
;
//unsigned int ueid = 0;
LOG_FUNC_IN
;
LOG_FUNC_IN
;
esm_ctx
=
user
->
esm_data
;
esm_ctx
=
user
->
esm_data
;
...
@@ -451,11 +448,11 @@ int esm_ebr_context_release(nas_user_t *user,
...
@@ -451,11 +448,11 @@ int esm_ebr_context_release(nas_user_t *user,
}
}
/* Set the EPS bearer context state to INACTIVE */
/* Set the EPS bearer context state to INACTIVE */
(
void
)
esm_ebr_set_status
(
pdn
->
bearer
[
i
]
->
ebi
,
esm_ebr_set_status
(
user
->
esm_ebr_data
,
pdn
->
bearer
[
i
]
->
ebi
,
ESM_EBR_INACTIVE
,
TRUE
);
ESM_EBR_INACTIVE
,
TRUE
);
/* Release EPS bearer data */
/* Release EPS bearer data */
(
void
)
esm_ebr_release
(
pdn
->
bearer
[
i
]
->
ebi
);
esm_ebr_release
(
user
->
esm_ebr_data
,
pdn
->
bearer
[
i
]
->
ebi
);
// esm_ebr_release()
// esm_ebr_release()
/* Release dedicated EPS bearer data */
/* Release dedicated EPS bearer data */
...
...
openair3/NAS/UE/ESM/esm_main.c
View file @
97fdf8bb
...
@@ -102,8 +102,9 @@ void esm_main_initialize(nas_user_t *user, esm_indication_callback_t cb)
...
@@ -102,8 +102,9 @@ void esm_main_initialize(nas_user_t *user, esm_indication_callback_t cb)
user
->
esm_pt_data
=
esm_pt_initialize
();
user
->
esm_pt_data
=
esm_pt_initialize
();
/* Initialize the EPS bearer context manager */
/* Initialize the EPS bearer context manager */
esm_ebr_initialize
(
cb
);
user
->
esm_ebr_data
=
esm_ebr_initialize
();
// FIXME only one callback for all user or many for many ?
esm_ebr_register_callback
(
cb
);
LOG_FUNC_OUT
;
LOG_FUNC_OUT
;
}
}
...
@@ -247,11 +248,13 @@ int esm_main_has_emergency(esm_data_t *esm_data)
...
@@ -247,11 +248,13 @@ int esm_main_has_emergency(esm_data_t *esm_data)
** Others: None **
** Others: None **
** **
** **
***************************************************************************/
***************************************************************************/
int
esm_main_get_pdn_status
(
esm_data_t
*
esm_data
,
int
cid
,
int
*
state
)
int
esm_main_get_pdn_status
(
nas_user_t
*
user
,
int
cid
,
int
*
state
)
{
{
LOG_FUNC_IN
;
LOG_FUNC_IN
;
unsigned
int
pid
=
cid
-
1
;
unsigned
int
pid
=
cid
-
1
;
esm_data_t
*
esm_data
=
user
->
esm_data
;
esm_ebr_data_t
*
esm_ebr_data
=
user
->
esm_ebr_data
;
if
(
pid
>=
ESM_DATA_PDN_MAX
)
{
if
(
pid
>=
ESM_DATA_PDN_MAX
)
{
return
(
FALSE
);
return
(
FALSE
);
...
@@ -268,7 +271,7 @@ int esm_main_get_pdn_status(esm_data_t *esm_data, int cid, int *state)
...
@@ -268,7 +271,7 @@ int esm_main_get_pdn_status(esm_data_t *esm_data, int cid, int *state)
/* The status of a PDN connection is the status of the default EPS bearer
/* The status of a PDN connection is the status of the default EPS bearer
* that has been assigned to this PDN connection at activation time */
* that has been assigned to this PDN connection at activation time */
int
ebi
=
esm_data
->
pdn
[
pid
].
data
->
bearer
[
0
]
->
ebi
;
int
ebi
=
esm_data
->
pdn
[
pid
].
data
->
bearer
[
0
]
->
ebi
;
*
state
=
(
esm_ebr_get_status
(
ebi
)
==
ESM_EBR_ACTIVE
);
*
state
=
(
esm_ebr_get_status
(
e
sm_ebr_data
,
e
bi
)
==
ESM_EBR_ACTIVE
);
}
}
/* The PDN connection has not been activated yet */
/* The PDN connection has not been activated yet */
...
...
openair3/NAS/UE/ESM/esm_main.h
View file @
97fdf8bb
...
@@ -70,7 +70,7 @@ void esm_main_cleanup(esm_data_t *esm_data);
...
@@ -70,7 +70,7 @@ void esm_main_cleanup(esm_data_t *esm_data);
int
esm_main_get_nb_pdns_max
(
esm_data_t
*
esm_data
);
int
esm_main_get_nb_pdns_max
(
esm_data_t
*
esm_data
);
int
esm_main_get_nb_pdns
(
esm_data_t
*
esm_data
);
int
esm_main_get_nb_pdns
(
esm_data_t
*
esm_data
);
int
esm_main_has_emergency
(
esm_data_t
*
esm_data
);
int
esm_main_has_emergency
(
esm_data_t
*
esm_data
);
int
esm_main_get_pdn_status
(
esm_data_t
*
esm_data
,
int
cid
,
int
*
state
);
int
esm_main_get_pdn_status
(
nas_user_t
*
user
,
int
cid
,
int
*
state
);
int
esm_main_get_pdn
(
esm_data_t
*
esm_data
,
int
cid
,
int
*
type
,
const
char
**
apn
,
int
*
is_emergency
,
int
esm_main_get_pdn
(
esm_data_t
*
esm_data
,
int
cid
,
int
*
type
,
const
char
**
apn
,
int
*
is_emergency
,
int
*
is_active
);
int
*
is_active
);
int
esm_main_get_pdn_addr
(
esm_data_t
*
esm_data
,
int
cid
,
const
char
**
ipv4addr
,
const
char
**
ipv6addr
);
int
esm_main_get_pdn_addr
(
esm_data_t
*
esm_data
,
int
cid
,
const
char
**
ipv4addr
,
const
char
**
ipv6addr
);
...
...
openair3/NAS/UE/nas_proc.c
View file @
97fdf8bb
...
@@ -674,7 +674,7 @@ int nas_proc_get_pdn_range(esm_data_t *esm_data)
...
@@ -674,7 +674,7 @@ int nas_proc_get_pdn_range(esm_data_t *esm_data)
** Others: None **
** Others: None **
** **
** **
***************************************************************************/
***************************************************************************/
int
nas_proc_get_pdn_status
(
esm_data_t
*
esm_data
,
int
*
cids
,
int
*
states
,
int
n_pdn_max
)
int
nas_proc_get_pdn_status
(
nas_user_t
*
user
,
int
*
cids
,
int
*
states
,
int
n_pdn_max
)
{
{
LOG_FUNC_IN
;
LOG_FUNC_IN
;
...
@@ -682,13 +682,13 @@ int nas_proc_get_pdn_status(esm_data_t *esm_data, int *cids, int *states, int n_
...
@@ -682,13 +682,13 @@ int nas_proc_get_pdn_status(esm_data_t *esm_data, int *cids, int *states, int n_
int
n_defined_pdn
=
0
;
int
n_defined_pdn
=
0
;
/* Get the maximum number of supported PDN contexts */
/* Get the maximum number of supported PDN contexts */
int
n_pdn
=
esm_main_get_nb_pdns_max
(
esm_data
);
int
n_pdn
=
esm_main_get_nb_pdns_max
(
user
->
esm_data
);
/* For all PDN contexts */
/* For all PDN contexts */
for
(
cid
=
1
;
(
cid
<
n_pdn
+
1
)
&&
(
n_defined_pdn
<
n_pdn_max
);
cid
++
)
{
for
(
cid
=
1
;
(
cid
<
n_pdn
+
1
)
&&
(
n_defined_pdn
<
n_pdn_max
);
cid
++
)
{
/* Get the status of this PDN */
/* Get the status of this PDN */
int
state
=
FALSE
;
int
state
=
FALSE
;
int
is_defined
=
esm_main_get_pdn_status
(
esm_data
,
cid
,
&
state
);
int
is_defined
=
esm_main_get_pdn_status
(
user
,
cid
,
&
state
);
if
(
is_defined
!=
FALSE
)
{
if
(
is_defined
!=
FALSE
)
{
/* This PDN has been defined */
/* This PDN has been defined */
...
...
openair3/NAS/UE/nas_proc.h
View file @
97fdf8bb
...
@@ -98,7 +98,7 @@ int nas_proc_reset_pdn(nas_user_t *user, int cid);
...
@@ -98,7 +98,7 @@ int nas_proc_reset_pdn(nas_user_t *user, int cid);
int
nas_proc_set_pdn
(
nas_user_t
*
user
,
int
cid
,
int
type
,
const
char
*
apn
,
int
ipv4_addr
,
int
nas_proc_set_pdn
(
nas_user_t
*
user
,
int
cid
,
int
type
,
const
char
*
apn
,
int
ipv4_addr
,
int
emergency
,
int
p_cscf
,
int
im_cn_signal
);
int
emergency
,
int
p_cscf
,
int
im_cn_signal
);
int
nas_proc_get_pdn_range
(
esm_data_t
*
esm_data
);
int
nas_proc_get_pdn_range
(
esm_data_t
*
esm_data
);
int
nas_proc_get_pdn_status
(
esm_data_t
*
esm_data
,
int
*
cids
,
int
*
states
,
int
n_pdn_max
);
int
nas_proc_get_pdn_status
(
nas_user_t
*
user
,
int
*
cids
,
int
*
states
,
int
n_pdn_max
);
int
nas_proc_get_pdn_param
(
esm_data_t
*
esm_data
,
int
*
cids
,
int
*
types
,
const
char
**
apns
,
int
nas_proc_get_pdn_param
(
esm_data_t
*
esm_data
,
int
*
cids
,
int
*
types
,
const
char
**
apns
,
int
n_pdn_max
);
int
n_pdn_max
);
int
nas_proc_get_pdn_addr
(
nas_user_t
*
user
,
int
cid
,
int
*
cids
,
const
char
**
addr1
,
int
nas_proc_get_pdn_addr
(
nas_user_t
*
user
,
int
cid
,
int
*
cids
,
const
char
**
addr1
,
...
...
openair3/NAS/UE/nas_user.c
View file @
97fdf8bb
...
@@ -2184,7 +2184,7 @@ static int _nas_user_proc_cgact(nas_user_t *user, const at_command_t *data)
...
@@ -2184,7 +2184,7 @@ static int _nas_user_proc_cgact(nas_user_t *user, const at_command_t *data)
* The read command returns the current activation states for
* The read command returns the current activation states for
* all the defined PDN/EPS bearer contexts
* all the defined PDN/EPS bearer contexts
*/
*/
cgact
->
n_pdns
=
nas_proc_get_pdn_status
(
user
->
esm_data
,
cgact
->
cid
,
cgact
->
state
,
cgact
->
n_pdns
=
nas_proc_get_pdn_status
(
user
,
cgact
->
cid
,
cgact
->
state
,
AT_CGACT_RESP_SIZE
);
AT_CGACT_RESP_SIZE
);
if
(
cgact
->
n_pdns
==
0
)
{
if
(
cgact
->
n_pdns
==
0
)
{
...
...
openair3/NAS/UE/user_defs.h
View file @
97fdf8bb
...
@@ -56,6 +56,7 @@ typedef struct {
...
@@ -56,6 +56,7 @@ typedef struct {
esm_data_t
*
esm_data
;
// ESM internal data (used within ESM only)
esm_data_t
*
esm_data
;
// ESM internal data (used within ESM only)
esm_pt_data_t
*
esm_pt_data
;
esm_pt_data_t
*
esm_pt_data
;
emm_fsm_state_t
emm_fsm_status
;
// Current EPS Mobility Management status
emm_fsm_state_t
emm_fsm_status
;
// Current EPS Mobility Management status
esm_ebr_data_t
*
esm_ebr_data
;
// EPS bearer contexts
}
nas_user_t
;
}
nas_user_t
;
#endif
#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