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
7bbcaf07
Commit
7bbcaf07
authored
Apr 04, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update UE status
parent
1cd7c2cc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
83 additions
and
67 deletions
+83
-67
src/amf-app/amf_n1.cpp
src/amf-app/amf_n1.cpp
+78
-58
src/amf-app/amf_n2.cpp
src/amf-app/amf_n2.cpp
+5
-7
src/contexts/nas_context.cpp
src/contexts/nas_context.cpp
+0
-1
src/contexts/nas_context.hpp
src/contexts/nas_context.hpp
+0
-1
No files found.
src/amf-app/amf_n1.cpp
View file @
7bbcaf07
...
...
@@ -774,31 +774,26 @@ void amf_n1::identity_response_handle(
// Continue the Registration Procedure
if
(
nc
->
to_be_register_by_new_suci
)
{
if
(
!
nc
->
is_stacs_available
)
{
ue_info_t
ueItem
;
ueItem
.
connStatus
=
"5GMM-CONNECTED"
;
//"CM-CONNECTED";
ueItem
.
registerStatus
=
"5GMM-REG-INITIATED"
;
// 5GMM-COMMON-PROCEDURE-INITIATED
ueItem
.
ranid
=
ran_ue_ngap_id
;
ueItem
.
amfid
=
amf_ue_ngap_id
;
ueItem
.
imsi
=
nc
->
imsi
;
// Find UE context
std
::
shared_ptr
<
ue_context
>
uc
=
{};
if
(
!
find_ue_context
(
ran_ue_ngap_id
,
amf_ue_ngap_id
,
uc
))
{
Logger
::
amf_n1
().
warn
(
"Cannot find the UE context"
);
}
else
{
ueItem
.
mcc
=
uc
->
cgi
.
mcc
;
ueItem
.
mnc
=
uc
->
cgi
.
mnc
;
ueItem
.
cellId
=
uc
->
cgi
.
nrCellID
;
}
stacs
.
update_ue_info
(
ueItem
);
set_5gmm_state
(
nc
,
_5GMM_COMMON_PROCEDURE_INITIATED
);
// stacs.display();
nc
->
is_stacs_available
=
true
;
// Update 5GMM State
ue_info_t
ueItem
;
ueItem
.
connStatus
=
"5GMM-CONNECTED"
;
//"CM-CONNECTED";
ueItem
.
registerStatus
=
"5GMM-REG-INITIATED"
;
// 5GMM-COMMON-PROCEDURE-INITIATED
ueItem
.
ranid
=
ran_ue_ngap_id
;
ueItem
.
amfid
=
amf_ue_ngap_id
;
ueItem
.
imsi
=
nc
->
imsi
;
// Find UE context
std
::
shared_ptr
<
ue_context
>
uc
=
{};
if
(
!
find_ue_context
(
ran_ue_ngap_id
,
amf_ue_ngap_id
,
uc
))
{
Logger
::
amf_n1
().
warn
(
"Cannot find the UE context"
);
}
else
{
ueItem
.
mcc
=
uc
->
cgi
.
mcc
;
ueItem
.
mnc
=
uc
->
cgi
.
mnc
;
ueItem
.
cellId
=
uc
->
cgi
.
nrCellID
;
}
stacs
.
update_ue_info
(
ueItem
);
set_5gmm_state
(
nc
,
_5GMM_COMMON_PROCEDURE_INITIATED
);
Logger
::
amf_n1
().
debug
(
...
...
@@ -923,7 +918,13 @@ void amf_n1::service_request_handle(
Logger
::
amf_n1
().
error
(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
dnt
->
get_msg_name
());
}
else
{
// Update 5GMM State
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
set_5gmm_state
(
nc
,
_5GMM_DEREGISTERED
);
stacs
.
display
();
}
return
;
}
...
...
@@ -1063,8 +1064,8 @@ void amf_n1::service_request_handle(
if
(
pdu_session_to_be_activated
.
size
()
==
0
)
{
Logger
::
amf_n1
().
debug
(
"There is no PDU session to be activated"
);
// service_accept->SetPduSessionStatus(0x0000);
uint8_t
buffer
[
BUFFER_SIZE_
256
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
256
);
uint8_t
buffer
[
BUFFER_SIZE_
1024
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
1024
);
bstring
protected_nas
=
nullptr
;
encode_nas_message_protected
(
nc
->
security_ctx
.
value
(),
false
,
INTEGRITY_PROTECTED_AND_CIPHERED
,
...
...
@@ -1100,10 +1101,14 @@ void amf_n1::service_request_handle(
Logger
::
amf_n1
().
error
(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
itti_msg
->
get_msg_name
());
}
else
{
// Update 5GMM State
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-REGISTERED"
);
set_5gmm_state
(
nc
,
_5GMM_REGISTERED
);
stacs
.
display
();
}
bdestroy_wrapper
(
&
protected_nas
);
return
;
}
else
{
// TODO: Contact SMF to activate UP for these sessions
// TODO: modify itti_initial_context_setup_request for supporting multiple
...
...
@@ -1122,8 +1127,8 @@ void amf_n1::service_request_handle(
service_accept
->
SetPduSessionReactivationResult
(
0x0000
);
}
uint8_t
buffer
[
BUFFER_SIZE_
256
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
256
);
uint8_t
buffer
[
BUFFER_SIZE_
1024
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
1024
);
bstring
protected_nas
=
nullptr
;
encode_nas_message_protected
(
nc
->
security_ctx
.
value
(),
false
,
INTEGRITY_PROTECTED_AND_CIPHERED
,
...
...
@@ -1161,7 +1166,13 @@ void amf_n1::service_request_handle(
Logger
::
amf_n1
().
error
(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
itti_msg
->
get_msg_name
());
}
else
{
// Update 5GMM State
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-REGISTERED"
);
set_5gmm_state
(
nc
,
_5GMM_REGISTERED
);
stacs
.
display
();
}
bdestroy_wrapper
(
&
protected_nas
);
}
}
...
...
@@ -1279,7 +1290,13 @@ void amf_n1::service_request_handle(
Logger
::
amf_n1
().
error
(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
dnt
->
get_msg_name
());
}
else
{
// Update 5GMM State
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
set_5gmm_state
(
nc
,
_5GMM_DEREGISTERED
);
stacs
.
display
();
}
return
;
}
...
...
@@ -1418,8 +1435,8 @@ void amf_n1::service_request_handle(
if
(
pdu_session_to_be_activated
.
size
()
==
0
)
{
Logger
::
amf_n1
().
debug
(
"There is no PDU session to be activated"
);
// service_accept->SetPduSessionStatus(0x0000);
uint8_t
buffer
[
BUFFER_SIZE_
256
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
256
);
uint8_t
buffer
[
BUFFER_SIZE_
1024
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
1024
);
bstring
protected_nas
=
nullptr
;
encode_nas_message_protected
(
nc
->
security_ctx
.
value
(),
false
,
INTEGRITY_PROTECTED_AND_CIPHERED
,
...
...
@@ -1454,7 +1471,13 @@ void amf_n1::service_request_handle(
Logger
::
amf_n1
().
error
(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
itti_msg
->
get_msg_name
());
}
else
{
// Update 5GMM State
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-REGISTERED"
);
set_5gmm_state
(
nc
,
_5GMM_REGISTERED
);
stacs
.
display
();
}
bdestroy_wrapper
(
&
protected_nas
);
return
;
...
...
@@ -1476,8 +1499,8 @@ void amf_n1::service_request_handle(
service_accept
->
SetPduSessionReactivationResult
(
0x0000
);
}
uint8_t
buffer
[
BUFFER_SIZE_
256
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
256
);
uint8_t
buffer
[
BUFFER_SIZE_
1024
];
int
encoded_size
=
service_accept
->
Encode
(
buffer
,
BUFFER_SIZE_
1024
);
bstring
protected_nas
=
nullptr
;
encode_nas_message_protected
(
nc
->
security_ctx
.
value
(),
false
,
INTEGRITY_PROTECTED_AND_CIPHERED
,
...
...
@@ -1523,6 +1546,11 @@ void amf_n1::service_request_handle(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
itti_msg
->
get_msg_name
());
}
// Update 5GMM State
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-REGISTERED"
);
set_5gmm_state
(
nc
,
_5GMM_REGISTERED
);
stacs
.
display
();
bdestroy_wrapper
(
&
protected_nas
);
}
}
...
...
@@ -1605,24 +1633,20 @@ void amf_n1::registration_request_handle(
Logger
::
amf_n1
().
info
(
"Associating SUPI (%s) with nas_context (%p)"
,
supi
.
c_str
(),
(
void
*
)
nc
.
get
());
if
(
!
nc
->
is_stacs_available
)
{
ue_info_t
ueItem
;
ueItem
.
connStatus
=
"5GMM-CONNECTED"
;
//"CM-CONNECTED";
ueItem
.
registerStatus
=
"5GMM-REG-INITIATED"
;
// 5GMM-COMMON-PROCEDURE-INITIATED
ueItem
.
ranid
=
ran_ue_ngap_id
;
ueItem
.
amfid
=
amf_ue_ngap_id
;
ueItem
.
imsi
=
nc
->
imsi
;
ueItem
.
mcc
=
uc
->
cgi
.
mcc
;
ueItem
.
mnc
=
uc
->
cgi
.
mnc
;
ueItem
.
cellId
=
uc
->
cgi
.
nrCellID
;
stacs
.
update_ue_info
(
ueItem
);
set_5gmm_state
(
nc
,
_5GMM_COMMON_PROCEDURE_INITIATED
);
// stacs.display();
nc
->
is_stacs_available
=
true
;
}
// Update 5GMM state
ue_info_t
ueItem
;
ueItem
.
connStatus
=
"5GMM-CONNECTED"
;
//"CM-CONNECTED";
ueItem
.
registerStatus
=
"5GMM-REG-INITIATED"
;
// 5GMM-COMMON-PROCEDURE-INITIATED
ueItem
.
ranid
=
ran_ue_ngap_id
;
ueItem
.
amfid
=
amf_ue_ngap_id
;
ueItem
.
imsi
=
nc
->
imsi
;
ueItem
.
mcc
=
uc
->
cgi
.
mcc
;
ueItem
.
mnc
=
uc
->
cgi
.
mnc
;
ueItem
.
cellId
=
uc
->
cgi
.
nrCellID
;
stacs
.
update_ue_info
(
ueItem
);
set_5gmm_state
(
nc
,
_5GMM_COMMON_PROCEDURE_INITIATED
);
}
}
break
;
...
...
@@ -3057,11 +3081,8 @@ void amf_n1::security_mode_complete_handle(
"UE (IMSI %s, GUTI %s, current RAN ID %d, current AMF ID %d) has been "
"registered to the network"
,
nc
->
imsi
.
c_str
(),
guti
.
c_str
(),
ran_ue_ngap_id
,
amf_ue_ngap_id
);
if
(
nc
->
is_stacs_available
)
{
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-REGISTERED"
);
}
else
{
nc
->
is_stacs_available
=
true
;
}
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-REGISTERED"
);
set_5gmm_state
(
nc
,
_5GMM_REGISTERED
);
stacs
.
display
();
...
...
@@ -3648,9 +3669,8 @@ void amf_n1::ue_initiate_de_registration_handle(
// event_sub.ue_loss_of_connectivity(supi, PURGED, 1, ran_ue_ngap_id,
// amf_ue_ngap_id);
if
(
nc
->
is_stacs_available
)
{
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
}
// Update 5GMM state
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
// Remove NC context
if
(
remove_amf_ue_ngap_id_2_nas_context
(
amf_ue_ngap_id
))
{
...
...
src/amf-app/amf_n2.cpp
View file @
7bbcaf07
...
...
@@ -908,7 +908,7 @@ void amf_n2::handle_itti_message(itti_initial_context_setup_request& itti_msg) {
}
if
(
itti_msg
.
is_sr
)
Logger
::
amf_n2
().
debug
(
"Encoding parameters for Service
Reques
t"
);
Logger
::
amf_n2
().
debug
(
"Encoding parameters for Service
Accep
t"
);
else
Logger
::
amf_n2
().
debug
(
"Encoding parameters for Initial Context Setup Request"
);
...
...
@@ -2287,9 +2287,8 @@ void amf_n2::remove_ue_context_with_ran_ue_ngap_id(
if
(
amf_n1_inst
->
amf_ue_id_2_nas_context
(
unc
->
amf_ue_ngap_id
,
nc
))
{
// Remove all NAS context
string
supi
=
conv
::
imsi_to_supi
(
nc
->
imsi
);
if
(
nc
->
is_stacs_available
)
{
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
}
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
// Trigger UE Loss of Connectivity Status Notify
Logger
::
amf_n1
().
debug
(
"Signal the UE Loss of Connectivity Event notification for SUPI %s"
,
...
...
@@ -2372,9 +2371,8 @@ void amf_n2::remove_ue_context_with_amf_ue_ngap_id(const long& amf_ue_ngap_id) {
// Remove all NAS context
string
supi
=
conv
::
imsi_to_supi
(
nc
->
imsi
);
// Update UE status
if
(
nc
->
is_stacs_available
)
{
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
}
stacs
.
update_5gmm_state
(
nc
->
imsi
,
"5GMM-DEREGISTERED"
);
// Trigger UE Loss of Connectivity Status Notify
Logger
::
amf_n1
().
debug
(
"Signal the UE Loss of Connectivity Event notification for SUPI %s"
,
...
...
src/contexts/nas_context.cpp
View file @
7bbcaf07
...
...
@@ -24,7 +24,6 @@
//------------------------------------------------------------------------------
nas_context
::
nas_context
()
:
_5g_he_av
(),
_5g_av
(),
kamf
(),
_5gmm_capability
()
{
is_imsi_present
=
false
;
is_stacs_available
=
false
;
is_auth_vectors_present
=
false
;
auts
=
nullptr
;
ctx_avaliability_ind
=
false
;
...
...
src/contexts/nas_context.hpp
View file @
7bbcaf07
...
...
@@ -66,7 +66,6 @@ class nas_context {
nas_context
();
~
nas_context
();
bool
ctx_avaliability_ind
;
bool
is_stacs_available
;
long
amf_ue_ngap_id
;
uint32_t
ran_ue_ngap_id
;
cm_state_t
nas_status
;
...
...
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