From 987e944d4ba57635ae034affc0bf7b0473ca9495 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Sat, 3 Feb 2024 12:43:40 -0500 Subject: [PATCH] add flag to denote traffic flow for external peers (that is a peer connection the CFNE makes to another CFNE); --- src/fne/HostFNE.cpp | 6 +++--- src/fne/network/fne/TagDMRData.cpp | 31 +++++++++++++++-------------- src/fne/network/fne/TagDMRData.h | 2 +- src/fne/network/fne/TagNXDNData.cpp | 27 +++++++++++++------------ src/fne/network/fne/TagNXDNData.h | 2 +- src/fne/network/fne/TagP25Data.cpp | 31 +++++++++++++++-------------- src/fne/network/fne/TagP25Data.h | 4 ++-- 7 files changed, 53 insertions(+), 50 deletions(-) diff --git a/src/fne/HostFNE.cpp b/src/fne/HostFNE.cpp index 9f8a6b63..54291bce 100644 --- a/src/fne/HostFNE.cpp +++ b/src/fne/HostFNE.cpp @@ -581,7 +581,7 @@ void HostFNE::processPeer(network::PeerNetwork* peerNetwork) uint32_t slotNo = (data[15U] & 0x80U) == 0x80U ? 2U : 1U; uint32_t streamId = peerNetwork->getDMRStreamId(slotNo); - m_network->dmrTrafficHandler()->processFrame(data.get(), length, peerId, peerNetwork->pktLastSeq(), streamId); + m_network->dmrTrafficHandler()->processFrame(data.get(), length, peerId, peerNetwork->pktLastSeq(), streamId, true); } } @@ -594,7 +594,7 @@ void HostFNE::processPeer(network::PeerNetwork* peerNetwork) uint32_t peerId = peerNetwork->getPeerId(); uint32_t streamId = peerNetwork->getP25StreamId(); - m_network->p25TrafficHandler()->processFrame(data.get(), length, peerId, peerNetwork->pktLastSeq(), streamId); + m_network->p25TrafficHandler()->processFrame(data.get(), length, peerId, peerNetwork->pktLastSeq(), streamId, true); } } @@ -607,7 +607,7 @@ void HostFNE::processPeer(network::PeerNetwork* peerNetwork) uint32_t peerId = peerNetwork->getPeerId(); uint32_t streamId = peerNetwork->getNXDNStreamId(); - m_network->nxdnTrafficHandler()->processFrame(data.get(), length, peerId, peerNetwork->pktLastSeq(), streamId); + m_network->nxdnTrafficHandler()->processFrame(data.get(), length, peerId, peerNetwork->pktLastSeq(), streamId, true); } } } \ No newline at end of file diff --git a/src/fne/network/fne/TagDMRData.cpp b/src/fne/network/fne/TagDMRData.cpp index a4ca0c96..cd8d189a 100644 --- a/src/fne/network/fne/TagDMRData.cpp +++ b/src/fne/network/fne/TagDMRData.cpp @@ -60,8 +60,9 @@ TagDMRData::~TagDMRData() = default; /// Peer ID /// /// Stream ID +/// Flag indicating traffic is from an external peer. /// -bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId) +bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId, bool external) { hrc::hrc_t pktTime = hrc::now(); @@ -121,15 +122,15 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId // is this the end of the call stream? if (dataSync && (dataType == DT_TERMINATOR_WITH_LC)) { if (srcId == 0U && dstId == 0U) { - LogWarning(LOG_NET, "DMR, invalid TERMINATOR, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "DMR, invalid TERMINATOR, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } RxStatus status; auto it = std::find_if(m_status.begin(), m_status.end(), [&](StatusMapPair x) { return (x.second.dstId == dstId && x.second.slotNo == slotNo); }); if (it == m_status.end()) { - LogError(LOG_NET, "DMR, tried to end call for non-existent call in progress?, peer = %u, srcId = %u, dstId = %u, streamId = %u", - peerId, srcId, dstId, streamId); + LogError(LOG_NET, "DMR, tried to end call for non-existent call in progress?, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", + peerId, srcId, dstId, streamId, external); } else { status = it->second; @@ -150,8 +151,8 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId } } - LogMessage(LOG_NET, "DMR, Call End, peer = %u, srcId = %u, dstId = %u, duration = %u, streamId = %u", - peerId, srcId, dstId, duration / 1000, streamId); + LogMessage(LOG_NET, "DMR, Call End, peer = %u, srcId = %u, dstId = %u, duration = %u, streamId = %u, external = %u", + peerId, srcId, dstId, duration / 1000, streamId, external); m_network->m_callInProgress = false; } } @@ -159,7 +160,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId // is this a new call stream? if (dataSync && (dataType == DT_VOICE_LC_HEADER)) { if (srcId == 0U && dstId == 0U) { - LogWarning(LOG_NET, "DMR, invalid call, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "DMR, invalid call, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } @@ -168,7 +169,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId RxStatus status = it->second; if (streamId != status.streamId) { if (status.srcId != 0U && status.srcId != srcId) { - LogWarning(LOG_NET, "DMR, Call Collision, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "DMR, Call Collision, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } } @@ -196,7 +197,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId status.slotNo = slotNo; status.streamId = streamId; m_status[dstId] = status; // this *could* be an issue if a dstId appears on both slots somehow... - LogMessage(LOG_NET, "DMR, Call Start, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogMessage(LOG_NET, "DMR, Call Start, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); m_network->m_callInProgress = true; } } @@ -227,8 +228,8 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, outboundPeerBuffer, len, pktSeq, streamId, true); if (m_network->m_debug) { - LogDebug(LOG_NET, "DMR, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u", - peerId, peer.first, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId); + LogDebug(LOG_NET, "DMR, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, external = %u", + peerId, peer.first, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId, external); } if (!m_network->m_callInProgress) @@ -238,13 +239,13 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId m_network->m_frameQueue->flushQueue(); } - // repeat traffic to upstream peers + // repeat traffic to external peers if (m_network->m_host->m_peerNetworks.size() > 0U && !tg.config().parrot()) { for (auto peer : m_network->m_host->m_peerNetworks) { uint32_t dstPeerId = peer.second->getPeerId(); // don't try to repeat traffic to the source peer...if this traffic - // is coming from a upstream peer + // is coming from a external peer if (dstPeerId != peerId) { // is this peer ignored? if (!isPeerPermitted(dstPeerId, dmrData, streamId)) { @@ -260,8 +261,8 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId peer.second->writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, outboundPeerBuffer, len, pktSeq, streamId); if (m_network->m_debug) { - LogDebug(LOG_NET, "DMR, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u", - peerId, dstPeerId, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId); + LogDebug(LOG_NET, "DMR, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, external = %u", + peerId, dstPeerId, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId, external); } if (!m_network->m_callInProgress) diff --git a/src/fne/network/fne/TagDMRData.h b/src/fne/network/fne/TagDMRData.h index 0dc79703..94a17d85 100644 --- a/src/fne/network/fne/TagDMRData.h +++ b/src/fne/network/fne/TagDMRData.h @@ -38,7 +38,7 @@ namespace network ~TagDMRData(); /// Process a data frame from the network. - bool processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId); + bool processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId, bool external = false); /// Helper to playback a parrot frame to the network. void playbackParrot(); diff --git a/src/fne/network/fne/TagNXDNData.cpp b/src/fne/network/fne/TagNXDNData.cpp index 756cae4c..4f4c8fd6 100644 --- a/src/fne/network/fne/TagNXDNData.cpp +++ b/src/fne/network/fne/TagNXDNData.cpp @@ -59,8 +59,9 @@ TagNXDNData::~TagNXDNData() = default; /// Peer ID /// /// Stream ID +/// Flag indicating traffic is from an external peer. /// -bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId) +bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId, bool external) { hrc::hrc_t pktTime = hrc::now(); @@ -100,7 +101,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI // is this the end of the call stream? if (messageType == RTCH_MESSAGE_TYPE_TX_REL || messageType == RTCH_MESSAGE_TYPE_TX_REL_EX) { if (srcId == 0U && dstId == 0U) { - LogWarning(LOG_NET, "NXDN, invalid TX_REL, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "NXDN, invalid TX_REL, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } @@ -120,8 +121,8 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI } } - LogMessage(LOG_NET, "NXDN, Call End, peer = %u, srcId = %u, dstId = %u, duration = %u, streamId = %u", - peerId, srcId, dstId, duration / 1000, streamId); + LogMessage(LOG_NET, "NXDN, Call End, peer = %u, srcId = %u, dstId = %u, duration = %u, streamId = %u, external = %u", + peerId, srcId, dstId, duration / 1000, streamId, external); m_network->m_callInProgress = false; } } @@ -129,7 +130,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI // is this a new call stream? if ((messageType != RTCH_MESSAGE_TYPE_TX_REL && messageType != RTCH_MESSAGE_TYPE_TX_REL_EX)) { if (srcId == 0U && dstId == 0U) { - LogWarning(LOG_NET, "NXDN, invalid call, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "NXDN, invalid call, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } @@ -138,7 +139,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI RxStatus status = m_status[dstId]; if (streamId != status.streamId) { if (status.srcId != 0U && status.srcId != srcId) { - LogWarning(LOG_NET, "NXDN, Call Collision, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "NXDN, Call Collision, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } } @@ -165,7 +166,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI status.dstId = dstId; status.streamId = streamId; m_status[dstId] = status; - LogMessage(LOG_NET, "NXDN, Call Start, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogMessage(LOG_NET, "NXDN, Call Start, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); m_network->m_callInProgress = true; } } @@ -197,8 +198,8 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, outboundPeerBuffer, len, pktSeq, streamId, true); if (m_network->m_debug) { - LogDebug(LOG_NET, "NXDN, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u", - peerId, peer.first, messageType, srcId, dstId, len, pktSeq, streamId); + LogDebug(LOG_NET, "NXDN, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u", + peerId, peer.first, messageType, srcId, dstId, len, pktSeq, streamId, external); } if (!m_network->m_callInProgress) @@ -208,13 +209,13 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI m_network->m_frameQueue->flushQueue(); } - // repeat traffic to upstream peers + // repeat traffic to external peers if (m_network->m_host->m_peerNetworks.size() > 0U && !tg.config().parrot()) { for (auto peer : m_network->m_host->m_peerNetworks) { uint32_t dstPeerId = peer.second->getPeerId(); // don't try to repeat traffic to the source peer...if this traffic - // is coming from a upstream peer + // is coming from a external peer if (dstPeerId != peerId) { // is this peer ignored? if (!isPeerPermitted(dstPeerId, lc, messageType, streamId)) { @@ -230,8 +231,8 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI peer.second->writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, outboundPeerBuffer, len, pktSeq, streamId); if (m_network->m_debug) { - LogDebug(LOG_NET, "NXDN, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u", - peerId, dstPeerId, messageType, srcId, dstId, len, pktSeq, streamId); + LogDebug(LOG_NET, "NXDN, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u", + peerId, dstPeerId, messageType, srcId, dstId, len, pktSeq, streamId, external); } if (!m_network->m_callInProgress) diff --git a/src/fne/network/fne/TagNXDNData.h b/src/fne/network/fne/TagNXDNData.h index 531c1207..e678c945 100644 --- a/src/fne/network/fne/TagNXDNData.h +++ b/src/fne/network/fne/TagNXDNData.h @@ -38,7 +38,7 @@ namespace network ~TagNXDNData(); /// Process a data frame from the network. - bool processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId); + bool processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId, bool external = false); /// Helper to playback a parrot frame to the network. void playbackParrot(); diff --git a/src/fne/network/fne/TagP25Data.cpp b/src/fne/network/fne/TagP25Data.cpp index 17ddeb7e..fc3af658 100644 --- a/src/fne/network/fne/TagP25Data.cpp +++ b/src/fne/network/fne/TagP25Data.cpp @@ -62,8 +62,9 @@ TagP25Data::~TagP25Data() = default; /// Peer ID /// /// Stream ID +/// Flag indicating traffic is from an external peer. /// -bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId) +bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId, bool external) { hrc::hrc_t pktTime = hrc::now(); @@ -154,7 +155,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId // is this the end of the call stream? if ((duid == P25_DUID_TDU) || (duid == P25_DUID_TDULC)) { if (srcId == 0U && dstId == 0U) { - LogWarning(LOG_NET, "P25, invalid TDU, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "P25, invalid TDU, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } @@ -184,8 +185,8 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId } } - LogMessage(LOG_NET, "P25, Call End, peer = %u, srcId = %u, dstId = %u, duration = %u, streamId = %u", - peerId, srcId, dstId, duration / 1000, streamId); + LogMessage(LOG_NET, "P25, Call End, peer = %u, srcId = %u, dstId = %u, duration = %u, streamId = %u, external = %u", + peerId, srcId, dstId, duration / 1000, streamId, external); m_network->m_callInProgress = false; } } @@ -193,7 +194,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId // is this a new call stream? if ((duid != P25_DUID_TDU) && (duid != P25_DUID_TDULC)) { if (srcId == 0U && dstId == 0U) { - LogWarning(LOG_NET, "P25, invalid call, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "P25, invalid call, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } @@ -202,7 +203,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId RxStatus status = m_status[dstId]; if (streamId != status.streamId && ((duid != P25_DUID_TDU) && (duid != P25_DUID_TDULC))) { if (status.srcId != 0U && status.srcId != srcId) { - LogWarning(LOG_NET, "P25, Call Collision, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogWarning(LOG_NET, "P25, Call Collision, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); return false; } } @@ -229,7 +230,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId status.dstId = dstId; status.streamId = streamId; m_status[dstId] = status; - LogMessage(LOG_NET, "P25, Call Start, peer = %u, srcId = %u, dstId = %u, streamId = %u", peerId, srcId, dstId, streamId); + LogMessage(LOG_NET, "P25, Call Start, peer = %u, srcId = %u, dstId = %u, streamId = %u, external = %u", peerId, srcId, dstId, streamId, external); m_network->m_callInProgress = true; } } @@ -261,8 +262,8 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, outboundPeerBuffer, len, pktSeq, streamId, true); if (m_network->m_debug) { - LogDebug(LOG_NET, "P25, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u", - peerId, peer.first, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId); + LogDebug(LOG_NET, "P25, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u", + peerId, peer.first, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId, external); } if (!m_network->m_callInProgress) @@ -272,13 +273,13 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId m_network->m_frameQueue->flushQueue(); } - // repeat traffic to upstream peers + // repeat traffic to external peers if (m_network->m_host->m_peerNetworks.size() > 0U && !tg.config().parrot()) { for (auto peer : m_network->m_host->m_peerNetworks) { uint32_t dstPeerId = peer.second->getPeerId(); // don't try to repeat traffic to the source peer...if this traffic - // is coming from a upstream peer + // is coming from a external peer if (dstPeerId != peerId) { // is this peer ignored? if (!isPeerPermitted(dstPeerId, control, duid, streamId)) { @@ -293,11 +294,11 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId routeRewrite(outboundPeerBuffer, dstPeerId, duid, dstId); // process TSDUs going to external peers - if (processTSDUToExternal(outboundPeerBuffer, peerId, dstPeerId, duid)) { + if (processTSDUExternal(outboundPeerBuffer, peerId, dstPeerId, duid)) { peer.second->writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, outboundPeerBuffer, len, pktSeq, streamId); if (m_network->m_debug) { - LogDebug(LOG_NET, "P25, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u", - peerId, dstPeerId, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId); + LogDebug(LOG_NET, "P25, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u", + peerId, dstPeerId, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId, external); } } @@ -482,7 +483,7 @@ bool TagP25Data::peerRewrite(uint32_t peerId, uint32_t& dstId, bool outbound) /// Source Peer ID /// Destination Peer ID /// -bool TagP25Data::processTSDUToExternal(uint8_t* buffer, uint32_t srcPeerId, uint32_t dstPeerId, uint8_t duid) +bool TagP25Data::processTSDUExternal(uint8_t* buffer, uint32_t srcPeerId, uint32_t dstPeerId, uint8_t duid) { // are we receiving a TSDU? if (duid == P25_DUID_TSDU) { diff --git a/src/fne/network/fne/TagP25Data.h b/src/fne/network/fne/TagP25Data.h index 39955fa0..c951bf82 100644 --- a/src/fne/network/fne/TagP25Data.h +++ b/src/fne/network/fne/TagP25Data.h @@ -44,7 +44,7 @@ namespace network ~TagP25Data(); /// Process a data frame from the network. - bool processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId); + bool processFrame(const uint8_t* data, uint32_t len, uint32_t peerId, uint16_t pktSeq, uint32_t streamId, bool external = false); /// Helper to playback a parrot frame to the network. void playbackParrot(); @@ -76,7 +76,7 @@ namespace network bool peerRewrite(uint32_t peerId, uint32_t& dstId, bool outbound = true); /// Helper to process TSDUs being passed to an external peer. - bool processTSDUToExternal(uint8_t* buffer, uint32_t srcPeerId, uint32_t dstPeerId, uint8_t duid); + bool processTSDUExternal(uint8_t* buffer, uint32_t srcPeerId, uint32_t dstPeerId, uint8_t duid); /// Helper to determine if the peer is permitted for traffic. bool isPeerPermitted(uint32_t peerId, p25::lc::LC& control, uint8_t duid, uint32_t streamId);