diff --git a/configs/fne-config.example.yml b/configs/fne-config.example.yml index 7a1a4d3f..66c45254 100644 --- a/configs/fne-config.example.yml +++ b/configs/fne-config.example.yml @@ -287,7 +287,7 @@ master: privateCallRouting: # Flag indicating whether private/unit-to-unit calls may be routed. # When disabled, all private/unit-to-unit setup, grant, media, and signaling traffic is rejected. - enabled: false + enable: false # Action used when the destination unit has no current route: reject, or flood. # WARNING: The flood policy can result in unintended network-wide message propagation and should be used with caution. diff --git a/src/fne/network/TrafficNetwork.cpp b/src/fne/network/TrafficNetwork.cpp index f4a039ff..52a3d03f 100644 --- a/src/fne/network/TrafficNetwork.cpp +++ b/src/fne/network/TrafficNetwork.cpp @@ -413,7 +413,7 @@ void TrafficNetwork::setOptions(yaml::Node& conf, bool printOptions) m_restrictGrantToAffOnly = conf["restrictGrantToAffiliatedOnly"].as(false); yaml::Node& privateCallRouting = conf["privateCallRouting"]; - m_privateCallRoutingEnabled = privateCallRouting["enabled"].as(false); + m_privateCallRoutingEnabled = privateCallRouting["enable"].as(false); m_privateCallUnknownDestination = privateCallRouting["unknownDestination"].as("reject"); m_privateCallLearnFromTraffic = privateCallRouting["learnFromTraffic"].as(true); m_privateCallRouteLifetime = privateCallRouting["routeLifetime"].as(300U); diff --git a/src/fne/network/callhandler/TagDMRData.cpp b/src/fne/network/callhandler/TagDMRData.cpp index 57497bdb..2feaa790 100644 --- a/src/fne/network/callhandler/TagDMRData.cpp +++ b/src/fne/network/callhandler/TagDMRData.cpp @@ -606,7 +606,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId */ // repeat traffic to nodes peered to us as master - if (m_network->peerCount() > 0U && !noConnectedPeerRepeat) { + if (m_network->peerCount() > 0U) { uint32_t i = 0U; udp::BufferQueue queue = udp::BufferQueue(); @@ -620,6 +620,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId continue; } + // are we routing private calls? if (m_network->m_privateCallRoutingEnabled) { // is this peer an upstream neighbor peer? bool neighbor = false; @@ -638,8 +639,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId return false; }); if (it != m_statusPVCall.end()) { - if (m_statusPVCall[dstId].dstPeerId != 0U && - peer.first != m_statusPVCall[dstId].dstPeerId) { + if (m_statusPVCall[dstId].dstPeerId != 0U && peer.first != m_statusPVCall[dstId].dstPeerId) { continue; } } @@ -664,8 +664,8 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId m_network->writePeerQueue(&queue, peer.first, ssrc, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR }, outboundPeerBuffer, len, pktSeq, streamId); if (m_network->m_debug) { - LogDebugEx(LOG_DMR, "TagDMRData::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, fromUpstream = %u", - ssrc, peerId, peer.first, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId, fromUpstream); + LogDebugEx(LOG_DMR, "TagDMRData::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, fromUpstream = %u, pci = %u, ncpr = %u", + ssrc, peerId, peer.first, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId, fromUpstream, privateCallInProgress, noConnectedPeerRepeat); } i++; diff --git a/src/fne/network/callhandler/TagNXDNData.cpp b/src/fne/network/callhandler/TagNXDNData.cpp index 7bca4c48..53890570 100644 --- a/src/fne/network/callhandler/TagNXDNData.cpp +++ b/src/fne/network/callhandler/TagNXDNData.cpp @@ -617,7 +617,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI */ // repeat traffic to nodes peered to us as master - if (m_network->peerCount() > 0U && !noConnectedPeerRepeat) { + if (m_network->peerCount() > 0U) { uint32_t i = 0U; udp::BufferQueue queue = udp::BufferQueue(); @@ -649,8 +649,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI return false; }); if (it != m_statusPVCall.end()) { - if (m_statusPVCall[dstId].dstPeerId != 0U && - peer.first != m_statusPVCall[dstId].dstPeerId) { + if (m_statusPVCall[dstId].dstPeerId != 0U && peer.first != m_statusPVCall[dstId].dstPeerId) { continue; } } @@ -675,8 +674,8 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI m_network->writePeerQueue(&queue, peer.first, ssrc, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN }, outboundPeerBuffer, len, pktSeq, streamId); if (m_network->m_debug) { - LogDebugEx(LOG_NXDN, "TagNXDNData::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, fromUpstream = %u", - ssrc, peerId, peer.first, messageType, srcId, dstId, len, pktSeq, streamId, fromUpstream); + LogDebugEx(LOG_NXDN, "TagNXDNData::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, fromUpstream = %u, pci = %u, ncpr = %u", + ssrc, peerId, peer.first, messageType, srcId, dstId, len, pktSeq, streamId, fromUpstream, privateCallInProgress, noConnectedPeerRepeat); } i++; diff --git a/src/fne/network/callhandler/TagP25Data.cpp b/src/fne/network/callhandler/TagP25Data.cpp index a5e39fcb..a244aef9 100644 --- a/src/fne/network/callhandler/TagP25Data.cpp +++ b/src/fne/network/callhandler/TagP25Data.cpp @@ -724,13 +724,13 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId } } } - + /* ** MASTER TRAFFIC */ // repeat traffic to nodes connected to us as peers - if (m_network->peerCount() > 0U && !noConnectedPeerRepeat) { + if (m_network->peerCount() > 0U) { uint32_t i = 0U; udp::BufferQueue queue = udp::BufferQueue(); @@ -767,8 +767,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId return false; }); if (it != m_statusPVCall.end()) { - if (m_statusPVCall[dstId].dstPeerId != 0U && - peer.first != m_statusPVCall[dstId].dstPeerId) { + if (m_statusPVCall[dstId].dstPeerId != 0U && peer.first != m_statusPVCall[dstId].dstPeerId) { continue; } } @@ -797,10 +796,10 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId routeRewrite(outboundPeerBuffer, peer.first, duid, dstId); m_network->writePeerQueue(&queue, peer.first, ssrc, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, outboundPeerBuffer, len, pktSeq, streamId); - if (m_network->m_debug) { - LogDebugEx(LOG_P25, "TagP25Data::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, fromUpstream = %u", - ssrc, peerId, peer.first, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId, fromUpstream); - } + //if (m_network->m_debug) { + LogDebugEx(LOG_P25, "TagP25Data::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, fromUpstream = %u, pci = %u, ncpr = %u", + ssrc, peerId, peer.first, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId, fromUpstream, privateCallInProgress, noConnectedPeerRepeat); + //} i++; } diff --git a/src/fne/network/callhandler/TagP25P2Data.cpp b/src/fne/network/callhandler/TagP25P2Data.cpp index e929b059..8993ffaa 100644 --- a/src/fne/network/callhandler/TagP25P2Data.cpp +++ b/src/fne/network/callhandler/TagP25P2Data.cpp @@ -576,7 +576,7 @@ bool TagP25P2Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peer */ // repeat traffic to nodes peered to us as master - if (m_network->peerCount() > 0U && !noConnectedPeerRepeat) { + if (m_network->peerCount() > 0U) { uint32_t i = 0U; udp::BufferQueue queue = udp::BufferQueue(); @@ -608,8 +608,7 @@ bool TagP25P2Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peer return false; }); if (it != m_statusPVCall.end()) { - if (m_statusPVCall[dstId].dstPeerId != 0U && - peer.first != m_statusPVCall[dstId].dstPeerId) { + if (m_statusPVCall[dstId].dstPeerId != 0U && peer.first != m_statusPVCall[dstId].dstPeerId) { continue; } } @@ -634,8 +633,8 @@ bool TagP25P2Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peer m_network->writePeerQueue(&queue, peer.first, ssrc, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25_P2 }, outboundPeerBuffer, len, pktSeq, streamId); if (m_network->m_debug) { - LogDebugEx(LOG_DMR, "TagDMRData::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, srcId = %u, dstId = %u, duid = $%02X, macMCO = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, fromUpstream = %u", - ssrc, peerId, peer.first, srcId, dstId, duid, macMCO, slotNo, len, pktSeq, streamId, fromUpstream); + LogDebugEx(LOG_DMR, "TagDMRData::processFrame()", "Master, ssrc = %u, srcPeer = %u, dstPeer = %u, srcId = %u, dstId = %u, duid = $%02X, macMCO = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, fromUpstream = %u, pci = %u, ncpr = %u", + ssrc, peerId, peer.first, srcId, dstId, duid, macMCO, slotNo, len, pktSeq, streamId, fromUpstream, privateCallInProgress, noConnectedPeerRepeat); } i++;