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
Hide 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) {
}
//------------------------------------------------------------------------------
void
ServiceType
::
GetValue
(
uint8_t
&
value
)
{
void
ServiceType
::
GetValue
(
uint8_t
&
value
)
const
{
value
=
service_type_value_
;
}
...
...
src/nas/ies/ServiceType.hpp
View file @
93497520
...
...
@@ -40,7 +40,7 @@ class ServiceType : public Type1NasIe {
// int Decode(uint8_t* nuf, int len, bool is_iei, bool is_high);
void
SetValue
(
uint8_t
value
);
void
GetValue
(
uint8_t
&
value
);
void
GetValue
(
uint8_t
&
value
)
const
;
private:
void
SetValue
()
override
;
...
...
src/nas/msgs/ServiceRequest.cpp
View file @
93497520
...
...
@@ -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
);
}
//------------------------------------------------------------------------------
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
);
}
...
...
@@ -173,12 +173,9 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
// ngKSI and Service Type
int
size
=
ie_ng_ksi
.
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
==
KEncodeDecodeError
)
{
Logger
::
nas_mm
().
error
(
"Encoding NgKSI error"
);
return
KEncodeDecodeError
;
}
if
(
size
!=
0
)
{
Logger
::
nas_mm
().
error
(
"Encoding NgKSI error"
);
if
((
size
==
KEncodeDecodeError
)
or
(
size
!=
0
))
{
// 1/2 octet
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
NasKeySetIdentifier
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
}
...
...
@@ -186,7 +183,8 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
++
;
// 1/2 octet for ngKSI, 1/2 for Service Type
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_service_type error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
ServiceType
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
}
...
...
@@ -195,62 +193,71 @@ int ServiceRequest::Encode(uint8_t* buf, int len) {
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
}
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
;
}
// Uplink data status
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
{
size
=
ie_uplink_data_status
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_uplink_data_status error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
UplinkDataStatus
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
}
}
// PDU session status
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
{
size
=
ie_pdu_session_status
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_pdu_session_status error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
PDUSessionStatus
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
}
}
// Allowed PDU session status
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
{
size
=
ie_allowed_pdu_session_status
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
}
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
;
}
}
// NAS message container
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
{
size
=
ie_nas_message_container
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
KEncodeDecodeError
)
{
encoded_size
+=
size
;
}
else
{
Logger
::
nas_mm
().
error
(
"Encoding ie_nas_message_container error"
);
Logger
::
nas_mm
().
debug
(
"Encoding %s error"
,
NasMessageContainer
::
GetIeName
().
c_str
());
return
KEncodeDecodeError
;
}
}
...
...
@@ -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"
);
int
decoded_size
=
0
;
...
...
@@ -288,12 +295,15 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
if
(
decoded_result
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
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
);
while
((
octet
!=
0x0
))
{
Logger
::
nas_mm
().
debug
(
"IEI 0x%x"
,
octet
);
switch
(
octet
)
{
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
=
{};
if
((
decoded_result
=
ie_uplink_data_status_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
...
@@ -302,13 +312,12 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
ie_uplink_data_status
=
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
);
}
break
;
case
kIeiPduSessionStatus
:
{
Logger
::
nas_mm
().
debug
(
"Decoding ie_pdu_session_status (IEI 0x%x)"
,
kIeiPduSessionStatus
);
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiPduSessionStatus
);
PDUSessionStatus
ie_pdu_session_status_tmp
=
{};
if
((
decoded_result
=
ie_pdu_session_status_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
...
@@ -317,14 +326,13 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
ie_pdu_session_status
=
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
);
}
break
;
case
kIeiAllowedPduSessionStatus
:
{
Logger
::
nas_mm
().
debug
(
"Decoding ie_allowed_pdu_session_status, IEI 0x%x"
,
kIeiAllowedPduSessionStatus
);
"Decoding IEI 0x%x"
,
kIeiAllowedPduSessionStatus
);
AllowedPDUSessionStatus
ie_allowed_pdu_session_status_tmp
=
{};
if
((
decoded_result
=
ie_allowed_pdu_session_status_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
...
@@ -333,12 +341,12 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
ie_allowed_pdu_session_status
=
std
::
optional
<
AllowedPDUSessionStatus
>
(
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
);
}
break
;
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
=
{};
if
((
decoded_result
=
ie_nas_message_container_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
...
...
@@ -347,7 +355,7 @@ int ServiceRequest::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size
+=
decoded_result
;
ie_nas_message_container
=
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
);
}
break
;
...
...
src/nas/msgs/ServiceRequest.hpp
View file @
93497520
...
...
@@ -35,15 +35,16 @@ class ServiceRequest : public NasMmPlainHeader {
void
SetHeader
(
uint8_t
security_header_type
);
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
GetNgKsi
(
uint8_t
&
ng_ksi
)
const
;
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
(
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