add new configuration option to disable all U2U calls from passing;

82-dvmbridge---implement-notch-filter-for-2175hz-trc-guard-tone
Bryan Biedenkapp 1 year ago
parent 67c84cdc0a
commit 8e7c3436fc

@ -95,6 +95,8 @@ master:
# Flag indicating that terminators will be filtered by destination ID (i.e. valid RID or valid TGID). # Flag indicating that terminators will be filtered by destination ID (i.e. valid RID or valid TGID).
filterTerminators: true filterTerminators: true
# Flag indicating the FNE will drop all inbound Unit-to-Unit calls.
disallowAllUnitToUnit: false
# List of peers that unit to unit calls are dropped for. # List of peers that unit to unit calls are dropped for.
dropUnitToUnit: [] dropUnitToUnit: []

@ -85,6 +85,7 @@ FNENetwork::FNENetwork(HostFNE* host, const std::string& address, uint16_t port,
m_restrictGrantToAffOnly(false), m_restrictGrantToAffOnly(false),
m_filterHeaders(true), m_filterHeaders(true),
m_filterTerminators(true), m_filterTerminators(true),
m_disallowU2U(false),
m_dropU2UPeerTable(), m_dropU2UPeerTable(),
m_enableInfluxDB(false), m_enableInfluxDB(false),
m_influxServerAddress("127.0.0.1"), m_influxServerAddress("127.0.0.1"),
@ -161,6 +162,8 @@ void FNENetwork::setOptions(yaml::Node& conf, bool printOptions)
** Drop Unit to Unit Peers ** Drop Unit to Unit Peers
*/ */
m_disallowU2U = conf["disallowAllUnitToUnit"].as<bool>(false);
yaml::Node& dropUnitToUnit = conf["dropUnitToUnit"]; yaml::Node& dropUnitToUnit = conf["dropUnitToUnit"];
if (dropUnitToUnit.size() > 0U) { if (dropUnitToUnit.size() > 0U) {
for (size_t i = 0; i < dropUnitToUnit.size(); i++) { for (size_t i = 0; i < dropUnitToUnit.size(); i++) {
@ -184,6 +187,7 @@ void FNENetwork::setOptions(yaml::Node& conf, bool printOptions)
LogInfo(" Restrict grant response by affiliation: %s", m_restrictGrantToAffOnly ? "yes" : "no"); LogInfo(" Restrict grant response by affiliation: %s", m_restrictGrantToAffOnly ? "yes" : "no");
LogInfo(" Traffic Headers Filtered by Destination ID: %s", m_filterHeaders ? "yes" : "no"); LogInfo(" Traffic Headers Filtered by Destination ID: %s", m_filterHeaders ? "yes" : "no");
LogInfo(" Traffic Terminators Filtered by Destination ID: %s", m_filterTerminators ? "yes" : "no"); LogInfo(" Traffic Terminators Filtered by Destination ID: %s", m_filterTerminators ? "yes" : "no");
LogInfo(" Disallow Unit-to-Unit: %s", m_disallowU2U ? "yes" : "no");
LogInfo(" InfluxDB Reporting Enabled: %s", m_enableInfluxDB ? "yes" : "no"); LogInfo(" InfluxDB Reporting Enabled: %s", m_enableInfluxDB ? "yes" : "no");
if (m_enableInfluxDB) { if (m_enableInfluxDB) {
LogInfo(" InfluxDB Address: %s", m_influxServerAddress.c_str()); LogInfo(" InfluxDB Address: %s", m_influxServerAddress.c_str());

@ -463,6 +463,7 @@ namespace network
bool m_forceListUpdate; bool m_forceListUpdate;
bool m_disallowU2U;
std::vector<uint32_t> m_dropU2UPeerTable; std::vector<uint32_t> m_dropU2UPeerTable;
bool m_enableInfluxDB; bool m_enableInfluxDB;

@ -656,6 +656,8 @@ bool TagDMRData::processCSBK(uint8_t* buffer, uint32_t peerId, dmr::data::NetDat
bool TagDMRData::isPeerPermitted(uint32_t peerId, data::NetData& data, uint32_t streamId, bool external) bool TagDMRData::isPeerPermitted(uint32_t peerId, data::NetData& data, uint32_t streamId, bool external)
{ {
if (data.getFLCO() == FLCO::PRIVATE) { if (data.getFLCO() == FLCO::PRIVATE) {
if (m_network->m_disallowU2U)
return false;
if (!m_network->checkU2UDroppedPeer(peerId)) if (!m_network->checkU2UDroppedPeer(peerId))
return true; return true;
return false; return false;

@ -463,6 +463,8 @@ bool TagNXDNData::peerRewrite(uint32_t peerId, uint32_t& dstId, bool outbound)
bool TagNXDNData::isPeerPermitted(uint32_t peerId, lc::RTCH& lc, uint8_t messageType, uint32_t streamId, bool external) bool TagNXDNData::isPeerPermitted(uint32_t peerId, lc::RTCH& lc, uint8_t messageType, uint32_t streamId, bool external)
{ {
if (!lc.getGroup()) { if (!lc.getGroup()) {
if (m_network->m_disallowU2U)
return false;
if (!m_network->checkU2UDroppedPeer(peerId)) if (!m_network->checkU2UDroppedPeer(peerId))
return true; return true;
return false; return false;

@ -882,6 +882,8 @@ bool TagP25Data::processTSDUToExternal(uint8_t* buffer, uint32_t srcPeerId, uint
bool TagP25Data::isPeerPermitted(uint32_t peerId, lc::LC& control, DUID::E duid, uint32_t streamId, bool external) bool TagP25Data::isPeerPermitted(uint32_t peerId, lc::LC& control, DUID::E duid, uint32_t streamId, bool external)
{ {
if (control.getLCO() == LCO::PRIVATE) { if (control.getLCO() == LCO::PRIVATE) {
if (m_network->m_disallowU2U)
return false;
if (!m_network->checkU2UDroppedPeer(peerId)) if (!m_network->checkU2UDroppedPeer(peerId))
return true; return true;
return false; return false;

Loading…
Cancel
Save

Powered by TurnKey Linux.