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
339ac227
Commit
339ac227
authored
Jan 16, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix issue when decoding unknown IEI
parent
93ec85ea
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
99 additions
and
15 deletions
+99
-15
src/nas/msgs/AuthenticationResult.cpp
src/nas/msgs/AuthenticationResult.cpp
+1
-0
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+34
-2
src/nas/msgs/RegistrationComplete.cpp
src/nas/msgs/RegistrationComplete.cpp
+0
-7
src/nas/msgs/RegistrationRequest.cpp
src/nas/msgs/RegistrationRequest.cpp
+51
-5
src/nas/msgs/SecurityModeCommand.cpp
src/nas/msgs/SecurityModeCommand.cpp
+13
-1
No files found.
src/nas/msgs/AuthenticationResult.cpp
View file @
339ac227
...
...
@@ -152,6 +152,7 @@ int AuthenticationResult::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
default:
{
Logger
::
nas_mm
().
warn
(
"Unknown IEI 0x%x, stop decoding..."
,
octet
);
// Stop decoding
...
...
src/nas/msgs/RegistrationAccept.cpp
View file @
339ac227
...
...
@@ -666,8 +666,10 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
decoded_size
+=
ie_5gs_registration_result
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
false
);
Logger
::
nas_mm
().
debug
(
"Decoded_size(%d)"
,
decoded_size
);
uint8_t
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"First option IEI (0x%x)"
,
octet
);
bool
flag
=
false
;
while
((
octet
!=
0x0
))
{
switch
((
octet
&
0xf0
)
>>
4
)
{
case
kIeiMicoIndication
:
{
...
...
@@ -714,6 +716,10 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
default:
{
flag
=
true
;
}
}
switch
(
octet
)
{
...
...
@@ -726,6 +732,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiNSSAIAllowed
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiNSSAIAllowed
);
NSSAI
ie_allowed_nssai_tmp
=
{};
...
...
@@ -735,6 +742,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x11
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x11)"
);
Rejected_NSSAI
ie_rejected_nssai_tmp
=
{};
...
...
@@ -745,6 +753,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiNSSAIConfigured
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiNSSAIConfigured
);
NSSAI
ie_configured_nssai_tmp
=
{};
...
...
@@ -754,6 +763,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIei5gsNetworkFeatureSupport
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x21)"
);
_5GS_Network_Feature_Support
ie_5gs_network_feature_support_tmp
=
{};
...
...
@@ -765,6 +775,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiPduSessionStatus
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiPduSessionStatus
);
PDUSessionStatus
ie_PDU_session_status_tmp
=
{};
...
...
@@ -775,6 +786,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiPduSessionReactivationResult
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiPduSessionReactivationResult
);
...
...
@@ -788,6 +800,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x72
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x72)"
);
PDU_Session_Reactivation_Result_Error_Cause
...
...
@@ -821,6 +834,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiGprsTimer2Non3gppDeregistration
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiGprsTimer2Non3gppDeregistration
);
...
...
@@ -833,6 +847,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiGprsTimer2T3502
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiGprsTimer2T3502
);
GprsTimer2
ie_T3502_value_tmp
(
kIeiGprsTimer2T3502
);
...
...
@@ -842,6 +857,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x73
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x73)"
);
SOR_Transparent_Container
ie_sor_transparent_container_tmp
=
{};
...
...
@@ -852,6 +868,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x78
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x78)"
);
EapMessage
ie_eap_message_tmp
=
{};
...
...
@@ -861,6 +878,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIei5gsDrxParameters
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x%x)"
,
kIei5gsDrxParameters
);
_5GS_DRX_Parameters
ie_negotiated_drx_parameters_tmp
=
{};
...
...
@@ -871,6 +889,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x60
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x60)"
);
EpsBearerContextStatus
ie_eps_bearer_context_status_tmp
=
{};
...
...
@@ -881,6 +900,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x6E
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x6E)"
);
Extended_DRX_Parameters
ie_extended_drx_parameters_tmp
=
{};
...
...
@@ -891,6 +911,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiGprsTimer3T3447
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiGprsTimer3T3447
);
GprsTimer3
ie_T3447_value_tmp
(
kIeiGprsTimer3T3447
);
...
...
@@ -900,6 +921,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiGprsTimer3T3348
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiGprsTimer3T3348
);
GprsTimer3
ie_T3448_value_tmp
(
kIeiGprsTimer3T3348
);
...
...
@@ -909,6 +931,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIeiGprsTimer3T3324
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiGprsTimer3T3324
);
GprsTimer3
ie_T3324_value_tmp
(
kIeiGprsTimer3T3324
);
...
...
@@ -918,6 +941,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x67
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x67)"
);
UeRadioCapabilityId
ie_ue_radio_capability_id_tmp
=
{};
...
...
@@ -928,6 +952,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x39
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x39)"
);
NSSAI
ie_pending_nssai_tmp
=
{};
...
...
@@ -937,6 +962,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x4A
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x4A)"
);
PlmnList
ie_equivalent_plmns_tmp
=
{};
...
...
@@ -946,6 +972,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
kIei5gsTrackingAreaIdentityList
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIei5gsTrackingAreaIdentityList
);
...
...
@@ -958,8 +985,13 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
}
break
;
default:
{
break
;
}
// TODO:
if
(
flag
)
{
Logger
::
nas_mm
().
warn
(
"Unknown IEI 0x%x, stop decoding..."
,
octet
);
// Stop decoding
octet
=
0x00
;
}
}
break
;
}
}
Logger
::
nas_mm
().
debug
(
...
...
src/nas/msgs/RegistrationComplete.cpp
View file @
339ac227
...
...
@@ -19,13 +19,6 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "RegistrationComplete.hpp"
#include "3gpp_24.501.hpp"
...
...
src/nas/msgs/RegistrationRequest.cpp
View file @
339ac227
...
...
@@ -643,6 +643,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_uplink_data_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_uplink_data_status is not available"
);
}
else
{
...
...
@@ -654,6 +655,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_PDU_session_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_PDU_session_status is not available"
);
}
else
{
...
...
@@ -665,6 +667,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_MICO_indication
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_MICO_indication is not available"
);
}
else
{
...
...
@@ -676,6 +679,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_ue_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_ue_status is not available"
);
}
else
{
...
...
@@ -687,6 +691,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_additional_guti
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_additional_guti- is not available"
);
}
else
{
...
...
@@ -698,6 +703,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_allowed_PDU_session_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_allowed_PDU_session_status is not available"
);
}
else
{
...
...
@@ -709,6 +715,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_ues_usage_setting
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_ues_usage_setting is not available"
);
}
else
{
...
...
@@ -720,6 +727,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_5gs_drx_parameters
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_5gs_drx_parameters is not available"
);
}
else
{
...
...
@@ -731,6 +739,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_eps_nas_message_container
)
{
Logger
::
nas_mm
().
warn
(
"IE ie_eps_nas_message_container is not available"
);
}
else
{
...
...
@@ -742,6 +751,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_ladn_indication
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_ladn_indication is not available"
);
}
else
{
...
...
@@ -753,6 +763,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_payload_container_type
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_payload_container_type is not available"
);
}
else
{
...
...
@@ -764,6 +775,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_payload_container
or
!
ie_payload_container_type
)
{
Logger
::
nas_mm
().
warn
(
"IE ie_payload_container is not available"
);
}
else
{
...
...
@@ -776,6 +788,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_network_slicing_indication
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_network_slicing_indication is not available"
);
}
else
{
...
...
@@ -787,6 +800,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_5gs_update_type
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_5gs_update_type is not available"
);
}
else
{
...
...
@@ -810,6 +824,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
return
0
;
}
}
if
(
!
ie_eps_bearer_context_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_eps_bearer_context_status is not available"
);
}
else
{
...
...
@@ -823,7 +838,7 @@ int RegistrationRequest::Encode(uint8_t* buf, int len) {
}
Logger
::
nas_mm
().
debug
(
"encoded RegistrationRequest message len(%d)"
,
encoded_size
);
return
1
;
return
encoded_size
;
}
//------------------------------------------------------------------------------
...
...
@@ -850,8 +865,10 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
// ie_ngKSI
decoded_size
+=
ie_5gs_mobile_identity
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
false
);
uint8_t
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"First option IEI 0x%x"
,
octet
);
bool
flag
=
false
;
while
((
octet
!=
0x0
))
{
switch
((
octet
&
0xf0
)
>>
4
)
{
case
0xC
:
{
...
...
@@ -866,6 +883,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0xB
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0xB)"
);
MicoIndication
ie_MICO_indication_tmp
=
{};
...
...
@@ -876,6 +894,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiPayloadContainerType
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x8: Payload Container Type"
);
PayloadContainerType
ie_payload_container_type_tmp
=
{};
...
...
@@ -886,6 +905,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x9
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x9)"
);
NetworkSlicingIndication
ie_network_slicing_indication_tmp
=
{};
...
...
@@ -896,6 +916,10 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
default:
{
flag
=
true
;
}
}
switch
(
octet
)
{
...
...
@@ -913,6 +937,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x2E
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x2E)"
);
UESecurityCapability
ie_ue_security_capability_tmp
=
{};
...
...
@@ -927,6 +952,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiNSSAIRequested
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI %d"
,
kIeiNSSAIRequested
);
NSSAI
ie_requested_NSSAI_tmp
=
{};
...
...
@@ -936,6 +962,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIei5gsTrackingAreaIdentity
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIei5gsTrackingAreaIdentity
);
...
...
@@ -948,6 +975,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x17
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x17)"
);
UENetworkCapability
ie_s1_ue_network_capability_tmp
=
{};
...
...
@@ -958,6 +986,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiUplinkDataStatus
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x40)"
);
UplinkDataStatus
ie_uplink_data_status_tmp
=
{};
...
...
@@ -967,8 +996,8 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
std
::
optional
<
UplinkDataStatus
>
(
ie_uplink_data_status_tmp
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiPduSessionStatus
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiPduSessionStatus
);
PDUSessionStatus
ie_PDU_session_status_tmp
;
...
...
@@ -979,6 +1008,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiUeStatus
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x2B)"
);
UEStatus
ie_ue_status_tmp
=
{};
...
...
@@ -988,6 +1018,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x77
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x77)"
);
_5GSMobileIdentity
ie_additional_guti_tmp
=
{};
...
...
@@ -997,8 +1028,8 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
std
::
optional
<
_5GSMobileIdentity
>
(
ie_additional_guti_tmp
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x25
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x25)"
);
AllowedPDUSessionStatus
ie_allowed_PDU_session_status_tmp
=
{};
...
...
@@ -1008,8 +1039,8 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
ie_allowed_PDU_session_status_tmp
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiUeUsageSetting
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiUeUsageSetting
);
UEUsageSetting
ie_ues_usage_setting_tmp
=
{};
...
...
@@ -1020,6 +1051,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIei5gsDrxParameters
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x51: 5GS DRX Parameters"
);
_5GS_DRX_Parameters
ie_5gs_drx_parameters_tmp
=
{};
...
...
@@ -1030,6 +1062,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiEpsNasMessageContainer
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x70: EPS NAS Message Container "
);
EPS_NAS_Message_Container
ie_eps_nas_message_container_tmp
=
{};
...
...
@@ -1040,6 +1073,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x74
:
{
// TODO: verify IEI value (spec Ox79)
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x74)"
);
LadnIndication
ie_ladn_indication_tmp
=
{};
...
...
@@ -1050,6 +1084,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
kIeiPayloadContainer
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x7B: Payload Container"
);
Payload_Container
ie_payload_container_tmp
=
{};
...
...
@@ -1061,6 +1096,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x53
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x53)"
);
_5gsUpdateType
ie_5gs_update_type_tmp
=
{};
...
...
@@ -1071,6 +1107,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x71
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x71)"
);
NasMessageContainer
ie_nas_message_container_tmp
=
{};
...
...
@@ -1081,6 +1118,7 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
case
0x60
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x71)"
);
EpsBearerContextStatus
ie_eps_bearer_context_status_tmp
=
{};
...
...
@@ -1091,7 +1129,15 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
// TODO: Default
default:
{
// TODO:
if
(
flag
)
{
Logger
::
nas_mm
().
warn
(
"Unknown IEI 0x%x, stop decoding..."
,
octet
);
// Stop decoding
octet
=
0x00
;
}
}
break
;
}
}
Logger
::
nas_mm
().
debug
(
...
...
src/nas/msgs/SecurityModeCommand.cpp
View file @
339ac227
...
...
@@ -264,6 +264,7 @@ int SecurityModeCommand::Decode(uint8_t* buf, int len) {
Logger
::
nas_mm
().
debug
(
"Decoded_size (%d)"
,
decoded_size
);
uint8_t
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"First option IEI (0x%x)"
,
octet
);
bool
flag
=
false
;
while
((
octet
!=
0x0
))
{
switch
((
octet
&
0xf0
)
>>
4
)
{
case
kIeiImeisvRequest
:
{
...
...
@@ -278,6 +279,9 @@ int SecurityModeCommand::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
default:
{
flag
=
true
;
}
}
switch
(
octet
)
{
...
...
@@ -353,7 +357,15 @@ int SecurityModeCommand::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
// TODO: Default
default:
{
// TODO:
if
(
flag
)
{
Logger
::
nas_mm
().
warn
(
"Unknown IEI 0x%x, stop decoding..."
,
octet
);
// Stop decoding
octet
=
0x00
;
}
}
break
;
}
}
Logger
::
nas_mm
().
debug
(
...
...
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