Commit c57dd5b5 authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Update Nssai Inclusion Mode

parent 911008f6
......@@ -89,6 +89,7 @@ constexpr uint8_t kIeiShortNameForNetwork = 0x45;
constexpr uint8_t kIeiPayloadContainerType = 0x08; // Should be verified
constexpr uint8_t kIeiNetworkSlicingIndication = 0x09; // 9-(4 higher bits)
constexpr uint8_t kIeiNssaiInclusionMode = 0x0A; // B-(4 higher bits)
constexpr uint8_t kIeiMicoIndication = 0x0B; // B-(4 higher bits)
constexpr uint8_t kIeiNasKeySetIdentifier = 0x0C; // C-(4 higher bits)
......
......@@ -49,7 +49,7 @@
#include "NasMessageContainer.hpp"
#include "NAS_Security_Algorithms.hpp"
#include "NSSAI.hpp"
#include "NSSAI_Inclusion_Mode.hpp"
#include "NssaiInclusionMode.hpp"
#include "NasKeySetIdentifier.hpp"
#include "Non_3GPP_NW_Provided_Policies.hpp"
#include "PDU_Session_Identity_2.hpp"
......
......@@ -26,72 +26,33 @@
\email: contact@openairinterface.org
*/
#include "NSSAI_Inclusion_Mode.hpp"
#include "NssaiInclusionMode.hpp"
#include "logger.hpp"
using namespace nas;
//------------------------------------------------------------------------------
NSSAI_Inclusion_Mode::NSSAI_Inclusion_Mode(const uint8_t iei, uint8_t value) {
_iei = iei;
_value = value;
NssaiInclusionMode::NssaiInclusionMode()
: Type1NasIeFormatTv(kIeiNssaiInclusionMode) {
SetIeName(kNssaiInclusionModeIeName);
}
//------------------------------------------------------------------------------
NSSAI_Inclusion_Mode::NSSAI_Inclusion_Mode() {}
//------------------------------------------------------------------------------
NSSAI_Inclusion_Mode::~NSSAI_Inclusion_Mode(){};
//------------------------------------------------------------------------------
void NSSAI_Inclusion_Mode::setValue(const uint8_t value) {
_value = value;
NssaiInclusionMode::NssaiInclusionMode(uint8_t value)
: Type1NasIeFormatTv(kIeiNssaiInclusionMode) {
SetValue(value);
SetIeName(kNssaiInclusionModeIeName);
}
//------------------------------------------------------------------------------
uint8_t NSSAI_Inclusion_Mode::getValue() {
return _value;
}
NssaiInclusionMode::~NssaiInclusionMode(){};
//------------------------------------------------------------------------------
int NSSAI_Inclusion_Mode::Encode(uint8_t* buf, int len) {
Logger::nas_mm().debug("Encoding NSSAI_Inclusion_Mode IE iei (0x%x)", _iei);
if (len < 1) {
Logger::nas_mm().error("Len is less than one");
return -1;
} else {
uint8_t octet = 0;
if (!(_iei & 0x0f)) {
// octet = (0x0f) & ((tsc << 3) | key_id);
//*buf = octet;
// Logger::nas_mm().debug("encoded Payload_Container_Type IE(len(1/2
// octet))"); return 0;
} else {
octet = (_iei << 4) | (_value & 0x0f);
*buf = octet;
Logger::nas_mm().debug("Encoded NSSAI_Inclusion_Mode IE(len, 1 octet)");
return 1;
}
}
return 1;
void NssaiInclusionMode::setValue(const uint8_t value) {
SetValue(value);
}
//------------------------------------------------------------------------------
int NSSAI_Inclusion_Mode::Decode(uint8_t* buf, int len, bool is_option) {
Logger::nas_mm().debug("Decoding NSSAI_Inclusion_Mode IE");
if (len < 1) {
Logger::nas_mm().error("Len is less than one");
return 0;
} else {
uint8_t octet = (*buf);
if (is_option) {
_iei = (octet & 0xf0) >> 4;
} else {
_iei = 0;
}
_value = octet & 0x0f;
Logger::nas_mm().debug(
"Decoded NSSAI_Inclusion_Mode iei (0x%x) value (0x%x)", _iei, _value);
return 1;
}
uint8_t NssaiInclusionMode::getValue() const {
return GetValue();
}
......@@ -19,33 +19,30 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _NSSAI_Inclusion_Mode_H
#define _NSSAI_Inclusion_Mode_H
#ifndef _NSSAI_INCLUSION_MODE_H
#define _NSSAI_INCLUSION_MODE_H
#include "Type1NasIeFormatTv.hpp"
#include <stdint.h>
constexpr uint8_t kNssaiInclusionModeLength = 1;
constexpr auto kNssaiInclusionModeIeName = "NSSAI Inclusion Mode";
namespace nas {
class NSSAI_Inclusion_Mode {
class NssaiInclusionMode : public Type1NasIeFormatTv {
public:
NSSAI_Inclusion_Mode();
NSSAI_Inclusion_Mode(const uint8_t iei, uint8_t value);
~NSSAI_Inclusion_Mode();
int Encode(uint8_t* buf, int len);
int Decode(uint8_t* buf, int len, bool is_option);
void setValue(const uint8_t value);
uint8_t getValue();
NssaiInclusionMode();
NssaiInclusionMode(uint8_t value);
~NssaiInclusionMode();
// int Encode(uint8_t* buf, int len);
// int Decode(uint8_t* buf, int len, bool is_iei);
void setValue(uint8_t value);
uint8_t getValue() const;
private:
uint8_t _iei;
uint8_t _value;
};
} // namespace nas
......
......@@ -238,8 +238,7 @@ void RegistrationAccept::setEAP_Message(bstring eap) {
//------------------------------------------------------------------------------
void RegistrationAccept::setNSSAI_Inclusion_Mode(uint8_t value) {
ie_nssai_inclusion_mode =
std::make_optional<NSSAI_Inclusion_Mode>(0x0A, value);
ie_nssai_inclusion_mode = std::make_optional<NssaiInclusionMode>(value);
}
//------------------------------------------------------------------------------
......@@ -675,11 +674,11 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
} break;
case 0xA: {
Logger::nas_mm().debug("Decoding IEI (0xA)");
NSSAI_Inclusion_Mode ie_nssai_inclusion_mode_tmp = {};
NssaiInclusionMode ie_nssai_inclusion_mode_tmp = {};
decoded_size += ie_nssai_inclusion_mode_tmp.Decode(
buf + decoded_size, len - decoded_size, true);
ie_nssai_inclusion_mode =
std::optional<NSSAI_Inclusion_Mode>(ie_nssai_inclusion_mode_tmp);
std::optional<NssaiInclusionMode>(ie_nssai_inclusion_mode_tmp);
octet = *(buf + decoded_size);
Logger::nas_mm().debug("Next IEI (0x%x)", octet);
} break;
......
......@@ -176,7 +176,7 @@ class RegistrationAccept : public NasMmPlainHeader {
std::optional<SOR_Transparent_Container>
ie_sor_transparent_container; // Optional
std::optional<EapMessage> ie_eap_message; // Optional
std::optional<NSSAI_Inclusion_Mode> ie_nssai_inclusion_mode; // Optional
std::optional<NssaiInclusionMode> ie_nssai_inclusion_mode; // Optional
// TODO: Operator-defined access category definitions
std::optional<_5GS_DRX_Parameters> ie_negotiated_drx_parameters; // Optional
std::optional<Non_3GPP_NW_Provided_Policies>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment