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
93497520
Commit
93497520
authored
Feb 08, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code cleanup for Service Request
parent
0952db8d
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
35 deletions
+44
-35
src/nas/ies/ServiceType.cpp
src/nas/ies/ServiceType.cpp
+1
-1
src/nas/ies/ServiceType.hpp
src/nas/ies/ServiceType.hpp
+1
-1
src/nas/msgs/ServiceRequest.cpp
src/nas/msgs/ServiceRequest.cpp
+38
-30
src/nas/msgs/ServiceRequest.hpp
src/nas/msgs/ServiceRequest.hpp
+4
-3
No files found.
src/nas/ies/ServiceType.cpp
View file @
93497520
...
@@ -41,7 +41,7 @@ void ServiceType::SetValue(uint8_t value) {
...
@@ -41,7 +41,7 @@ void ServiceType::SetValue(uint8_t value) {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
ServiceType
::
GetValue
(
uint8_t
&
value
)
{
void
ServiceType
::
GetValue
(
uint8_t
&
value
)
const
{
value
=
service_type_value_
;
value
=
service_type_value_
;
}
}
...
...
src/nas/ies/ServiceType.hpp
View file @
93497520
...
@@ -40,7 +40,7 @@ class ServiceType : public Type1NasIe {
...
@@ -40,7 +40,7 @@ class ServiceType : public Type1NasIe {
// int Decode(uint8_t* nuf, int len, bool is_iei, bool is_high);
// int Decode(uint8_t* nuf, int len, bool is_iei, bool is_high);
void
SetValue
(
uint8_t
value
);
void
SetValue
(
uint8_t
value
);
void
GetValue
(
uint8_t
&
value
);
void
GetValue
(
uint8_t
&
value
)
const
;
private:
private:
void
SetValue
()
override
;
void
SetValue
()
override
;
...
...
src/nas/msgs/ServiceRequest.cpp
View file @
93497520
...
@@ -62,13 +62,13 @@ void ServiceRequest::SetServiceType(uint8_t value) {
...
@@ -62,13 +62,13 @@ void ServiceRequest::SetServiceType(uint8_t value) {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
ServiceRequest
::
GetServiceType
(
uint8_t
&
value
)
{
void
ServiceRequest
::
GetServiceType
(
uint8_t
&
value
)
const
{
ie_service_type
.
GetValue
(
value
);
ie_service_type
.
GetValue
(
value
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
ServiceRequest
::
Set5gSTmsi
(
void
ServiceRequest
::
Set5gSTmsi
(
uint16_t
amf_set_id
,
uint8_t
amf_pointer
,
std
::
string
tmsi
)
{
uint16_t
amf_set_id
,
uint8_t
amf_pointer
,
const
std
::
string
&
tmsi
)
{
ie_5g_s_tmsi
.
Set5gSTmsi
(
amf_set_id
,
amf_pointer
,
tmsi
);
ie_5g_s_tmsi
.
Set5gSTmsi
(
amf_set_id
,
amf_pointer
,
tmsi
);
}
}
...
@@ -173,12 +173,9 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
...
@@ -173,12 +173,9 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
// ngKSI and Service Type
// ngKSI and Service Type
int
size
=
ie_ng_ksi
.
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
int
size
=
ie_ng_ksi
.
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
==
KEncodeDecodeError
)
{
if
((
size
==
KEncodeDecodeError
)
or
(
size
!=
0
))
{
// 1/2 octet
Logger
::
nas_mm
().
error
(
"Encoding NgKSI error"
);
Logger
::
nas_mm
().
debug
(
return
KEncodeDecodeError
;
"Encoding %s error"
,
NasKeySetIdentifier
::
GetIeName
().
c_str
());
}
if
(
size
!=
0
)
{
Logger
::
nas_mm
().
error
(
"Encoding NgKSI error"
);
return
KEncodeDecodeError
;
return
KEncodeDecodeError
;
}
}
...
@@ -186,7 +183,8 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
...
@@ -186,7 +183,8 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
if
(
size
!=
KEncodeDecodeError
)
{
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
++
;
// 1/2 octet for ngKSI, 1/2 for Service Type
encoded_size
++
;
// 1/2 octet for ngKSI, 1/2 for Service Type
}
else
{
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_service_type error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
ServiceType
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
return
KEncodeDecodeError
;
}
}
...
@@ -195,62 +193,71 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
...
@@ -195,62 +193,71 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
if
(
size
!=
KEncodeDecodeError
)
{
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding IE ie_5g_s_tmsi error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
_5GSMobileIdentity
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
return
KEncodeDecodeError
;
}
}
// Uplink data status
// Uplink data status
if
(
!
ie_uplink_data_status
.
has_value
())
{
if
(
!
ie_uplink_data_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_uplink_data_status is not available"
);
Logger
::
nas_mm
().
debug
(
"IE %s is not available"
,
UplinkDataStatus
::
GetIeName
().
c_str
());
}
else
{
}
else
{
size
=
ie_uplink_data_status
.
value
().
Encode
(
size
=
ie_uplink_data_status
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_uplink_data_status error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
UplinkDataStatus
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
return
KEncodeDecodeError
;
}
}
}
}
// PDU session status
// PDU session status
if
(
!
ie_pdu_session_status
.
has_value
())
{
if
(
!
ie_pdu_session_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_pdu_session_status is not available"
);
Logger
::
nas_mm
().
debug
(
"IE %s is not available"
,
PDUSessionStatus
::
GetIeName
().
c_str
());
}
else
{
}
else
{
size
=
ie_pdu_session_status
.
value
().
Encode
(
size
=
ie_pdu_session_status
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_pdu_session_status error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
PDUSessionStatus
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
return
KEncodeDecodeError
;
}
}
}
}
// Allowed PDU session status
// Allowed PDU session status
if
(
!
ie_allowed_pdu_session_status
.
has_value
())
{
if
(
!
ie_allowed_pdu_session_status
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_allowed_pdu_session_status is not available"
);
Logger
::
nas_mm
().
debug
(
"IE %s is not available"
,
AllowedPDUSessionStatus
::
GetIeName
().
c_str
());
}
else
{
}
else
{
size
=
ie_allowed_pdu_session_status
.
value
().
Encode
(
size
=
ie_allowed_pdu_session_status
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_allowed_pdu_session_status error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
AllowedPDUSessionStatus
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
return
KEncodeDecodeError
;
}
}
}
}
// NAS message container
// NAS message container
if
(
!
ie_nas_message_container
.
has_value
())
{
if
(
!
ie_nas_message_container
.
has_value
())
{
Logger
::
nas_mm
().
warn
(
"IE ie_nas_message_container is not available"
);
Logger
::
nas_mm
().
debug
(
"IE %s is not available"
,
NasMessageContainer
::
GetIeName
().
c_str
());
}
else
{
}
else
{
size
=
ie_nas_message_container
.
value
().
Encode
(
size
=
ie_nas_message_container
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_nas_message_container error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
NasMessageContainer
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
return
KEncodeDecodeError
;
}
}
}
}
...
@@ -260,7 +267,7 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
...
@@ -260,7 +267,7 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
ServiceRequest
::
Decode
(
NasMmPlainHeader
*
header
,
uint8_t
*
buf
,
int
len
)
{
int
ServiceRequest
::
Decode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Decoding ServiceRequest message"
);
Logger
::
nas_mm
().
debug
(
"Decoding ServiceRequest message"
);
int
decoded_size
=
0
;
int
decoded_size
=
0
;
...
@@ -288,12 +295,15 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
...
@@ -288,12 +295,15 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
if
(
decoded_result
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
if
(
decoded_result
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
decoded_size
+=
decoded_result
;
decoded_size
+=
decoded_result
;
uint8_t
octet
=
*
(
buf
+
decoded_size
);
// Decode other IEs
uint8_t
octet
=
0x00
;
DECODE_U8_VALUE
(
buf
+
decoded_size
,
octet
);
Logger
::
nas_mm
().
debug
(
"First optional IE (0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"First optional IE (0x%x)"
,
octet
);
while
((
octet
!=
0x0
))
{
while
((
octet
!=
0x0
))
{
Logger
::
nas_mm
().
debug
(
"IEI 0x%x"
,
octet
);
switch
(
octet
)
{
switch
(
octet
)
{
case
kIeiUplinkDataStatus
:
{
case
kIeiUplinkDataStatus
:
{
Logger
::
nas_mm
().
debug
(
"Decoding
ie_uplink_data_status (IEI: 0x40)"
);
Logger
::
nas_mm
().
debug
(
"Decoding
IEI 0x%x"
,
kIeiUplinkDataStatus
);
UplinkDataStatus
ie_uplink_data_status_tmp
=
{};
UplinkDataStatus
ie_uplink_data_status_tmp
=
{};
if
((
decoded_result
=
ie_uplink_data_status_tmp
.
Decode
(
if
((
decoded_result
=
ie_uplink_data_status_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
@@ -302,13 +312,12 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
...
@@ -302,13 +312,12 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
decoded_size
+=
decoded_result
;
ie_uplink_data_status
=
ie_uplink_data_status
=
std
::
optional
<
UplinkDataStatus
>
(
ie_uplink_data_status_tmp
);
std
::
optional
<
UplinkDataStatus
>
(
ie_uplink_data_status_tmp
);
octet
=
*
(
buf
+
decoded_size
);
DECODE_U8_VALUE
(
buf
+
decoded_size
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
}
break
;
case
kIeiPduSessionStatus
:
{
case
kIeiPduSessionStatus
:
{
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiPduSessionStatus
);
"Decoding ie_pdu_session_status (IEI 0x%x)"
,
kIeiPduSessionStatus
);
PDUSessionStatus
ie_pdu_session_status_tmp
=
{};
PDUSessionStatus
ie_pdu_session_status_tmp
=
{};
if
((
decoded_result
=
ie_pdu_session_status_tmp
.
Decode
(
if
((
decoded_result
=
ie_pdu_session_status_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
@@ -317,14 +326,13 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
...
@@ -317,14 +326,13 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
decoded_size
+=
decoded_result
;
ie_pdu_session_status
=
ie_pdu_session_status
=
std
::
optional
<
PDUSessionStatus
>
(
ie_pdu_session_status_tmp
);
std
::
optional
<
PDUSessionStatus
>
(
ie_pdu_session_status_tmp
);
octet
=
*
(
buf
+
decoded_size
);
DECODE_U8_VALUE
(
buf
+
decoded_size
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
}
break
;
case
kIeiAllowedPduSessionStatus
:
{
case
kIeiAllowedPduSessionStatus
:
{
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"Decoding ie_allowed_pdu_session_status, IEI 0x%x"
,
"Decoding IEI 0x%x"
,
kIeiAllowedPduSessionStatus
);
kIeiAllowedPduSessionStatus
);
AllowedPDUSessionStatus
ie_allowed_pdu_session_status_tmp
=
{};
AllowedPDUSessionStatus
ie_allowed_pdu_session_status_tmp
=
{};
if
((
decoded_result
=
ie_allowed_pdu_session_status_tmp
.
Decode
(
if
((
decoded_result
=
ie_allowed_pdu_session_status_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
@@ -333,12 +341,12 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
...
@@ -333,12 +341,12 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
decoded_size
+=
decoded_result
;
ie_allowed_pdu_session_status
=
std
::
optional
<
AllowedPDUSessionStatus
>
(
ie_allowed_pdu_session_status
=
std
::
optional
<
AllowedPDUSessionStatus
>
(
ie_allowed_pdu_session_status_tmp
);
ie_allowed_pdu_session_status_tmp
);
octet
=
*
(
buf
+
decoded_size
);
DECODE_U8_VALUE
(
buf
+
decoded_size
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
}
break
;
case
kIeiNasMessageContainer
:
{
case
kIeiNasMessageContainer
:
{
Logger
::
nas_mm
().
debug
(
"Decoding
ie_nas_message_container(IEI: 0x71)"
);
Logger
::
nas_mm
().
debug
(
"Decoding
IEI 0x%x"
,
kIeiNasMessageContainer
);
NasMessageContainer
ie_nas_message_container_tmp
=
{};
NasMessageContainer
ie_nas_message_container_tmp
=
{};
if
((
decoded_result
=
ie_nas_message_container_tmp
.
Decode
(
if
((
decoded_result
=
ie_nas_message_container_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
@@ -347,7 +355,7 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
...
@@ -347,7 +355,7 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
decoded_size
+=
decoded_result
;
ie_nas_message_container
=
ie_nas_message_container
=
std
::
optional
<
NasMessageContainer
>
(
ie_nas_message_container_tmp
);
std
::
optional
<
NasMessageContainer
>
(
ie_nas_message_container_tmp
);
octet
=
*
(
buf
+
decoded_size
);
DECODE_U8_VALUE
(
buf
+
decoded_size
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
}
break
;
...
...
src/nas/msgs/ServiceRequest.hpp
View file @
93497520
...
@@ -35,15 +35,16 @@ class ServiceRequest : public NasMmPlainHeader {
...
@@ -35,15 +35,16 @@ class ServiceRequest : public NasMmPlainHeader {
void
SetHeader
(
uint8_t
security_header_type
);
void
SetHeader
(
uint8_t
security_header_type
);
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Decode
(
NasMmPlainHeader
*
header
,
uint8_t
*
buf
,
int
len
);
int
Decode
(
uint8_t
*
buf
,
int
len
);
void
SetNgKsi
(
uint8_t
tsc
,
uint8_t
key_set_id
);
void
SetNgKsi
(
uint8_t
tsc
,
uint8_t
key_set_id
);
void
GetNgKsi
(
uint8_t
&
ng_ksi
)
const
;
void
GetNgKsi
(
uint8_t
&
ng_ksi
)
const
;
void
SetServiceType
(
uint8_t
value
);
void
SetServiceType
(
uint8_t
value
);
void
GetServiceType
(
uint8_t
&
value
);
void
GetServiceType
(
uint8_t
&
value
)
const
;
void
Set5gSTmsi
(
uint16_t
amf_set_id
,
uint8_t
amf_pointer
,
std
::
string
tmsi
);
void
Set5gSTmsi
(
uint16_t
amf_set_id
,
uint8_t
amf_pointer
,
const
std
::
string
&
tmsi
);
bool
Get5gSTmsi
(
bool
Get5gSTmsi
(
uint16_t
&
amf_set_id
,
uint8_t
&
amf_pointer
,
std
::
string
&
tmsi
)
const
;
uint16_t
&
amf_set_id
,
uint8_t
&
amf_pointer
,
std
::
string
&
tmsi
)
const
;
...
...
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