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
a70b4397
Commit
a70b4397
authored
Jan 02, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update NasMmPlainHeader IEs
parent
3c0bd496
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
76 additions
and
57 deletions
+76
-57
src/nas/ies/ExtendedProtocolDiscriminator.cpp
src/nas/ies/ExtendedProtocolDiscriminator.cpp
+16
-15
src/nas/ies/ExtendedProtocolDiscriminator.hpp
src/nas/ies/ExtendedProtocolDiscriminator.hpp
+8
-3
src/nas/ies/NasMessageType.cpp
src/nas/ies/NasMessageType.cpp
+18
-15
src/nas/ies/NasMessageType.hpp
src/nas/ies/NasMessageType.hpp
+7
-3
src/nas/ies/SecurityHeaderType.cpp
src/nas/ies/SecurityHeaderType.cpp
+18
-18
src/nas/ies/SecurityHeaderType.hpp
src/nas/ies/SecurityHeaderType.hpp
+9
-3
No files found.
src/nas/ies/ExtendedProtocolDiscriminator.cpp
View file @
a70b4397
...
@@ -29,11 +29,22 @@ using namespace nas;
...
@@ -29,11 +29,22 @@ using namespace nas;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
ExtendedProtocolDiscriminator
::
ExtendedProtocolDiscriminator
(
const
uint8_t
&
epd
)
ExtendedProtocolDiscriminator
::
ExtendedProtocolDiscriminator
(
const
uint8_t
&
epd
)
:
epd_
(
epd
)
{}
:
NasIe
(),
epd_
(
epd
)
{}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
ExtendedProtocolDiscriminator
::~
ExtendedProtocolDiscriminator
()
{}
ExtendedProtocolDiscriminator
::~
ExtendedProtocolDiscriminator
()
{}
//------------------------------------------------------------------------------
bool
ExtendedProtocolDiscriminator
::
Validate
(
const
int
&
len
)
const
{
if
(
len
<
kExtendedProtocolDiscriminatorLength
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kExtendedProtocolDiscriminatorLength
);
return
false
;
}
return
true
;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
ExtendedProtocolDiscriminator
::
Set
(
const
uint8_t
&
epd
)
{
void
ExtendedProtocolDiscriminator
::
Set
(
const
uint8_t
&
epd
)
{
epd_
=
epd
;
epd_
=
epd
;
...
@@ -50,13 +61,8 @@ uint8_t ExtendedProtocolDiscriminator::Get() const {
...
@@ -50,13 +61,8 @@ uint8_t ExtendedProtocolDiscriminator::Get() const {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
ExtendedProtocolDiscriminator
::
Encode
(
uint8_t
*
buf
,
const
uint32_t
&
len
)
{
int
ExtendedProtocolDiscriminator
::
Encode
(
uint8_t
*
buf
,
const
int
&
len
)
{
if
(
len
<
kType1IeSize
)
{
if
(
!
Validate
(
len
))
return
KEncodeDecodeError
;
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kType1IeSize
);
return
KEncodeDecodeError
;
}
uint32_t
encoded_size
=
0
;
uint32_t
encoded_size
=
0
;
ENCODE_U8
(
buf
,
epd_
,
encoded_size
);
ENCODE_U8
(
buf
,
epd_
,
encoded_size
);
return
encoded_size
;
return
encoded_size
;
...
@@ -64,13 +70,8 @@ int ExtendedProtocolDiscriminator::Encode(uint8_t* buf, const uint32_t& len) {
...
@@ -64,13 +70,8 @@ int ExtendedProtocolDiscriminator::Encode(uint8_t* buf, const uint32_t& len) {
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
ExtendedProtocolDiscriminator
::
Decode
(
int
ExtendedProtocolDiscriminator
::
Decode
(
const
uint8_t
*
const
buf
,
const
uint32_t
&
len
)
{
const
uint8_t
*
const
buf
,
const
int
&
len
,
bool
is_iei
)
{
if
(
len
<
kType1IeSize
)
{
if
(
!
Validate
(
len
))
return
KEncodeDecodeError
;
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kType1IeSize
);
return
KEncodeDecodeError
;
}
uint32_t
decoded_size
=
0
;
uint32_t
decoded_size
=
0
;
DECODE_U8
(
buf
,
epd_
,
decoded_size
);
DECODE_U8
(
buf
,
epd_
,
decoded_size
);
return
decoded_size
;
return
decoded_size
;
...
...
src/nas/ies/ExtendedProtocolDiscriminator.hpp
View file @
a70b4397
...
@@ -22,22 +22,27 @@
...
@@ -22,22 +22,27 @@
#ifndef EXTENDED_PROTOCOL_DISCRIMINATOR_H_
#ifndef EXTENDED_PROTOCOL_DISCRIMINATOR_H_
#define EXTENDED_PROTOCOL_DISCRIMINATOR_H_
#define EXTENDED_PROTOCOL_DISCRIMINATOR_H_
#include "NasIe.hpp"
#include <stdint.h>
#include <stdint.h>
constexpr
uint8_t
kExtendedProtocolDiscriminatorLength
=
1
;
namespace
nas
{
namespace
nas
{
class
ExtendedProtocolDiscriminator
{
class
ExtendedProtocolDiscriminator
:
public
NasIe
{
public:
public:
ExtendedProtocolDiscriminator
(){};
// TODO: = delete;
ExtendedProtocolDiscriminator
(){};
// TODO: = delete;
ExtendedProtocolDiscriminator
(
const
uint8_t
&
epd
);
ExtendedProtocolDiscriminator
(
const
uint8_t
&
epd
);
virtual
~
ExtendedProtocolDiscriminator
();
virtual
~
ExtendedProtocolDiscriminator
();
bool
Validate
(
const
int
&
len
)
const
override
;
void
Set
(
const
uint8_t
&
epd
);
void
Set
(
const
uint8_t
&
epd
);
void
Get
(
uint8_t
&
epd
)
const
;
void
Get
(
uint8_t
&
epd
)
const
;
uint8_t
Get
()
const
;
uint8_t
Get
()
const
;
int
Encode
(
uint8_t
*
buf
,
const
uint32_t
&
len
);
int
Encode
(
uint8_t
*
buf
,
const
int
&
len
)
override
;
int
Decode
(
const
uint8_t
*
const
buf
,
const
uint32_t
&
len
);
int
Decode
(
const
uint8_t
*
const
buf
,
const
int
&
len
,
bool
is_iei
=
true
)
override
;
private:
private:
uint8_t
epd_
;
uint8_t
epd_
;
...
...
src/nas/ies/NasMessageType.cpp
View file @
a70b4397
...
@@ -29,11 +29,22 @@ using namespace nas;
...
@@ -29,11 +29,22 @@ using namespace nas;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
NasMessageType
::
NasMessageType
(
const
uint8_t
&
message_type
)
NasMessageType
::
NasMessageType
(
const
uint8_t
&
message_type
)
:
message_type_
(
message_type
)
{}
:
NasIe
(),
message_type_
(
message_type
)
{}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
NasMessageType
::~
NasMessageType
()
{}
NasMessageType
::~
NasMessageType
()
{}
//------------------------------------------------------------------------------
bool
NasMessageType
::
Validate
(
const
int
&
len
)
const
{
if
(
len
<
kNasMessageTypeIeSize
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kNasMessageTypeIeSize
);
return
false
;
}
return
true
;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
NasMessageType
::
Set
(
const
uint8_t
&
message_type
)
{
void
NasMessageType
::
Set
(
const
uint8_t
&
message_type
)
{
message_type_
=
message_type
;
message_type_
=
message_type
;
...
@@ -50,26 +61,18 @@ uint8_t NasMessageType::Get() const {
...
@@ -50,26 +61,18 @@ uint8_t NasMessageType::Get() const {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
NasMessageType
::
Encode
(
uint8_t
*
buf
,
const
uint32_t
&
len
)
{
int
NasMessageType
::
Encode
(
uint8_t
*
buf
,
const
int
&
len
)
{
if
(
len
<
kType1IeSize
)
{
if
(
!
Validate
(
len
))
return
KEncodeDecodeError
;
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kType1IeSize
);
return
KEncodeDecodeError
;
}
uint32_t
encoded_size
=
0
;
uint32_t
encoded_size
=
0
;
ENCODE_U8
(
buf
,
message_type_
,
encoded_size
);
ENCODE_U8
(
buf
,
message_type_
,
encoded_size
);
return
encoded_size
;
return
encoded_size
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
NasMessageType
::
Decode
(
const
uint8_t
*
const
buf
,
const
uint32_t
&
len
)
{
int
NasMessageType
::
Decode
(
if
(
len
<
kType1IeSize
)
{
const
uint8_t
*
const
buf
,
const
int
&
len
,
bool
is_iei
)
{
Logger
::
nas_mm
().
error
(
if
(
!
Validate
(
len
))
return
KEncodeDecodeError
;
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kType1IeSize
);
return
KEncodeDecodeError
;
}
uint32_t
decoded_size
=
0
;
uint32_t
decoded_size
=
0
;
DECODE_U8
(
buf
,
message_type_
,
decoded_size
);
DECODE_U8
(
buf
,
message_type_
,
decoded_size
);
return
decoded_size
;
return
decoded_size
;
...
...
src/nas/ies/NasMessageType.hpp
View file @
a70b4397
...
@@ -22,24 +22,28 @@
...
@@ -22,24 +22,28 @@
#ifndef _MESSAGE_TYPE_H_
#ifndef _MESSAGE_TYPE_H_
#define _MESSAGE_TYPE_H_
#define _MESSAGE_TYPE_H_
#include "NasIe.hpp"
#include <stdint.h>
#include <stdint.h>
constexpr
uint8_t
kNasMessageTypeIeSize
=
1
;
constexpr
uint8_t
kNasMessageTypeIeSize
=
1
;
namespace
nas
{
namespace
nas
{
class
NasMessageType
{
class
NasMessageType
:
public
NasIe
{
public:
public:
NasMessageType
(){};
// TODO: = delete;
NasMessageType
(){};
// TODO: = delete;
NasMessageType
(
const
uint8_t
&
message_type
);
NasMessageType
(
const
uint8_t
&
message_type
);
virtual
~
NasMessageType
();
virtual
~
NasMessageType
();
bool
Validate
(
const
int
&
len
)
const
override
;
void
Set
(
const
uint8_t
&
message_type
);
void
Set
(
const
uint8_t
&
message_type
);
void
Get
(
uint8_t
&
message_type
)
const
;
void
Get
(
uint8_t
&
message_type
)
const
;
uint8_t
Get
()
const
;
uint8_t
Get
()
const
;
int
Encode
(
uint8_t
*
buf
,
const
uint32_t
&
len
);
int
Encode
(
uint8_t
*
buf
,
const
int
&
len
)
override
;
int
Decode
(
const
uint8_t
*
const
buf
,
const
uint32_t
&
len
);
int
Decode
(
const
uint8_t
*
const
buf
,
const
int
&
len
,
bool
is_iei
=
false
)
override
;
private:
private:
uint8_t
message_type_
;
uint8_t
message_type_
;
...
...
src/nas/ies/SecurityHeaderType.cpp
View file @
a70b4397
...
@@ -28,11 +28,22 @@
...
@@ -28,11 +28,22 @@
using
namespace
nas
;
using
namespace
nas
;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
SecurityHeaderType
::
SecurityHeaderType
()
{}
SecurityHeaderType
::
SecurityHeaderType
()
:
NasIe
()
{}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
SecurityHeaderType
::~
SecurityHeaderType
()
{}
SecurityHeaderType
::~
SecurityHeaderType
()
{}
//------------------------------------------------------------------------------
bool
SecurityHeaderType
::
Validate
(
const
int
&
len
)
const
{
if
(
len
<
kSecurityHeaderTypeLength
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kSecurityHeaderTypeLength
);
return
false
;
}
return
true
;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
SecurityHeaderType
::
Set
(
void
SecurityHeaderType
::
Set
(
const
uint8_t
&
secu_header_type
,
const
uint8_t
&
spare
)
{
const
uint8_t
&
secu_header_type
,
const
uint8_t
&
spare
)
{
...
@@ -51,32 +62,21 @@ uint8_t SecurityHeaderType::Get() const {
...
@@ -51,32 +62,21 @@ uint8_t SecurityHeaderType::Get() const {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
SecurityHeaderType
::
Encode
(
uint8_t
*
buf
,
const
uint32_t
&
len
)
{
int
SecurityHeaderType
::
Encode
(
uint8_t
*
buf
,
const
int
&
len
)
{
if
(
len
<
kType1IeSize
)
{
if
(
!
Validate
(
len
))
return
KEncodeDecodeError
;
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kType1IeSize
);
return
KEncodeDecodeError
;
}
uint8_t
value
=
(
secu_header_type_
&
0x0f
)
|
(
spare_
&
0xf0
);
uint8_t
value
=
(
secu_header_type_
&
0x0f
)
|
(
spare_
&
0xf0
);
uint32_t
encoded_size
=
0
;
uint32_t
encoded_size
=
0
;
ENCODE_U8
(
buf
,
value
,
encoded_size
);
ENCODE_U8
(
buf
,
value
,
encoded_size
);
return
encoded_size
;
return
encoded_size
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
SecurityHeaderType
::
Decode
(
const
uint8_t
*
const
buf
,
const
uint32_t
&
len
)
{
int
SecurityHeaderType
::
Decode
(
if
(
len
<
kType1IeSize
)
{
const
uint8_t
*
const
buf
,
const
int
&
len
,
bool
is_iei
)
{
Logger
::
nas_mm
().
error
(
if
(
!
Validate
(
len
))
return
KEncodeDecodeError
;
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kType1IeSize
);
return
KEncodeDecodeError
;
}
uint8_t
value
=
0
;
uint8_t
value
=
0
;
uint32_t
decoded_size
=
0
;
uint32_t
decoded_size
=
0
;
DECODE_U8
(
buf
,
value
,
decoded_size
);
DECODE_U8
(
buf
,
value
,
decoded_size
);
secu_header_type_
=
0x0f
&
value
;
secu_header_type_
=
0x0f
&
value
;
spare_
=
value
&
0xf0
;
spare_
=
value
&
0xf0
;
...
...
src/nas/ies/SecurityHeaderType.hpp
View file @
a70b4397
...
@@ -22,21 +22,27 @@
...
@@ -22,21 +22,27 @@
#ifndef _SECURITY_HEADER_TYPE_H_
#ifndef _SECURITY_HEADER_TYPE_H_
#define _SECURITY_HEADER_TYPE_H_
#define _SECURITY_HEADER_TYPE_H_
#include "NasIe.hpp"
#include <stdint.h>
#include <stdint.h>
constexpr
uint8_t
kSecurityHeaderTypeLength
=
1
;
namespace
nas
{
namespace
nas
{
class
SecurityHeaderType
{
class
SecurityHeaderType
:
public
NasIe
{
public:
public:
SecurityHeaderType
();
SecurityHeaderType
();
virtual
~
SecurityHeaderType
();
virtual
~
SecurityHeaderType
();
bool
Validate
(
const
int
&
len
)
const
override
;
void
Set
(
const
uint8_t
&
secu_header_type
,
const
uint8_t
&
spare
=
0
);
void
Set
(
const
uint8_t
&
secu_header_type
,
const
uint8_t
&
spare
=
0
);
void
Get
(
uint8_t
&
secu_header_type
)
const
;
void
Get
(
uint8_t
&
secu_header_type
)
const
;
uint8_t
Get
()
const
;
uint8_t
Get
()
const
;
int
Encode
(
uint8_t
*
buf
,
const
uint32_t
&
len
);
int
Encode
(
uint8_t
*
buf
,
const
int
&
len
)
override
;
int
Decode
(
const
uint8_t
*
const
buf
,
const
uint32_t
&
len
);
int
Decode
(
const
uint8_t
*
const
buf
,
const
int
&
len
,
bool
is_iei
=
false
)
override
;
private:
private:
uint8_t
spare_
:
4
;
uint8_t
spare_
:
4
;
...
...
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