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
2d7a889a
Commit
2d7a889a
authored
Jan 11, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update EPS Bearer Context Status
parent
3ed782cd
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
85 additions
and
74 deletions
+85
-74
src/nas/common/NasIeHeader.hpp
src/nas/common/NasIeHeader.hpp
+1
-1
src/nas/ies/5GMMCapability.cpp
src/nas/ies/5GMMCapability.cpp
+1
-1
src/nas/ies/EpsBearerContextStatus.cpp
src/nas/ies/EpsBearerContextStatus.cpp
+49
-44
src/nas/ies/EpsBearerContextStatus.hpp
src/nas/ies/EpsBearerContextStatus.hpp
+14
-13
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+2
-2
src/nas/msgs/RegistrationAccept.hpp
src/nas/msgs/RegistrationAccept.hpp
+7
-7
src/nas/msgs/RegistrationRequest.cpp
src/nas/msgs/RegistrationRequest.cpp
+5
-5
src/nas/msgs/RegistrationRequest.hpp
src/nas/msgs/RegistrationRequest.hpp
+6
-1
No files found.
src/nas/common/NasIeHeader.hpp
View file @
2d7a889a
...
...
@@ -37,7 +37,7 @@
#include "Authentication_Response_Parameter.hpp"
#include "DNN.hpp"
#include "EAP_Message.hpp"
#include "E
PS_Bearer_Context_
Status.hpp"
#include "E
psBearerContext
Status.hpp"
#include "EPS_NAS_Message_Container.hpp"
#include "EPS_NAS_Security_Algorithms.hpp"
#include "Extended_DRX_Parameters.hpp"
...
...
src/nas/ies/5GMMCapability.cpp
View file @
2d7a889a
...
...
@@ -87,7 +87,7 @@ int _5GMMCapability::Encode(uint8_t* buf, int len) {
}
Logger
::
nas_mm
().
debug
(
"
De
coded %s, len (%d)"
,
GetIeName
().
c_str
(),
encoded_size
);
"
En
coded %s, len (%d)"
,
GetIeName
().
c_str
(),
encoded_size
);
return
encoded_size
;
}
...
...
src/nas/ies/E
PS_Bearer_Context_
Status.cpp
→
src/nas/ies/E
psBearerContext
Status.cpp
View file @
2d7a889a
...
...
@@ -19,85 +19,90 @@
* contact@openairinterface.org
*/
#include "E
PS_Bearer_Context_
Status.hpp"
#include "E
psBearerContext
Status.hpp"
#include "3gpp_24.501.hpp"
#include "common_defs.h"
#include "Ie_Const.hpp"
#include "logger.hpp"
using
namespace
nas
;
//------------------------------------------------------------------------------
EPS_Bearer_Context_Status
::
EPS_Bearer_Context_Status
(
uint8_t
iei
)
{
_iei
=
iei
;
length
=
0
;
_value
=
0
;
EpsBearerContextStatus
::
EpsBearerContextStatus
()
:
Type4NasIe
(
kIeiEpsBearerContextStatus
)
{
value_
=
0
;
SetLengthIndicator
(
2
);
SetIeName
(
kEpsBearerContextStatusIeName
);
}
//------------------------------------------------------------------------------
EPS_Bearer_Context_Status
::
EPS_Bearer_Context_Status
(
const
uint8_t
iei
,
uint16_t
value
)
{
_iei
=
iei
;
_value
=
value
;
length
=
kEpsBearerContextStatusLength
;
EpsBearerContextStatus
::
EpsBearerContextStatus
(
uint16_t
value
)
{
value_
=
value
;
SetLengthIndicator
(
2
);
SetIeName
(
kEpsBearerContextStatusIeName
);
}
//------------------------------------------------------------------------------
EPS_Bearer_Context_Status
::
EPS_Bearer_Context_Status
()
:
_iei
(),
length
(),
_value
()
{}
EpsBearerContextStatus
::~
EpsBearerContextStatus
()
{}
//------------------------------------------------------------------------------
EPS_Bearer_Context_Status
::~
EPS_Bearer_Context_Status
()
{}
//------------------------------------------------------------------------------
void
EPS_Bearer_Context_Status
::
setValue
(
uint8_t
iei
,
uint16_t
value
)
{
_iei
=
iei
;
_value
=
value
;
void
EpsBearerContextStatus
::
SetValue
(
uint16_t
value
)
{
value_
=
value
;
}
//------------------------------------------------------------------------------
uint16_t
E
PS_Bearer_Context_Status
::
getValue
()
{
return
_value
;
uint16_t
E
psBearerContextStatus
::
GetValue
()
const
{
return
value_
;
}
//------------------------------------------------------------------------------
int
E
PS_Bearer_Context_
Status
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Encoding
EPS_Bearer_Context_Status"
);
i
f
(
len
<
kEpsBearerContextStatusLength
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kEpsBearerContextStatusLength
);
int
E
psBearerContext
Status
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Encoding
%s"
,
GetIeName
().
c_str
()
);
i
nt
ie_len
=
GetIeLength
();
if
(
len
<
ie_len
)
{
Logger
::
nas_mm
().
error
(
"Len is less than %d"
,
ie_len
);
return
KEncodeDecodeError
;
}
int
encoded_size
=
0
;
if
(
_iei
)
{
ENCODE_U8
(
buf
+
encoded_size
,
_iei
,
encoded_size
);
}
// Length
ENCODE_U8
(
buf
+
encoded_size
,
length
,
encoded_size
);
// IEI and Length
int
encoded_header_size
=
Type4NasIe
::
Encode
(
buf
+
encoded_size
,
len
);
if
(
encoded_header_size
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
encoded_size
+=
encoded_header_size
;
// Value
ENCODE_U16
(
buf
+
encoded_size
,
_value
,
encoded_size
);
ENCODE_U16
(
buf
+
encoded_size
,
value_
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"
encoded EPS_Bearer_Context_Status (len %d)"
,
encoded_size
);
"
Encoded %s, len (%d)"
,
GetIeName
().
c_str
()
,
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
EPS_Bearer_Context_Status
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"Decoding EPS_Bearer_Context_Status"
);
int
decoded_size
=
0
;
if
(
is_option
)
{
DECODE_U8
(
buf
+
decoded_size
,
_iei
,
decoded_size
);
// for IE
int
EpsBearerContextStatus
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_iei
)
{
if
(
len
<
kEpsBearerContextStatusLength
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kEpsBearerContextStatusLength
);
return
KEncodeDecodeError
;
}
// Length
DECODE_U8
(
buf
+
decoded_size
,
length
,
decoded_size
);
// for IE
uint8_t
decoded_size
=
0
;
uint8_t
octet
=
0
;
Logger
::
nas_mm
().
debug
(
"Decoding %s"
,
GetIeName
().
c_str
());
// IEI and Length
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
);
// for IE
DECODE_U16
(
buf
+
decoded_size
,
value_
,
decoded_size
);
// for IE
Logger
::
nas_mm
().
debug
(
"EPS_Bearer_Context_Status, value 0x%0x"
,
value_
);
Logger
::
nas_mm
().
debug
(
"decoded EPS_Bearer_Context_Status, value 0x%4x"
,
_value
);
Logger
::
nas_mm
().
debug
(
"decoded EPS_Bearer_Context_Status (len %d)"
,
decoded_size
);
"Decoded %s, len (%d)"
,
GetIeName
().
c_str
(),
decoded_size
);
return
decoded_size
;
}
src/nas/ies/E
PS_Bearer_Context_
Status.hpp
→
src/nas/ies/E
psBearerContext
Status.hpp
View file @
2d7a889a
...
...
@@ -19,30 +19,31 @@
* contact@openairinterface.org
*/
#ifndef _EPS_B
earer_Context_Status
_H_
#define _EPS_B
earer_Context_Status
_H_
#ifndef _EPS_B
EARER_CONTEXT_STATUS
_H_
#define _EPS_B
EARER_CONTEXT_STATUS
_H_
#include "Type4NasIe.hpp"
#include <stdint.h>
constexpr
uint8_t
kEpsBearerContextStatusLength
=
4
;
constexpr
auto
kEpsBearerContextStatusIeName
=
"EPS Bearer Context Status"
;
namespace
nas
{
class
E
PS_Bearer_Context_Status
{
class
E
psBearerContextStatus
:
public
Type4NasIe
{
public:
EPS_Bearer_Context_Status
();
EPS_Bearer_Context_Status
(
uint8_t
iei
);
EPS_Bearer_Context_Status
(
const
uint8_t
iei
,
uint16_t
value
);
~
EPS_Bearer_Context_Status
();
void
setValue
(
uint8_t
iei
,
uint16_t
value
);
EpsBearerContextStatus
();
EpsBearerContextStatus
(
uint16_t
value
);
~
EpsBearerContextStatus
();
void
SetValue
(
uint16_t
value
);
uint16_t
GetValue
()
const
;
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
uint16_t
getValue
();
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_iei
);
private:
uint8_t
_iei
;
uint8_t
length
;
uint16_t
_value
;
uint16_t
value_
;
};
}
// namespace nas
...
...
src/nas/msgs/RegistrationAccept.cpp
View file @
2d7a889a
...
...
@@ -242,7 +242,7 @@ void RegistrationAccept::setNon_3GPP_NW_Provided_Policies(uint8_t value) {
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setEPS_Bearer_Context_Status
(
uint16_t
value
)
{
ie_eps_bearer_context_status
=
new
E
PS_Bearer_Context_Status
(
0x60
,
value
);
ie_eps_bearer_context_status
=
new
E
psBearerContextStatus
(
value
);
}
//------------------------------------------------------------------------------
...
...
@@ -787,7 +787,7 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
}
break
;
case
0x60
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x60)"
);
ie_eps_bearer_context_status
=
new
E
PS_Bearer_Context_
Status
();
ie_eps_bearer_context_status
=
new
E
psBearerContext
Status
();
decoded_size
+=
ie_eps_bearer_context_status
->
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
octet
=
*
(
buf
+
decoded_size
);
...
...
src/nas/msgs/RegistrationAccept.hpp
View file @
2d7a889a
...
...
@@ -177,7 +177,7 @@ class RegistrationAccept : public NasMmPlainHeader {
// 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
E
PS_Bearer_Context_Status
*
ie_eps_bearer_context_status
;
// Optional
E
psBearerContextStatus
*
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
...
...
src/nas/msgs/RegistrationRequest.cpp
View file @
2d7a889a
...
...
@@ -513,14 +513,14 @@ bool RegistrationRequest::getNasMessageContainer(bstring& nas) {
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setEPS_Bearer_Context_Status
(
uint16_t
value
)
{
ie_eps_bearer_context_status
=
std
::
make_optional
<
EPS_Bearer_Context_Status
>
(
kIeiEpsBearerContextStatus
,
value
);
ie_eps_bearer_context_status
=
std
::
make_optional
<
EpsBearerContextStatus
>
(
value
);
}
//------------------------------------------------------------------------------
bool
RegistrationRequest
::
getEpsBearerContextStatus
(
uint16_t
&
value
)
{
if
(
ie_eps_bearer_context_status
.
has_value
())
{
value
=
ie_eps_bearer_context_status
.
value
().
g
etValue
();
value
=
ie_eps_bearer_context_status
.
value
().
G
etValue
();
return
true
;
}
else
{
return
false
;
...
...
@@ -1076,10 +1076,10 @@ int RegistrationRequest::Decode(uint8_t* buf, int len) {
}
break
;
case
0x60
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x71)"
);
E
PS_Bearer_Context_
Status
ie_eps_bearer_context_status_tmp
=
{};
E
psBearerContext
Status
ie_eps_bearer_context_status_tmp
=
{};
decoded_size
+=
ie_eps_bearer_context_status_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_eps_bearer_context_status
=
std
::
optional
<
E
PS_Bearer_Context_
Status
>
(
ie_eps_bearer_context_status
=
std
::
optional
<
E
psBearerContext
Status
>
(
ie_eps_bearer_context_status_tmp
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
...
...
src/nas/msgs/RegistrationRequest.hpp
View file @
2d7a889a
...
...
@@ -177,10 +177,15 @@ class RegistrationRequest : public NasMmPlainHeader {
// TODO: Mobile station classmark 2
// TODO: Supported codecs
std
::
optional
<
NasMessageContainer
>
ie_nas_message_container
;
// Optional
std
::
optional
<
E
PS_Bearer_Context_
Status
>
std
::
optional
<
E
psBearerContext
Status
>
ie_eps_bearer_context_status
;
// Optional
// TODO: Requested extended DRX parameters
// TODO: T3324 value
// TODO: UE radio capability ID (Rel 16.4.1)
// TODO: Requested mapped NSSAI (Rel 16.4.1)
// TODO: Additional information requested (Rel 16.4.1)
// TODO: Requested WUS assistance information (Rel 16.4.1)
// TODO: N5GC indication (Rel 16.4.1)
};
}
// namespace nas
...
...
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