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
4ad2b4f6
Commit
4ad2b4f6
authored
Oct 19, 2022
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code cleanup for 5GS_Registration_Result
parent
e93d4aff
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
225 additions
and
141 deletions
+225
-141
src/nas/ies/_5GS_Registration_Result.cpp
src/nas/ies/_5GS_Registration_Result.cpp
+78
-58
src/nas/ies/_5GS_Registration_Result.hpp
src/nas/ies/_5GS_Registration_Result.hpp
+10
-12
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+22
-27
src/nas/msgs/RegistrationAccept.hpp
src/nas/msgs/RegistrationAccept.hpp
+114
-44
src/nas/msgs/RegistrationReject.cpp
src/nas/msgs/RegistrationReject.cpp
+1
-0
No files found.
src/nas/ies/_5GS_Registration_Result.cpp
View file @
4ad2b4f6
...
...
@@ -19,44 +19,42 @@
* contact@openairinterface.org
*/
/*! \file _5GS_Registration_Result.cpp
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "_5GS_Registration_Result.hpp"
#include "3gpp_24.501.hpp"
#include "common_defs.h"
#include "logger.hpp"
using
namespace
nas
;
//------------------------------------------------------------------------------
_5GS_Registration_Result
::
_5GS_Registration_Result
(
uint8_t
iei
)
{
_iei
=
iei
;
Emergency
=
false
;
NSSAA
=
false
;
SMS
=
false
;
_value
=
0
;
_iei
=
iei
;
length
=
k5gsRegistrationResultLength
;
emergency_registered
=
false
;
NSSAA_performed
=
false
;
SMS_allowed
=
false
;
_value
=
0
;
}
//------------------------------------------------------------------------------
_5GS_Registration_Result
::
_5GS_Registration_Result
(
const
uint8_t
iei
,
bool
emergency
,
bool
nssaa
,
bool
sms
,
uint8_t
value
)
{
_iei
=
iei
;
Emergency
=
emergency
;
NSSAA
=
nssaa
;
SMS
=
sms
;
_value
=
value
;
_iei
=
iei
;
length
=
k5gsRegistrationResultLength
;
emergency_registered
=
emergency
;
NSSAA_performed
=
nssaa
;
SMS_allowed
=
sms
;
_value
=
value
;
}
//------------------------------------------------------------------------------
_5GS_Registration_Result
::
_5GS_Registration_Result
()
{
_iei
=
0
;
Emergency
=
false
;
NSSAA
=
false
;
SMS
=
false
;
_value
=
0
;
_iei
=
0
;
length
=
k5gsRegistrationResultLength
;
emergency_registered
=
false
;
NSSAA_performed
=
false
;
SMS_allowed
=
false
;
_value
=
0
;
}
_5GS_Registration_Result
::~
_5GS_Registration_Result
()
{}
...
...
@@ -70,60 +68,82 @@ uint8_t _5GS_Registration_Result::getValue() {
return
_value
;
}
//------------------------------------------------------------------------------
void
_5GS_Registration_Result
::
set
(
const
uint8_t
iei
,
bool
emergency
,
bool
nssaa
,
bool
sms
,
uint8_t
value
)
{
_iei
=
iei
;
length
=
k5gsRegistrationResultLength
;
emergency_registered
=
emergency
;
NSSAA_performed
=
nssaa
;
SMS_allowed
=
sms
;
_value
=
value
;
}
//------------------------------------------------------------------------------
int
_5GS_Registration_Result
::
encode2Buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"encoding _5GS_Registration_Result iei(0x%x)"
,
_iei
);
if
(
len
<
3
)
{
Logger
::
nas_mm
().
error
(
"len is less than 3"
);
return
0
;
Logger
::
nas_mm
().
debug
(
"Encoding _5GS_Registration_Result"
);
if
(
len
<
k5gsRegistrationResultLength
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the length of this IE (%d octet)"
,
k5gsRegistrationResultLength
);
return
KEncodeDecodeError
;
}
uint8_t
octet
=
0
;
int
encoded_size
=
0
;
octet
=
0x00
|
(
Emergency
<<
5
)
|
(
NSSAA
<<
4
)
|
(
SMS
<<
3
)
|
(
_value
&
0x07
);
if
(
_iei
)
{
*
(
buf
+
encoded_size
)
=
_iei
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
1
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
octet
;
encoded_size
++
;
Logger
::
nas_mm
().
debug
(
"encoded _5GS_Registration_Result _value(0x%x),iei(0x%x)"
,
*
(
buf
+
encoded_size
-
1
),
_iei
);
}
else
{
*
(
buf
+
encoded_size
)
=
1
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
octet
;
encoded_size
++
;
ENCODE_U8
(
buf
+
encoded_size
,
_iei
,
encoded_size
);
// IEI
}
// Length
ENCODE_U8
(
buf
+
encoded_size
,
length
,
encoded_size
);
// Octet 3
uint8_t
octet
=
0
;
octet
=
0x00
|
(
emergency_registered
<<
5
)
|
(
NSSAA_performed
<<
4
)
|
(
SMS_allowed
<<
3
)
|
(
_value
&
0x07
);
ENCODE_U8
(
buf
+
encoded_size
,
octet
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"encoded _5GS_Registration_Result len(%d)"
,
encoded_size
);
"Encoded _5GS_Registration_Result, value 0x%x, IEI 0x%x"
,
_value
,
_iei
);
Logger
::
nas_mm
().
debug
(
"Encoded _5GS_Registration_Result (len %d)"
,
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
_5GS_Registration_Result
::
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"decoding _5GS_Registration_Result iei(0x%x)"
,
*
buf
);
Logger
::
nas_mm
().
debug
(
"Decoding _5GS_Registration_Result"
);
if
(
len
<
k5gsRegistrationResultLength
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the length of this IE (%d octet)"
,
k5gsRegistrationResultLength
);
return
KEncodeDecodeError
;
}
int
decoded_size
=
0
;
if
(
is_option
)
{
_iei
=
*
buf
;
decoded_size
++
;
DECODE_U8
(
buf
+
decoded_size
,
_iei
,
decoded_size
);
// IEI
}
// Length
DECODE_U8
(
buf
+
decoded_size
,
length
,
decoded_size
);
// Octet 3
uint8_t
octet
=
0
;
// length = *(buf + decoded_size);
decoded_size
++
;
octet
=
*
(
buf
+
decoded_size
);
decoded_size
++
;
Emergency
=
(
octet
&
0x20
)
>>
5
;
NSSAA
=
(
octet
&
0x10
)
>>
4
;
SMS
=
(
octet
&
0x08
)
>>
3
;
_value
=
octet
&
0x07
;
DECODE_U8
(
buf
+
decoded_size
,
octet
,
decoded_size
);
emergency_registered
=
(
octet
&
0x20
)
>>
5
;
NSSAA_performed
=
(
octet
&
0x10
)
>>
4
;
SMS_allowed
=
(
octet
&
0x08
)
>>
3
;
_value
=
octet
&
0x07
;
Logger
::
nas_mm
().
debug
(
"decoded _5GS_Registration_Result Emergency(0x%x) NSSAA(0x%x) SMS(0x%x) "
"_value(0x%x)"
,
Emergency
,
NSSAA
,
SMS
,
_value
);
"Decoded _5GS_Registration_Result, Emergency Registered 0x%x, NSSAA "
"Performed 0x%x, SMS Allowed 0x%x, "
"Value 0x%x"
,
emergency_registered
,
NSSAA_performed
,
SMS_allowed
,
_value
);
Logger
::
nas_mm
().
debug
(
"
decoded _5GS_Registration_Result len(
%d)"
,
decoded_size
);
"
Decoded _5GS_Registration_Result (len
%d)"
,
decoded_size
);
return
decoded_size
;
}
src/nas/ies/_5GS_Registration_Result.hpp
View file @
4ad2b4f6
...
...
@@ -19,18 +19,13 @@
* contact@openairinterface.org
*/
/*! \file _5GS_Registration_Result.hpp
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef ___5GS_Registration_Result_H_
#define ___5GS_Registration_Result_H_
#ifndef _5GS_REGISTRATION_RESULT_H_
#define _5GS_REGISTRATION_RESULT_H_
#include <stdint.h>
constexpr
uint8_t
k5gsRegistrationResultLength
=
3
;
namespace
nas
{
class
_5GS_Registration_Result
{
...
...
@@ -44,12 +39,15 @@ class _5GS_Registration_Result {
int
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
void
setValue
(
uint8_t
value
);
uint8_t
getValue
();
void
set
(
const
uint8_t
iei
,
bool
emergency
,
bool
nssaa
,
bool
sms
,
uint8_t
value
);
private:
uint8_t
_iei
;
bool
Emergency
;
bool
NSSAA
;
bool
SMS
;
uint8_t
length
;
bool
emergency_registered
;
bool
NSSAA_performed
;
bool
SMS_allowed
;
uint8_t
_value
;
};
}
// namespace nas
...
...
src/nas/msgs/RegistrationAccept.cpp
View file @
4ad2b4f6
...
...
@@ -35,9 +35,8 @@
using
namespace
nas
;
//------------------------------------------------------------------------------
RegistrationAccept
::
RegistrationAccept
()
{
plain_header
=
nullptr
;
ie_5gs_registration_result
=
nullptr
;
RegistrationAccept
::
RegistrationAccept
()
:
NasMmPlainHeader
(
EPD_5GS_MM_MSG
,
REGISTRATION_ACCEPT
)
{
ie_5g_guti
=
nullptr
;
ie_equivalent_plmns
=
nullptr
;
ie_allowed_nssai
=
nullptr
;
...
...
@@ -72,16 +71,13 @@ RegistrationAccept::~RegistrationAccept() {}
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setHeader
(
uint8_t
security_header_type
)
{
plain_header
=
new
NasMmPlainHeader
();
plain_header
->
setHeader
(
EPD_5GS_MM_MSG
,
security_header_type
,
REGISTRATION_ACCEPT
);
NasMmPlainHeader
::
SetSecurityHeaderType
(
security_header_type
);
}
//------------------------------------------------------------------------------
void
RegistrationAccept
::
set_5GS_Registration_Result
(
bool
emergency
,
bool
nssaa
,
bool
sms
,
uint8_t
value
)
{
ie_5gs_registration_result
=
new
_5GS_Registration_Result
(
0x00
,
emergency
,
nssaa
,
sms
,
value
);
ie_5gs_registration_result
.
set
(
0x00
,
emergency
,
nssaa
,
sms
,
value
);
}
//------------------------------------------------------------------------------
...
...
@@ -271,24 +267,24 @@ void RegistrationAccept::setTaiList(std::vector<p_tai_t> tai_list) {
//------------------------------------------------------------------------------
int
RegistrationAccept
::
encode2Buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Encoding RegistrationAccept message"
);
int
encoded_size
=
0
;
if
(
!
plain_header
)
{
Logger
::
nas_mm
().
error
(
"Mandatory IE missing Header"
);
return
0
;
int
encoded_size
=
0
;
int
encoded_ie_size
=
0
;
// Header
if
((
encoded_ie_size
=
NasMmPlainHeader
::
encode2Buffer
(
buf
,
len
))
==
KEncodeDecodeError
)
{
Logger
::
nas_mm
().
error
(
"Encoding NAS Header error"
);
return
KEncodeDecodeError
;
}
if
(
!
(
plain_header
->
encode2Buffer
(
buf
,
len
)))
return
0
;
encoded_size
+=
3
;
if
(
!
ie_5gs_registration_result
)
{
Logger
::
nas_mm
().
warn
(
"IE ie_5gs_registration_result is not available"
);
encoded_size
+=
encoded_ie_size
;
if
(
int
size
=
ie_5gs_registration_result
.
encode2Buffer
(
buf
+
encoded_size
,
len
-
encoded_size
))
{
encoded_size
+=
size
;
}
else
{
if
(
int
size
=
ie_5gs_registration_result
->
encode2Buffer
(
buf
+
encoded_size
,
len
-
encoded_size
))
{
encoded_size
+=
size
;
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_5gs_registration_result error"
);
return
0
;
}
Logger
::
nas_mm
().
error
(
"Encoding ie_5gs_registration_result error"
);
return
0
;
}
if
(
!
ie_5g_guti
)
{
Logger
::
nas_mm
().
warn
(
"IE ie_5g_guti is not available"
);
}
else
{
...
...
@@ -616,10 +612,9 @@ int RegistrationAccept::encode2Buffer(uint8_t* buf, int len) {
int
RegistrationAccept
::
decodeFromBuffer
(
NasMmPlainHeader
*
header
,
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Decoding RegistrationAccept message"
);
int
decoded_size
=
3
;
plain_header
=
header
;
ie_5gs_registration_result
=
new
_5GS_Registration_Result
();
decoded_size
+=
ie_5gs_registration_result
->
decodeFromBuffer
(
int
decoded_size
=
3
;
decoded_size
+=
ie_5gs_registration_result
.
decodeFromBuffer
(
buf
+
decoded_size
,
len
-
decoded_size
,
false
);
Logger
::
nas_mm
().
debug
(
"Decoded_size(%d)"
,
decoded_size
);
uint8_t
octet
=
*
(
buf
+
decoded_size
);
...
...
src/nas/msgs/RegistrationAccept.hpp
View file @
4ad2b4f6
...
...
@@ -19,31 +19,30 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _RegistrationAccept_H_
#define _RegistrationAccept_H_
#ifndef _REGISTRATION_ACCEPT_H_
#define _REGISTRATION_ACCEPT_H_
#include "NasIeHeader.hpp"
namespace
nas
{
class
RegistrationAccept
{
class
RegistrationAccept
:
public
NasMmPlainHeader
{
public:
RegistrationAccept
();
~
RegistrationAccept
();
void
setHeader
(
uint8_t
security_header_type
);
void
getSecurityHeaderType
(
uint8_t
security_header_type
);
// TODO
bool
verifyHeader
();
// TODO
int
encode2Buffer
(
uint8_t
*
buf
,
int
len
);
int
decodeFromBuffer
(
NasMmPlainHeader
*
header
,
uint8_t
*
buf
,
int
len
);
void
setHeader
(
uint8_t
security_header_type
);
void
setSOR_Transparent_Container
(
uint8_t
header
,
uint8_t
*
value
);
void
set_5GS_Registration_Result
(
bool
emergency
,
bool
nssaa
,
bool
sms
,
uint8_t
value
);
/*** belongs to _5GSMobileIdentity**/
// TODO: Get
// 5GSMobileIdentity
void
setSUCI_SUPI_format_IMSI
(
const
string
mcc
,
const
string
mnc
,
const
string
routingInd
,
uint8_t
protection_sch_id
,
const
string
msin
);
...
...
@@ -55,66 +54,137 @@ class RegistrationAccept {
const
string
amfSetId
,
const
string
amfPointer
,
const
uint32_t
tmsi
);
void
setIMEI_IMEISV
();
void
set5G_S_TMSI
();
/*** belongs to _5GSMobileIdentity**/
// TODO: Get
// Equivalent PLMNs
void
setEquivalent_PLMNs
(
uint8_t
MNC_MCC1
,
uint8_t
MNC_MCC2
,
uint8_t
MNC_MCC3
);
// TODO: Get
void
setTaiList
(
std
::
vector
<
p_tai_t
>
tai_list
);
// TODO: Get
void
setALLOWED_NSSAI
(
std
::
vector
<
struct
SNSSAI_s
>
nssai
);
// TODO: Get
void
setRejected_NSSAI
(
uint8_t
cause
,
uint8_t
value
);
// TODO: Get
void
setCONFIGURED_NSSAI
(
std
::
vector
<
struct
SNSSAI_s
>
nssai
);
// TODO: Get
void
set_5GS_Network_Feature_Support
(
uint8_t
value
,
uint8_t
value2
);
// TODO: Get
void
setPDU_session_status
(
uint16_t
value
);
// TODO: Get
void
setPDU_session_reactivation_result
(
uint16_t
value
);
// TODO: Get
void
setPDU_session_reactivation_result_error_cause
(
uint8_t
session_id
,
uint8_t
value
);
// TODO: Get
// TODO: LADN information
void
setMICO_Indication
(
bool
sprti
,
bool
raai
);
// TODO: Get
void
setNetwork_Slicing_Indication
(
bool
dcni
,
bool
nssci
);
// TODO: Get
// TODO: Service Area List
void
setT3512_Value
(
uint8_t
unit
,
uint8_t
value
);
// TODO: Get
void
setNon_3GPP_de_registration_timer_value
(
uint8_t
value
);
// TODO: Get
void
setT3502_value
(
uint8_t
value
);
// TODO: Get
// TODO: Emergency number list
// TODO: Extended emergency number list
void
setSOR_Transparent_Container
(
uint8_t
header
,
uint8_t
*
value
);
// TODO: Get
void
setEAP_Message
(
bstring
eap
);
// TODO: Get
void
setNSSAI_Inclusion_Mode
(
uint8_t
value
);
// TODO: Get
// TODO: Operator-defined access category definitions
void
set_5GS_DRX_arameters
(
uint8_t
value
);
// TODO: Get
void
setNon_3GPP_NW_Provided_Policies
(
uint8_t
value
);
// TODO: Get
void
setEPS_Bearer_Context_Status
(
uint16_t
value
);
// TODO: Get
void
setExtended_DRX_Parameters
(
uint8_t
paging_time
,
uint8_t
value
);
// TODO: Get
void
setT3447_Value
(
uint8_t
unit
,
uint8_t
value
);
// TODO: Get
void
setT3448_Value
(
uint8_t
unit
,
uint8_t
value
);
// TODO: Get
void
setT3324_Value
(
uint8_t
unit
,
uint8_t
value
);
// TODO: Get
void
setUE_Radio_Capability_ID
(
uint8_t
value
);
// TODO: Get
void
setPending_NSSAI
(
std
::
vector
<
struct
SNSSAI_s
>
nssai
);
void
setTaiList
(
std
::
vector
<
p_tai_t
>
tai_list
);
// TODO: Get
public:
NasMmPlainHeader
*
plain_header
;
_5GS_Registration_Result
*
ie_5gs_registration_result
;
_5GSMobileIdentity
*
ie_5g_guti
;
PLMN_List
*
ie_equivalent_plmns
;
NSSAI
*
ie_allowed_nssai
;
Rejected_NSSAI
*
ie_rejected_nssai
;
NSSAI
*
ie_configured_nssai
;
_5GS_Network_Feature_Support
*
ie_5gs_network_feature_support
;
PDUSessionStatus
*
ie_PDU_session_status
;
PDU_Session_Reactivation_Result
*
ie_pdu_session_reactivation_result
;
_5GS_Registration_Result
ie_5gs_registration_result
;
// Mandatory
_5GSMobileIdentity
*
ie_5g_guti
;
// Optional
PLMN_List
*
ie_equivalent_plmns
;
// Optional
_5GSTrackingAreaIdList
*
ie_tai_list
;
// Optional
NSSAI
*
ie_allowed_nssai
;
// Optional
Rejected_NSSAI
*
ie_rejected_nssai
;
// Optional
NSSAI
*
ie_configured_nssai
;
// Optional
_5GS_Network_Feature_Support
*
ie_5gs_network_feature_support
;
// Optional
PDUSessionStatus
*
ie_PDU_session_status
;
// Optional
PDU_Session_Reactivation_Result
*
ie_pdu_session_reactivation_result
;
// Optional
PDU_Session_Reactivation_Result_Error_Cause
*
ie_pdu_session_reactivation_result_error_cause
;
MICOIndication
*
ie_MICO_indicationl
;
NetworkSlicingIndication
*
ie_network_slicing_indication
;
GPRS_Timer_3
*
ie_T3512_value
;
GPRS_Timer_2
*
ie_Non_3GPP_de_registration_timer_value
;
GPRS_Timer_2
*
ie_T3502_value
;
SOR_Transparent_Container
*
ie_sor_transparent_container
;
EAP_Message
*
ie_eap_message
;
NSSAI_Inclusion_Mode
*
ie_nssai_inclusion_mode
;
_5GS_DRX_Parameters
*
ie_negotiated_drx_parameters
;
Non_3GPP_NW_Provided_Policies
*
ie_non_3gpp_nw_policies
;
EPS_Bearer_Context_Status
*
ie_eps_bearer_context_status
;
Extended_DRX_Parameters
*
ie_extended_drx_parameters
;
GPRS_Timer_3
*
ie_T3447_value
;
GPRS_Timer_3
*
ie_T3448_value
;
GPRS_Timer_3
*
ie_T3324_value
;
UE_Radio_Capability_ID
*
ie_ue_radio_capability_id
;
NSSAI
*
ie_pending_nssai
;
_5GSTrackingAreaIdList
*
ie_tai_list
;
ie_pdu_session_reactivation_result_error_cause
;
// Optional
// TODO: LADN information
MICOIndication
*
ie_MICO_indicationl
;
// Optional
NetworkSlicingIndication
*
ie_network_slicing_indication
;
// Optional
// TODO: Service Area List
GPRS_Timer_3
*
ie_T3512_value
;
// Optional
GPRS_Timer_2
*
ie_Non_3GPP_de_registration_timer_value
;
// Optional
GPRS_Timer_2
*
ie_T3502_value
;
// Optional
// TODO: Emergency number list
// TODO: Extended emergency number list
SOR_Transparent_Container
*
ie_sor_transparent_container
;
// Optional
EAP_Message
*
ie_eap_message
;
// Optional
NSSAI_Inclusion_Mode
*
ie_nssai_inclusion_mode
;
// Optional
// TODO: Operator-defined access category definitions
_5GS_DRX_Parameters
*
ie_negotiated_drx_parameters
;
// Optional
Non_3GPP_NW_Provided_Policies
*
ie_non_3gpp_nw_policies
;
// Optional
EPS_Bearer_Context_Status
*
ie_eps_bearer_context_status
;
// Optional
Extended_DRX_Parameters
*
ie_extended_drx_parameters
;
// Optional
GPRS_Timer_3
*
ie_T3447_value
;
// Optional
GPRS_Timer_3
*
ie_T3448_value
;
// Optional
GPRS_Timer_3
*
ie_T3324_value
;
// Optional
UE_Radio_Capability_ID
*
ie_ue_radio_capability_id
;
// Which Release 16.x.x?
NSSAI
*
ie_pending_nssai
;
// Which Release 16.x.x?
};
}
// namespace nas
...
...
src/nas/msgs/RegistrationReject.cpp
View file @
4ad2b4f6
...
...
@@ -82,6 +82,7 @@ int RegistrationReject::encode2Buffer(uint8_t* buf, int len) {
return
KEncodeDecodeError
;
}
encoded_size
+=
encoded_ie_size
;
// 5GMM Cause
if
(
int
size
=
ie_5gmm_cause
.
encode2Buffer
(
buf
+
encoded_size
,
len
-
encoded_size
))
{
...
...
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