better handle traffic rejection on DMR;

pull/12/head
Bryan Biedenkapp 4 years ago
parent 672c6253d5
commit 4671690fe6

@ -106,6 +106,7 @@ bool ControlPacket::process(uint8_t* data, uint32_t len)
// validate the source RID
if (!acl::AccessControl::validateSrcId(srcId)) {
LogWarning(LOG_RF, "DMR Slot %u, DT_CSBK denial, RID rejection, srcId = %u", m_slot->m_slotNo, srcId);
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
@ -113,6 +114,7 @@ bool ControlPacket::process(uint8_t* data, uint32_t len)
if (gi) {
if (!acl::AccessControl::validateTGId(m_slot->m_slotNo, dstId)) {
LogWarning(LOG_RF, "DMR Slot %u, DT_CSBK denial, TGID rejection, srcId = %u, dstId = %u", m_slot->m_slotNo, srcId, dstId);
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
}

@ -154,6 +154,7 @@ bool DataPacket::process(uint8_t* data, uint32_t len)
// validate the source RID
if (!acl::AccessControl::validateSrcId(srcId)) {
LogWarning(LOG_RF, "DMR Slot %u, DT_DATA_HEADER denial, RID rejection, srcId = %u", m_slot->m_slotNo, srcId);
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
@ -161,6 +162,7 @@ bool DataPacket::process(uint8_t* data, uint32_t len)
if (gi) {
if (!acl::AccessControl::validateTGId(m_slot->m_slotNo, dstId)) {
LogWarning(LOG_RF, "DMR Slot %u, DT_DATA_HEADER denial, TGID rejection, srcId = %u, dstId = %u", m_slot->m_slotNo, srcId, dstId);
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
}

@ -485,6 +485,22 @@ void Slot::clock()
m_packetTimer.start();
}
}
if (m_rfState == RS_RF_REJECTED) {
m_queue.clear();
m_rfFrames = 0U;
m_rfErrs = 0U;
m_rfBits = 1U;
m_netFrames = 0U;
m_netLost = 0U;
if (m_network != NULL)
m_network->resetDMR(m_slotNo);
m_rfState = RS_RF_LISTENING;
}
}
/// <summary>

@ -113,6 +113,7 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
m_slot->m_rfTGHang.stop();
delete lc;
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
@ -128,6 +129,7 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
m_slot->m_rfTGHang.stop();
delete lc;
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
}
@ -457,6 +459,7 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
if (!acl::AccessControl::validateSrcId(srcId)) {
LogWarning(LOG_RF, "DMR Slot %u, DT_VOICE denial, RID rejection, srcId = %u", m_slot->m_slotNo, srcId);
delete lc;
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
@ -465,6 +468,7 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
if (!acl::AccessControl::validateTGId(m_slot->m_slotNo, dstId)) {
LogWarning(LOG_RF, "DMR Slot %u, DT_VOICE denial, TGID rejection, srcId = %u, dstId = %u", m_slot->m_slotNo, srcId, dstId);
delete lc;
m_slot->m_rfState = RS_RF_REJECTED;
return false;
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.