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);