diff --git a/src/amf-app/amf_n1.cpp b/src/amf-app/amf_n1.cpp index 417f7c314b70217e5a462f34b69bd9396de040ca..8e079f6880941171b8b9d0484e047b3a6582734b 100644 --- a/src/amf-app/amf_n1.cpp +++ b/src/amf-app/amf_n1.cpp @@ -3255,7 +3255,7 @@ void amf_n1::ul_nas_transport_handle( // TODO: Only use the first one for now if there's multiple requested // NSSAI since we don't know which slice associated with this PDU session - if (nc->requestedNssai.size() > 0) { + if (nc->allowed_nssai.size() > 0) { snssai = nc->requestedNssai[0]; Logger::amf_n1().debug( "Use first Requested S-NSSAI %s", snssai.ToString().c_str()); @@ -4133,8 +4133,15 @@ void amf_n1::initialize_registration_accept( SNSSAI_t snssai = {}; snssai.sst = s.sst; snssai.sd = s.sd; + if (s.sd == SD_NO_VALUE) { + snssai.length = SST_LENGTH; + } else { + snssai.length = SST_LENGTH + SD_LENGTH; + } Logger::amf_n1().debug("Allowed S-NSSAI (SST 0x%x, SD 0x%x)", s.sst, s.sd); allowed_nssais.push_back(snssai); + // Store in the NAS context + nc->allowed_nssai.push_back(snssai); // TODO: refactor NAS_Context } // Rejected NSSAIs diff --git a/src/contexts/nas_context.hpp b/src/contexts/nas_context.hpp index 17c3264a11ad920d77c0193dd8c32d8e68a55c64..a7cb051fa5ef48d60104b3b90c2bad89e870bc48 100644 --- a/src/contexts/nas_context.hpp +++ b/src/contexts/nas_context.hpp @@ -98,6 +98,7 @@ class nas_context { // Set to true if marked as default std::vector<std::pair<bool, nas::SNSSAI_t>> subscribed_snssai; std::vector<nas::SNSSAI_t> configured_nssai; + // TODO: rejected_nssai; // std::vector<nas::SNSSAI_t> default_configured_nssai; // std::vector<nas::SNSSAI_t> s_nssai; //for Network Slice selection