Bryan Biedenkapp
ce57f48302
corrected short/long modem frame serialization without mutating source lengths or overrunning buffers; removed double-counted PDU padding in common and V.24 assembly; added checked native-modem size enforcement before transmitting oversized PDUs; fixed exact-boundary padding calculations for P25 DataHeader; corrected unconfirmed Auxiliary ES handling, including the 13th-byte EXSAP field; removed incorrect test-side padding-length workarounds that caused tests to pass when they should not have; added exact-boundary and Auxiliary ES regression assertions;
1 month ago
Bryan Biedenkapp
4d1300826c
reorganize source files; add mirror functionality for data router and packet scheduler from P25 to DMR; add tests;
1 month ago
Bryan Biedenkapp
3060769f9b
add better handling for ARP and data packet routing;
1 month ago
Bryan Biedenkapp
b0e2903fb6
perform refactor for how convential CAI P25 Data and SCEP is handled;
1 month ago
Bryan Biedenkapp
10e681d87f
harden OTAR KMM handling and add bearer integration tests;
1 month ago
Bryan Biedenkapp
0bdac24d07
correct KMM NACK responses where necessary;
1 month ago
Bryan Biedenkapp
808aa8b70f
correct bad KMM authentication and replay protection; correctly negotiate proper response authentication; correct key-format semantics (there was a serious mismatch in P25Defines causing incorrect handling of values); harden KMM parsing and framing; fix PDU AES OFB processing; expand the P25 OTAR and crypto tests;
1 month ago
Bryan Biedenkapp
e7fdaed775
correct issue handling HA IP rotation;
1 month ago
Bryan Biedenkapp
99038b07ec
EXPERIMENTAL: add experimental support for NXDN encrypt/decrypt on bridge;
1 month ago
Bryan Biedenkapp
adefbeba89
correct P25 ACK_RSP ISP decode;
1 month ago
Bryan Biedenkapp
ce8b7a7ea7
add similar support from TSBK to CSBK to treat CRC errors as warnings;
1 month ago
Bryan Biedenkapp
d098001076
correct bad logging information;
1 month ago
Bryan Biedenkapp
72b7ba4b58
EXPERIMENTAL: add support to bridge to duplicate traffic to analog when encoding digital audio;
1 month ago
Bryan Biedenkapp
5c5016b623
implement NXDN crypto support; code cleanup;
2 months ago
Bryan Biedenkapp
44b5042c35
begin some corrective work for bridge NXDN support;
2 months ago
Bryan Biedenkapp
4774bb94af
minor source cleanup and annotation;
2 months ago
Lorenzo L. Romero
1040ba35e8
Add FNE console patch status registry service ( #121 )
2 months ago
Bryan Biedenkapp
e4bc909972
correct bad LICH handling for RCCH type packets; correct some bad PacketInformation handling;
2 months ago
Bryan Biedenkapp
9662385249
correct various P25P2 issues; correct bad P25P1 bit additions from network TSDUs;
2 months ago
Bryan Biedenkapp
5091225a9f
correct DMR PDU handling;
2 months ago
Bryan Biedenkapp
a27e87ede1
correct FACCH buffer overflow;
2 months ago
Bryan Biedenkapp
2662dbcf19
correct some DMR OTA late entry issues; correct missing NXDN packet length checks (should be similar to DMR);
2 months ago
Bryan Biedenkapp
e9815ea8b9
correct FNE transport for NXDN to handle 48-byte CAI frames (as intended); correct NXDN bridge issues not properly handling the VCALL header and not handling the SACCH voice superframes correctly; correct NXDN bridge not properly handling NXDN FACCH TX_REL; correct FNE grant using VCALL instead of VCALL_CONN; correct memory handling for NXDN VCALL_IV MI handling; correct dvmhost TX_REL handling to use message type instead of depending on the modem tags alone; correct FACCH LC handling, this was handling incorrect lengths; expand NXDN unit tests;
2 months ago
Bryan Biedenkapp
5bd770a4dd
update submodules;
2 months ago
J. Chang
a4f14606f2
Fix analog and NXDN parrot playback intervals ( #129 )
2 months ago
Bryan Biedenkapp
ccad1479af
correct issue where FNE might be a replica and the radio alias sync command is being used, but because the FNE is a replica there may not be on disk saved radio alias, so save it to disk then read it like other sync operations;
2 months ago
Bryan Biedenkapp
cb390aa0cd
correct packetbuffer issues;
2 months ago
Bryan Biedenkapp
fc23017cf2
P25 OTAR unit tests;
2 months ago
Bryan Biedenkapp
93876e6ab7
enhance LDU1 logs to include the current LCO;
2 months ago
Bryan Biedenkapp
0776f91ba8
correct issue where GROUP_UPDT would incorrectly override the currently active dstId;
2 months ago
Bryan Biedenkapp
e47524a21c
correct heap use-after-free in ServerConnectionManager during stopAll();
2 months ago
Bryan Biedenkapp
5e2356162c
correct some infinte loop conditions due to bad loop variable sizes; correct missing error handling for zlib during decompression;
2 months ago
Bryan Biedenkapp
c701b8e131
correct use-after-free crash for Replication, NetworkTree and KeysUpdate packets;
2 months ago
Bryan Biedenkapp
5e684228f5
add APIs for managing the separate RID alias data; add Catch2 tests;
3 months ago
Bryan Biedenkapp
0e1d45716f
correct shared DLL compilation on Win32;
3 months ago
Bryan Biedenkapp
69aaced3cf
implement build system support for non-static linking;
3 months ago
Bryan Biedenkapp
d736e7b598
implement FNE REST API tests;
3 months ago
Tim WD6AWP
b90cfb8d85
log corrected MI bytes in V.24/TIA DFSI LDU2 FEC-correction warning ( #128 )
...
The Enc Sync content warning only printed algId/kId, but its trigger
condition also fires on an MI-only change (memcmp against LDULC),
making the log show no apparent difference when only the MI changed.
3 months ago
Bryan Biedenkapp
fb6a8089ea
start plumbing for Harris RF OTA User Alias (this is not wired yet...);
3 months ago
Bryan Biedenkapp
193055330a
handle replicating radio aliases from FNE to FNE; implement RADIO_ALIAS_SYNC for fnecore consoles to be able to request the radio alias list from the core;
3 months ago
Bryan Biedenkapp
f5f86ef9c7
add separate radio alias lookup for the purposes of serving non-ACL connected radio ID aliasing in the future;
3 months ago
Bryan Biedenkapp
6b29648e8b
add missing comments/documentation somehow this got clobbered between commits;
3 months ago
Bryan Biedenkapp
f3652d39a7
correct a regression with HTTP GET due to previous HTTP hardening;
3 months ago
Bryan Biedenkapp
47fff42173
add support for FNE tests via dvmtests harness;
3 months ago
Bryan Biedenkapp
6cbcd4240c
perform packet length validations;
3 months ago
Bryan Biedenkapp
5e15e26547
correct a out-of-bounds read error in the HTTP server;
3 months ago
Bryan Biedenkapp
2b3276f3d0
add FNE support to transmit P25 Phase 2 traffic; ensure critical Phase 2 data (such as scrambler offset and MAC PDU Opcode) are sent in P25 Phase 2 frames;
3 months ago
Bryan Biedenkapp
e9dc058704
baseline implementation of host-only P25 Phase 2 implementation (this creates the plumbing required later once the SDR modems have support for Phase 2);
3 months ago
Bryan Biedenkapp
56bff0489b
correct EKC container loading while file is being changes;
3 months ago
Bryan Biedenkapp
18a4a9b18d
correct condition where multiple Key Updates could clobber each other in a race condition;
3 months ago
Bryan Biedenkapp
b13f127036
expand previous PR to cover all RS decode functions; implement fecErr returns for P2 LC handlers; update tests;
3 months ago
Tim WD6AWP
a4f8829b45
R05a06 dev ( #126 )
...
* fix(p25): guard mid-call LDU1 identity against marginal FEC miscorrection
RS634717::decode241213/decode24169 already computed a corrected-symbol
count and threw it away, so a decode() call taking the RS(24,12,13)
LDU1 LC field to the edge of its correction guarantee (miscorrection
of a still-CRC-valid-looking codeword) was as trusted as a clean
decode. Voice::process() also never re-checked a mid-call LDU1's
srcId/dstId against anything once a call was established.
Thread the RS error count up through LC::decodeLDU1/decodeLDU2
(LC::FECErrs), and in Voice::process() treat a mid-call LDU1 as
suspect if either:
- it required RS correction and disagrees with the call's last
known-good LDU1, or
- its dstId disagrees with the dstId from this call's HDU, which is
far more strongly protected (Golay(18,6,8)+RS(36,20,17)) and
fixed for the life of the call, regardless of the LDU1 decode's
own error count.
On either, keep the established identity for that frame instead of
adopting the new one; audio is untouched. Neither check runs at call
grant/establishment, so this doesn't affect ACL or ad hoc/unregistered
srcIds originating a call -- it only stops an already-established
call's identity from being silently redirected mid-transmission.
* fix(modem): use RS-corrected LC content instead of pre-correction DFSI bytes
In ModemV24's DFSI parsing (both convertToAirV24 and convertToAirTIA,
LDU1 and LDU2), srcId/dstId/lco/mfId and algId/kId/MI were latched
directly from the raw wire bytes as they arrived, before the RS
decode of that same data (m_rs.decode241213/decode24169 on
m_rxCall->LDULC) ran. When the decoder found and corrected symbol
errors, the correction was computed and discarded -- the pre-
correction, still-wrong raw values were what actually got used to
build the outgoing frame. Only a hard decode failure (ret == false)
triggered any recovery.
Thread the RS decoder's corrected-error count out via the errs
out-param added to RS634717::decode241213/decode24169, and on a
successful decode with errs > 0, re-derive the affected fields from
the now-corrected LDULC buffer: LDU1 via the existing LC::decodeLC(),
LDU2 via inline extraction matching LC::decodeLDU2()'s own algId/kId/MI
handling. Logs only when the correction actually changed one of these
fields.
Scoped entirely to ModemV24.cpp (the DFSI/V.24 route); LC.cpp,
RS634717.*, Voice.cpp, and Modem.cpp (the direct RF "air" route) are
unchanged.
* Update FEC Waring Log Message
Include LC content for better indication of what changed.
* Revert Control.cpp and test files to match upstream r05a06_dev exactly per review
3 months ago
Bryan Biedenkapp
3c3dc871af
correct double free;
3 months ago
Bryan Biedenkapp
c2a59ef14e
bump major version number;
3 months ago
Bryan Biedenkapp
794e8b71e5
replace UDPSockets preshared AES-ECB implementation with a AES-CBC implementation;
3 months ago
Bryan Biedenkapp
ac9eaa90c4
Dev_Ranger was slightly overzealous in his match and replace;
3 months ago
Dev_Ranger
f309a782de
= Update Influx metrics config field names
...
Rename TrafficNetwork Influx config members to match the new metrics config naming.
3 months ago
Bryan Biedenkapp
4840c2d4c5
log an error when we try to push an event and there is no more room because we have reached max queue depth;
3 months ago
Bryan Biedenkapp
2657edcecf
for backcompat reasons support announce frames on the traffic port (this really should be extremely short term);
3 months ago
Bryan Biedenkapp
74f23f7459
bring calls processed numeric metric in lock-step with a call_event log (originally calls processed was keyed off the start of a call, which can have misleading consequences about the true count of calls);
3 months ago
Bryan Biedenkapp
fdaaff2c56
sqlite3 writer should check g_killed to keep loop alive;
3 months ago
Bryan Biedenkapp
0dc2c37056
thread must die if g_killed set;
3 months ago
Bryan Biedenkapp
b609bcc843
properly label sqlite thread;
3 months ago
Bryan Biedenkapp
ead43239ef
add some logging around queue depth size;
3 months ago
Bryan Biedenkapp
07116a378d
remove remaining mutex locking, this is dangerous but necessary so metrics never causes deadlock;
3 months ago
Bryan Biedenkapp
bcb37cc4a9
remove mutex locking infavor of atomics which should prevent deadlock scenarios (hopefully);
3 months ago
Bryan Biedenkapp
805df02ba0
report call switches in stats API;
3 months ago
Bryan Biedenkapp
c9bb239771
begin metric counting call switch events;
3 months ago
Bryan Biedenkapp
9ef9ba34f4
implement support to log collision events to the metrics DB;
3 months ago
Bryan Biedenkapp
268e5b6f7f
increment total call processed counters when a data call starts;
3 months ago
Bryan Biedenkapp
5e75b6b9e1
replace mutex locking with lock-free atomics instead;
3 months ago
Bryan Biedenkapp
dea6d400db
implement SQLite metrics DB table pruning; cleanup code;
3 months ago
Bryan Biedenkapp
6bfbb03cec
relabel some define constants;
3 months ago
Bryan Biedenkapp
94ad2de4f4
implement support to send logging and metrics to an SQLite DB; refactor how metrics and DB logging are handled;
3 months ago
Bryan Biedenkapp
6c0db3da8a
remove networkWatchdog stop from resetNet(); properly start network watchdog for voice or data frames, but not for TDU or TSDUs;
3 months ago
Bryan Biedenkapp
c3f337489f
always reset states regardless of RS_NET_IDLE when performing a netTGHang resolution; be more verbose about network watchdog timeouts;
3 months ago
Bryan Biedenkapp
3324b67bc8
properly log a TOT state;
3 months ago
Bryan Biedenkapp
4e7a08ea18
refactor base Network class to follow same packet processing refactor that TrafficNetwork and MetadataNetwork did;
3 months ago
Bryan Biedenkapp
a5bebe87f8
refactor how TrafficNetwork and MetadataNetwork handle packet NET_FUNC opcodes;
3 months ago
Bryan Biedenkapp
66aa15ef53
continue adding code tests;
3 months ago
Bryan Biedenkapp
f0f35b59c9
refactor how MetadataNetwork handles the packet buffer maps, this should hopefully correct instability;
3 months ago
Bryan Biedenkapp
0dc6e2bf41
during active RF collision defer stale stream reset;
3 months ago
Bryan Biedenkapp
5321821490
fix incorrect assumptions by some HostControl tests; correct HostControl class name collisions that would cause strange link time errors; correct intermittent CRC-6 test failure;
3 months ago
Bryan Biedenkapp
39a7730484
extra parity alignment with P25 for frame loss handling;
3 months ago
Bryan Biedenkapp
d72b604aa9
implement the same fix for DMR and NXDN;
3 months ago
Bryan Biedenkapp
7cc073b3f0
disabling rfTalkgroupHang (setting to 0) can cause a situation where a abrupt call stop from a subscriber can cause the RF state to hang, this implements a fix where by it forces the rfLossWatchdog to run to terminate a call that abruptly ends;
3 months ago
Bryan Biedenkapp
399992fec9
correct possible edge case causing the Rx P25 stream ID to become stuck; build and implement a test harness against the host controller paths to validate logic where possible;
3 months ago
Bryan Biedenkapp
26f9f3019d
after review, because of how higher-level call handling works, and how ultimately LC metadata corruption from a DFSI source will be hidden, perform similar LC recovery attempts in the ModemV24 class;
4 months ago
Bryan Biedenkapp
9508ce9404
expand on and better handle frame sequencing from a V.24 source;
4 months ago
Bryan Biedenkapp
d05088da57
corrections from cherrypicked code;
4 months ago
Bryan Biedenkapp
0d45869bc4
cherrypick changes from tsawyer/dvmhost/p25-consolidation into ModemV24;
4 months ago
Bryan Biedenkapp
aea826fcbf
minor jitter buffer alteration to properly drop the oldest frame vs the last frame;
4 months ago
Bryan Biedenkapp
8b96163d6e
cleanup call states better when receiving illegal terminators (this should not happen normally unless you have very unstable internet that corrupts frames, but the hardening is better then not);
4 months ago
Bryan Biedenkapp
8fcd066c02
correct 3-bit error handling for Golay(24,12,8); add tests against network engine code; correct sendmmsg implementation against documentation for sendmmsg to better handle partially sent queues instead of discarding;
4 months ago
Bryan Biedenkapp
03068fe382
code cleanup;
4 months ago
Bryan Biedenkapp
191153d3c1
code cleanup;
4 months ago
Bryan Biedenkapp
b4fae1f39a
do not allow non-call RF terminators to be silent, be noisy about the fact that a non-call TDU was received;
4 months ago
developer
6691e2aa77
p25: fix extended-address PDU CRC-32 scope and outbound status bits ( #125 )
4 months ago
Bryan Biedenkapp
82f0c0c375
implement support to encrypt any TEK data with a preshared key;
4 months ago
Bryan Biedenkapp
562fb3cc67
internally generate a GRP_VCH grant demand message for a net event when encountering a grant demand TDU;
4 months ago
Bryan Biedenkapp
f3698cbe86
encode the raw CSBK/TSBK/RCCH data in the control net event data; decode and send net_event for NXDN RCCH data;
4 months ago
Bryan Biedenkapp
0db63a6534
fix missing stream ID for call events; add call duration on call end event;
4 months ago
Bryan Biedenkapp
c299d812e9
add support for call start/end WebSocket events;
4 months ago
Bryan Biedenkapp
7342f69fb9
whoops we were not clamping the jitter buffer size or max wait for peers to internal minimums/maximums;
4 months ago
Bryan Biedenkapp
7c5df8abed
add possible protective controls around RPTL/RPTK/RPTC/RPT_DISC to mitigate multi-threaded race condition from rapid disconnect/connection scenarios;
4 months ago
Bryan Biedenkapp
a7c7c3f330
correct possible null reference during disconnectPeer callback;
4 months ago
Bryan Biedenkapp
f72fc5a1b3
corrections for failing NXDN tests;
4 months ago
Bryan Biedenkapp
e16685fc4a
add rudimentary experimental support for NXDN to dvmbridge; correct a few issues with trunked voice handling for NXDN, when a VC is a trunked participant the outgoing voice frames are RTCH vs RDCH;
4 months ago
Bryan Biedenkapp
c76b417082
correct some minor NXDN issues;
4 months ago
Bryan Biedenkapp
689243e099
source code organization and cleanup;
4 months ago
Bryan Biedenkapp
2d5e307fd8
disable frameQueue debug;
4 months ago
Bryan Biedenkapp
8784e06e3b
EXPERIMENTAL: implement new stream rejection logic when a call collision occurs, this is smarter then the existing logic in that a stream will fail processing validation and be rejected once identified as a collider;
4 months ago
Bryan Biedenkapp
d29ce3c74f
source code commenting cleanup;
4 months ago
Bryan Biedenkapp
54b2a41ec0
increase the base network buffer size from 8192 -> 16384, this is doubly as large, some transfer frames to sysview can reach the 8k boundary and become truncated, this increase in buffer size should allievate that issue;
5 months ago
Bryan Biedenkapp
efedd6a53c
disable accidentally enabled debug trace;
5 months ago
Bryan Biedenkapp
ae93c4cb27
throw errors about writing buffers >8192;
5 months ago
Bryan Biedenkapp
36ab54e120
make oversized packet warning verbose;
5 months ago
Bryan Biedenkapp
082dbcde81
make oversized packet warning verbose;
5 months ago
Bryan Biedenkapp
4883e78065
report IP and port for oversized packet warning;
5 months ago
Bryan Biedenkapp
1a13d736f2
report IP and port for oversized packet warning;
5 months ago
Bryan Biedenkapp
5e3524dfef
updates to various PDU handling functionality;
5 months ago
Bryan Biedenkapp
e983b1a812
correct OTAR UDP encrypted detect (was looking at the wrong field); fix DLD ACK to post-valiation;
5 months ago
Bryan Biedenkapp
5b3433a3f3
whoops, add missing files, this time really add P25P2 MAC scrambling support;
5 months ago
Bryan Biedenkapp
391e0068af
add proper support for P25 P2 MAC scrambling; fix and enhance message number following for KMM frames; correct and fix CMAC rekey calculations;
5 months ago
Bryan Biedenkapp
f4154c462e
store the grant elapsed time; update peer status with grant elapsed time;
5 months ago
Bryan Biedenkapp
04ecac8e79
cleanup a couple of warnings;
5 months ago
Bryan Biedenkapp
075f0dbda2
use the last HDU for the encryption flag;
5 months ago
Bryan Biedenkapp
6284f05386
make strapping check ICCs system requests so they are always actively sent; remove debug text; refactor how P25 call handler handles verifying TG strapping;
5 months ago
Bryan Biedenkapp
24a573fec3
fix typo for clear bit setting on the FNE; properly annotate if a TG is selectable/secure/clear strapped;
5 months ago
Bryan Biedenkapp
27ed5fc15f
remove m_peers lock around peer update in erasePeer(); add hacky fuzzy matching logic to allow up to 3 bit errors for a CRC-CCITT162 (this better helps some P25 conditions where a TSBK may fault with a CRC-CCITT error, usually while enc enabled); implement support for selectively setting talkgroup encryption modes, selectable, strapped or clear (note due to how both DVMs implementation and how the protocols work there are some limitations, for example in DMR the FNE cannot reliably prevent calls from flowing to the network based on the selective talkgroup encryption modes, NXDN cannot reliably prevent a call grant because the encryption state isn't known at grant time, dvmhost provides no network-sourced traffic protection for clear or strapped as the assumption is the FNE will not allow a call to flow to begin with);
5 months ago
Bryan Biedenkapp
895f5c8df7
when updating peers from erasePeer() lock the map before mutating;
5 months ago
Bryan Biedenkapp
55bef73a5b
tighten up how the shared maps and vectors lock themselves during certain operations; implement some critical changes to the REST API to help prevent and log on stuck REST API calls; correct some lock order issues within the FNE REST API;
5 months ago
Bryan Biedenkapp
45c0661723
for control channel dvmhost peers, report the known peerId of voice channels via the TRANSFER_SUBFUNC_STATUS; update sysview to properly expire peers from the peer status list after 10 seconds of no updates from the FNE about that peer;
5 months ago
Bryan Biedenkapp
6d15d94379
ensure stale peer status entries are erased after a period of inactivity;
5 months ago
Bryan Biedenkapp
6c9883a084
return a internal server error when a exception is thrown during the read() operation for REST API calls;
5 months ago
Bryan Biedenkapp
3c85caa482
surprising news to me the V.24 modem FW does not actually set byte 5 of the GET_STATUS opcode, so will never properly flag transmit status, as such I have implemented some faux handling in the host itself to emulate the behavior, this is done by flagging Tx once we start successfully writing data over V.24 (this can be misleading if the data is sent to our V.24 modem but the V.24 modem never sends it to a Quantar);
5 months ago
Bryan Biedenkapp
e550b46c4b
fix issue with SysView in WebSocket mode dieing and not starting network services;
5 months ago
Bryan Biedenkapp
86db348956
when the Network rotates HA IP, log the new connect IP for clarity;
5 months ago
Bryan Biedenkapp
2df9a36522
file cleanup;
5 months ago
Bryan Biedenkapp
da4669659a
now that we have proper UKEK and LLA FNE-side in the crypto container, implement proper per RID LLA support;
5 months ago
Bryan Biedenkapp
7885ecc151
implement some grant demand hardening; implement network watchdog hardening for NXDN;
5 months ago
Bryan Biedenkapp
d8a65dc766
perform network watchdog handling in a more centralized manner in Voice::processNetwork(); fix condition where remote grant demands may happen even though TG hangtimers are running;
5 months ago
Bryan Biedenkapp
9449de77d4
more hardening, when a net talkgroup hand releases if the state is non idle reset the state;
5 months ago
Bryan Biedenkapp
6cd4b36446
add more netState handling hardening to ensure the state is returned to a default idle state;
5 months ago
Bryan Biedenkapp
cf96c35758
apply network watchdog logic to data packets as well as voice;
5 months ago
Bryan Biedenkapp
05d939027b
during network P25 voice calls, instead of dvmhost resetting the network watchdog every network frame only reset it when valid LDUs are processed, this should have the appropriate affect of applying the network watchdog and preventing a netState hang in a non-RS_NET_IDLE state if we never receive a network TDU to properly end a call;
5 months ago
Bryan Biedenkapp
35de68b7c7
minor HA logging enhancement and fix (we were counting the HA IP count wrong);
5 months ago
Bryan Biedenkapp
4641040d45
neighbor FNEs are always allowed to request keys with RID 0;
5 months ago
Bryan Biedenkapp
7a9f7a0ef8
bridge should send the srcId in the KEY_REQ;
5 months ago
Bryan Biedenkapp
b83a2f2d9b
allow RID 0 KEY_REQ override optionally (this maintains older behavior where KEY_REQs are gated by PEER ID);
5 months ago