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
b6cd3332
Commit
b6cd3332
authored
Jan 12, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update 5GS Network Feature Support/PDU Session Reactivation Result
parent
6017dac1
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
186 additions
and
160 deletions
+186
-160
src/nas/common/Ie_Const.hpp
src/nas/common/Ie_Const.hpp
+3
-2
src/nas/ies/PDU_Session_Reactivation_Result.cpp
src/nas/ies/PDU_Session_Reactivation_Result.cpp
+62
-59
src/nas/ies/PDU_Session_Reactivation_Result.hpp
src/nas/ies/PDU_Session_Reactivation_Result.hpp
+16
-18
src/nas/ies/_5GS_Network_Feature_Support.cpp
src/nas/ies/_5GS_Network_Feature_Support.cpp
+81
-55
src/nas/ies/_5GS_Network_Feature_Support.hpp
src/nas/ies/_5GS_Network_Feature_Support.hpp
+15
-17
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+7
-5
src/nas/msgs/RegistrationAccept.hpp
src/nas/msgs/RegistrationAccept.hpp
+1
-2
src/nas/msgs/ServiceAccept.cpp
src/nas/msgs/ServiceAccept.cpp
+1
-2
No files found.
src/nas/common/Ie_Const.hpp
View file @
b6cd3332
...
@@ -98,8 +98,9 @@ constexpr uint8_t kIeiAuthenticationParameterAutn = 0x20;
...
@@ -98,8 +98,9 @@ constexpr uint8_t kIeiAuthenticationParameterAutn = 0x20;
constexpr
uint8_t
kIeiAuthenticationParameterRand
=
0x21
;
constexpr
uint8_t
kIeiAuthenticationParameterRand
=
0x21
;
constexpr
uint8_t
kIei5gsNetworkFeatureSupport
=
0x21
;
constexpr
uint8_t
kIei5gsNetworkFeatureSupport
=
0x21
;
constexpr
uint8_t
kIeiAllowedPduSessionStatus
=
0x25
;
constexpr
uint8_t
kIeiAllowedPduSessionStatus
=
0x25
;
constexpr
uint8_t
kIeiUeStatus
=
0x2b
;
constexpr
uint8_t
kIeiPduSessionReactivationResult
=
0x26
;
constexpr
uint8_t
kIeiUeStatus
=
0x2b
;
constexpr
uint8_t
kIeiUeSecurityCapability
=
0x2e
;
constexpr
uint8_t
kIeiUeSecurityCapability
=
0x2e
;
constexpr
uint8_t
kIeiUeNetworkCapability
=
0x17
;
constexpr
uint8_t
kIeiUeNetworkCapability
=
0x17
;
...
...
src/nas/ies/PDU_Session_Reactivation_Result.cpp
View file @
b6cd3332
...
@@ -18,101 +18,104 @@
...
@@ -18,101 +18,104 @@
* For more information about the OpenAirInterface (OAI) Software Alliance:
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "PDU_Session_Reactivation_Result.hpp"
#include "PDU_Session_Reactivation_Result.hpp"
#include "3gpp_24.501.hpp"
#include "common_defs.h"
#include "Ie_Const.hpp"
#include "logger.hpp"
#include "logger.hpp"
using
namespace
nas
;
using
namespace
nas
;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
PDU_Session_Reactivation_Result
::
PDU_Session_Reactivation_Result
(
uint8_t
iei
)
{
PDU_Session_Reactivation_Result
::
PDU_Session_Reactivation_Result
(
)
_iei
=
iei
;
:
Type4NasIe
(
kIeiPduSessionReactivationResult
)
{
_value
=
0
;
SetLengthIndicator
(
2
)
;
length
=
0
;
SetIeName
(
kPduSessionReactivationResultIeName
)
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
PDU_Session_Reactivation_Result
::
PDU_Session_Reactivation_Result
(
PDU_Session_Reactivation_Result
::
PDU_Session_Reactivation_Result
(
uint16_t
value
)
const
uint8_t
iei
,
uint16_t
value
)
{
:
Type4NasIe
(
kIeiPduSessionReactivationResult
)
{
_iei
=
iei
;
_value
=
value
;
_value
=
value
;
length
=
4
;
SetLengthIndicator
(
2
);
}
SetIeName
(
kPduSessionReactivationResultIeName
);
//------------------------------------------------------------------------------
PDU_Session_Reactivation_Result
::
PDU_Session_Reactivation_Result
()
{
_iei
=
0
;
_value
=
0
;
length
=
0
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
PDU_Session_Reactivation_Result
::~
PDU_Session_Reactivation_Result
()
{}
PDU_Session_Reactivation_Result
::~
PDU_Session_Reactivation_Result
()
{}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
PDU_Session_Reactivation_Result
::
setValue
(
uint8_t
iei
,
uint16_t
value
)
{
void
PDU_Session_Reactivation_Result
::
setValue
(
uint16_t
value
)
{
_iei
=
iei
;
_value
=
value
;
_value
=
value
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
uint16_t
PDU_Session_Reactivation_Result
::
getValue
()
{
uint16_t
PDU_Session_Reactivation_Result
::
getValue
()
const
{
return
_value
;
return
_value
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
PDU_Session_Reactivation_Result
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
int
PDU_Session_Reactivation_Result
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"Encoding %s"
,
GetIeName
().
c_str
());
"encoding PDU_Session_Reactivation_Result iei(0x%x)"
,
_iei
);
int
ie_len
=
GetIeLength
();
if
(
len
<
length
)
{
Logger
::
nas_mm
().
error
(
"len is less than %d"
,
length
);
if
(
len
<
ie_len
)
{
return
0
;
Logger
::
nas_mm
().
error
(
"Len is less than %d"
,
ie_len
);
return
KEncodeDecodeError
;
}
}
int
encoded_size
=
0
;
int
encoded_size
=
0
;
if
(
_iei
)
{
// IEI and Length
*
(
buf
+
encoded_size
)
=
_iei
;
int
encoded_header_size
=
Type4NasIe
::
Encode
(
buf
+
encoded_size
,
len
)
;
encoded_size
++
;
if
(
encoded_header_size
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
*
(
buf
+
encoded_size
)
=
length
-
2
;
encoded_size
+=
encoded_header_size
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
(
_value
&
0x00ff
);
// Octet 3
encoded_size
++
;
ENCODE_U16
(
buf
+
encoded_size
,
_value
,
encoded_size
)
;
*
(
buf
+
encoded_size
)
=
(
_value
&
0xff00
)
>>
8
;
// TODO: Encode spare for the rest
encoded_size
++
;
uint8_t
spare
=
0
;
}
else
{
int
spare_len
=
ie_len
-
encoded_size
;
//*(buf + encoded_size) = length - 1; encoded_size++;
for
(
int
i
=
0
;
i
<
spare_len
;
i
++
)
{
//*(buf + encoded_size) = _value; encoded_size++; encoded_size++
;
ENCODE_U8
(
buf
+
encoded_size
,
spare
,
encoded_size
)
;
}
}
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"
encoded PDU_Session_Reactivation_Result len(%d)"
,
encoded_size
);
"
Encoded %s, len (%d)"
,
GetIeName
().
c_str
()
,
encoded_size
);
return
encoded_size
;
return
encoded_size
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
PDU_Session_Reactivation_Result
::
Decode
(
int
PDU_Session_Reactivation_Result
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_
option
)
{
uint8_t
*
buf
,
int
len
,
bool
is_
iei
)
{
Logger
::
nas_mm
().
debug
(
if
(
len
<
kPduSessionReactivationResultMinimumLength
)
{
"decoding PDU_Session_Reactivation_Result iei(0x%x)"
,
*
buf
);
Logger
::
nas_mm
().
error
(
int
decoded_size
=
0
;
"Buffer length is less than the minimum length of this IE (%d octet)"
,
if
(
is_option
)
{
kPduSessionReactivationResultMinimumLength
);
decoded_size
++
;
return
KEncodeDecodeError
;
}
}
_value
=
0x0000
;
length
=
*
(
buf
+
decoded_size
);
uint8_t
decoded_size
=
0
;
decoded_size
++
;
uint8_t
octet
=
0
;
_value
|=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Decoding %s"
,
GetIeName
().
c_str
());
decoded_size
++
;
_value
|=
(
*
(
buf
+
decoded_size
))
<<
8
;
// IEI and Length
decoded_size
++
;
int
decoded_header_size
=
Type4NasIe
::
Decode
(
buf
+
decoded_size
,
len
,
is_iei
);
// decoded_size += Type4NasIe::Decode(buf + decoded_size, len, is_iei);
if
(
decoded_header_size
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
decoded_size
+=
decoded_header_size
;
// Value
DECODE_U16
(
buf
+
decoded_size
,
_value
,
decoded_size
);
// TODO: decode the rest as spare for now
uint8_t
spare
=
0
;
for
(
int
i
=
0
;
i
<
(
GetLengthIndicator
()
-
2
);
i
++
)
{
DECODE_U8
(
buf
+
decoded_size
,
spare
,
decoded_size
);
}
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"
decoded PDU_Session_Reactivation_Result value(0x%4x)"
,
_value
);
"
Decoded %s, Value (0x%x)"
,
GetIeName
().
c_str
()
,
_value
);
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"
decoded PDU_Session_Reactivation_Result len(%d)"
,
decoded_size
);
"
Decoded %s, len (%d)"
,
GetIeName
().
c_str
()
,
decoded_size
);
return
decoded_size
;
return
decoded_size
;
}
}
src/nas/ies/PDU_Session_Reactivation_Result.hpp
View file @
b6cd3332
...
@@ -18,36 +18,34 @@
...
@@ -18,36 +18,34 @@
* For more information about the OpenAirInterface (OAI) Software Alliance:
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
#ifndef _PDU_SESSION_REACTIVATION_RESULT_H_
#define _PDU_SESSION_REACTIVATION_RESULT_H_
/*! \file
#include "Type4NasIe.hpp"
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef __PDU_Session_Reactivation_Result_H_
#define __PDU_Session_Reactivation_Result_H_
#include <stdint.h>
#include <stdint.h>
constexpr
uint8_t
kPduSessionReactivationResultMinimumLength
=
4
;
constexpr
uint8_t
kPduSessionReactivationResultMaximumLength
=
34
;
constexpr
auto
kPduSessionReactivationResultIeName
=
"PDU Session Reactivation Result"
;
namespace
nas
{
namespace
nas
{
class
PDU_Session_Reactivation_Result
{
class
PDU_Session_Reactivation_Result
:
public
Type4NasIe
{
public:
public:
PDU_Session_Reactivation_Result
();
PDU_Session_Reactivation_Result
();
PDU_Session_Reactivation_Result
(
uint8_t
iei
);
PDU_Session_Reactivation_Result
(
uint16_t
value
);
PDU_Session_Reactivation_Result
(
const
uint8_t
iei
,
uint16_t
value
);
~
PDU_Session_Reactivation_Result
();
~
PDU_Session_Reactivation_Result
();
void
setValue
(
uint8_t
iei
,
uint16_t
value
);
void
setValue
(
uint16_t
value
);
uint16_t
getValue
()
const
;
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_iei
);
uint16_t
getValue
();
private:
private:
uint8_t
_iei
;
uint8_t
length
;
uint16_t
_value
;
uint16_t
_value
;
// Spare
};
};
}
// namespace nas
}
// namespace nas
...
...
src/nas/ies/_5GS_Network_Feature_Support.cpp
View file @
b6cd3332
...
@@ -19,101 +19,127 @@
...
@@ -19,101 +19,127 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file __5GS_Network_Feature_Support.cpp
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "_5GS_Network_Feature_Support.hpp"
#include "_5GS_Network_Feature_Support.hpp"
#include "3gpp_24.501.hpp"
#include "common_defs.h"
#include "Ie_Const.hpp"
#include "logger.hpp"
#include "logger.hpp"
using
namespace
nas
;
using
namespace
nas
;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
_5GS_Network_Feature_Support
::
_5GS_Network_Feature_Support
(
uint8_t
iei
)
{
_5GS_Network_Feature_Support
::
_5GS_Network_Feature_Support
(
)
_iei
=
iei
;
:
Type4NasIe
(
kIei5gsNetworkFeatureSupport
)
{
_value
=
0
;
_value
=
0
;
_value2
=
0
;
_value2
=
0
;
length
=
0
;
SetLengthIndicator
(
1
);
// With mimimum length of 3
SetIeName
(
k5gsNetworkFeatureSupportIeName
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
_5GS_Network_Feature_Support
::
_5GS_Network_Feature_Support
(
)
{
_5GS_Network_Feature_Support
::
_5GS_Network_Feature_Support
(
uint8_t
value
)
_iei
=
0
;
:
Type4NasIe
(
kIei5gsNetworkFeatureSupport
)
{
_value
=
0
;
_value
=
value
;
_value2
=
0
;
_value2
=
0
;
length
=
0
;
SetLengthIndicator
(
1
);
// With mimimum length of 3
SetIeName
(
k5gsNetworkFeatureSupportIeName
);
}
}
//------------------------------------------------------------------------------
_5GS_Network_Feature_Support
::~
_5GS_Network_Feature_Support
()
{}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
_5GS_Network_Feature_Support
::
_5GS_Network_Feature_Support
(
_5GS_Network_Feature_Support
::
_5GS_Network_Feature_Support
(
const
uint8_t
iei
,
uint8_t
value
,
uint8_t
value2
)
{
uint8_t
value
,
uint8_t
value2
)
_iei
=
iei
;
:
Type4NasIe
(
kIei5gsNetworkFeatureSupport
)
{
_value
=
value
;
_value
=
value
;
_value2
=
value2
;
_value2
=
value2
;
length
=
4
;
SetLengthIndicator
(
2
);
SetIeName
(
k5gsNetworkFeatureSupportIeName
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
_5GS_Network_Feature_Support
::
setValue
(
uint8_t
value
)
{
_5GS_Network_Feature_Support
::~
_5GS_Network_Feature_Support
()
{}
_value
=
value
;
//------------------------------------------------------------------------------
void
_5GS_Network_Feature_Support
::
setValue
(
uint8_t
value
,
uint8_t
value2
)
{
_value
=
value
;
_value2
=
value2
;
}
}
/*
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
uint8_t _5GS_Network_Feature_Support::getValue() {
uint8_t _5GS_Network_Feature_Support::getValue() {
return _value;
return _value;
}
}
*/
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
_5GS_Network_Feature_Support
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
int
_5GS_Network_Feature_Support
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"Encoding %s"
,
GetIeName
().
c_str
());
"Encoding _5GS_Network_Feature_Support IEI (0x%x)"
,
_iei
);
int
ie_len
=
GetIeLength
();
if
(
len
<
length
)
{
Logger
::
nas_mm
().
error
(
"len is less than %d"
,
length
);
if
(
len
<
ie_len
)
{
return
0
;
Logger
::
nas_mm
().
error
(
"Len is less than %d"
,
ie_len
);
return
KEncodeDecodeError
;
}
}
int
encoded_size
=
0
;
int
encoded_size
=
0
;
if
(
_iei
)
{
// IEI and Length
*
(
buf
+
encoded_size
)
=
_iei
;
int
encoded_header_size
=
Type4NasIe
::
Encode
(
buf
+
encoded_size
,
len
);
encoded_size
++
;
if
(
encoded_header_size
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
*
(
buf
+
encoded_size
)
=
length
-
2
;
encoded_size
+=
encoded_header_size
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
_value
;
// Octet 3
encoded_size
++
;
ENCODE_U8
(
buf
+
encoded_size
,
_value
,
encoded_size
);
*
(
buf
+
encoded_size
)
=
_value2
;
encoded_size
++
;
// Octet 4
}
else
{
if
(
GetIeLength
()
>
encoded_size
)
*
(
buf
+
encoded_size
)
=
length
-
1
;
ENCODE_U8
(
buf
+
encoded_size
,
_value2
,
encoded_size
);
encoded_size
++
;
// *(buf + encoded_size) = _5g_ea_; encoded_size++;
// Spare
// *(buf + encoded_size) = _5g_ia_; encoded_size++;
if
(
GetIeLength
()
>
encoded_size
)
{
uint8_t
spare
=
0
;
ENCODE_U8
(
buf
+
encoded_size
,
spare
,
encoded_size
);
}
}
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"Encoded
_5GS_Network_Feature_Support len (%d)"
,
encoded_size
);
"Encoded
%s, len (%d)"
,
GetIeName
().
c_str
()
,
encoded_size
);
return
encoded_size
;
return
encoded_size
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
_5GS_Network_Feature_Support
::
Decode
(
int
_5GS_Network_Feature_Support
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_iei
)
{
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
if
(
len
<
k5gsNetworkFeatureSupportMinimumLength
)
{
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
error
(
"Decoding _5GS_Network_Feature_Support IEI (0x%x)"
,
*
buf
);
"Buffer length is less than the minimum length of this IE (%d octet)"
,
int
decoded_size
=
0
;
k5gsNetworkFeatureSupportMinimumLength
);
if
(
is_option
)
{
return
KEncodeDecodeError
;
decoded_size
++
;
}
}
length
=
*
(
buf
+
decoded_size
);
decoded_size
++
;
uint8_t
decoded_size
=
0
;
_value
=
*
(
buf
+
decoded_size
);
uint8_t
octet
=
0
;
decoded_size
++
;
Logger
::
nas_mm
().
debug
(
"Decoding %s"
,
GetIeName
().
c_str
());
// IEI and Length
int
decoded_header_size
=
Type4NasIe
::
Decode
(
buf
+
decoded_size
,
len
,
is_iei
);
if
(
decoded_header_size
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
decoded_size
+=
decoded_header_size
;
// Octet 3
DECODE_U8
(
buf
+
decoded_size
,
_value
,
decoded_size
);
// Octet 4
if
(
GetLengthIndicator
()
>
1
)
{
DECODE_U8
(
buf
+
decoded_size
,
_value2
,
decoded_size
);
}
// Spare
if
(
GetLengthIndicator
()
>
2
)
{
uint8_t
spare
=
0
;
DECODE_U8
(
buf
+
decoded_size
,
spare
,
decoded_size
);
}
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"Decoded _5GS_Network_Feature_Support value (0x%x)"
,
_value
);
"Decoded %s, value (0x%x)"
,
GetIeName
().
c_str
(),
_value
);
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"Decoded
_5GS_Network_Feature_Support len (%d)"
,
decoded_size
);
"Decoded
%s, len (%d)"
,
GetIeName
().
c_str
()
,
decoded_size
);
return
decoded_size
;
return
decoded_size
;
}
}
src/nas/ies/_5GS_Network_Feature_Support.hpp
View file @
b6cd3332
...
@@ -19,37 +19,35 @@
...
@@ -19,37 +19,35 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file __5GS_Network_Feature_Support.hpp
#ifndef _5GS_NETWORK_FEATURE_SUPPORT_H
\brief
#define _5GS_NETWORK_FEATURE_SUPPORT_H
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef __5GS_Network_Feature_Support_H
#define __5GS_Network_Feature_Support_H
#include "Type4NasIe.hpp"
#include <stdint.h>
#include <stdint.h>
constexpr
uint8_t
k5gsNetworkFeatureSupportMinimumLength
=
3
;
constexpr
uint8_t
k5gsNetworkFeatureSupportMaximumLength
=
5
;
constexpr
auto
k5gsNetworkFeatureSupportIeName
=
"5GS Network Feature Support"
;
namespace
nas
{
namespace
nas
{
class
_5GS_Network_Feature_Support
{
class
_5GS_Network_Feature_Support
:
public
Type4NasIe
{
public:
public:
_5GS_Network_Feature_Support
(
uint8_t
iei
);
_5GS_Network_Feature_Support
();
_5GS_Network_Feature_Support
();
_5GS_Network_Feature_Support
(
uint8_t
value
);
_5GS_Network_Feature_Support
(
uint8_t
value
,
uint8_t
value2
);
~
_5GS_Network_Feature_Support
();
~
_5GS_Network_Feature_Support
();
_5GS_Network_Feature_Support
(
const
uint8_t
iei
,
uint8_t
value
,
uint8_t
value2
);
void
setValue
(
uint8_t
value
,
uint8_t
value2
);
void
setValue
(
uint8_t
value
)
;
// uint8_t getValue() const
;
uint8_t
getValue
();
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
private:
private:
uint8_t
_iei
;
uint8_t
length
;
uint8_t
_value
;
uint8_t
_value
;
uint8_t
_value2
;
uint8_t
_value2
;
// Spare
};
};
}
// namespace nas
}
// namespace nas
...
...
src/nas/msgs/RegistrationAccept.cpp
View file @
b6cd3332
...
@@ -166,7 +166,7 @@ void RegistrationAccept::setCONFIGURED_NSSAI(
...
@@ -166,7 +166,7 @@ void RegistrationAccept::setCONFIGURED_NSSAI(
void
RegistrationAccept
::
set_5GS_Network_Feature_Support
(
void
RegistrationAccept
::
set_5GS_Network_Feature_Support
(
uint8_t
value
,
uint8_t
value2
)
{
uint8_t
value
,
uint8_t
value2
)
{
ie_5gs_network_feature_support
=
ie_5gs_network_feature_support
=
std
::
make_optional
<
_5GS_Network_Feature_Support
>
(
0x21
,
value
,
value2
);
std
::
make_optional
<
_5GS_Network_Feature_Support
>
(
value
,
value2
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
@@ -177,7 +177,7 @@ void RegistrationAccept::setPDU_session_status(uint16_t value) {
...
@@ -177,7 +177,7 @@ void RegistrationAccept::setPDU_session_status(uint16_t value) {
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setPDU_session_reactivation_result
(
uint16_t
value
)
{
void
RegistrationAccept
::
setPDU_session_reactivation_result
(
uint16_t
value
)
{
ie_pdu_session_reactivation_result
=
ie_pdu_session_reactivation_result
=
std
::
make_optional
<
PDU_Session_Reactivation_Result
>
(
0x26
,
value
);
std
::
make_optional
<
PDU_Session_Reactivation_Result
>
(
value
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
@@ -433,6 +433,7 @@ int RegistrationAccept::Encode(uint8_t* buf, int len) {
...
@@ -433,6 +433,7 @@ int RegistrationAccept::Encode(uint8_t* buf, int len) {
return
0
;
return
0
;
}
}
}
}
/*
if (!ie_ladn_information.has_value()) {
if (!ie_ladn_information.has_value()) {
Logger::nas_mm().warn("IE ie_ladn_information is not available");
Logger::nas_mm().warn("IE ie_ladn_information is not available");
} else {
} else {
...
@@ -443,7 +444,7 @@ int RegistrationAccept::Encode(uint8_t* buf, int len) {
...
@@ -443,7 +444,7 @@ int RegistrationAccept::Encode(uint8_t* buf, int len) {
Logger::nas_mm().error("encoding ie_ladn_information error");
Logger::nas_mm().error("encoding ie_ladn_information error");
return 0;
return 0;
}
}
}
}
*/
if
(
!
ie_MICO_indication
.
has_value
())
{
if
(
!
ie_MICO_indication
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_MICO_indication is not available"
);
Logger
::
nas_mm
().
warn
(
"IE ie_MICO_indication is not available"
);
}
else
{
}
else
{
...
@@ -750,8 +751,9 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
...
@@ -750,8 +751,9 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
}
break
;
case
0x26
:
{
case
kIeiPduSessionReactivationResult
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x26)"
);
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiPduSessionReactivationResult
);
PDU_Session_Reactivation_Result
ie_pdu_session_reactivation_result_tmp
=
PDU_Session_Reactivation_Result
ie_pdu_session_reactivation_result_tmp
=
{};
{};
decoded_size
+=
ie_pdu_session_reactivation_result_tmp
.
Decode
(
decoded_size
+=
ie_pdu_session_reactivation_result_tmp
.
Decode
(
...
...
src/nas/msgs/RegistrationAccept.hpp
View file @
b6cd3332
...
@@ -155,8 +155,7 @@ class RegistrationAccept : public NasMmPlainHeader {
...
@@ -155,8 +155,7 @@ class RegistrationAccept : public NasMmPlainHeader {
std
::
optional
<
Rejected_NSSAI
>
ie_rejected_nssai
;
// Optional
std
::
optional
<
Rejected_NSSAI
>
ie_rejected_nssai
;
// Optional
std
::
optional
<
NSSAI
>
ie_configured_nssai
;
// Optional
std
::
optional
<
NSSAI
>
ie_configured_nssai
;
// Optional
std
::
optional
<
_5GS_Network_Feature_Support
>
std
::
optional
<
_5GS_Network_Feature_Support
>
ie_5gs_network_feature_support
;
// Optional
ie_5gs_network_feature_support
;
// Optional
std
::
optional
<
PDUSessionStatus
>
ie_PDU_session_status
;
// Optional
std
::
optional
<
PDUSessionStatus
>
ie_PDU_session_status
;
// Optional
std
::
optional
<
PDU_Session_Reactivation_Result
>
std
::
optional
<
PDU_Session_Reactivation_Result
>
ie_pdu_session_reactivation_result
;
// Optional
ie_pdu_session_reactivation_result
;
// Optional
...
...
src/nas/msgs/ServiceAccept.cpp
View file @
b6cd3332
...
@@ -57,8 +57,7 @@ void ServiceAccept::setPDU_session_status(uint16_t value) {
...
@@ -57,8 +57,7 @@ void ServiceAccept::setPDU_session_status(uint16_t value) {
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
ServiceAccept
::
setPDU_session_reactivation_result
(
uint16_t
value
)
{
void
ServiceAccept
::
setPDU_session_reactivation_result
(
uint16_t
value
)
{
ie_session_reactivation_result
=
ie_session_reactivation_result
=
new
PDU_Session_Reactivation_Result
(
value
);
new
PDU_Session_Reactivation_Result
(
0x26
,
value
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
...
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