implement some grant demand hardening; implement network watchdog hardening for NXDN;

pull/121/merge
Bryan Biedenkapp 1 month ago
parent d8a65dc766
commit 7885ecc151

@ -995,8 +995,6 @@ void Control::processNetwork()
::memcpy(data.get(), buffer.get() + 24U, frameLength); ::memcpy(data.get(), buffer.get() + 24U, frameLength);
} }
m_networkWatchdog.start();
if (m_debug) { if (m_debug) {
Utils::dump(2U, "* !!! NXDN Network Frame", data.get(), frameLength); Utils::dump(2U, "* !!! NXDN Network Frame", data.get(), frameLength);
} }

@ -221,6 +221,9 @@ bool Data::processNetwork(ChOption::E option, lc::RTCH& netLC, uint8_t* data, ui
resetNet(); resetNet();
} }
if (m_nxdn->m_netState == RS_NET_DATA)
m_nxdn->m_networkWatchdog.start();
channel::UDCH udch; channel::UDCH udch;
bool validUDCH = udch.decode(data + 2U); bool validUDCH = udch.decode(data + 2U);
if (m_nxdn->m_netState == RS_NET_IDLE && !validUDCH) if (m_nxdn->m_netState == RS_NET_IDLE && !validUDCH)
@ -368,6 +371,7 @@ bool Data::processNetwork(ChOption::E option, lc::RTCH& netLC, uint8_t* data, ui
m_nxdn->m_voice->m_netFrames); m_nxdn->m_voice->m_netFrames);
m_nxdn->writeEndNet(); m_nxdn->writeEndNet();
m_nxdn->m_networkWatchdog.stop();
} }
return true; return true;

@ -611,6 +611,9 @@ bool Voice::processNetwork(FuncChannelType::E fct, ChOption::E option, lc::RTCH&
resetNet(); resetNet();
} }
if (m_nxdn->m_netState == RS_NET_AUDIO)
m_nxdn->m_networkWatchdog.start();
channel::SACCH sacch; channel::SACCH sacch;
sacch.decode(data + 2U); sacch.decode(data + 2U);
@ -649,6 +652,7 @@ bool Voice::processNetwork(FuncChannelType::E fct, ChOption::E option, lc::RTCH&
m_nxdn->m_netState = RS_NET_IDLE; m_nxdn->m_netState = RS_NET_IDLE;
m_nxdn->m_netMask = 0x00U; m_nxdn->m_netMask = 0x00U;
m_nxdn->m_netLC.reset(); m_nxdn->m_netLC.reset();
m_nxdn->m_networkWatchdog.stop();
return false; return false;
} }
} }
@ -661,6 +665,7 @@ bool Voice::processNetwork(FuncChannelType::E fct, ChOption::E option, lc::RTCH&
m_nxdn->m_netLC.reset(); m_nxdn->m_netLC.reset();
m_nxdn->m_netLastDstId = 0U; m_nxdn->m_netLastDstId = 0U;
m_nxdn->m_netLastSrcId = 0U; m_nxdn->m_netLastSrcId = 0U;
m_nxdn->m_networkWatchdog.stop();
return false; return false;
} }
} else if (type == MessageType::RTCH_VCALL) { } else if (type == MessageType::RTCH_VCALL) {
@ -891,6 +896,7 @@ bool Voice::processNetwork(FuncChannelType::E fct, ChOption::E option, lc::RTCH&
m_rfBits = 1U; m_rfBits = 1U;
m_nxdn->m_netTimeout.start(); m_nxdn->m_netTimeout.start();
m_nxdn->m_netState = RS_NET_AUDIO; m_nxdn->m_netState = RS_NET_AUDIO;
m_nxdn->m_networkWatchdog.start();
if (m_verbose) { if (m_verbose) {
LogInfoEx(LOG_NET, "NXDN, " NXDN_RTCH_MSG_TYPE_VCALL ", srcId = %u, dstId = %u, group = %u, emerg = %u, encrypt = %u, prio = %u, algo = $%02X, kid = $%04X", LogInfoEx(LOG_NET, "NXDN, " NXDN_RTCH_MSG_TYPE_VCALL ", srcId = %u, dstId = %u, group = %u, emerg = %u, encrypt = %u, prio = %u, algo = $%02X, kid = $%04X",

@ -1681,15 +1681,14 @@ void Control::processNetwork()
return; return;
} }
// perform grant response logic if (!m_affiliations->isGranted(dstId)) {
m_control->writeRF_TSDU_Grant(srcId, dstId, serviceOptions, !unitToUnit, true); // perform grant response logic
/* if (m_control->writeRF_TSDU_Grant(srcId, dstId, serviceOptions, !unitToUnit, true)) {
if (!m_control->writeRF_TSDU_Grant(srcId, dstId, serviceOptions, !unitToUnit, true)) m_netLastSrcId = srcId;
{ m_netLastDstId = dstId;
LogError(LOG_NET, P25_TSDU_STR " call rejected, network call not granted, dstId = %u", dstId); }
return;
} }
*/
return; return;
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.