Commit 9c836c2b authored by aligungr's avatar aligungr

L3 RRC/NAS developments

parent 860db47a
...@@ -437,12 +437,16 @@ void NasMm::onSimRemoval() ...@@ -437,12 +437,16 @@ void NasMm::onSimRemoval()
{ {
m_storage->equivalentPlmnList->clear(); m_storage->equivalentPlmnList->clear();
m_storage->serviceAreaList->clear();
m_storage->forbiddenTaiListRoaming->clear(); m_storage->forbiddenTaiListRoaming->clear();
m_storage->forbiddenTaiListRps->clear(); m_storage->forbiddenTaiListRps->clear();
} }
void NasMm::onSwitchOff() void NasMm::onSwitchOff()
{ {
m_storage->serviceAreaList->clear();
m_storage->forbiddenTaiListRoaming->clear(); m_storage->forbiddenTaiListRoaming->clear();
m_storage->forbiddenTaiListRps->clear(); m_storage->forbiddenTaiListRps->clear();
} }
......
...@@ -169,9 +169,11 @@ class NasMm ...@@ -169,9 +169,11 @@ class NasMm
void handleRadioLinkFailure(); void handleRadioLinkFailure();
void handlePaging(const std::vector<GutiMobileIdentity> &tmsiIds); void handlePaging(const std::vector<GutiMobileIdentity> &tmsiIds);
private: /* Access Control */ public: /* Access Control */
bool isHighPriority(); bool isHighPriority();
bool hasEmergency(); bool hasEmergency();
private: /* Access Control */
void setN1Capability(bool enabled); void setN1Capability(bool enabled);
bool isInNonAllowedArea(); bool isInNonAllowedArea();
...@@ -189,6 +191,7 @@ class NasMm ...@@ -189,6 +191,7 @@ class NasMm
bool isRegistered(); // used by SM bool isRegistered(); // used by SM
bool isRegisteredForEmergency(); // used by SM bool isRegisteredForEmergency(); // used by SM
void serviceNeededForUplinkData(); // used by SM void serviceNeededForUplinkData(); // used by SM
bool isStateNonAllowedService(); // used by SM
}; };
} // namespace nr::ue } // namespace nr::ue
\ No newline at end of file
...@@ -47,6 +47,12 @@ void NasSm::sendEstablishmentRequest(const SessionConfig &config) ...@@ -47,6 +47,12 @@ void NasSm::sendEstablishmentRequest(const SessionConfig &config)
return; return;
} }
if (m_mm->isStateNonAllowedService() && !m_mm->hasEmergency() && !m_mm->isHighPriority())
{
m_logger->err("PDU session establishment could not be triggered, non allowed service condition");
return;
}
/* Control the received config */ /* Control the received config */
if (config.type != nas::EPduSessionType::IPV4) if (config.type != nas::EPduSessionType::IPV4)
{ {
......
...@@ -18,6 +18,13 @@ namespace nr::ue ...@@ -18,6 +18,13 @@ namespace nr::ue
void NasSm::sendReleaseRequest(int psi) void NasSm::sendReleaseRequest(int psi)
{ {
/* Control the protocol state */
if (m_mm->isStateNonAllowedService() && !m_mm->hasEmergency() && !m_mm->isHighPriority())
{
m_logger->err("PDU session release could not start, non allowed service condition");
return;
}
/* Control the PDU session state */ /* Control the PDU session state */
auto &ps = m_pduSessions[psi]; auto &ps = m_pduSessions[psi];
if (ps->psState != EPsState::ACTIVE) if (ps->psState != EPsState::ACTIVE)
......
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