Commit 9589186d authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Minor fix to ignore SD for SST<=127 for the moment (TODO: for SST<=127 with SD)

parent 508b7d51
......@@ -3766,7 +3766,11 @@ void amf_n1::initialize_registration_accept(
for (auto s : p.slice_list) {
SNSSAI_t snssai = {};
snssai.sst = s.sst;
snssai.sd = s.sd;
snssai.sd = SD_NO_VALUE; // Default value
// Get SD if available for non standardized SST
if (s.sst > SST_MAX_STANDARDIZED_VALUE) {
snssai.sd = s.sd;
}
nssai.push_back(snssai);
}
}
......
......@@ -31,8 +31,9 @@
#include <vector>
#include "logger.hpp"
#include "amf.hpp"
using namespace nas;
using namespace std;
//------------------------------------------------------------------------------
NSSAI::NSSAI(uint8_t iei) {
......@@ -48,9 +49,9 @@ NSSAI::NSSAI(const uint8_t iei, std::vector<struct SNSSAI_s> nssai) {
S_NSSAI.assign(nssai.begin(), nssai.end());
for (int i = 0; i < nssai.size(); i++) {
length += 2; // 1 for IEI and 1 for sst
if (nssai[i].sd != -1) length += 3;
if (nssai[i].sd != SD_NO_VALUE) length += 3;
if (nssai[i].mHplmnSst != -1) length += 1;
if (nssai[i].mHplmnSd != -1) length += 3;
if (nssai[i].mHplmnSd != SD_NO_VALUE) length += 3;
}
}
......@@ -87,7 +88,7 @@ int NSSAI::encode2buffer(uint8_t* buf, int len) {
encoded_size++;
*(buf + encoded_size) = S_NSSAI.at(i).sst;
encoded_size++;
if (S_NSSAI.at(i).sd != -1) {
if (S_NSSAI.at(i).sd != SD_NO_VALUE) {
len_s_nssai += 3;
*(buf + encoded_size) = (S_NSSAI.at(i).sd & 0x00ff0000) >> 16;
encoded_size++;
......@@ -107,7 +108,7 @@ int NSSAI::encode2buffer(uint8_t* buf, int len) {
*(buf + encoded_size) = S_NSSAI.at(i).mHplmnSst;
encoded_size++;
}
if (S_NSSAI.at(i).mHplmnSd != -1) {
if (S_NSSAI.at(i).mHplmnSd != SD_NO_VALUE) {
len_s_nssai += 3;
*(buf + encoded_size) = (S_NSSAI.at(i).mHplmnSd & 0x00ff0000) >> 16;
encoded_size++;
......@@ -145,7 +146,7 @@ int NSSAI::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
a.sst = *(buf + decoded_size);
decoded_size++;
length_tmp--;
a.sd = 0;
a.sd = SD_NO_VALUE;
a.mHplmnSst = 0;
a.mHplmnSd = 0;
} break;
......@@ -189,7 +190,7 @@ int NSSAI::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
a.mHplmnSst = *(buf + decoded_size);
decoded_size++;
length_tmp--;
a.mHplmnSd = 0;
a.mHplmnSd = SD_NO_VALUE;
} break;
case 8: {
decoded_size++;
......
......@@ -152,11 +152,10 @@ bool S_NSSAI::encode2S_NSSAI(Ngap_S_NSSAI_t* s_NSSAI) {
//------------------------------------------------------------------------------
bool S_NSSAI::decodefromS_NSSAI(Ngap_S_NSSAI_t* s_NSSAI) {
if (!sSTdecodefromOctetString(s_NSSAI->sST)) return false;
sd = SD_NO_VALUE;
if (s_NSSAI->sD) {
sdIsSet = true;
if (!sDdecodefromOctetString(s_NSSAI->sD)) return false;
} else {
sd = SD_NO_VALUE;
}
return true;
}
......
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