Commit Graph

152 Commits (a5c0fbad58a139040a8fd3d5358565da69840d7a)

Author SHA1 Message Date
Bryan Biedenkapp 0b0dc32c94 refactor call rejection to be timer based to reject a call until incoming data drops; correct bug with non-standard MFId's being used for the first LDU1; implement enforced unknown/undefined RID ACL support;
1 year ago
Bryan Biedenkapp 8f74260d5d Merge branch 'master' into incall_ctrl
1 year ago
Bryan Biedenkapp 497b6a7b65 allow FNE PUT /dmr/rid and /p25/rid to target *all* connected peers; correct naming of packet data dumping configuration parameter; continue some work on P25 PDU data and VTUN; adjust P25 PDU ACK_RSP;
1 year ago
Bryan Biedenkapp 619cb548df add support for per TGID RID permission lists; add call router support to check for source RID permission to TGID;
1 year ago
Bryan Biedenkapp 59f85c5976 implement in-call control mechanism (this allows the FNE to command a host to stop transmitting if a ACL check fails);
1 year ago
Bryan Biedenkapp 5f601247b7 add zlib 1.3.1 dep (included in common); implement Peer-Link feature, this allows a master CFNE, when configured by peer list, to transmit complete talkgroup, RID and peer list data to subordinate CFNEs;
1 year ago
Bryan Biedenkapp cc274ba78e add support to selectively revert to previous logic ignoring affiliation checks;
1 year ago
Bryan Biedenkapp 7736e03aef add ability to disable NON-AUTHORITATIVE log warnings (functionality is made optional as it makes diagnostics easier); remove redundant error message from grant demands;
1 year ago
Bryan Biedenkapp b0b8a42a2c change default "identity" name in SysView example configuration to something more meaningful;
1 year ago
Bryan Biedenkapp 264738cb53 add some configuration notes for useAlternatePortForDiagnostics and allowActivityTransfer;
1 year ago
Bryan Biedenkapp 9d2efc3028 fix issue with WS defaulting to IPv6 sockets; hide debug logging unless debug is set in YML;
1 year ago
Bryan Biedenkapp 813a594b84 implement backroundable WebSocket mode for SysView; add WebSockets++ dependency (disableable with CMake option: -DDISABLE_WEBSOCKETS=1);
1 year ago
Bryan Biedenkapp fe6f7508c0 add code dump of private sysview FNE monitoring utility to public GPL; correct issue with large REST responses getting truncated;
1 year ago
Bryan Biedenkapp e2742ed6c6 add missing documentation for alias field;
1 year ago
Bryan Biedenkapp a497cfcc21 update schema file;
1 year ago
Bryan Biedenkapp a677f444d4 add schema document for YAML file (this is useful for the VSCode RedHat YAML plugin);
1 year ago
Bryan Biedenkapp 0673aac088 add support to disable watchdog overflow checking;
1 year ago
Bryan Biedenkapp f25ae33b7c better document FIFO adjustments and queue adjustments;
1 year ago
Bryan Biedenkapp 5a972a671c add some more verbose logging for overflow conditions; correct issue with DMR Tx timer expiring before the call actually ended;
1 year ago
Bryan Biedenkapp 1851cec087 fix issue with UDP audio not sending metadata correctly; fix issue with enabling UDP audio; fix issue with incorrect address and port used for receiving remote UDP audio PCM data; fix issue with incorrect checking of destination and slot for DMR; fix issue with encodingDMRAudio frames and sending them too quickly; refactor how callEnd is handled;
1 year ago
Bryan Biedenkapp 5aaad9c2fb add support to suppress diagnostic messages from the bridges to the FNE;
2 years ago
Bryan Biedenkapp 65fa91b7cb
[THIS MAY BREAK THINGS, BE AWARE] Merge Win32 support and C++ dvmbridge into master. (#67)
2 years ago
Bryan Biedenkapp ec1cf8c87e drop dvmdfsi as a standalone application (this functionality has been entirely rolled into dvmhost); update README.md;
2 years ago
Bryan Biedenkapp 617c889d1a
Merge DFSI host changes into master (#63)
2 years ago
Bryan Biedenkapp da2f6130a8 [NOTICE: this commit is *EXPERIMENTAL* and implements *very* early data support, it is expected to be buggy, incomplete or broken] implement VTUN interface (fne0) on the dvmfne (this requires dvmfne to be run as root on Linux system [untested on non-Linux] to create the tun interface); implement VIFace random MAC generation; implement P25 TIA-102.BAEB SCEP ARP (SCEP is always used for conventional data) on dvmfne; refactor P25 packet status bits (this may break things else where, beware!); properly implement P25 status bit flipping on inbound channel activity; implement functionality in the P25 and DMR DataHeader classes to calculate the proper raw PDU frame length; implement dvmfne ARP table creation and maintainence (this is buggy and requires more implementation and test); implement dvmfne VTUN -> PDU and PDU -> VTUN IP traffic forwarding (this is incomplete and requires more implementation and test); correct several issues on dvmhost p25::packet::Data with overlapped buffers;
2 years ago
W3AXL b343473a87 initial fix to handle non-standard MFID LDU1s
2 years ago
Bryan Biedenkapp 806f950665 add disablePacketData flag to disable the FNE passing packet data;
2 years ago
Bryan Biedenkapp 942793e86e update fne-config.example.yml to include dumpDataPacket flag;
2 years ago
Bryan Biedenkapp a9bc150da7 add IP address column to RID tables (this is *NOT* used yet, and is for future use);
2 years ago
Bryan Biedenkapp e90350d350 begin implementing some basic SNDCP handling logic (this isn't complete, and this doesn't make SNDCP work *yet*), however until the implementation is complete, this should prevent channels from becoming grant locked (hopefully);
2 years ago
Bryan Biedenkapp f0f1d489d1 add TIA frame types (for future use); remove extraneous handling for DMR and NXDN (these are shut off in the network code, which makes the code in Dfsi pointless to have); remove g_hideMessages and logging from Dfsi class (for P25 this is actually instrumented by the debug flag in the SerialService (and when it exists UDPService) class, no need to duplicate this; add support for "null" modem mode for the SerialService, this allows basic code flow to be tested without any V.24 interface attached to the dvmdfsi instance, a "portType" parameter was added to the configuration file for this, by default it should always be "uart" but for null modem testing it can be set to "null"; add commenting and function definition commenting;
2 years ago
W3AXL ba8067c55c fixed deletes on invalid pointers, cleaned up serial initialization, added timeouts for call flags, other small QoL tweaks
2 years ago
Patrick W3AXL 0bbc69d237
Basic implementation of dvmdfsi in dvmhost C++ ecosystem (#59)
2 years ago
Bryan Biedenkapp 243696855c make alternate port for diagnostics the default;
2 years ago
Bryan Biedenkapp 2f918d759d implement support to send logs to the syslog;
2 years ago
Bryan Biedenkapp 2c560dc3ce add support to report host status JSON blob to FNE for storage in InfluxDB;
2 years ago
Bryan Biedenkapp f39e8de0e1 refactor PR#55's peer list implementation to utilize a lookup table; add support to peer list implementation, when in whitelist mode to support per peer passwords (techincally this works in blacklist mode but is ... well irrelevant as blacklist mode *rejects* connections from peers in the list file); correct a few issues regarding how NAKs are returned early in the authentication handshake; reformat log messages; fix issue in host voice when regular conventional traffic is sent to a DVRS-enabled channel and legacy group grant is disabled;
2 years ago
Bryan Biedenkapp a95f0b30b0 for "cleanliness";
2 years ago
Bryan Biedenkapp 12e07a2205 cleanup log output for uniformity; set peer ACL to disabled by default (it is up to the FNE administrator to properly configure and enable this, it should not be enabled by default);
2 years ago
Bryan Biedenkapp fe002b270f minor cleanups;
2 years ago
firealarmss cba48ae54a
Add support for peer blacklist and whitelist (#55)
2 years ago
Bryan Biedenkapp 1de86458a6 fix DVRS unit deregistration issue (units weren't registered properly during GRP_AFF because DVRS doesn't do the typical U_REG); implement 12-hour timeout for unit registrations (this is only applied if the SU in question has *NOT* had *ANY* activity within 12 hours);
2 years ago
Bryan Biedenkapp c8eb52a57d add try {} catch {} around some critical ASIO read calls to prevent application crash (this won't resolve the errors but should prevent application crash); implement support for peer ID list that *always* receives traffic for a TGID regardless of affiliation rules;
2 years ago
Bryan Biedenkapp 6425ec5cd7 add support to properly filter traffic headers and terminators; add support to selectivly block U2U (private) calls from peers;
2 years ago
Bryan Biedenkapp 70600d3fd7 remove deprecated options; ensure we check if a peer is enabled on the FNE before attempting to read/write to it; silence BUGBUG UDP write message;
2 years ago
Bryan Biedenkapp 942a53069b add support to gate GRP_VCH_GRANT messages from going to peers with no affiliations for a TG (if the TG is configured for affiliated only);
2 years ago
Bryan Biedenkapp 75dbc9e025 refactor parrot frame storage; add support to allow parrot responses to go only to the peer for which the parrot call originated;
2 years ago
Bryan Biedenkapp e4aca9fc4f don't register a CC with itself; be more clear in the config YAML that the controlChannel block should be left at defaults for dedicated control channels;
2 years ago
Bryan Biedenkapp 24082b9652
P25 data (#52)
2 years ago
Bryan Biedenkapp e0b6da51fb make the network presence announcment (VC -> CC and CC -> FNE) timing configurable (this value is in seconds); refactor RF channel enumeration, RF channels are now enumerated in their own class ChannelLookup instead of being integrated into AffiliationLookup, this allows the flexibility to update and change channel information at runtime; add support for VC -> CC presence/registration to tell the CC what the REST information is for that VC, this makes the restAddress and restPort entries for the voiceChNo list in the config.yml optional, the only mandatory fields are channelId, channelNo and restPassword;
2 years ago
Bryan Biedenkapp 0f7eabff82 implement support for peers that identify themselves as "conventional" to ignore affiliated talkgroup rules and be able to receive all traffic if the FNE is configured to allow promiscuous operation; implement extremely preliminary support to allow a CC to claim a VC peer, allowing for appropriate grouping of peers for trunked sites;
2 years ago
Bryan Biedenkapp 4d776f6314 add support for DMR T3 adjacent site broadcast;
2 years ago
Bryan Biedenkapp b19c1d5f6a add support for processing CSBK on the FNE; add support to optionally log TSBK and CSBK network events to InfluxDB;
2 years ago
Bryan Biedenkapp 25cb0e7947 fix typo;
2 years ago
Bryan Biedenkapp 96a9ba1c03 implement trunking site preference support for TGIDs, this implements a feature by which TGIDs can be gated to allow affiliation to preferred sites, all other non-preferred sites will DENY affiliation causing the radio to attempt to roam to another site (this is a trunking only feature and does not change conventional operation);
2 years ago
Bryan Biedenkapp 7d1af0235b implement support for reporting activity, diagnostic and call events to an InfluxDB instance;
2 years ago
W3AXL 9675f42db5 added ability to save RID/TGID lookups from the FNE to local files
2 years ago
Bryan Biedenkapp 31ca17449d *BEWARE* this commit alters the RPI_ARM cross-compiler and may break things *BEWARE*; implement support for HTTPS SSL REST API configuration; add contrib binary overlay for the RPI_ARM compiler (to add libssl-dev dependences);
2 years ago
Bryan Biedenkapp 17d69cb950 add support to disable *ALL* passing of P25 ADJ_STS_BCAST from a CFNE instance; properly implement processing of TSDU messages from any peer; implement login flag from CFNEs to identify themselves as external when they are peering;
2 years ago
Bryan Biedenkapp c4ca72581f for performance reasons on very noisy/busy setups that may have *lots* of peers, use of an alternate port to service diagnostic and activity log transfers helps ensure the traffic port doesn't become overloaded with data;
2 years ago
Bryan Biedenkapp c6c1c72f79 institute a hard 250 peer cap on the CFNE for performance, stability and call quality reasons; implement support for the user to configure the connection limit on a CFNE; implement support to resolve a master NAK to a reason on the host;
2 years ago
Bryan Biedenkapp eb57f1b5d8 implement functionality to block traffic to specific peers from specific external peers; use std::string over const char* wherever possible to limit pointer passing; implement support in FrameQueue and RawFrameQueue to bypass the queue and directly send messages to specified peers (useful in some situations for packets to be immediately dispatched vs queuing and batching); chunk RID list transmissions to aid in increasing performance (this will likely also need to be done with the TGID lists in the future as well); refactor transmitting ACL lists to peers into its own spun off thread so we don't block the main network processing loop (and infact, this requires documentation; since at a certain peer size DVM network partitioning should be considered to reduce the number of concurrent peers serviced by any given FNE and to better load balance connections across a network, instead of relying on a singular central FNE); implement /peer/count REST API to simply return the known connected count of peers; disable the forced ACL list update functionality (for now);
2 years ago
W3AXL 26940f0187 updated rid_acl.example.dat for RID alias
2 years ago
Bryan Biedenkapp a707106ea5 for sanity reasons, unless *specifically* required disallowing transmission of ADJ_STS_BCAST to external peers is enabled by default;
2 years ago
Bryan Biedenkapp 98dacab03c refactor RPTL handling slightly to better handle a RPTL condition while the peer state is in connection state 4 (RUNNING); refactor RPTL slightly to better handle non-valid connection states for RPTL (i.e. non-INVALID/CONNECTED, or RUNNING); reword logging messages for clarity; increase default configuration max pings from 5 to 10, this has the effect of making the time out for a peer 50s in total length before the connection is considered stale (for future reference the formula for the timeout is: PingTime * MaxPings = TimeoutInSeconds);
2 years ago
Bryan Biedenkapp 34ae323166 implement option to disable the CFNE from sending P25 ADJ_STS_BCAST to external peers (that is CFNE's the CFNE receiving the ADJ_STS_BCAST is connected to via peers list in the configuration file); add logging around the RPTL NAK condition; don't validate the connection state when performing a connection cleanup for an RPTL NAK; attempt to erase a peer ID from the peer table if during an RPTL the connection is null (this should never happen); correct a bunch if TG validation issues; correct condition where the FNE would try to pass traffic with *both* srcId and dstId 0 (this should never happen on any protocol really, and if there is some scenario that requires it, contact me on Discord please); add more processing for TSDUs to perform TGID checks and other validations;
2 years ago
Bryan Biedenkapp 0e20d4fec0 add separate config option for reporting peer pings to the log; add extra logging around an RPTL NAK condition;
2 years ago
Bryan Biedenkapp 49f1b02ccf add preliminary support for CFNE to have the "affiliated" flag to pass traffic;
2 years ago
Bryan Biedenkapp 8aba76156b update config naming;
2 years ago
Bryan Biedenkapp 8ff7067eca mplement experimental support to AES-256 encrypt the network connection; cleanup some instances where buffers were not being cleaned up properly; cleanup some of the AESCrypto implementation; remove references to some little used compiler macros;
2 years ago
Bryan Biedenkapp 9bd06b916a use better terminology for FNE peer TGID rewriting;
2 years ago
Bryan Biedenkapp fd29093c33 fix typo;
2 years ago
Bryan Biedenkapp 6b18089d75 implement REST API stub for conference bridge FNE;
2 years ago
Bryan Biedenkapp 21a4a97ec3 ensure if the network changes the destination ID for P25 and NXDN in-flight the LC data is properly replaced; implement talkgroup mutation by peer on conference bridge FNE;
2 years ago
Bryan Biedenkapp 71438abb87 consider peer IDs for systems the conference bridge is peered to for inclusion/exclusion lists;
2 years ago
Bryan Biedenkapp 506c59c52b fix range for softpots in TUI to be 0 thru 255;
2 years ago
Bryan Biedenkapp 083bfd9bdb implement support to send network grant demand TDU for conventional stations; bump copyright date to 2024;
2 years ago
Bryan Biedenkapp 685ea4df14 implement partial fix for trunked UU calls (calls can be made now, but operation is still glitchy);
2 years ago
Bryan Biedenkapp 26981f1345 deprecate and remove Voice On Control support (this commit marks end of support for VOC operation); make buffer overflow errors more apparent in the log; increase verbosity of CC notification logging messages;
2 years ago
Bryan Biedenkapp 936402275f very very preliminary work for U_REG LLA support;
2 years ago
Bryan Biedenkapp 4a764f67df [EXPERIMENTAL] add support to configure voice channel iden table IDs;
2 years ago
Bryan Biedenkapp 3b3bc884a4 implement parrot grant demand support for FNE conference bridge; correct issue with grant demands appearing as U2U instead of GROUP;
2 years ago
Bryan Biedenkapp abb57affe2 refactor how GROUP VCH UPDATEs are sent; ensure notifyEnable is set to true by default;
2 years ago
Bryan Biedenkapp 37fe46df12 make redundant immediate an option (for experimentation purposes);
3 years ago
Bryan Biedenkapp 5f7b62ece2 some minor code reorganization for clarity; implement new disableNetworkGrant feature for non-trunk mode P25 operations, this disables network calls from making channel grants that would exclusively lock the channel for the duration of that call (when SUs are utilizing a mode that makes them obey grants), this is useful for systems where RF-only TG steering is required;
3 years ago
Bryan Biedenkapp ab1c84243e add support for the control byte on P25 TDUs, this implements a required remote grant demand request allowing remote network applications to get a channel grant before sending traffic;
3 years ago
Bryan Biedenkapp edb2529f68 allow the frame loss threshold to be configurable (this could help in fringe signal fading situations to prevent premature call termination in some situations);
3 years ago
Bryan Biedenkapp c62d79e2be implement support for explicit source ID;
3 years ago
Bryan Biedenkapp d0be614c27 split announcement group config into its own config var;
3 years ago
Patrick W3AXL 74838f990a
initial re-commit based on latest master (#35)
3 years ago
Bryan Biedenkapp 1e92b960e2 better document what the rfTalkgroupHang timer actually does;
3 years ago
Bryan Biedenkapp d45af90c07 initial bare-bones implementation of dvmmon; enhance REST API to return more detailed status information (for use by dvmmon); cleanup file code style;
3 years ago
Bryan Biedenkapp cdce663a55 remove affiliated flag from local talkgroup_rules (this is not used locally); refactor how P25 network message frames are made (mostly just a code cleanup); refactor out some magic numbers used in some places for code clarity;
3 years ago
Bryan Biedenkapp c9f74e7abf assume better defaults when the controlCh block is missing; split logic checks for ignoring a notifyCC_* call for clarity; add extra logging messages for whether or not CC notify is enabled, and whether or not CC REST API parameters were passed;
3 years ago
Bryan Biedenkapp 34a6c14111 rename inhibitIllegal to inhibitUnauthorized; remove code that was clearing modem buffer before transmitting an immediate (this was extremely problematic); add new option for VOC users "redundantGrantTransmit" this option will cause a modem in P25 VOC mode to transmit redundant grant responses, helping ensure grants are received;
3 years ago
Bryan Biedenkapp 39e0e4a254 add option to selectively enable/disable CC notification from a VC for traffic channel updates (this option defaults to enabled/on for all configurations but VOC);
3 years ago
Bryan Biedenkapp 79562af995 ensure fixedMode is defined and set to a reasonable default;
3 years ago
Bryan Biedenkapp 2b6b0c574d
merge 3.5-dev into master, this marks 3.5 alpha/beta release; (#31)
3 years ago
Bryan Biedenkapp 81c16f6758 add option to disable the source ID validation before issuing a grant;
3 years ago
Bryan Biedenkapp f69443c2eb relabel RCON configuration parameters to REST (see configs/config.example.yml); change "controlPermitTG" to "supervisor", this is more descriptive for what this function does as it is literally a supervisory flag enabling/disabling the CC from commanding subordinate DVMs; implement a REST API that can alter the supervisory state at runtime;
3 years ago

Powered by TurnKey Linux.