Commit 51f3308d authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Update ULNASTransport

parent e30ea609
......@@ -351,9 +351,9 @@ void amf_app::handle_itti_message(
auto dl = std::make_unique<DLNASTransport>();
dl->SetHeader(PLAIN_5GS_MSG);
dl->SetPayloadContainerType(N1_SM_INFORMATION);
dl->SetPayload_Container(
dl->SetPayloadContainer(
(uint8_t*) bdata(bstrcpy(itti_msg.n1sm)), blength(itti_msg.n1sm));
dl->setPDUSessionId(itti_msg.pdu_session_id);
dl->SetPduSessionId(itti_msg.pdu_session_id);
uint8_t nas[BUFFER_SIZE_1024];
int encoded_size = dl->Encode(nas, BUFFER_SIZE_1024);
......
......@@ -1596,7 +1596,7 @@ void amf_n1::send_registration_reject_msg(
std::unique_ptr<RegistrationReject> registration_reject =
std::make_unique<RegistrationReject>();
registration_reject->SetHeader(PLAIN_5GS_MSG);
registration_reject->set_5GMM_Cause(cause_value);
registration_reject->Set5gmmCause(cause_value);
uint8_t buffer[BUFFER_SIZE_1024] = {0};
int encoded_size = registration_reject->Encode(buffer, BUFFER_SIZE_1024);
comUt::print_buffer(
......@@ -3223,7 +3223,12 @@ void amf_n1::ul_nas_transport_handle(
ul_nas->Decode(NULL, (uint8_t*) bdata(nas), blength(nas));
uint8_t payload_type = ul_nas->GetPayloadContainerType();
uint8_t pdu_session_id = ul_nas->GetPduSessionId();
uint8_t request_type = ul_nas->GetRequestType();
uint8_t request_type = 0;
if (!ul_nas->GetRequestType(request_type)) {
Logger::amf_n1().debug("Request Type is not available");
// TODO:
}
bstring sm_msg = nullptr;
......@@ -3280,10 +3285,8 @@ void amf_n1::ul_nas_transport_handle(
switch (payload_type) {
case N1_SM_INFORMATION: {
if (!ul_nas->GetPayloadContainer(sm_msg)) {
Logger::amf_n1().error("Cannot decode Payload Container");
return;
}
// Get payload container
ul_nas->GetPayloadContainer(sm_msg);
std::shared_ptr<itti_nsmf_pdusession_create_sm_context> itti_msg =
std::make_shared<itti_nsmf_pdusession_create_sm_context>(
......@@ -3315,10 +3318,8 @@ void amf_n1::ul_nas_transport_handle(
} else {
switch (payload_type) {
case N1_SM_INFORMATION: {
if (!ul_nas->GetPayloadContainer(sm_msg)) {
Logger::amf_n1().error("Cannot decode Payload Container");
return;
}
// Get payload container
ul_nas->GetPayloadContainer(sm_msg);
std::shared_ptr<itti_nsmf_pdusession_update_sm_context> itti_msg =
std::make_shared<itti_nsmf_pdusession_update_sm_context>(
......
......@@ -54,12 +54,12 @@ PDU_Session_Identity_2::PDU_Session_Identity_2() {
PDU_Session_Identity_2::~PDU_Session_Identity_2() {}
//------------------------------------------------------------------------------
void PDU_Session_Identity_2::setValue(uint8_t value) {
void PDU_Session_Identity_2::SetValue(uint8_t value) {
_value = value;
}
//------------------------------------------------------------------------------
uint8_t PDU_Session_Identity_2::getValue() {
uint8_t PDU_Session_Identity_2::GetValue() {
return _value;
}
......
......@@ -41,8 +41,8 @@ class PDU_Session_Identity_2 {
~PDU_Session_Identity_2();
int Encode(uint8_t* buf, int len);
int Decode(uint8_t* buf, int len, bool is_option);
void setValue(uint8_t value);
uint8_t getValue();
void SetValue(uint8_t value);
uint8_t GetValue();
private:
uint8_t _iei;
......
......@@ -51,7 +51,7 @@ void AuthenticationFailure::SetHeader(uint8_t security_header_type) {
}
//------------------------------------------------------------------------------
void AuthenticationFailure::set_5GMM_Cause(uint8_t value) {
void AuthenticationFailure::Set5gmmCause(uint8_t value) {
ie_5gmm_cause = new _5GMM_Cause(0x00, value);
}
......
......@@ -40,7 +40,7 @@ class AuthenticationFailure {
int Encode(uint8_t* buf, int len);
int Decode(NasMmPlainHeader* header, uint8_t* buf, int len);
void SetHeader(uint8_t security_header_type);
void set_5GMM_Cause(uint8_t value);
void Set5gmmCause(uint8_t value);
void setAuthentication_Failure_Parameter(bstring auts);
uint8_t get5GMmCause();
......
......@@ -61,19 +61,19 @@ void DLNASTransport::SetPayloadContainerType(uint8_t value) {
}
//------------------------------------------------------------------------------
void DLNASTransport::SetPayload_Container(
void DLNASTransport::SetPayloadContainer(
std::vector<PayloadContainerEntry> content) {
ie_payload_container = new Payload_Container(content);
}
//------------------------------------------------------------------------------
void DLNASTransport::SetPayload_Container(uint8_t* buf, int len) {
void DLNASTransport::SetPayloadContainer(uint8_t* buf, int len) {
bstring b = blk2bstr(buf, len);
ie_payload_container = new Payload_Container(b);
}
//------------------------------------------------------------------------------
void DLNASTransport::setPDUSessionId(uint8_t value) {
void DLNASTransport::SetPduSessionId(uint8_t value) {
ie_pdu_session_identity_2 = new PDU_Session_Identity_2(0x12, value);
}
......@@ -83,12 +83,12 @@ void DLNASTransport::SetAdditionalInformation(uint8_t _length, uint8_t value) {
}
//------------------------------------------------------------------------------
void DLNASTransport::set_5GMM_Cause(uint8_t value) {
void DLNASTransport::Set5gmmCause(uint8_t value) {
ie_5gmm_cause = new _5GMM_Cause(0x58, value);
}
//------------------------------------------------------------------------------
void DLNASTransport::setBack_off_timer_value(uint8_t unit, uint8_t value) {
void DLNASTransport::SetBackOffTimerValue(uint8_t unit, uint8_t value) {
ie_back_off_timer_value = new GprsTimer3(0x37, unit, value);
}
......
......@@ -19,15 +19,8 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _DLNASTransport_H_
#define _DLNASTransport_H_
#ifndef _DL_NAS_TRANSPORT_H_
#define _DL_NAS_TRANSPORT_H_
#include "NasIeHeader.hpp"
......@@ -37,16 +30,21 @@ class DLNASTransport {
public:
DLNASTransport();
~DLNASTransport();
void SetHeader(uint8_t security_header_type);
int Encode(uint8_t* buf, int len);
int Decode(NasMmPlainHeader* header, uint8_t* buf, int len);
void SetHeader(uint8_t security_header_type);
void SetPayloadContainerType(uint8_t value);
void SetPayload_Container(std::vector<PayloadContainerEntry> content);
void SetPayload_Container(uint8_t* buf, int len);
void setPDUSessionId(uint8_t value);
void SetPayloadContainer(std::vector<PayloadContainerEntry> content);
void SetPayloadContainer(uint8_t* buf, int len);
void SetPduSessionId(uint8_t value);
void SetAdditionalInformation(uint8_t _length, uint8_t value);
void set_5GMM_Cause(uint8_t value);
void setBack_off_timer_value(uint8_t unit, uint8_t value);
void Set5gmmCause(uint8_t value);
void SetBackOffTimerValue(uint8_t unit, uint8_t value);
public:
NasMmPlainHeader* plain_header;
......
......@@ -45,7 +45,7 @@ void RegistrationReject::SetHeader(uint8_t security_header_type) {
}
//------------------------------------------------------------------------------
void RegistrationReject::set_5GMM_Cause(uint8_t value) {
void RegistrationReject::Set5gmmCause(uint8_t value) {
ie_5gmm_cause.setValue(value);
}
......
......@@ -38,7 +38,7 @@ class RegistrationReject : public NasMmPlainHeader {
int Encode(uint8_t* buf, int len);
int Decode(NasMmPlainHeader* header, uint8_t* buf, int len);
void set_5GMM_Cause(uint8_t value);
void Set5gmmCause(uint8_t value);
// TODO: Get
void setGPRS_Timer_2_3346(uint8_t value);
......
......@@ -440,7 +440,7 @@ uint8_t RegistrationRequest::GetPayloadContainerType() {
}
//------------------------------------------------------------------------------
void RegistrationRequest::SetPayload_Container(
void RegistrationRequest::SetPayloadContainer(
std::vector<PayloadContainerEntry> content) {
ie_payload_container =
std::make_optional<Payload_Container>(kIeiPayloadContainer, content);
......
......@@ -124,7 +124,7 @@ class RegistrationRequest : public NasMmPlainHeader {
void SetPayloadContainerType(uint8_t value);
uint8_t GetPayloadContainerType();
void SetPayload_Container(std::vector<PayloadContainerEntry> content);
void SetPayloadContainer(std::vector<PayloadContainerEntry> content);
bool GetPayloadContainer(std::vector<PayloadContainerEntry>& content);
void setNetwork_Slicing_Indication(bool dcni, bool nssci);
......
......@@ -51,7 +51,7 @@ void SecurityModeReject::SetHeader(uint8_t security_header_type) {
}
//------------------------------------------------------------------------------
void SecurityModeReject::set_5GMM_Cause(uint8_t value) {
void SecurityModeReject::Set5gmmCause(uint8_t value) {
ie_5gmm_cause = new _5GMM_Cause(0x00, value);
}
......
......@@ -40,7 +40,7 @@ class SecurityModeReject {
int Encode(uint8_t* buf, int len);
int Decode(NasMmPlainHeader* header, uint8_t* buf, int len);
void SetHeader(uint8_t security_header_type);
void set_5GMM_Cause(uint8_t value);
void Set5gmmCause(uint8_t value);
public:
NasMmPlainHeader* plain_header;
......
......@@ -54,11 +54,11 @@ void ULNASTransport::SetPayloadContainerType(uint8_t value) {
//------------------------------------------------------------------------------
uint8_t ULNASTransport::GetPayloadContainerType() {
return ie_payload_container_type->GetValue();
return ie_payload_container_type.GetValue();
}
//------------------------------------------------------------------------------
void ULNASTransport::SetPayload_Container(
void ULNASTransport::SetPayloadContainer(
std::vector<PayloadContainerEntry> content) {
ie_payload_container.SetValue(content);
}
......@@ -83,7 +83,7 @@ void ULNASTransport::SetPduSessionIdentity2(uint8_t value) {
//------------------------------------------------------------------------------
uint8_t ULNASTransport::GetPduSessionId() {
if (ie_pdu_session_identity_2.has_value()) {
return ie_pdu_session_identity_2.value().getValue();
return ie_pdu_session_identity_2.value().GetValue();
} else {
return -1;
}
......@@ -96,9 +96,9 @@ void ULNASTransport::SetOldPduSessionIdentity2(uint8_t value) {
}
//------------------------------------------------------------------------------
bool ULNASTransport::GetOldPduSessionId(uint8_t& value) const {
bool ULNASTransport::GetOldPduSessionId(uint8_t& value) {
if (ie_old_pdu_session_identity_2.has_value()) {
value = ie_old_pdu_session_identity_2.value().getValue();
value = ie_old_pdu_session_identity_2.value().GetValue();
return true;
} else {
return false;
......@@ -332,16 +332,16 @@ int ULNASTransport::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
decoded_size += decoded_result;
// Payload Container Type
decoded_result = ie_payload_container_type->Decode(
decoded_result = ie_payload_container_type.Decode(
buf + decoded_size, len - decoded_size, false);
if (decoded_result == KEncodeDecodeError) return KEncodeDecodeError;
decoded_size += decoded_result;
decoded_size++; // 1/2 octet for PayloadContainerType, 1/2 octet for spare
// Payload Container
decoded_result += ie_payload_container->Decode(
decoded_result += ie_payload_container.Decode(
buf + decoded_size, len - decoded_size, false,
ie_payload_container_type->GetValue());
ie_payload_container_type.GetValue());
if (decoded_result == KEncodeDecodeError) return KEncodeDecodeError;
decoded_size += decoded_result;
......@@ -411,7 +411,7 @@ int ULNASTransport::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
} break;
case 0x59: {
Logger::nas_mm().debug("Decoding IEI (0x59)");
PDU_Session_Identity_2 PDU_Session_Identity_2 = {};
PDU_Session_Identity_2 ie_old_pdu_session_identity_2_tmp = {};
if ((decoded_result = ie_old_pdu_session_identity_2_tmp.Decode(
buf + decoded_size, len - decoded_size, true)) ==
KEncodeDecodeError)
......@@ -436,7 +436,7 @@ int ULNASTransport::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
} break;
case 0x25: {
Logger::nas_mm().debug("Decoding IEI (0x25)");
DNN ie_dnn = {};
DNN ie_dnn_tmp = {};
if ((decoded_result = ie_dnn_tmp.Decode(
buf + decoded_size, len - decoded_size, true)) ==
KEncodeDecodeError)
......
......@@ -39,7 +39,7 @@ class ULNASTransport : public NasMmPlainHeader {
void SetPayloadContainerType(uint8_t value);
uint8_t GetPayloadContainerType();
void SetPayload_Container(std::vector<PayloadContainerEntry> content);
void SetPayloadContainer(std::vector<PayloadContainerEntry> content);
void GetPayloadContainer(std::vector<PayloadContainerEntry>& content);
void GetPayloadContainer(bstring& content);
......@@ -47,7 +47,7 @@ class ULNASTransport : public NasMmPlainHeader {
uint8_t GetPduSessionId();
void SetOldPduSessionIdentity2(uint8_t value);
bool GetOldPduSessionId(uint8_t& value) const;
bool GetOldPduSessionId(uint8_t& value);
void SetRequestType(uint8_t value);
bool GetRequestType(uint8_t& value);
......
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