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
0a4b4ef1
Commit
0a4b4ef1
authored
Oct 11, 2022
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code refactor for UEStatus
parent
8107d450
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
190 additions
and
172 deletions
+190
-172
src/nas/common/NasIeHeader.hpp
src/nas/common/NasIeHeader.hpp
+2
-2
src/nas/ies/MICOIndication.cpp
src/nas/ies/MICOIndication.cpp
+58
-53
src/nas/ies/MICOIndication.hpp
src/nas/ies/MICOIndication.hpp
+7
-5
src/nas/ies/UEStatus.cpp
src/nas/ies/UEStatus.cpp
+61
-53
src/nas/ies/UEStatus.hpp
src/nas/ies/UEStatus.hpp
+14
-15
src/nas/ies/_5GS_DRX_arameters.cpp
src/nas/ies/_5GS_DRX_arameters.cpp
+2
-2
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+2
-2
src/nas/msgs/RegistrationAccept.hpp
src/nas/msgs/RegistrationAccept.hpp
+1
-1
src/nas/msgs/RegistrationRequest.cpp
src/nas/msgs/RegistrationRequest.cpp
+31
-28
src/nas/msgs/RegistrationRequest.hpp
src/nas/msgs/RegistrationRequest.hpp
+12
-11
No files found.
src/nas/common/NasIeHeader.hpp
View file @
0a4b4ef1
...
@@ -20,7 +20,9 @@
...
@@ -20,7 +20,9 @@
*/
*/
#include "../ies/5GSMobileIdentity.hpp"
#include "../ies/5GSMobileIdentity.hpp"
#include "../ies/MICOIndication.hpp"
#include "../ies/PDUSessionStatus.hpp"
#include "../ies/PDUSessionStatus.hpp"
#include "../ies/UEStatus.hpp"
#include "NasMmPlainHeader.hpp"
#include "NasMmPlainHeader.hpp"
#include "5GMMCapability.hpp"
#include "5GMMCapability.hpp"
#include "5GSRegistrationType.hpp"
#include "5GSRegistrationType.hpp"
...
@@ -43,7 +45,6 @@
...
@@ -43,7 +45,6 @@
#include "IMEISV_Request.hpp"
#include "IMEISV_Request.hpp"
#include "LADN_Indication.hpp"
#include "LADN_Indication.hpp"
#include "MA_PDU_Session_Information.hpp"
#include "MA_PDU_Session_Information.hpp"
#include "MICO_Indication.hpp"
#include "NAS_Message_Container.hpp"
#include "NAS_Message_Container.hpp"
#include "NAS_Security_Algorithms.hpp"
#include "NAS_Security_Algorithms.hpp"
#include "NSSAI.hpp"
#include "NSSAI.hpp"
...
@@ -68,7 +69,6 @@
...
@@ -68,7 +69,6 @@
#include "UES_Usage_Setting.hpp"
#include "UES_Usage_Setting.hpp"
#include "UESecurityCapability.hpp"
#include "UESecurityCapability.hpp"
#include "UE_Radio_Capability_ID.hpp"
#include "UE_Radio_Capability_ID.hpp"
#include "UE_Status.hpp"
#include "UplinkDataStatus.hpp"
#include "UplinkDataStatus.hpp"
#include "_5GMM_Cause.hpp"
#include "_5GMM_Cause.hpp"
#include "_5GSDeregistrationType.hpp"
#include "_5GSDeregistrationType.hpp"
...
...
src/nas/ies/MICO
_
Indication.cpp
→
src/nas/ies/MICOIndication.cpp
View file @
0a4b4ef1
...
@@ -19,99 +19,104 @@
...
@@ -19,99 +19,104 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file
#include "3gpp_24.501.hpp"
\brief
#include "common_defs.h"
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "MICO_Indication.hpp"
#include "logger.hpp"
#include "logger.hpp"
#include "MICOIndication.hpp"
using
namespace
nas
;
using
namespace
nas
;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
MICO
_Indication
::
MICO_
Indication
(
const
uint8_t
_iei
,
bool
sprti
,
bool
raai
)
{
MICO
Indication
::
MICO
Indication
(
const
uint8_t
_iei
,
bool
sprti
,
bool
raai
)
{
iei
=
_iei
;
iei
=
_iei
;
RAAI
=
raai
;
RAAI
=
raai
;
SPRTI
=
sprti
;
SPRTI
=
sprti
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
MICO
_Indication
::
MICO_
Indication
(
bool
sprti
,
bool
raai
)
{
MICO
Indication
::
MICO
Indication
(
bool
sprti
,
bool
raai
)
{
this
->
iei
=
0
;
this
->
iei
=
0
;
this
->
RAAI
=
raai
;
this
->
RAAI
=
raai
;
this
->
SPRTI
=
sprti
;
this
->
SPRTI
=
sprti
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
MICO_Indication
::
MICO_Indication
()
{}
MICOIndication
::
MICOIndication
()
{
iei
=
0
;
RAAI
=
false
;
SPRTI
=
false
;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
MICO
_Indication
::~
MICO_
Indication
(){};
MICO
Indication
::~
MICO
Indication
(){};
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
MICO_Indication
::
encode2Buffer
(
uint8_t
*
buf
,
int
len
)
{
int
MICOIndication
::
encode2Buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Encoding MICO_Indication IE iei (0x%x)"
,
iei
);
Logger
::
nas_mm
().
debug
(
"Encoding MICOIndication IE ( IEI 0x%x)"
,
iei
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"Len is less than one"
);
if
(
len
<
kMICOIndicationIELength
)
{
return
-
1
;
Logger
::
nas_mm
().
error
(
}
else
{
"Buffer length is less than the minimum length of this IE (%d octet)"
,
uint8_t
octet
=
0
;
kMICOIndicationIELength
);
if
(
!
(
iei
&
0x0f
))
{
return
KEncodeDecodeError
;
// octet = (0x0f) & ((tsc << 3) | key_id);
//*buf = octet;
// Logger::nas_mm().debug("encoded NasKeySetIdentifier IE(len(1/2
// octet))"); return 0;
}
else
{
octet
=
(
iei
<<
4
)
|
(
SPRTI
<<
1
)
|
RAAI
;
*
buf
=
octet
;
Logger
::
nas_mm
().
debug
(
"Encoded MICO_Indication IE (len: 1 octet)"
);
return
1
;
}
}
}
return
1
;
uint8_t
octet
=
0
;
int
encoded_size
=
0
;
octet
=
(
iei
<<
4
)
|
(
SPRTI
<<
1
)
|
RAAI
;
ENCODE_U8
(
buf
+
encoded_size
,
octet
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"Encoded MICOIndication IE (len: %d octet)"
,
encoded_size
);
return
encoded_size
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
MICO_Indication
::
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
int
MICOIndication
::
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"Decoding MICO_Indication IE"
);
Logger
::
nas_mm
().
debug
(
"Decoding MICOIndication IE"
);
if
(
len
<
1
)
{
if
(
len
<
kMICOIndicationIELength
)
{
Logger
::
nas_mm
().
error
(
"Len is less than one"
);
Logger
::
nas_mm
().
error
(
return
0
;
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kMICOIndicationIELength
);
return
KEncodeDecodeError
;
}
uint8_t
octet
=
0
;
int
decoded_size
=
0
;
DECODE_U8
(
buf
+
decoded_size
,
octet
,
decoded_size
);
if
(
is_option
)
{
iei
=
(
octet
&
0xf0
)
>>
4
;
}
else
{
}
else
{
uint8_t
octet
=
(
*
buf
);
iei
=
0
;
if
(
is_option
)
{
iei
=
(
octet
&
0xf0
)
>>
4
;
}
else
{
iei
=
0
;
}
SPRTI
=
octet
&
0x02
;
RAAI
=
octet
&
0x01
;
Logger
::
nas_mm
().
debug
(
"decoded MICO_Indication iei (0x%x) sprti (0x%x) raai (0x%x)"
,
iei
,
SPRTI
,
RAAI
);
return
1
;
}
}
SPRTI
=
octet
&
0x02
;
RAAI
=
octet
&
0x01
;
Logger
::
nas_mm
().
debug
(
"Decoded MICOIndication IEI 0x%x, SPRTI 0x%x, RAAI 0x%x"
,
iei
,
SPRTI
,
RAAI
);
return
decoded_size
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
MICO
_
Indication
::
setSPRTI
(
bool
value
)
{
void
MICOIndication
::
setSPRTI
(
bool
value
)
{
SPRTI
=
value
;
SPRTI
=
value
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
MICO
_
Indication
::
setRAAI
(
bool
value
)
{
void
MICOIndication
::
setRAAI
(
bool
value
)
{
RAAI
=
value
;
RAAI
=
value
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool
MICO
_
Indication
::
getSPRTI
()
{
bool
MICOIndication
::
getSPRTI
()
{
return
SPRTI
;
return
SPRTI
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool
MICO
_
Indication
::
getRAAI
()
{
bool
MICOIndication
::
getRAAI
()
{
return
RAAI
;
return
RAAI
;
}
}
src/nas/ies/MICO
_
Indication.hpp
→
src/nas/ies/MICOIndication.hpp
View file @
0a4b4ef1
...
@@ -24,14 +24,16 @@
...
@@ -24,14 +24,16 @@
#include <stdint.h>
#include <stdint.h>
constexpr
uint8_t
kMICOIndicationIELength
=
1
;
namespace
nas
{
namespace
nas
{
class
MICO
_
Indication
{
class
MICOIndication
{
public:
public:
MICO
_
Indication
();
MICOIndication
();
MICO
_
Indication
(
const
uint8_t
_iei
,
bool
sprti
,
bool
raai
);
MICOIndication
(
const
uint8_t
_iei
,
bool
sprti
,
bool
raai
);
MICO
_
Indication
(
bool
sprti
,
bool
raai
);
MICOIndication
(
bool
sprti
,
bool
raai
);
~
MICO
_
Indication
();
~
MICOIndication
();
int
encode2Buffer
(
uint8_t
*
buf
,
int
len
);
int
encode2Buffer
(
uint8_t
*
buf
,
int
len
);
int
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
int
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
...
...
src/nas/ies/UE
_
Status.cpp
→
src/nas/ies/UEStatus.cpp
View file @
0a4b4ef1
...
@@ -19,100 +19,108 @@
...
@@ -19,100 +19,108 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file
#include "3gpp_24.501.hpp"
\brief
#include "common_defs.h"
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "UE_Status.hpp"
#include "logger.hpp"
#include "logger.hpp"
#include "UEStatus.hpp"
using
namespace
nas
;
using
namespace
nas
;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
UE_Status
::
UE_Status
(
uint8_t
iei
)
{
UEStatus
::
UEStatus
(
uint8_t
iei
)
{
_iei
=
iei
;
_iei
=
iei
;
S1
=
false
;
length
=
1
;
N1
=
false
;
S1
=
false
;
N1
=
false
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
UE_Status
::
UE_Status
(
const
uint8_t
iei
,
bool
n1
,
bool
s1
)
{
UEStatus
::
UEStatus
(
const
uint8_t
iei
,
bool
n1
,
bool
s1
)
{
_iei
=
iei
;
_iei
=
iei
;
S1
=
s1
;
length
=
1
;
N1
=
n1
;
S1
=
s1
;
N1
=
n1
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
UE_Status
::
UE_Status
()
{
UEStatus
::
UEStatus
()
{
_iei
=
0
;
_iei
=
0
;
S1
=
false
;
length
=
1
;
N1
=
false
;
S1
=
false
;
N1
=
false
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
UE
_Status
::~
UE_
Status
()
{}
UE
Status
::~
UE
Status
()
{}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
UE
_
Status
::
setS1
(
bool
value
)
{
void
UEStatus
::
setS1
(
bool
value
)
{
S1
=
value
;
S1
=
value
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
UE
_
Status
::
setN1
(
bool
value
)
{
void
UEStatus
::
setN1
(
bool
value
)
{
N1
=
value
;
N1
=
value
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool
UE
_
Status
::
getS1
()
{
bool
UEStatus
::
getS1
()
{
return
S1
;
return
S1
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool
UE
_
Status
::
getN1
()
{
bool
UEStatus
::
getN1
()
{
return
N1
;
return
N1
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
UE_Status
::
encode2Buffer
(
uint8_t
*
buf
,
int
len
)
{
int
UEStatus
::
encode2Buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"encoding UE_Status iei(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"Encoding UE Status (IEI 0x%x)"
,
_iei
);
if
(
len
<
3
)
{
// Logger::nas_mm().error("len is less than %d", length);
if
((
len
<
kUEStatusIELength
)
or
(
len
<
length
+
2
))
{
return
0
;
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kUEStatusIELength
);
return
KEncodeDecodeError
;
}
}
int
encoded_size
=
0
;
int
encoded_size
=
0
;
if
(
_iei
)
{
if
(
_iei
)
{
*
(
buf
+
encoded_size
)
=
_iei
;
ENCODE_U8
(
buf
+
encoded_size
,
_iei
,
encoded_size
);
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
3
-
2
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
0x00
|
S1
|
N1
<<
1
;
encoded_size
++
;
}
else
{
// *(buf + encoded_size) = length - 1; encoded_size++;
// *(buf + encoded_size) = _value; encoded_size++; encoded_size++;
}
}
Logger
::
nas_mm
().
debug
(
"encoded UE_Status len(%d)"
,
encoded_size
);
ENCODE_U8
(
buf
+
encoded_size
,
length
,
encoded_size
);
uint8_t
octet
=
0x03
&
(
S1
|
(
N1
<<
1
));
ENCODE_U8
(
buf
+
encoded_size
,
octet
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"Encoded UE Status ( len %d)"
,
encoded_size
);
return
encoded_size
;
return
encoded_size
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int
UE_Status
::
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
int
UEStatus
::
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"decoding UE_Status iei(0x%x)"
,
*
buf
);
Logger
::
nas_mm
().
debug
(
"Decoding UE Status"
);
if
((
len
<
kUEStatusIELength
)
or
(
len
<
length
+
2
))
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kUEStatusIELength
);
return
KEncodeDecodeError
;
}
int
decoded_size
=
0
;
int
decoded_size
=
0
;
if
(
is_option
)
{
if
(
is_option
)
{
decoded_size
++
;
DECODE_U8
(
buf
+
decoded_size
,
_iei
,
decoded_size
)
;
}
}
S1
=
0
;
DECODE_U8
(
buf
+
decoded_size
,
length
,
decoded_size
)
;
N1
=
0
;
// length = *(buf + decoded_size)
;
uint8_t
octet
=
0
;
decoded_size
++
;
DECODE_U8
(
buf
+
decoded_size
,
octet
,
decoded_size
)
;
N1
=
*
(
buf
+
decoded_size
)
&
0x02
;
S1
=
*
(
buf
+
decoded_size
)
&
0x01
;
N1
=
octet
&
0x02
;
decoded_size
++
;
S1
=
octet
&
0x01
;
Logger
::
nas_mm
().
debug
(
"decoded UE_Status N1(0x%x) S1(0x%x)"
,
N1
,
S1
);
Logger
::
nas_mm
().
debug
(
Logger
::
nas_mm
().
debug
(
"decoded UE_Status len(%d)"
,
decoded_size
);
"Decoded UE Status, N1 0x%x, S1 0x%x, len %d"
,
N1
,
S1
,
decoded_size
);
return
decoded_size
;
return
decoded_size
;
}
}
src/nas/ies/UE
_
Status.hpp
→
src/nas/ies/UEStatus.hpp
View file @
0a4b4ef1
...
@@ -19,35 +19,34 @@
...
@@ -19,35 +19,34 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file
#ifndef _UE_Status_H_
\brief
#define _UE_Status_H_
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef __UE_Status_H_
#define __UE_Status_H_
#include <stdint.h>
#include <stdint.h>
constexpr
uint8_t
kUEStatusIELength
=
3
;
namespace
nas
{
namespace
nas
{
class
UE
_
Status
{
class
UEStatus
{
public:
public:
UE_Status
();
UEStatus
();
UE_Status
(
uint8_t
iei
);
UEStatus
(
uint8_t
iei
);
UE_Status
(
const
uint8_t
iei
,
bool
n1
,
bool
s1
);
UEStatus
(
const
uint8_t
iei
,
bool
n1
,
bool
s1
);
~
UE_Status
();
~
UEStatus
();
int
encode2Buffer
(
uint8_t
*
buf
,
int
len
);
int
encode2Buffer
(
uint8_t
*
buf
,
int
len
);
int
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
int
decodeFromBuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
void
setN1
(
bool
value
);
void
setN1
(
bool
value
);
void
setS1
(
bool
value
);
bool
getN1
();
bool
getN1
();
void
setS1
(
bool
value
);
bool
getS1
();
bool
getS1
();
private:
private:
uint8_t
_iei
;
uint8_t
_iei
;
uint8_t
length
;
bool
N1
;
bool
N1
;
bool
S1
;
bool
S1
;
};
};
...
...
src/nas/ies/_5GS_DRX_arameters.cpp
View file @
0a4b4ef1
...
@@ -95,7 +95,7 @@ int _5GS_DRX_arameters::decodeFromBuffer(
...
@@ -95,7 +95,7 @@ int _5GS_DRX_arameters::decodeFromBuffer(
decoded_size
++
;
decoded_size
++
;
_value
=
*
(
buf
+
decoded_size
)
&
0x0f
;
_value
=
*
(
buf
+
decoded_size
)
&
0x0f
;
decoded_size
++
;
decoded_size
++
;
Logger
::
nas_mm
().
debug
(
"decoded _5GS_DRX_arameters DRX value(0x%x)"
,
_value
);
Logger
::
nas_mm
().
debug
(
"decoded _5GS_DRX_
P
arameters DRX value(0x%x)"
,
_value
);
Logger
::
nas_mm
().
debug
(
"decoded
UE_Statu
s len(%d)"
,
decoded_size
);
Logger
::
nas_mm
().
debug
(
"decoded
_5GS_DRX_Parameter
s len(%d)"
,
decoded_size
);
return
decoded_size
;
return
decoded_size
;
}
}
src/nas/msgs/RegistrationAccept.cpp
View file @
0a4b4ef1
...
@@ -174,7 +174,7 @@ void RegistrationAccept::setPDU_session_reactivation_result_error_cause(
...
@@ -174,7 +174,7 @@ void RegistrationAccept::setPDU_session_reactivation_result_error_cause(
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setMICO_Indication
(
bool
sprti
,
bool
raai
)
{
void
RegistrationAccept
::
setMICO_Indication
(
bool
sprti
,
bool
raai
)
{
ie_MICO_indicationl
=
new
MICO
_
Indication
(
0x0B
,
sprti
,
raai
);
ie_MICO_indicationl
=
new
MICOIndication
(
0x0B
,
sprti
,
raai
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
@@ -628,7 +628,7 @@ int RegistrationAccept::decodeFromBuffer(
...
@@ -628,7 +628,7 @@ int RegistrationAccept::decodeFromBuffer(
switch
((
octet
&
0xf0
)
>>
4
)
{
switch
((
octet
&
0xf0
)
>>
4
)
{
case
0xB
:
{
case
0xB
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0xB)"
);
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0xB)"
);
ie_MICO_indicationl
=
new
MICO
_
Indication
();
ie_MICO_indicationl
=
new
MICOIndication
();
decoded_size
+=
ie_MICO_indicationl
->
decodeFromBuffer
(
decoded_size
+=
ie_MICO_indicationl
->
decodeFromBuffer
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
octet
=
*
(
buf
+
decoded_size
);
octet
=
*
(
buf
+
decoded_size
);
...
...
src/nas/msgs/RegistrationAccept.hpp
View file @
0a4b4ef1
...
@@ -97,7 +97,7 @@ class RegistrationAccept {
...
@@ -97,7 +97,7 @@ class RegistrationAccept {
PDU_Session_Reactivation_Result
*
ie_pdu_session_reactivation_result
;
PDU_Session_Reactivation_Result
*
ie_pdu_session_reactivation_result
;
PDU_Session_Reactivation_Result_Error_Cause
*
PDU_Session_Reactivation_Result_Error_Cause
*
ie_pdu_session_reactivation_result_error_cause
;
ie_pdu_session_reactivation_result_error_cause
;
MICO
_
Indication
*
ie_MICO_indicationl
;
MICOIndication
*
ie_MICO_indicationl
;
Network_Slicing_Indication
*
ie_network_slicing_indication
;
Network_Slicing_Indication
*
ie_network_slicing_indication
;
GPRS_Timer_3
*
ie_T3512_value
;
GPRS_Timer_3
*
ie_T3512_value
;
GPRS_Timer_2
*
ie_Non_3GPP_de_registration_timer_value
;
GPRS_Timer_2
*
ie_Non_3GPP_de_registration_timer_value
;
...
...
src/nas/msgs/RegistrationRequest.cpp
View file @
0a4b4ef1
...
@@ -38,8 +38,8 @@ RegistrationRequest::RegistrationRequest()
...
@@ -38,8 +38,8 @@ RegistrationRequest::RegistrationRequest()
ie_uplink_data_status
=
std
::
nullopt
;
ie_uplink_data_status
=
std
::
nullopt
;
ie_last_visited_registered_TAI
=
std
::
nullopt
;
ie_last_visited_registered_TAI
=
std
::
nullopt
;
ie_PDU_session_status
=
std
::
nullopt
;
ie_PDU_session_status
=
std
::
nullopt
;
ie_MICO_indication
l
=
nullptr
;
ie_MICO_indication
=
std
::
nullopt
;
ie_ue_status
=
nullptr
;
ie_ue_status
=
std
::
nullopt
;
ie_additional_guti
=
nullptr
;
ie_additional_guti
=
nullptr
;
ie_allowed_PDU_session_status
=
nullptr
;
ie_allowed_PDU_session_status
=
nullptr
;
ie_ues_usage_setting
=
nullptr
;
ie_ues_usage_setting
=
nullptr
;
...
@@ -195,7 +195,7 @@ bool RegistrationRequest::getNonCurrentNativeNasKSI(uint8_t& value) const {
...
@@ -195,7 +195,7 @@ bool RegistrationRequest::getNonCurrentNativeNasKSI(uint8_t& value) const {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
set5G
_MM_c
apability
(
uint8_t
value
)
{
void
RegistrationRequest
::
set5G
MMC
apability
(
uint8_t
value
)
{
ie_5g_mm_capability
=
std
::
make_optional
<
_5GMMCapability
>
(
0x10
,
value
);
ie_5g_mm_capability
=
std
::
make_optional
<
_5GMMCapability
>
(
0x10
,
value
);
}
}
...
@@ -209,14 +209,14 @@ bool RegistrationRequest::get5GMMCapability(uint8_t& value) {
...
@@ -209,14 +209,14 @@ bool RegistrationRequest::get5GMMCapability(uint8_t& value) {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setUE
_Security_
Capability
(
void
RegistrationRequest
::
setUE
Security
Capability
(
uint8_t
g_EASel
,
uint8_t
g_IASel
)
{
uint8_t
g_EASel
,
uint8_t
g_IASel
)
{
ie_ue_security_capability
=
ie_ue_security_capability
=
std
::
make_optional
<
UESecurityCapability
>
(
0x2E
,
g_EASel
,
g_IASel
);
std
::
make_optional
<
UESecurityCapability
>
(
0x2E
,
g_EASel
,
g_IASel
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setUE
_Security_
Capability
(
void
RegistrationRequest
::
setUE
Security
Capability
(
uint8_t
g_EASel
,
uint8_t
g_IASel
,
uint8_t
EEASel
,
uint8_t
EIASel
)
{
uint8_t
g_EASel
,
uint8_t
g_IASel
,
uint8_t
EEASel
,
uint8_t
EIASel
)
{
ie_ue_security_capability
=
std
::
make_optional
<
UESecurityCapability
>
(
ie_ue_security_capability
=
std
::
make_optional
<
UESecurityCapability
>
(
0x2E
,
g_EASel
,
g_IASel
,
EEASel
,
EIASel
);
0x2E
,
g_EASel
,
g_IASel
,
EEASel
,
EIASel
);
...
@@ -252,7 +252,7 @@ bool RegistrationRequest::getUeSecurityCapability(
...
@@ -252,7 +252,7 @@ bool RegistrationRequest::getUeSecurityCapability(
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setRequested
_
NSSAI
(
void
RegistrationRequest
::
setRequestedNSSAI
(
std
::
vector
<
struct
SNSSAI_s
>
nssai
)
{
std
::
vector
<
struct
SNSSAI_s
>
nssai
)
{
ie_requested_NSSAI
=
std
::
make_optional
<
NSSAI
>
(
0x2F
,
nssai
);
ie_requested_NSSAI
=
std
::
make_optional
<
NSSAI
>
(
0x2F
,
nssai
);
}
}
...
@@ -269,7 +269,7 @@ bool RegistrationRequest::getRequestedNssai(
...
@@ -269,7 +269,7 @@ bool RegistrationRequest::getRequestedNssai(
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setLast
_Visited_Registered_
TAI
(
void
RegistrationRequest
::
setLast
VisitedRegistered
TAI
(
const
std
::
string
&
mcc
,
const
std
::
string
mnc
,
const
uint32_t
&
tac
)
{
const
std
::
string
&
mcc
,
const
std
::
string
mnc
,
const
uint32_t
&
tac
)
{
ie_last_visited_registered_TAI
=
ie_last_visited_registered_TAI
=
std
::
make_optional
<
_5GSTrackingAreaIdentity
>
(
0
,
mcc
,
mnc
,
tac
);
std
::
make_optional
<
_5GSTrackingAreaIdentity
>
(
0
,
mcc
,
mnc
,
tac
);
...
@@ -294,7 +294,7 @@ bool RegistrationRequest::getS1UeNetworkCapability(uint8_t& eea, uint8_t& eia) {
...
@@ -294,7 +294,7 @@ bool RegistrationRequest::getS1UeNetworkCapability(uint8_t& eea, uint8_t& eia) {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setUplink
_data_s
tatus
(
const
uint16_t
&
value
)
{
void
RegistrationRequest
::
setUplink
DataS
tatus
(
const
uint16_t
&
value
)
{
ie_uplink_data_status
=
std
::
make_optional
<
UplinkDataStatus
>
(
0x40
,
value
);
ie_uplink_data_status
=
std
::
make_optional
<
UplinkDataStatus
>
(
0x40
,
value
);
}
}
...
@@ -309,7 +309,7 @@ bool RegistrationRequest::getUplinkDataStatus(uint16_t& value) {
...
@@ -309,7 +309,7 @@ bool RegistrationRequest::getUplinkDataStatus(uint16_t& value) {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setPDU
_session_s
tatus
(
uint16_t
value
)
{
void
RegistrationRequest
::
setPDU
SessionS
tatus
(
uint16_t
value
)
{
ie_PDU_session_status
=
std
::
make_optional
<
PDUSessionStatus
>
(
0x50
,
value
);
ie_PDU_session_status
=
std
::
make_optional
<
PDUSessionStatus
>
(
0x50
,
value
);
}
}
...
@@ -323,15 +323,15 @@ uint16_t RegistrationRequest::getPduSessionStatus() {
...
@@ -323,15 +323,15 @@ uint16_t RegistrationRequest::getPduSessionStatus() {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setMICO
_
Indication
(
bool
sprti
,
bool
raai
)
{
void
RegistrationRequest
::
setMICOIndication
(
bool
sprti
,
bool
raai
)
{
ie_MICO_indication
l
=
new
MICO_Indication
(
0x0B
,
sprti
,
raai
);
ie_MICO_indication
=
std
::
make_optional
<
MICOIndication
>
(
0x0B
,
sprti
,
raai
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool
RegistrationRequest
::
getMicoIndication
(
uint8_t
&
sprti
,
uint8_t
&
raai
)
{
bool
RegistrationRequest
::
getMicoIndication
(
uint8_t
&
sprti
,
uint8_t
&
raai
)
{
if
(
ie_
PDU_session_status
.
has_value
())
{
if
(
ie_
MICO_indication
.
has_value
())
{
sprti
=
ie_MICO_indication
l
->
getSPRTI
();
sprti
=
ie_MICO_indication
.
value
().
getSPRTI
();
raai
=
ie_MICO_indication
l
->
getRAAI
();
raai
=
ie_MICO_indication
.
value
().
getRAAI
();
return
true
;
return
true
;
}
else
{
}
else
{
return
false
;
return
false
;
...
@@ -339,15 +339,15 @@ bool RegistrationRequest::getMicoIndication(uint8_t& sprti, uint8_t& raai) {
...
@@ -339,15 +339,15 @@ bool RegistrationRequest::getMicoIndication(uint8_t& sprti, uint8_t& raai) {
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
RegistrationRequest
::
setUE
_
Status
(
bool
n1
,
bool
s1
)
{
void
RegistrationRequest
::
setUEStatus
(
bool
n1
,
bool
s1
)
{
ie_ue_status
=
new
UE_Status
(
0x2B
,
n1
,
s1
);
ie_ue_status
=
std
::
make_optional
<
UEStatus
>
(
0x2B
,
n1
,
s1
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool
RegistrationRequest
::
getUeStatus
(
uint8_t
&
n1ModeReg
,
uint8_t
&
s1ModeReg
)
{
bool
RegistrationRequest
::
getUeStatus
(
uint8_t
&
n1ModeReg
,
uint8_t
&
s1ModeReg
)
{
if
(
ie_ue_status
)
{
if
(
ie_ue_status
.
has_value
()
)
{
n1ModeReg
=
ie_ue_status
->
getN1
();
n1ModeReg
=
ie_ue_status
.
value
().
getN1
();
s1ModeReg
=
ie_ue_status
->
getS1
();
s1ModeReg
=
ie_ue_status
.
value
().
getS1
();
return
true
;
return
true
;
}
else
{
}
else
{
return
false
;
return
false
;
...
@@ -669,10 +669,10 @@ int RegistrationRequest::encode2Buffer(uint8_t* buf, int len) {
...
@@ -669,10 +669,10 @@ int RegistrationRequest::encode2Buffer(uint8_t* buf, int len) {
return
0
;
return
0
;
}
}
}
}
if
(
!
ie_MICO_indication
l
)
{
if
(
!
ie_MICO_indication
.
has_value
()
)
{
Logger
::
nas_mm
().
warn
(
"IE ie_MICO_indicationl is not available"
);
Logger
::
nas_mm
().
warn
(
"IE ie_MICO_indicationl is not available"
);
}
else
{
}
else
{
if
(
int
size
=
ie_MICO_indication
l
->
encode2Buffer
(
if
(
int
size
=
ie_MICO_indication
.
value
().
encode2Buffer
(
buf
+
encoded_size
,
len
-
encoded_size
))
{
buf
+
encoded_size
,
len
-
encoded_size
))
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
...
@@ -680,10 +680,10 @@ int RegistrationRequest::encode2Buffer(uint8_t* buf, int len) {
...
@@ -680,10 +680,10 @@ int RegistrationRequest::encode2Buffer(uint8_t* buf, int len) {
return
0
;
return
0
;
}
}
}
}
if
(
!
ie_ue_status
)
{
if
(
!
ie_ue_status
.
has_value
()
)
{
Logger
::
nas_mm
().
warn
(
"IE ie_ue_status is not available"
);
Logger
::
nas_mm
().
warn
(
"IE ie_ue_status is not available"
);
}
else
{
}
else
{
if
(
int
size
=
ie_ue_status
->
encode2Buffer
(
if
(
int
size
=
ie_ue_status
.
value
().
encode2Buffer
(
buf
+
encoded_size
,
len
-
encoded_size
))
{
buf
+
encoded_size
,
len
-
encoded_size
))
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
...
@@ -864,9 +864,11 @@ int RegistrationRequest::decodeFromBuffer(uint8_t* buf, int len) {
...
@@ -864,9 +864,11 @@ int RegistrationRequest::decodeFromBuffer(uint8_t* buf, int len) {
}
break
;
}
break
;
case
0xB
:
{
case
0xB
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0xB)"
);
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0xB)"
);
ie_MICO_indicationl
=
new
MICO_Indication
()
;
MICOIndication
ie_MICO_indication_tmp
=
{}
;
decoded_size
+=
ie_MICO_indication
l
->
decodeFromBuffer
(
decoded_size
+=
ie_MICO_indication
_tmp
.
decodeFromBuffer
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_MICO_indication
=
std
::
optional
<
MICOIndication
>
(
ie_MICO_indication_tmp
);
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
;
...
@@ -970,10 +972,11 @@ int RegistrationRequest::decodeFromBuffer(uint8_t* buf, int len) {
...
@@ -970,10 +972,11 @@ int RegistrationRequest::decodeFromBuffer(uint8_t* buf, int len) {
}
break
;
}
break
;
case
0x2B
:
{
case
0x2B
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x2B)"
);
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x2B)"
);
ie_ue_status
=
new
UE_Status
()
;
UEStatus
ie_ue_status_tmp
=
{}
;
decoded_size
+=
ie_ue_status
->
decodeFromBuffer
(
decoded_size
+=
ie_ue_status
_tmp
.
decodeFromBuffer
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
octet
=
*
(
buf
+
decoded_size
);
ie_ue_status
=
std
::
optional
<
UEStatus
>
(
ie_ue_status_tmp
);
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
0x77
:
{
case
0x77
:
{
...
...
src/nas/msgs/RegistrationRequest.hpp
View file @
0a4b4ef1
...
@@ -75,35 +75,36 @@ class RegistrationRequest : public NasMmPlainHeader {
...
@@ -75,35 +75,36 @@ class RegistrationRequest : public NasMmPlainHeader {
void
setNonCurrentNativeNasKSI
(
uint8_t
tsc
,
uint8_t
key_set_id
);
void
setNonCurrentNativeNasKSI
(
uint8_t
tsc
,
uint8_t
key_set_id
);
bool
getNonCurrentNativeNasKSI
(
uint8_t
&
value
)
const
;
bool
getNonCurrentNativeNasKSI
(
uint8_t
&
value
)
const
;
void
set5G
_MM_c
apability
(
uint8_t
value
);
void
set5G
MMC
apability
(
uint8_t
value
);
bool
get5GMMCapability
(
uint8_t
&
value
);
bool
get5GMMCapability
(
uint8_t
&
value
);
void
setUE
_Security_
Capability
(
uint8_t
g_EASel
,
uint8_t
g_IASel
);
void
setUE
Security
Capability
(
uint8_t
g_EASel
,
uint8_t
g_IASel
);
void
setUE
_Security_
Capability
(
void
setUE
Security
Capability
(
uint8_t
g_EASel
,
uint8_t
g_IASel
,
uint8_t
EEASel
,
uint8_t
EIASel
);
uint8_t
g_EASel
,
uint8_t
g_IASel
,
uint8_t
EEASel
,
uint8_t
EIASel
);
bool
getUeSecurityCapability
(
uint8_t
&
ea
,
uint8_t
&
ia
);
bool
getUeSecurityCapability
(
uint8_t
&
ea
,
uint8_t
&
ia
);
bool
getUeSecurityCapability
(
bool
getUeSecurityCapability
(
uint8_t
&
ea
,
uint8_t
&
ia
,
uint8_t
&
eea
,
uint8_t
&
eia
);
uint8_t
&
ea
,
uint8_t
&
ia
,
uint8_t
&
eea
,
uint8_t
&
eia
);
void
setRequested
_
NSSAI
(
std
::
vector
<
struct
SNSSAI_s
>
nssai
);
void
setRequestedNSSAI
(
std
::
vector
<
struct
SNSSAI_s
>
nssai
);
bool
getRequestedNssai
(
std
::
vector
<
struct
SNSSAI_s
>&
nssai
);
bool
getRequestedNssai
(
std
::
vector
<
struct
SNSSAI_s
>&
nssai
);
void
setUENetworkCapability
(
uint8_t
g_EEASel
,
uint8_t
g_EIASel
);
void
setUENetworkCapability
(
uint8_t
g_EEASel
,
uint8_t
g_EIASel
);
bool
getS1UeNetworkCapability
(
uint8_t
&
eea
,
uint8_t
&
eia
);
bool
getS1UeNetworkCapability
(
uint8_t
&
eea
,
uint8_t
&
eia
);
void
setUplink
_data_s
tatus
(
const
uint16_t
&
value
);
void
setUplink
DataS
tatus
(
const
uint16_t
&
value
);
bool
getUplinkDataStatus
(
uint16_t
&
value
);
bool
getUplinkDataStatus
(
uint16_t
&
value
);
void
setLast
_Visited_Registered_
TAI
(
void
setLast
VisitedRegistered
TAI
(
const
std
::
string
&
mcc
,
const
std
::
string
mnc
,
const
uint32_t
&
tac
);
const
std
::
string
&
mcc
,
const
std
::
string
mnc
,
const
uint32_t
&
tac
);
// TODO: Getter
void
setPDU
_session_s
tatus
(
uint16_t
value
);
void
setPDU
SessionS
tatus
(
uint16_t
value
);
uint16_t
getPduSessionStatus
();
uint16_t
getPduSessionStatus
();
void
setMICO
_
Indication
(
bool
sprti
,
bool
raai
);
void
setMICOIndication
(
bool
sprti
,
bool
raai
);
bool
getMicoIndication
(
uint8_t
&
sprti
,
uint8_t
&
raai
);
bool
getMicoIndication
(
uint8_t
&
sprti
,
uint8_t
&
raai
);
void
setUE
_
Status
(
bool
n1
,
bool
s1
);
void
setUEStatus
(
bool
n1
,
bool
s1
);
bool
getUeStatus
(
uint8_t
&
n1ModeReg
,
uint8_t
&
s1ModeReg
);
bool
getUeStatus
(
uint8_t
&
n1ModeReg
,
uint8_t
&
s1ModeReg
);
void
setAllowed_PDU_Session_Status
(
uint16_t
value
);
void
setAllowed_PDU_Session_Status
(
uint16_t
value
);
...
@@ -161,9 +162,9 @@ class RegistrationRequest : public NasMmPlainHeader {
...
@@ -161,9 +162,9 @@ class RegistrationRequest : public NasMmPlainHeader {
std
::
optional
<
UENetworkCapability
>
ie_s1_ue_network_capability
;
// Optional
std
::
optional
<
UENetworkCapability
>
ie_s1_ue_network_capability
;
// Optional
std
::
optional
<
UplinkDataStatus
>
ie_uplink_data_status
;
// Optional
std
::
optional
<
UplinkDataStatus
>
ie_uplink_data_status
;
// Optional
std
::
optional
<
PDUSessionStatus
>
ie_PDU_session_status
;
// Optional
std
::
optional
<
PDUSessionStatus
>
ie_PDU_session_status
;
// Optional
std
::
optional
<
MICOIndication
>
ie_MICO_indication
;
// Optional
std
::
optional
<
UEStatus
>
ie_ue_status
;
// Optional
MICO_Indication
*
ie_MICO_indicationl
;
// Optional
UE_Status
*
ie_ue_status
;
// Optional
_5GSMobileIdentity
*
ie_additional_guti
;
// Optional
_5GSMobileIdentity
*
ie_additional_guti
;
// Optional
Allowed_PDU_Session_Status
*
ie_allowed_PDU_session_status
;
// Optional
Allowed_PDU_Session_Status
*
ie_allowed_PDU_session_status
;
// Optional
UES_Usage_Setting
*
ie_ues_usage_setting
;
// Optional
UES_Usage_Setting
*
ie_ues_usage_setting
;
// Optional
...
...
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