Commit Graph

183 Commits (132bec6eaab8fba7ba93deb2f5447e2011c4bc19)

Author SHA1 Message Date
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 c249ee5803 fix offset issue for network generated TSDUs;
2 years ago
W3AXL d980da74be small fix to make preferred sites work via REST
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 3d752bc363 add preferred peer ID lists to the REST API;
2 years ago
Bryan Biedenkapp 096efcef1a ignore affiliation checks for ISSI-type peers, they are excluded from affiliation rule checking;
2 years ago
Bryan Biedenkapp 94da264f55 better handle checking if a peer affiliation table has become invalid (null); better handle cleanup and creation of peer affiliation tables;
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 f603949879 make common strings #defines instead of copy and pasted static text;
2 years ago
Bryan Biedenkapp 1341690653 add call error (failed validation) events to InfluxDB logging;
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
Bryan Biedenkapp a8adeeaad7 implement missing parrot delay timer; fix bad implementation where parrot frames were only played if network packets were received (this logic changed when threaded network Rx was implemented);
2 years ago
Bryan Biedenkapp 1ef806fef1 handle edge-case scenario of RTP packet sequence overrun;
2 years ago
Bryan Biedenkapp 1632019650 port and implement /dmr/rid and /p25/rid REST APIs on the CFNE;
2 years ago
W3AXL 9675f42db5 added ability to save RID/TGID lookups from the FNE to local files
2 years ago
W3AXL b75389cd47 simple fix for RID list updates, verified on list sizes of 49, 50, 51, 99, 100, and 101
2 years ago
Bryan Biedenkapp 5571a71e4e replace manual lock/unlock with lock_guard to ensure a lock is held in a scope, and released when a scope is closed;
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 b4f9b2d201 fix some issues with the "unsupported no no mode" that people continue to abuse; correct issue with calculating list offsets when announcing RID lists to the host;
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 9dadc06130 I was asked for ASCII art, and I deliver, thus, ASCII art;
2 years ago
Bryan Biedenkapp c3f9b69454 catch and log certain situations where a buffer in a buffer vector may be released (this is likely due to a non-tread safe network flush); expose size of inclusion, exclusion and rewrite lists so we don't need to copy them to know the size;
2 years ago
Bryan Biedenkapp ba785f3d91 hide debug here (m_debug/m_verbose should be adhered to in classes as they *optionally* enable debug trace for modules, allowing the LogLevel to be set to 1 and not spam the log/console with unintended debug statements); alter bad handling of a compiler constant string for the Server/User-Agent strings;
2 years ago
Bryan Biedenkapp 4acb60aeff add more plumbing to the CFNE for future use;
2 years ago
Bryan Biedenkapp e7ce1d1f20 report errno errors from pthread_create;
2 years ago
Bryan Biedenkapp 92a5bbd580 treat threadedNetworkRx and threadedACLUpdate with pthread_detach and ensure they will not retain resources waiting for a pthread_join that'll never happen;
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 8ca4ed5a40 implement a few more CFNE NAK types to notify the peer of invalid conditions; take first steps towards FNE-side authoritative grants by implementing some logic plumbing;
2 years ago
Patrick W3AXL d8eff1f1f4
got tgid editing via REST mostly working (#49)
2 years ago
Bryan Biedenkapp 5d6c99da43 add missing mutex unlocks for the lookup tables (I'm not sure how this hasn't caused a problem); reorganize the code in FNENetwork and make threadedNetworkRx private; add some counting logic to ensure the voice tag classes flush voice frames every 5 peers to ensure timely delivery of packets;
2 years ago
Bryan Biedenkapp e348b15d7f for the purpose of performance handle incoming packets in their own threads (NOTE: this commit is *experimental* and may burn your house down and kick your dog, and it most certainly has a memory leak I'm working on somewhere);
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 b28c685ee3 add missing documentation; properly annotate time value; add missing thread join wait;
2 years ago
Bryan Biedenkapp 86985a5ecc update peer ping time in RID ACL update; move core network process/read into its own thread;
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
Patrick W3AXL a279b33876
Add RID alias to RID ACL (#48)
2 years ago
Bryan Biedenkapp 987e944d4b add flag to denote traffic flow for external peers (that is a peer connection the CFNE makes to another CFNE);
2 years ago
Bryan Biedenkapp 7dc850669a reorganize messages for ADJ_STS_BCAST;
2 years ago
Bryan Biedenkapp 0ce9a374ee change source file to match configuration file change;
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 083517326e fix nullptr reference for a non-existent peer affiliation list (can happen if the peer hasn't completed login); slightly reorganize RPTL (this stil has some bizarre problem);
2 years ago
Bryan Biedenkapp e523798e3c log offending PEER IDs for illegal TSDUs, because .. we want to know who these people are...;
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 25d81b93a4 make sure the ping response message is displayed when verbose is set to true;
2 years ago
Bryan Biedenkapp 6219929cd5 preliminary support for management APIs RID (Query/Add/Delete/Commit), TGID (Query/Add/Delete/Commit) [note: commit doesn't work pending modification to RadioIdLookup and TalkgroupRulesLookup to implement commit/saving to disk];
2 years ago
Bryan Biedenkapp 49f1b02ccf add preliminary support for CFNE to have the "affiliated" flag to pass traffic;
2 years ago
Bryan Biedenkapp 345495076b fix issue with the FNE not properly rewriting TGIDs for configured peers (the original implementation was slighly naive in assumptions, the new implementation techincally allows rewrites to *any* peer *from* any peer not just ISSI peers); perform some minor cleanup of the REST classes; revert change in ClientConnection and ServerConnection initializing the m_buffer class variable (hopefully this may fix some strange issues being seen);
2 years ago
Bryan Biedenkapp 80d38ccf3a refactor and reorganize network socket handling classes to be more consistent;
2 years ago
Bryan Biedenkapp 6fb3ede4ef whoops inadvertant bad logic;
2 years ago
Bryan Biedenkapp 91a995af43 correct issue where writeMaster wasn't being properly treated as an immediate (we cannot queue peer master packets like we can master peer packets); fix issue with peer title for affiliation lists;
2 years ago
Bryan Biedenkapp a4ec7fbfa8 add a check for RTP payload type $57 (which we deprecated) so that its essentially ignored, so people on older versions can abuse the newer software; ensure we don't try to transmit terminators for calls that didn't exist on the first place;
2 years ago
Bryan Biedenkapp 5b5efcbe9d add support for network announcement of unit registration, deregistration and group affiliation so the FNE can collate the data more accurately; implement REST API on dvmfne to support retreiving the list of known affiliations; correct a bug in enumeration of RID and TGID lists that could cause weirdness; remote unnecessary "control" RTP payload type and just use a singluar payload type;
2 years ago
Bryan Biedenkapp 5a5104ba2f treewide: perform general refactor of file headers, I've modified the file headers to follow rules from: https://www.kernel.org/doc/html/next/process/license-rules.html, this trims/compresses the file header section a bit reducing the number of lines at the top of every file quite a bit, going forward all new files should follow this new format (if its good enough for the Linux kernel, its good enough for me);
2 years ago
Bryan Biedenkapp bad8129d7d file header updates;
2 years ago
Bryan Biedenkapp d9e2458722 implement support for low-level TCP sockets; deprecate and remove new_unique macro and use appropriate std::make_unique; apply various clang linting;
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 9b55c67ac9 fix issue where the converged FNE would continue to update an unauth'ed PEERs ping time resulting in it never timing out properly;
2 years ago
Bryan Biedenkapp eba4db6104 refactor RTP code slightly to better handle tracking the RTP timestamp properly;
2 years ago
Bryan Biedenkapp 6d5e35d361 fix issue with net active and roamer reaccess bits in OSP_RFSS_STS_BCAST; add helper function to AffiliationLookup to allow for reverse resolving of grants from source to destination; migrate FNEPeerConnection from a non-pointer reference to a pointer (this allows better tracking of values without copying the connection structure);
2 years ago
Bryan Biedenkapp 7513bccf52 refactor PROPERTY_PLAIN and READONLY_PROPERTY_PLAIN;
2 years ago
Bryan Biedenkapp 98cf9513ba correct badness when dealing with ISSI peers;
2 years ago
Bryan Biedenkapp 9fb2201139 code cleanup; some minor modifications for out-of-band software;
2 years ago
Bryan Biedenkapp 1e4bdbd1fa typo;
2 years ago
Bryan Biedenkapp 7b95ddff95 refactor and rework the CMake build system slightly (so it behaves better when compiled out-of-tree, shhh);
2 years ago
Bryan Biedenkapp bde6284308 ensure FNE software reports itself differently; make host Network class private section protected so the FNE codebase can inherit from it; create PeerNetwork inherited class on FNE;
2 years ago
Bryan Biedenkapp cf0d8bb430 port RTP header changes from fnecore for better handling the RTP timestamp; relabel conference FNE to converged FNE; refactor version slightly so that the running DVM host version is properly reported to the FNE and when saved to modem configuration area;
2 years ago
Bryan Biedenkapp abbe6cd41c properly queue FNE peer messages (these are distinct from peers connected *to* the FNE, FNE peer messages are messages sent to FNE masters that are "ISSI"ed); better handle logging activity logging;
2 years ago
Bryan Biedenkapp c60b69b54e add conference FNE REST API to report the currently configured TGID list;
2 years ago
Bryan Biedenkapp 9bd06b916a use better terminology for FNE peer TGID rewriting;
2 years ago
Bryan Biedenkapp 2226e1e6f7 implement confernece FNE API to force list updates on demand; better organize FNE dvmcmd commands;
2 years ago
Bryan Biedenkapp bf72dcbee8 add support to picojson for uint64_t; correct issue with conference bridge FNE never incrementing a connections ping counter; implement /status and /peerlist APIs for conference bridge REST API; implement support for /peerlist in dvmcmd;
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 d8dec70665 fix missing foreground option on dvmfne; add extra CC halt cases; correct bad check for enable control for conventional grant demand; fix incorrect creation og control byte for grant demand; add clear log message that a grant demand is being generated;
2 years ago
Bryan Biedenkapp 2d809e0a61 complete the job Faulty started and remove remnants of deprecated ENABLE_DMR, ENABLE_P25 and ENABLE_NXDN compiler options;
2 years ago
Bryan Biedenkapp 97af96a6ad be verbose in cmake output when enabling various debugs; correct issue with startup messages;
2 years ago
Bryan Biedenkapp 0f770462b7 update headers to properly reflect which module/package the file belongs;
2 years ago
Bryan Biedenkapp 1379482fcc reorganize entire codebase structure; move common classes, files into a compile time static library; reorganize CMake files to make use of common static library to reduce compile time;
2 years ago

Powered by TurnKey Linux.