Commit 818c01a7 authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Fix decoding Authentication Failure msg

parent 8d29f4e2
......@@ -28,19 +28,16 @@ using namespace nas;
//------------------------------------------------------------------------------
_5gmmCause::_5gmmCause(uint8_t iei) : Type3NasIe(iei) {
value_ = 0;
SetIeName(k5gmmCauseIeName);
}
//------------------------------------------------------------------------------
_5gmmCause::_5gmmCause() : Type3NasIe() {
value_ = 0;
SetIeName(k5gmmCauseIeName);
}
//------------------------------------------------------------------------------
_5gmmCause::_5gmmCause(uint8_t iei, uint8_t value) : Type3NasIe(iei) {
value_ = value;
SetIeName(k5gmmCauseIeName);
}
//------------------------------------------------------------------------------
......@@ -97,7 +94,7 @@ int _5gmmCause::Decode(uint8_t* buf, int len, bool is_iei) {
int decoded_size = 0;
// IEI and Length
decoded_size += Type3NasIe::Decode(buf + decoded_size, len, true);
decoded_size += Type3NasIe::Decode(buf + decoded_size, len, is_iei);
DECODE_U8(buf + decoded_size, value_, decoded_size);
......
......@@ -110,8 +110,9 @@ int AuthenticationFailure::Encode(uint8_t* buf, int len) {
}
if (!ie_authentication_failure_parameter.has_value()) {
Logger::nas_mm().warn(
"IE ie_authentication_failure_parameter is not available");
Logger::nas_mm().debug(
"IE %s is not available",
AuthenticationFailureParameter::GetIeName().c_str());
} else {
size = ie_authentication_failure_parameter.value().Encode(
buf + encoded_size, len - encoded_size);
......@@ -148,29 +149,33 @@ int AuthenticationFailure::Decode(uint8_t* buf, int len) {
if ((decoded_result = ie_5gmm_cause.Decode(
buf + decoded_size, len - decoded_size, false)) ==
KEncodeDecodeError)
return decoded_result;
return KEncodeDecodeError;
decoded_size += decoded_result;
Logger::nas_mm().debug("Decoded_size (%d)", decoded_size);
uint8_t octet = *(buf + decoded_size);
Logger::nas_mm().debug("First option IEI (0x%x)", octet);
// Decode other IEs
uint8_t octet = 0x00;
DECODE_U8_VALUE(buf + decoded_size, octet);
while ((octet != 0x0)) {
Logger::nas_mm().debug("IEI 0x%x", octet);
switch (octet) {
case 0x30: {
case kIeiAuthenticationFailureParameter: {
Logger::nas_mm().debug("Decoding IEI (0x30)");
AuthenticationFailureParameter ie_authentication_failure_parameter_tmp =
{};
if ((decoded_result = ie_authentication_failure_parameter_tmp.Decode(
buf + decoded_size, len - decoded_size, true)) ==
KEncodeDecodeError)
return decoded_result;
return KEncodeDecodeError;
decoded_size += decoded_result;
ie_authentication_failure_parameter =
std::optional<AuthenticationFailureParameter>(
ie_authentication_failure_parameter_tmp);
octet = *(buf + decoded_size);
DECODE_U8_VALUE(buf + decoded_size, octet);
Logger::nas_mm().debug("Next IEI (0x%x)", octet);
} break;
default: {
Logger::nas_mm().warn("Unknown IEI 0x%x, stop decoding...", octet);
// Stop decoding
......@@ -178,6 +183,7 @@ int AuthenticationFailure::Decode(uint8_t* buf, int len) {
} break;
}
}
Logger::nas_mm().debug(
"Decoded AuthenticationFailure message len (%d)", decoded_size);
return decoded_size;
......
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