Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-AMF
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-AMF
Commits
aff1b842
Commit
aff1b842
authored
Mar 10, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code cleanup for UE Context
parent
375bb6d9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
37 additions
and
35 deletions
+37
-35
src/amf-app/amf_app.cpp
src/amf-app/amf_app.cpp
+3
-3
src/amf-app/amf_n1.cpp
src/amf-app/amf_n1.cpp
+2
-2
src/contexts/ue_context.cpp
src/contexts/ue_context.cpp
+22
-18
src/contexts/ue_context.hpp
src/contexts/ue_context.hpp
+10
-12
No files found.
src/amf-app/amf_app.cpp
View file @
aff1b842
...
...
@@ -407,9 +407,9 @@ void amf_app::handle_itti_message(
if
(
itti_msg
.
rrc_cause
!=
-
1
)
uc
->
rrc_estb_cause
=
(
e_Ngap_RRCEstablishmentCause
)
itti_msg
.
rrc_cause
;
if
(
itti_msg
.
ueCtxReq
==
-
1
)
uc
->
is
UeContextR
equest
=
false
;
uc
->
is
_ue_context_r
equest
=
false
;
else
uc
->
is
UeContextR
equest
=
true
;
uc
->
is
_ue_context_r
equest
=
true
;
uc
->
ran_ue_ngap_id
=
itti_msg
.
ran_ue_ngap_id
;
uc
->
amf_ue_ngap_id
=
amf_ue_ngap_id
;
...
...
@@ -584,7 +584,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
uc
->
rrc_estb_cause
=
(
e_Ngap_RRCEstablishmentCause
)
rrc_cause
;
}
// ueContextRequest
uc
->
is
UeContextR
equest
=
registration_context
.
isUeContextRequest
();
uc
->
is
_ue_context_r
equest
=
registration_context
.
isUeContextRequest
();
// Step 4. Create UE NGAP Context if necessary
// Create/Update UE NGAP Context
...
...
src/amf-app/amf_n1.cpp
View file @
aff1b842
...
...
@@ -297,7 +297,7 @@ void amf_n1::handle_itti_message(itti_downlink_nas_transfer& itti_msg) {
return
;
}
if
(
uc
->
is
UeContextR
equest
)
{
if
(
uc
->
is
_ue_context_r
equest
)
{
// PDU SESSION RESOURCE SETUP_REQUEST
std
::
shared_ptr
<
itti_pdu_session_resource_setup_request
>
psrsr
=
std
::
make_shared
<
itti_pdu_session_resource_setup_request
>
(
...
...
@@ -2662,7 +2662,7 @@ void amf_n1::security_mode_complete_handle(
secu
,
false
,
INTEGRITY_PROTECTED_AND_CIPHERED
,
NAS_MESSAGE_DOWNLINK
,
buffer
,
encoded_size
,
protected_nas
);
if
(
!
uc
->
is
UeContextR
equest
)
{
if
(
!
uc
->
is
_ue_context_r
equest
)
{
Logger
::
amf_n1
().
debug
(
"UE Context is not requested, UE with "
"ran_ue_ngap_id "
GNB_UE_NGAP_ID_FMT
...
...
src/contexts/ue_context.cpp
View file @
aff1b842
...
...
@@ -21,48 +21,52 @@
#include "ue_context.hpp"
#include "amf.hpp"
//------------------------------------------------------------------------------
ue_context
::
ue_context
()
{
ran_ue_ngap_id
=
0
;
amf_ue_ngap_id
=
-
1
;
gnb_id
=
0
;
rrc_estb_cause
=
{};
isUeContextRequest
=
false
;
cgi
=
{};
tai
=
{};
pdu_sessions
=
{};
tmsi
=
0
;
ran_ue_ngap_id
=
0
;
amf_ue_ngap_id
=
INVALID_AMF_UE_NGAP_ID
;
gnb_id
=
0
;
supi
=
{};
tmsi
=
0
;
rrc_estb_cause
=
{};
is_ue_context_request
=
false
;
cgi
=
{};
tai
=
{};
pdu_sessions
=
{};
}
//------------------------------------------------------------------------------
bool
ue_context
::
find_pdu_session_context
(
const
std
::
uint8_t
&
session_id
,
std
::
uint8_t
session_id
,
std
::
shared_ptr
<
pdu_session_context
>&
context
)
const
{
std
::
shared_lock
lock
(
m_pdu_session
);
if
(
pdu_sessions
.
count
(
session_id
)
>
0
)
{
context
=
pdu_sessions
.
at
(
session_id
);
return
true
;
}
else
{
return
false
;
if
(
pdu_sessions
.
at
(
session_id
)
!=
nullptr
)
{
context
=
pdu_sessions
.
at
(
session_id
)
;
return
true
;
}
}
return
false
;
}
//------------------------------------------------------------------------------
void
ue_context
::
add_pdu_session_context
(
const
std
::
uint8_t
&
session_id
,
std
::
uint8_t
session_id
,
const
std
::
shared_ptr
<
pdu_session_context
>&
context
)
{
std
::
unique_lock
lock
(
m_pdu_session
);
pdu_sessions
[
session_id
]
=
context
;
}
//------------------------------------------------------------------------------
void
ue_context
::
copy_pdu_sessions
(
std
::
shared_ptr
<
ue_context
>&
ue_ctx
)
{
void
ue_context
::
copy_pdu_sessions
(
const
std
::
shared_ptr
<
ue_context
>&
ue_ctx
)
{
pdu_sessions
=
ue_ctx
->
pdu_sessions
;
}
//------------------------------------------------------------------------------
bool
ue_context
::
get_pdu_sessions_context
(
std
::
vector
<
std
::
shared_ptr
<
pdu_session_context
>>&
sessions_ctx
)
{
std
::
vector
<
std
::
shared_ptr
<
pdu_session_context
>>&
sessions_ctx
)
const
{
std
::
shared_lock
lock
(
m_pdu_session
);
for
(
auto
s
:
pdu_sessions
)
{
sessions_ctx
.
push_back
(
s
.
second
);
...
...
@@ -71,7 +75,7 @@ bool ue_context::get_pdu_sessions_context(
}
//------------------------------------------------------------------------------
bool
ue_context
::
remove_pdu_sessions_context
(
const
uint8_t
&
pdu_session_id
)
{
bool
ue_context
::
remove_pdu_sessions_context
(
uint8_t
pdu_session_id
)
{
std
::
shared_lock
lock
(
m_pdu_session
);
pdu_sessions
.
erase
(
pdu_session_id
);
return
true
;
...
...
src/contexts/ue_context.hpp
View file @
aff1b842
...
...
@@ -25,8 +25,6 @@
#include <stdint.h>
#include <map>
#include <memory>
#include <mutex>
#include <shared_mutex>
#include "NgapIEsStruct.hpp"
...
...
@@ -43,28 +41,28 @@ class ue_context {
ue_context
();
virtual
~
ue_context
(){};
bool
find_pdu_session_context
(
const
std
::
uint8_t
&
session_id
,
std
::
uint8_t
session_id
,
std
::
shared_ptr
<
pdu_session_context
>&
context
)
const
;
void
add_pdu_session_context
(
const
std
::
uint8_t
&
session_id
,
std
::
uint8_t
session_id
,
const
std
::
shared_ptr
<
pdu_session_context
>&
context
);
void
copy_pdu_sessions
(
std
::
shared_ptr
<
ue_context
>&
ue_ctx
);
void
copy_pdu_sessions
(
const
std
::
shared_ptr
<
ue_context
>&
ue_ctx
);
bool
get_pdu_sessions_context
(
std
::
vector
<
std
::
shared_ptr
<
pdu_session_context
>>&
sessions_ctx
);
std
::
vector
<
std
::
shared_ptr
<
pdu_session_context
>>&
sessions_ctx
)
const
;
bool
remove_pdu_sessions_context
(
const
uint8_t
&
pdu_session_id
);
bool
remove_pdu_sessions_context
(
uint8_t
pdu_session_id
);
public:
uint32_t
ran_ue_ngap_id
;
// 32bits
long
amf_ue_ngap_id
:
40
;
// 40bits
uint32_t
ran_ue_ngap_id
;
// 32bits
long
amf_ue_ngap_id
;
// 40bits
uint32_t
gnb_id
;
std
::
string
supi
;
uint32_t
tmsi
;
e_Ngap_RRCEstablishmentCause
rrc_estb_cause
;
bool
is
UeContextR
equest
;
bool
is
_ue_context_r
equest
;
NrCgi_t
cgi
;
Tai_t
tai
;
std
::
string
supi
;
uint32_t
tmsi
;
// pdu session id <-> pdu_session_contex
std
::
map
<
std
::
uint8_t
,
std
::
shared_ptr
<
pdu_session_context
>>
pdu_sessions
;
mutable
std
::
shared_mutex
m_pdu_session
;
...
...
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