Commit 22afd280 authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Update Deregistration Accept

parent c892f4d6
......@@ -36,6 +36,7 @@ extern "C" {
#include "TLVEncoder.h"
#include "bstrlib.h"
}
namespace nas {
class Authentication_Failure_Parameter {
......
......@@ -19,13 +19,6 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author
\date 2020
\email: contact@openairinterface.org
*/
#include "DeregistrationAccept.hpp"
#include "3gpp_24.501.hpp"
......@@ -35,8 +28,14 @@
using namespace nas;
//------------------------------------------------------------------------------
DeregistrationAccept::DeregistrationAccept() {
plain_header = NULL;
DeregistrationAccept::DeregistrationAccept(bool is_ue_originating)
: NasMmPlainHeader() {
NasMmPlainHeader::SetEpd(EPD_5GS_MM_MSG);
if (is_ue_originating) {
NasMmPlainHeader::SetMessageType(DEREGISTRATION_ACCEPT_UE_ORIGINATING);
} else {
NasMmPlainHeader::SetMessageType(DEREGISTRATION_ACCEPT_UE_TERMINATED);
}
}
//------------------------------------------------------------------------------
......@@ -44,33 +43,43 @@ DeregistrationAccept::~DeregistrationAccept() {}
//------------------------------------------------------------------------------
void DeregistrationAccept::SetHeader(uint8_t security_header_type) {
plain_header = new NasMmPlainHeader();
plain_header->SetHeader(
EPD_5GS_MM_MSG, security_header_type,
DEREGISTRATION_ACCEPT_UE_ORIGINATING);
NasMmPlainHeader::SetSecurityHeaderType(security_header_type);
}
//------------------------------------------------------------------------------
int DeregistrationAccept::Encode(uint8_t* buf, int len) {
Logger::nas_mm().debug("Encoding De-registration Accept message");
int encoded_size = 0;
if (!plain_header) {
Logger::nas_mm().error("Mandatory IE missing Header");
return 0;
int encoded_size = 0;
int encoded_ie_size = 0;
// Header
if ((encoded_ie_size = NasMmPlainHeader::Encode(buf, len)) ==
KEncodeDecodeError) {
Logger::nas_mm().error("Encoding NAS Header error");
return KEncodeDecodeError;
}
encoded_size = plain_header->Encode(buf, len);
encoded_size += encoded_ie_size;
Logger::nas_mm().debug(
"Encoded De-registration Accept message len (%d)", encoded_size);
return encoded_size;
}
//------------------------------------------------------------------------------
int DeregistrationAccept::Decode(
NasMmPlainHeader* header, uint8_t* buf, int len) {
Logger::nas_mm().debug("Decoding De-registrationReject message");
int decoded_size = 3;
plain_header = header;
int DeregistrationAccept::Decode(uint8_t* buf, int len) {
int decoded_size = 0;
int decoded_result = 0;
// Header
decoded_result = NasMmPlainHeader::Decode(buf, len);
if (decoded_result == KEncodeDecodeError) {
Logger::nas_mm().error("Decoding NAS Header error");
return KEncodeDecodeError;
}
decoded_size += decoded_result;
Logger::nas_mm().debug(
"decoded De-registrationReject message len (%d)", decoded_size);
return 1;
return decoded_size;
}
......@@ -19,13 +19,6 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _DEREGISTRATION_ACCEPT_H_
#define _DEREGISTRATION_ACCEPT_H_
......@@ -33,16 +26,17 @@
namespace nas {
class DeregistrationAccept {
class DeregistrationAccept : public NasMmPlainHeader {
public:
DeregistrationAccept();
DeregistrationAccept(bool is_ue_originating = true);
~DeregistrationAccept();
int Encode(uint8_t* buf, int len);
int Decode(NasMmPlainHeader* header, uint8_t* buf, int len);
int Decode(uint8_t* buf, int len);
void SetHeader(uint8_t security_header_type);
public:
NasMmPlainHeader* plain_header;
};
} // namespace nas
......
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