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
b5fc3a28
Commit
b5fc3a28
authored
Aug 06, 2021
by
Tien-Thinh Nguyen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish the code for ITTI/NGAP
parent
7571e854
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
265 additions
and
111 deletions
+265
-111
src/amf-app/amf_n1.cpp
src/amf-app/amf_n1.cpp
+36
-32
src/amf-app/amf_n11.cpp
src/amf-app/amf_n11.cpp
+4
-6
src/amf-app/amf_n2.cpp
src/amf-app/amf_n2.cpp
+21
-18
src/itti/msgs/itti_msg_amf_app.hpp
src/itti/msgs/itti_msg_amf_app.hpp
+36
-5
src/itti/msgs/itti_msg_n1.hpp
src/itti/msgs/itti_msg_n1.hpp
+31
-6
src/itti/msgs/itti_msg_n11.hpp
src/itti/msgs/itti_msg_n11.hpp
+36
-14
src/itti/msgs/itti_msg_n2.hpp
src/itti/msgs/itti_msg_n2.hpp
+91
-25
src/ngap/ngapMsgs/Paging.cpp
src/ngap/ngapMsgs/Paging.cpp
+5
-5
src/ngap/ngapMsgs/Paging.hpp
src/ngap/ngapMsgs/Paging.hpp
+5
-0
No files found.
src/amf-app/amf_n1.cpp
View file @
b5fc3a28
...
...
@@ -1052,6 +1052,9 @@ void amf_n1::registration_request_handle(
// Get pdu session status(OPtional IE), associated and active pdu sessions
// available in UE
bstring
nas_msg
;
bool
is_messagecontainer
=
regReq
->
getNasMessageContainer
(
nas_msg
);
// Store NAS information into nas_context
// Run different registration procedure
switch
(
reg_type
)
{
...
...
@@ -1069,15 +1072,12 @@ void amf_n1::registration_request_handle(
}
break
;
case
PERIODIC_REGISTRATION_UPDATING
:
{
Logger
::
amf_n1
().
error
(
"Network does not support periodic registration, reject ..."
);
/* Logger::amf_n1().debug("Network handling periodic registration
..."); if(is_messagecontainer)
Logger
::
amf_n1
().
debug
(
"Network handling periodic registration..."
);
if
(
is_messagecontainer
)
run_periodic_registration_update_procedure
(
nc
,
nas_msg
);
else
run_periodic_registration_update_procedure(nc,
pdu_session_status);
*/
run_periodic_registration_update_procedure
(
nc
,
regReq
->
getPduSessionStatus
());
}
break
;
case
EMERGENCY_REGISTRATION
:
{
...
...
@@ -2787,8 +2787,10 @@ void amf_n1::run_mobility_registration_update_procedure(
//------------------------------------------------------------------------------
void
amf_n1
::
run_periodic_registration_update_procedure
(
std
::
shared_ptr
<
nas_context
>
nc
,
uint16_t
pdu_session_status
)
{
// Experimental procedure
// encoding REGISTRATION ACCEPT
RegistrationAccept
*
regAccept
=
new
RegistrationAccept
();
std
::
unique_ptr
<
RegistrationAccept
>
regAccept
=
std
::
make_unique
<
RegistrationAccept
>
();
regAccept
->
setHeader
(
PLAIN_5GS_MSG
);
regAccept
->
set_5GS_Registration_Result
(
false
,
false
,
false
,
0x01
);
regAccept
->
set5G_GUTI
(
...
...
@@ -2797,9 +2799,9 @@ void amf_n1::run_periodic_registration_update_procedure(
regAccept
->
setT3512_Value
(
0x5
,
0x1e
);
std
::
vector
<
p_tai_t
>
tai_list
;
p_tai_t
item0
;
p_tai_t
item0
=
{}
;
item0
.
type
=
0x00
;
nas_plmn_t
plmn
;
nas_plmn_t
plmn
=
{}
;
plmn
.
mcc
=
amf_cfg
.
plmn_list
[
0
].
mcc
;
plmn
.
mnc
=
amf_cfg
.
plmn_list
[
0
].
mnc
;
item0
.
plmn_list
.
push_back
(
plmn
);
...
...
@@ -2821,21 +2823,20 @@ void amf_n1::run_periodic_registration_update_procedure(
}
else
{
regAccept
->
setPDU_session_status
(
pdu_session_status
);
Logger
::
amf_n1
().
debug
(
"
setting pdu session s
tatus 0x%02x"
,
htonl
(
pdu_session_status
));
"
Setting PDU Session S
tatus 0x%02x"
,
htonl
(
pdu_session_status
));
// serApt->setPDU_session_status(0x2000);
}
regAccept
->
set_5GS_Network_Feature_Support
(
0x01
,
0x00
);
uint8_t
buffer
[
1024
]
=
{
0
};
int
encoded_size
=
regAccept
->
encode2buffer
(
buffer
,
1024
);
uint8_t
buffer
[
BUFFER_SIZE_
1024
]
=
{
0
};
int
encoded_size
=
regAccept
->
encode2buffer
(
buffer
,
BUFFER_SIZE_
1024
);
print_buffer
(
"amf_n1"
,
"Registration-Accept Message Buffer"
,
buffer
,
encoded_size
);
if
(
!
encoded_size
)
{
Logger
::
nas_mm
().
error
(
"Encode Registration-Accept message error"
);
return
;
}
else
{
delete
regAccept
;
}
nas_secu_ctx
*
secu
=
nc
.
get
()
->
security_ctx
;
// protect nas message
bstring
protectedNas
;
...
...
@@ -2845,6 +2846,7 @@ void amf_n1::run_periodic_registration_update_procedure(
string
supi
=
"imsi-"
+
nc
.
get
()
->
imsi
;
Logger
::
amf_n1
().
debug
(
"Key for pdu session context SUPI (%s)"
,
supi
.
c_str
());
std
::
shared_ptr
<
pdu_session_context
>
psc
;
/* if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
psc = amf_n11_inst->supi_to_pdu_ctx(supi);
...
...
@@ -2871,14 +2873,18 @@ void amf_n1::run_periodic_registration_update_procedure(
//------------------------------------------------------------------------------
void
amf_n1
::
run_periodic_registration_update_procedure
(
std
::
shared_ptr
<
nas_context
>
nc
,
bstring
&
nas_msg
)
{
// Experimental procedure
// decoding REGISTRATION request
RegistrationRequest
*
regReq
=
new
RegistrationRequest
();
std
::
unique_ptr
<
RegistrationRequest
>
regReq
=
std
::
make_unique
<
RegistrationRequest
>
();
regReq
->
decodefrombuffer
(
nullptr
,
(
uint8_t
*
)
bdata
(
nas_msg
),
blength
(
nas_msg
));
bdestroy
(
nas_msg
);
// free buffer
// encoding REGISTRATION ACCEPT
RegistrationAccept
*
regAccept
=
new
RegistrationAccept
();
std
::
unique_ptr
<
RegistrationAccept
>
regAccept
=
std
::
make_unique
<
RegistrationAccept
>
();
regAccept
->
setHeader
(
PLAIN_5GS_MSG
);
regAccept
->
set_5GS_Registration_Result
(
false
,
false
,
false
,
0x01
);
regAccept
->
set5G_GUTI
(
...
...
@@ -2887,9 +2893,9 @@ void amf_n1::run_periodic_registration_update_procedure(
regAccept
->
setT3512_Value
(
0x5
,
0x1e
);
std
::
vector
<
p_tai_t
>
tai_list
;
p_tai_t
item0
;
p_tai_t
item0
=
{}
;
item0
.
type
=
0x00
;
nas_plmn_t
plmn
;
nas_plmn_t
plmn
=
{}
;
plmn
.
mcc
=
amf_cfg
.
plmn_list
[
0
].
mcc
;
plmn
.
mnc
=
amf_cfg
.
plmn_list
[
0
].
mnc
;
item0
.
plmn_list
.
push_back
(
plmn
);
...
...
@@ -2916,19 +2922,17 @@ void amf_n1::run_periodic_registration_update_procedure(
"setting pdu session status 0x%02x"
,
htonl
(
pdu_session_status
));
// serApt->setPDU_session_status(0x2000);
}
delete
regReq
;
regAccept
->
set_5GS_Network_Feature_Support
(
0x01
,
0x00
);
uint8_t
buffer
[
1024
]
=
{
0
};
int
encoded_size
=
regAccept
->
encode2buffer
(
buffer
,
1024
);
uint8_t
buffer
[
BUFFER_SIZE_
1024
]
=
{
0
};
int
encoded_size
=
regAccept
->
encode2buffer
(
buffer
,
BUFFER_SIZE_
1024
);
print_buffer
(
"amf_n1"
,
"Registration-Accept Message Buffer"
,
buffer
,
encoded_size
);
if
(
!
encoded_size
)
{
Logger
::
nas_mm
().
error
(
"Encode Registration-Accept message error"
);
return
;
}
else
{
delete
regAccept
;
}
nas_secu_ctx
*
secu
=
nc
.
get
()
->
security_ctx
;
// protect nas message
bstring
protectedNas
;
...
...
src/amf-app/amf_n11.cpp
View file @
b5fc3a28
...
...
@@ -586,8 +586,8 @@ void amf_n11::curl_http_client(
nlohmann
::
json
response_data
=
{};
bstring
n1sm_hex
,
n2sm_hex
;
Logger
::
amf_n11
().
debug
(
"Get response with HTTP code (%d)"
,
httpCode
);
Logger
::
amf_n11
().
debug
(
"r
esponse body %s"
,
response
.
c_str
());
Logger
::
amf_n11
().
info
(
"Get response with HTTP code (%d)"
,
httpCode
);
Logger
::
amf_n11
().
info
(
"R
esponse body %s"
,
response
.
c_str
());
if
(
static_cast
<
http_response_codes_e
>
(
httpCode
)
==
http_response_codes_e
::
HTTP_RESPONSE_CODE_0
)
{
...
...
@@ -610,6 +610,8 @@ void amf_n11::curl_http_client(
json_data_response
=
response
;
}
Logger
::
amf_n11
().
info
(
"Json part %s"
,
json_data_response
.
c_str
());
if
((
static_cast
<
http_response_codes_e
>
(
httpCode
)
!=
http_response_codes_e
::
HTTP_RESPONSE_CODE_200_OK
)
&&
(
static_cast
<
http_response_codes_e
>
(
httpCode
)
!=
...
...
@@ -1106,10 +1108,6 @@ void amf_n11::curl_http_client(
return
;
}
else
{
response
=
*
httpData
.
get
();
}
if
(
!
is_response_ok
)
{
try
{
response_data
=
nlohmann
::
json
::
parse
(
json_data_response
);
...
...
src/amf-app/amf_n2.cpp
View file @
b5fc3a28
...
...
@@ -242,28 +242,27 @@ void amf_n2::handle_itti_message(itti_paging& itti_msg) {
"which's amf_ue_ngap_id (0x%x)"
,
itti_msg
.
amf_ue_ngap_id
,
unc
.
get
()
->
amf_ue_ngap_id
);
}
if
(
unc
.
get
()
->
ng_ue_state
!=
NGAP_UE_CONNECTED
)
{
Logger
::
amf_n2
().
error
(
"Received NGAP UPLINK_NAS_TRANSPORT while UE in state != "
"NGAP_UE_CONNECTED"
);
if
(
unc
.
get
()
->
ng_ue_state
==
NGAP_UE_CONNECTED
)
{
Logger
::
amf_n2
().
warn
(
"Received NGAP PAGING while UE in CONNECTED MODE"
);
// return;
}
PagingMsg
paging_msg
=
{};
paging_msg
.
setMessageType
();
Logger
::
amf_n2
().
warn
(
" unc.get()->s_setid (%d)"
,
unc
.
get
()
->
s_setid
);
Logger
::
amf_n2
().
warn
(
" unc.get()->s_pointer (%d)"
,
unc
.
get
()
->
s_pointer
);
Logger
::
amf_n2
().
warn
(
" unc.get()->s_tmsi (%d)"
,
unc
.
get
()
->
s_tmsi
);
Logger
::
amf_n2
().
debug
(
" UE NGAP Context, s_setid (%d), s_pointer (%d), s_tmsi (%d)"
,
unc
.
get
()
->
s_setid
,
unc
.
get
()
->
s_pointer
,
unc
.
get
()
->
s_tmsi
);
paging_msg
.
setUEPagingIdentity
(
unc
.
get
()
->
s_setid
,
unc
.
get
()
->
s_pointer
,
unc
.
get
()
->
s_tmsi
);
Logger
::
amf_n2
().
warn
(
"=========================================="
);
std
::
vector
<
struct
Tai_s
>
list
;
Tai_t
tai
_test
;
tai
_test
.
mcc
=
unc
.
get
()
->
tai
.
mcc
;
tai
_test
.
mnc
=
unc
.
get
()
->
tai
.
mnc
;
tai
_test
.
tac
=
unc
.
get
()
->
tai
.
tac
;
Tai_t
tai
=
{}
;
tai
.
mcc
=
unc
.
get
()
->
tai
.
mcc
;
tai
.
mnc
=
unc
.
get
()
->
tai
.
mnc
;
tai
.
tac
=
unc
.
get
()
->
tai
.
tac
;
list
.
push_back
(
tai
_test
);
list
.
push_back
(
tai
);
paging_msg
.
setTAIListForPaging
(
list
);
uint8_t
buffer
[
BUFFER_SIZE_512
];
...
...
@@ -275,10 +274,8 @@ void amf_n2::handle_itti_message(itti_paging& itti_msg) {
}
//------------------------------------------------------------------------------
void
amf_n2
::
handle_itti_message
(
itti_new_sctp_association
&
new_assoc
)
{
}
// handled in class ngap_app
void
amf_n2
::
handle_itti_message
(
itti_new_sctp_association
&
new_assoc
)
{}
// NG_SETUP_REQUEST Handler
//------------------------------------------------------------------------------
void
amf_n2
::
handle_itti_message
(
itti_ng_setup_request
&
itti_msg
)
{
Logger
::
amf_n2
().
debug
(
...
...
@@ -547,6 +544,8 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
return
;
}
if
(
!
init_ue_msg
.
initUeMsg
)
return
;
// UE NGAP Context
uint32_t
ran_ue_ngap_id
;
if
((
ran_ue_ngap_id
=
init_ue_msg
.
initUeMsg
->
getRanUENgapID
())
==
-
1
)
{
...
...
@@ -583,6 +582,7 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
if
(
init_ue_msg
.
initUeMsg
->
getUserLocationInfoNR
(
cgi
,
tai
))
{
itti_msg
->
cgi
=
cgi
;
itti_msg
->
tai
=
tai
;
unc
.
get
()
->
tai
=
tai
;
}
else
{
Logger
::
amf_n2
().
error
(
"Missing Mandatory IE UserLocationInfoNR"
);
return
;
...
...
@@ -610,6 +610,9 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
itti_msg
->
is_5g_s_tmsi_present
=
true
;
itti_msg
->
_5g_s_tmsi
=
_5g_s_tmsi
;
Logger
::
amf_n2
().
debug
(
"5g_s_tmsi present"
);
init_ue_msg
.
initUeMsg
->
get5GS_TMSI
(
unc
.
get
()
->
s_setid
,
unc
.
get
()
->
s_pointer
,
unc
.
get
()
->
s_tmsi
);
}
uint8_t
*
nas_buf
;
...
...
src/itti/msgs/itti_msg_amf_app.hpp
View file @
b5fc3a28
...
...
@@ -34,7 +34,9 @@ class itti_msg_amf_app : public itti_msg {
itti_msg_amf_app
(
const
itti_msg_type_t
msg_type
,
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg
(
msg_type
,
origin
,
destination
)
{}
:
itti_msg
(
msg_type
,
origin
,
destination
),
ran_ue_ngap_id
(
0
),
amf_ue_ngap_id
(
0
)
{}
itti_msg_amf_app
(
const
itti_msg_amf_app
&
i
)
:
itti_msg
(
i
)
{
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
...
...
@@ -49,10 +51,25 @@ class itti_nas_signalling_establishment_request : public itti_msg_amf_app {
public:
itti_nas_signalling_establishment_request
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_amf_app
(
NAS_SIG_ESTAB_REQ
,
origin
,
destination
)
{}
:
itti_msg_amf_app
(
NAS_SIG_ESTAB_REQ
,
origin
,
destination
),
rrc_cause
(
0
),
ueCtxReq
(
0
),
cgi
(),
tai
(),
_5g_s_tmsi
()
{
is_5g_s_tmsi_present
=
false
;
}
itti_nas_signalling_establishment_request
(
const
itti_nas_signalling_establishment_request
&
i
)
:
itti_msg_amf_app
(
i
)
{}
:
itti_msg_amf_app
(
i
)
{
rrc_cause
=
i
.
rrc_cause
;
ueCtxReq
=
i
.
ueCtxReq
;
cgi
=
i
.
cgi
;
tai
=
i
.
tai
;
nas_buf
=
i
.
nas_buf
;
is_5g_s_tmsi_present
=
i
.
is_5g_s_tmsi_present
;
_5g_s_tmsi
=
i
.
_5g_s_tmsi
;
}
int
rrc_cause
;
int
ueCtxReq
;
NrCgi_t
cgi
;
...
...
@@ -66,10 +83,24 @@ class itti_n1n2_message_transfer_request : public itti_msg_amf_app {
public:
itti_n1n2_message_transfer_request
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_amf_app
(
N1N2_MESSAGE_TRANSFER_REQ
,
origin
,
destination
)
{}
:
itti_msg_amf_app
(
N1N2_MESSAGE_TRANSFER_REQ
,
origin
,
destination
),
supi
(),
pdu_session_id
(
0
),
n2sm_info_type
()
{
is_n2sm_set
=
false
;
is_n1sm_set
=
false
;
}
itti_n1n2_message_transfer_request
(
const
itti_n1n2_message_transfer_request
&
i
)
:
itti_msg_amf_app
(
i
)
{}
:
itti_msg_amf_app
(
i
)
{
supi
=
i
.
supi
;
n1sm
=
i
.
n1sm
;
n2sm
=
i
.
n2sm
;
is_n2sm_set
=
i
.
is_n2sm_set
;
is_n1sm_set
=
i
.
is_n1sm_set
;
pdu_session_id
=
i
.
pdu_session_id
;
n2sm_info_type
=
i
.
n2sm_info_type
;
}
std
::
string
supi
;
bstring
n1sm
;
...
...
src/itti/msgs/itti_msg_n1.hpp
View file @
b5fc3a28
...
...
@@ -30,10 +30,15 @@ class itti_msg_n1 : public itti_msg {
itti_msg_n1
(
const
itti_msg_type_t
msg_type
,
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg
(
msg_type
,
origin
,
destination
)
{}
:
itti_msg
(
msg_type
,
origin
,
destination
),
amf_ue_ngap_id
(
0
),
ran_ue_ngap_id
(
0
)
{
is_nas_signalling_estab_req
=
false
;
}
itti_msg_n1
(
const
itti_msg_n1
&
i
)
:
itti_msg
(
i
)
{
is_nas_signalling_estab_req
=
i
.
is_nas_signalling_estab_req
;
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
amf_ue_ngap_id
=
i
.
amf_ue_ngap_id
;
}
public:
...
...
@@ -45,9 +50,19 @@ class itti_msg_n1 : public itti_msg {
class
itti_uplink_nas_data_ind
:
public
itti_msg_n1
{
public:
itti_uplink_nas_data_ind
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n1
(
UL_NAS_DATA_IND
,
origin
,
destination
)
{}
itti_uplink_nas_data_ind
(
const
itti_uplink_nas_data_ind
&
i
)
:
itti_msg_n1
(
i
)
{}
:
itti_msg_n1
(
UL_NAS_DATA_IND
,
origin
,
destination
),
mcc
(),
mnc
(),
guti
()
{
is_guti_valid
=
false
;
}
itti_uplink_nas_data_ind
(
const
itti_uplink_nas_data_ind
&
i
)
:
itti_msg_n1
(
i
)
{
nas_msg
=
i
.
nas_msg
;
mcc
=
i
.
mcc
;
mnc
=
i
.
mnc
;
is_guti_valid
=
i
.
is_guti_valid
;
guti
=
i
.
guti
;
}
public:
bstring
nas_msg
;
...
...
@@ -61,9 +76,19 @@ class itti_downlink_nas_transfer : public itti_msg_n1 {
public:
itti_downlink_nas_transfer
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n1
(
DOWNLINK_NAS_TRANSFER
,
origin
,
destination
)
{}
:
itti_msg_n1
(
DOWNLINK_NAS_TRANSFER
,
origin
,
destination
),
pdu_session_id
(
0
),
n2sm_info_type
()
{
is_n2sm_set
=
false
;
}
itti_downlink_nas_transfer
(
const
itti_downlink_nas_transfer
&
i
)
:
itti_msg_n1
(
i
)
{}
:
itti_msg_n1
(
i
)
{
dl_nas
=
i
.
dl_nas
;
n2sm
=
i
.
n2sm
;
is_n2sm_set
=
i
.
is_n2sm_set
;
pdu_session_id
=
i
.
pdu_session_id
;
n2sm_info_type
=
i
.
n2sm_info_type
;
}
public:
bstring
dl_nas
;
...
...
src/itti/msgs/itti_msg_n11.hpp
View file @
b5fc3a28
...
...
@@ -34,7 +34,9 @@ class itti_msg_n11 : public itti_msg {
itti_msg_n11
(
const
itti_msg_type_t
msg_type
,
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg
(
msg_type
,
origin
,
destination
)
{}
:
itti_msg
(
msg_type
,
origin
,
destination
),
amf_ue_ngap_id
(
0
),
ran_ue_ngap_id
(
0
)
{}
itti_msg_n11
(
const
itti_msg_n11
&
i
)
:
itti_msg
(
i
)
{
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
amf_ue_ngap_id
=
i
.
amf_ue_ngap_id
;
...
...
@@ -49,7 +51,11 @@ class itti_nsmf_pdusession_create_sm_context : public itti_msg_n11 {
public:
itti_nsmf_pdusession_create_sm_context
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n11
(
NSMF_PDU_SESSION_CREATE_SM_CTX
,
origin
,
destination
)
{}
:
itti_msg_n11
(
NSMF_PDU_SESSION_CREATE_SM_CTX
,
origin
,
destination
),
req_type
(
0
),
pdu_sess_id
(
0
),
snssai
(),
plmn
()
{}
itti_nsmf_pdusession_create_sm_context
(
const
itti_nsmf_pdusession_create_sm_context
&
i
)
:
itti_msg_n11
(
i
)
{}
...
...
@@ -67,8 +73,8 @@ class itti_pdu_session_resource_setup_response : public itti_msg_n11 {
public:
itti_pdu_session_resource_setup_response
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n11
(
PDU_SESSION_RESOURCE_SETUP_RESPONSE
,
origin
,
destination
)
{
}
:
itti_msg_n11
(
PDU_SESSION_RESOURCE_SETUP_RESPONSE
,
origin
,
destination
)
,
pdu_session_id
(
0
)
{
}
itti_pdu_session_resource_setup_response
(
const
itti_pdu_session_resource_setup_response
&
i
)
:
itti_msg_n11
(
i
)
{}
...
...
@@ -82,9 +88,15 @@ class itti_nsmf_pdusession_update_sm_context : public itti_msg_n11 {
public:
itti_nsmf_pdusession_update_sm_context
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n11
(
NSMF_PDU_SESSION_UPDATE_SM_CTX
,
origin
,
destination
)
{
:
itti_msg_n11
(
NSMF_PDU_SESSION_UPDATE_SM_CTX
,
origin
,
destination
),
supi
(),
pdu_session_id
(
0
),
is_n2sm_set
(
false
),
n2sm_info_type
(),
ran_ue_ngap_id
(
0
),
amf_ue_ngap_id
(
0
),
promise_id
(
0
)
{
is_n2sm_set
=
false
;
promise_id
=
0
;
}
itti_nsmf_pdusession_update_sm_context
(
const
itti_nsmf_pdusession_update_sm_context
&
i
)
...
...
@@ -94,7 +106,6 @@ class itti_nsmf_pdusession_update_sm_context : public itti_msg_n11 {
is_n2sm_set
=
i
.
is_n2sm_set
;
n2sm_info_type
=
i
.
n2sm_info_type
;
promise_id
=
i
.
promise_id
;
;
}
public:
...
...
@@ -112,10 +123,13 @@ class itti_nsmf_pdusession_release_sm_context : public itti_msg_n11 {
public:
itti_nsmf_pdusession_release_sm_context
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n11
(
NSMF_PDU_SESSION_RELEASE_SM_CTX
,
origin
,
destination
)
{}
:
itti_msg_n11
(
NSMF_PDU_SESSION_RELEASE_SM_CTX
,
origin
,
destination
),
supi
()
{}
itti_nsmf_pdusession_release_sm_context
(
const
itti_nsmf_pdusession_update_sm_context
&
i
)
:
itti_msg_n11
(
i
)
{}
const
itti_nsmf_pdusession_release_sm_context
&
i
)
:
itti_msg_n11
(
i
)
{
supi
=
i
.
supi
;
}
public:
std
::
string
supi
;
...
...
@@ -127,6 +141,7 @@ class itti_n11_register_nf_instance_request : public itti_msg_n11 {
itti_n11_register_nf_instance_request
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_msg_n11
(
N11_REGISTER_NF_INSTANCE_REQUEST
,
orig
,
dest
),
profile
(),
http_version
(
1
)
{}
const
char
*
get_msg_name
()
{
return
"N11_REGISTER_NF_INSTANCE_REQUEST"
;
};
...
...
@@ -140,7 +155,9 @@ class itti_n11_register_nf_instance_response : public itti_msg_n11 {
itti_n11_register_nf_instance_response
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_msg_n11
(
N11_REGISTER_NF_INSTANCE_RESPONSE
,
orig
,
dest
),
http_version
(
1
)
{}
profile
(),
http_version
(
1
),
http_response_code
(
0
)
{}
const
char
*
get_msg_name
()
{
return
"N11_REGISTER_NF_INSTANCE_RESPONSE"
;
};
amf_application
::
amf_profile
profile
;
...
...
@@ -154,7 +171,8 @@ class itti_n11_update_nf_instance_request : public itti_msg_n11 {
itti_n11_update_nf_instance_request
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_msg_n11
(
N11_UPDATE_NF_INSTANCE_REQUEST
,
orig
,
dest
),
http_version
(
1
)
{}
http_version
(
1
),
smf_instance_id
()
{}
const
char
*
get_msg_name
()
{
return
"N11_UPDATE_NF_INSTANCE_REQUEST"
;
};
// std::vector<oai::amf::model::PatchItem> patch_items;
...
...
@@ -168,7 +186,9 @@ class itti_n11_update_nf_instance_response : public itti_msg_n11 {
itti_n11_update_nf_instance_response
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_msg_n11
(
N11_UPDATE_NF_INSTANCE_RESPONSE
,
orig
,
dest
),
http_version
(
1
)
{}
http_version
(
1
),
amf_instance_id
(),
http_response_code
(
0
)
{}
const
char
*
get_msg_name
()
{
return
"N11_UPDATE_NF_INSTANCE_RESPONSE"
;
};
uint8_t
http_version
;
...
...
@@ -180,7 +200,9 @@ class itti_n11_update_nf_instance_response : public itti_msg_n11 {
class
itti_n11_deregister_nf_instance
:
public
itti_msg_n11
{
public:
itti_n11_deregister_nf_instance
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_msg_n11
(
N11_DEREGISTER_NF_INSTANCE
,
orig
,
dest
),
http_version
(
1
)
{}
:
itti_msg_n11
(
N11_DEREGISTER_NF_INSTANCE
,
orig
,
dest
),
http_version
(
1
),
amf_instance_id
()
{}
const
char
*
get_msg_name
()
{
return
"N11_DEREGISTER_NF_INSTANCE"
;
};
uint8_t
http_version
;
...
...
src/itti/msgs/itti_msg_n2.hpp
View file @
b5fc3a28
...
...
@@ -43,7 +43,7 @@ class itti_msg_n2 : public itti_msg {
itti_msg_n2
(
const
itti_msg_type_t
msg_type
,
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg
(
msg_type
,
origin
,
destination
)
{}
:
itti_msg
(
msg_type
,
origin
,
destination
)
,
assoc_id
(),
stream
()
{}
itti_msg_n2
(
const
itti_msg_n2
&
i
)
:
itti_msg
(
i
)
{
assoc_id
=
i
.
assoc_id
;
stream
=
i
.
stream
;
...
...
@@ -61,7 +61,9 @@ class itti_new_sctp_association : public itti_msg_n2 {
class
itti_ng_setup_request
:
public
itti_msg_n2
{
public:
itti_ng_setup_request
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
NG_SETUP_REQ
,
origin
,
destination
)
{}
:
itti_msg_n2
(
NG_SETUP_REQ
,
origin
,
destination
)
{
ngSetupReq
=
nullptr
;
}
itti_ng_setup_request
(
const
itti_ng_setup_request
&
i
)
:
itti_msg_n2
(
i
)
{}
public:
...
...
@@ -71,7 +73,9 @@ class itti_ng_setup_request : public itti_msg_n2 {
class
itti_ng_reset
:
public
itti_msg_n2
{
public:
itti_ng_reset
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
NG_RESET
,
origin
,
destination
)
{}
:
itti_msg_n2
(
NG_RESET
,
origin
,
destination
)
{
ngReset
=
nullptr
;
}
itti_ng_reset
(
const
itti_ng_reset
&
i
)
:
itti_msg_n2
(
i
)
{}
public:
...
...
@@ -88,7 +92,9 @@ class itti_ng_shutdown : public itti_msg_n2 {
class
itti_initial_ue_message
:
public
itti_msg_n2
{
public:
itti_initial_ue_message
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
INITIAL_UE_MSG
,
origin
,
destination
)
{}
:
itti_msg_n2
(
INITIAL_UE_MSG
,
origin
,
destination
)
{
initUeMsg
=
nullptr
;
}
itti_initial_ue_message
(
const
itti_initial_ue_message
&
i
)
:
itti_msg_n2
(
i
)
{}
InitialUEMessageMsg
*
initUeMsg
;
...
...
@@ -97,7 +103,9 @@ class itti_initial_ue_message : public itti_msg_n2 {
class
itti_ul_nas_transport
:
public
itti_msg_n2
{
public:
itti_ul_nas_transport
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
ITTI_UL_NAS_TRANSPORT
,
origin
,
destination
)
{}
:
itti_msg_n2
(
ITTI_UL_NAS_TRANSPORT
,
origin
,
destination
)
{
ulNas
=
nullptr
;
}
itti_ul_nas_transport
(
const
itti_ul_nas_transport
&
i
)
:
itti_msg_n2
(
i
)
{}
UplinkNASTransportMsg
*
ulNas
;
...
...
@@ -106,8 +114,14 @@ class itti_ul_nas_transport : public itti_msg_n2 {
class
itti_dl_nas_transport
:
public
itti_msg_n2
{
public:
itti_dl_nas_transport
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
ITTI_DL_NAS_TRANSPORT
,
origin
,
destination
)
{}
itti_dl_nas_transport
(
const
itti_dl_nas_transport
&
i
)
:
itti_msg_n2
(
i
)
{}
:
itti_msg_n2
(
ITTI_DL_NAS_TRANSPORT
,
origin
,
destination
),
ran_ue_ngap_id
(
0
),
amf_ue_ngap_id
(
0
)
{}
itti_dl_nas_transport
(
const
itti_dl_nas_transport
&
i
)
:
itti_msg_n2
(
i
)
{
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
amf_ue_ngap_id
=
i
.
amf_ue_ngap_id
;
nas
=
i
.
nas
;
}
public:
uint32_t
ran_ue_ngap_id
;
...
...
@@ -119,12 +133,26 @@ class itti_initial_context_setup_request : public itti_msg_n2 {
public:
itti_initial_context_setup_request
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
INITIAL_CONTEXT_SETUP_REQUEST
,
origin
,
destination
)
{}
:
itti_msg_n2
(
INITIAL_CONTEXT_SETUP_REQUEST
,
origin
,
destination
),
ran_ue_ngap_id
(
0
),
amf_ue_ngap_id
(
0
),
pdu_session_id
(
0
)
{
is_sr
=
false
;
is_pdu_exist
=
false
;
isn2sm_avaliable
=
false
;
}
itti_initial_context_setup_request
(
const
itti_initial_context_setup_request
&
i
)
:
itti_msg_n2
(
i
)
{
is_pdu_exist
=
false
;
isn2sm_avaliable
=
false
;
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
amf_ue_ngap_id
=
i
.
amf_ue_ngap_id
;
kgnb
=
i
.
kgnb
;
nas
=
i
.
nas
;
is_sr
=
i
.
is_sr
;
n2sm
=
i
.
n2sm
;
pdu_session_id
=
i
.
pdu_session_id
;
is_pdu_exist
=
i
.
is_pdu_exist
;
isn2sm_avaliable
=
i
.
isn2sm_avaliable
;
}
uint32_t
ran_ue_ngap_id
;
long
amf_ue_ngap_id
;
...
...
@@ -141,10 +169,19 @@ class itti_pdu_session_resource_setup_request : public itti_msg_n2 {
public:
itti_pdu_session_resource_setup_request
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
PDU_SESSION_RESOURCE_SETUP_REQUEST
,
origin
,
destination
)
{}
:
itti_msg_n2
(
PDU_SESSION_RESOURCE_SETUP_REQUEST
,
origin
,
destination
),
ran_ue_ngap_id
(
0
),
amf_ue_ngap_id
(
0
),
pdu_session_id
(
0
)
{}
itti_pdu_session_resource_setup_request
(
const
itti_pdu_session_resource_setup_request
&
i
)
:
itti_msg_n2
(
i
)
{}
:
itti_msg_n2
(
i
)
{
nas
=
i
.
nas
;
n2sm
=
i
.
n2sm
;
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
amf_ue_ngap_id
=
i
.
amf_ue_ngap_id
;
pdu_session_id
=
i
.
pdu_session_id
;
}
bstring
nas
;
bstring
n2sm
;
uint32_t
ran_ue_ngap_id
;
...
...
@@ -156,11 +193,19 @@ class itti_pdu_session_resource_release_command : public itti_msg_n2 {
public:
itti_pdu_session_resource_release_command
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
PDU_SESSION_RESOURCE_RELEASE_COMMAND
,
origin
,
destination
)
{
}
:
itti_msg_n2
(
PDU_SESSION_RESOURCE_RELEASE_COMMAND
,
origin
,
destination
),
ran_ue_ngap_id
(
0
),
amf_ue_ngap_id
(
0
),
pdu_session_id
(
0
)
{}
itti_pdu_session_resource_release_command
(
const
itti_pdu_session_resource_release_command
&
i
)
:
itti_msg_n2
(
i
)
{}
:
itti_msg_n2
(
i
)
{
nas
=
i
.
nas
;
n2sm
=
i
.
n2sm
;
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
amf_ue_ngap_id
=
i
.
amf_ue_ngap_id
;
pdu_session_id
=
i
.
pdu_session_id
;
}
bstring
nas
;
bstring
n2sm
;
uint32_t
ran_ue_ngap_id
;
...
...
@@ -172,7 +217,9 @@ class itti_ue_context_release_request : public itti_msg_n2 {
public:
itti_ue_context_release_request
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
UE_CONTEXT_RELEASE_REQUEST
,
origin
,
destination
)
{}
:
itti_msg_n2
(
UE_CONTEXT_RELEASE_REQUEST
,
origin
,
destination
)
{
ueCtxRel
=
nullptr
;
}
itti_ue_context_release_request
(
const
itti_ue_context_release_request
&
i
)
:
itti_msg_n2
(
i
)
{}
UEContextReleaseRequestMsg
*
ueCtxRel
;
...
...
@@ -182,9 +229,16 @@ class itti_ue_context_release_command : public itti_msg_n2 {
public:
itti_ue_context_release_command
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
UE_CONTEXT_RELEASE_COMMAND
,
origin
,
destination
)
{}
itti_ue_context_release_command
(
const
itti_dl_nas_transport
&
i
)
:
itti_msg_n2
(
i
)
{}
:
itti_msg_n2
(
UE_CONTEXT_RELEASE_COMMAND
,
origin
,
destination
),
ran_ue_ngap_id
(
0
),
amf_ue_ngap_id
(
0
),
cause
()
{}
itti_ue_context_release_command
(
const
itti_ue_context_release_command
&
i
)
:
itti_msg_n2
(
i
)
{
ran_ue_ngap_id
=
i
.
ran_ue_ngap_id
;
amf_ue_ngap_id
=
i
.
amf_ue_ngap_id
;
cause
=
i
.
cause
;
}
public:
uint32_t
ran_ue_ngap_id
;
...
...
@@ -196,7 +250,9 @@ class itti_ue_context_release_complete : public itti_msg_n2 {
public:
itti_ue_context_release_complete
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
UE_CONTEXT_RELEASE_COMPLETE
,
origin
,
destination
)
{}
:
itti_msg_n2
(
UE_CONTEXT_RELEASE_COMPLETE
,
origin
,
destination
)
{
ueCtxRelCmpl
=
nullptr
;
}
itti_ue_context_release_complete
(
const
itti_ue_context_release_complete
&
i
)
:
itti_msg_n2
(
i
)
{}
UEContextReleaseCompleteMsg
*
ueCtxRelCmpl
;
...
...
@@ -206,7 +262,9 @@ class itti_ue_radio_capability_indication : public itti_msg_n2 {
public:
itti_ue_radio_capability_indication
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
UE_RADIO_CAP_IND
,
origin
,
destination
)
{}
:
itti_msg_n2
(
UE_RADIO_CAP_IND
,
origin
,
destination
)
{
ueRadioCap
=
nullptr
;
}
itti_ue_radio_capability_indication
(
const
itti_ue_radio_capability_indication
&
i
)
:
itti_msg_n2
(
i
)
{}
...
...
@@ -216,7 +274,9 @@ class itti_ue_radio_capability_indication : public itti_msg_n2 {
class
itti_handover_required
:
public
itti_msg_n2
{
public:
itti_handover_required
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
HANDOVER_REQUIRED
,
origin
,
destination
)
{}
:
itti_msg_n2
(
HANDOVER_REQUIRED
,
origin
,
destination
)
{
handoverReq
=
nullptr
;
}
itti_handover_required
(
const
itti_handover_required
&
i
)
:
itti_msg_n2
(
i
)
{}
HandoverRequiredMsg
*
handoverReq
;
};
...
...
@@ -235,7 +295,9 @@ class itti_paging : public itti_msg_n2 {
class
itti_handover_request_Ack
:
public
itti_msg_n2
{
public:
itti_handover_request_Ack
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
HANDOVER_REQUEST_ACK
,
origin
,
destination
)
{}
:
itti_msg_n2
(
HANDOVER_REQUEST_ACK
,
origin
,
destination
)
{
handoverrequestAck
=
nullptr
;
}
itti_handover_request_Ack
(
const
itti_handover_request_Ack
&
i
)
:
itti_msg_n2
(
i
)
{}
HandoverRequestAck
*
handoverrequestAck
;
...
...
@@ -244,7 +306,9 @@ class itti_handover_request_Ack : public itti_msg_n2 {
class
itti_handover_notify
:
public
itti_msg_n2
{
public:
itti_handover_notify
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
HANDOVER_NOTIFY
,
origin
,
destination
)
{}
:
itti_msg_n2
(
HANDOVER_NOTIFY
,
origin
,
destination
)
{
handovernotify
=
nullptr
;
}
itti_handover_notify
(
const
itti_handover_notify
&
i
)
:
itti_msg_n2
(
i
)
{}
HandoverNotifyMsg
*
handovernotify
;
};
...
...
@@ -253,7 +317,9 @@ class itti_uplink_ran_status_transfer : public itti_msg_n2 {
public:
itti_uplink_ran_status_transfer
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
itti_msg_n2
(
UPLINK_RAN_STATUS_TRANSFER
,
origin
,
destination
)
{}
:
itti_msg_n2
(
UPLINK_RAN_STATUS_TRANSFER
,
origin
,
destination
)
{
uplinkrantransfer
=
nullptr
;
}
itti_uplink_ran_status_transfer
(
const
itti_uplink_ran_status_transfer
&
i
)
:
itti_msg_n2
(
i
)
{}
UplinkRANStatusTransfer
*
uplinkrantransfer
;
...
...
src/ngap/ngapMsgs/Paging.cpp
View file @
b5fc3a28
...
...
@@ -214,14 +214,14 @@ void PagingMsg::setTAIListForPaging(const std::vector<struct Tai_s> list) {
//------------------------------------------------------------------------------
void
PagingMsg
::
getTAIListForPaging
(
std
::
vector
<
struct
Tai_s
>&
list
)
{
if
(
!
taIListForPaging
)
return
;
TAI
*
tailist
;
int
sizeoftailist
;
TAI
*
tailist
=
nullptr
;
int
sizeoftailist
=
0
;
taIListForPaging
->
getTAIListForPaging
(
tailist
,
sizeoftailist
);
for
(
int
i
=
0
;
i
<
sizeoftailist
;
i
++
)
{
Tai_t
tai
;
PlmnId
*
plmnid
;
TAC
*
tac
;
Tai_t
tai
=
{}
;
PlmnId
*
plmnid
=
nullptr
;
TAC
*
tac
=
nullptr
;
tailist
[
i
].
getTAI
(
plmnid
,
tac
);
plmnid
->
getMcc
(
tai
.
mcc
);
plmnid
->
getMnc
(
tai
.
mnc
);
...
...
src/ngap/ngapMsgs/Paging.hpp
View file @
b5fc3a28
...
...
@@ -60,6 +60,11 @@ class PagingMsg {
UEPagingIdentity
*
uePagingIdentity
;
TAIListForPaging
*
taIListForPaging
;
// Paging DRX
// Paging Priority
// UE Radio Capability for Paging
// Paging Origin
// Assistance Data for Paging
};
}
// namespace ngap
...
...
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