PHREL v2.1.0 (07/05/26) - http://www.digitalgenesis.com Change Log: v2.1.0 (07/05/26) - Performance enhancement - Replace global hash mutex with 4096 striped locks for concurrent capture and data-thread processing. - Batch packet reads and cache current second in the capture loop. - Maintain incremental rolling PPS sum at capture time; skip idle hash entries on the data thread. - Compact per-host IP keys and embedded sample arrays (one malloc per host). - Rename the 'jump' configuration/CLI option to 'action', with drop, reject, and accept as dedicated parser tokens. v2.0.0 (07/05/26) - Major enhancement (Breaking change) - Replace the hand-written configuration parser with a flex/bison subsystem. Configuration syntax now uses brace blocks (options { } and phrel { }) with semicolon-terminated statements. Angle-bracket blocks (, , etc.) are no longer supported. - Install the default configuration to /etc/phrel/phreld.conf. When invoked with no command-line options, the daemon reads this file on startup; -C/--config overrides the path. When other command-line options or a BPF expression are given, a configuration file is not required unless -C is specified. traceoptions [ configuration ] logs the parsed configuration when enabled (also enabled automatically when debug >= 2). - Replace iptables/ip6tables fork/exec with libnftables for firewall enforcement. phreld now requires nftables (RHEL 8+, Ubuntu 22.04+, or any distro with a nf_tables-backed kernel and libnftables installed). - Enforcement now uses a dedicated 'inet phreld' nftables table with flat per-host rules instead of per-host iptables chains inserted into filter/INPUT. - Removed the '--iptables'/'-x' and '--ip6tables'/'-y' command line options and the 'iptables'/'ip6tables' configuration file keys. There is no iptables fallback. - Added the 'nft-priority' option to control where the phreld hook chain is evaluated relative to other netfilter hooks. - 'jump' is now limited to standard nftables verdicts (drop, reject, accept) rather than an arbitrary iptables chain name. - phreld now removes its entire nftables table on startup (clearing any orphaned rules from a previous crash) and on clean shutdown/restart. - Remove Net-SNMP / SNMP trap support entirely. Removed the '--snmptrap'/'-S' command line option and '' configuration blocks, along with the libsnmptrap library, trap module, and MIB files. Net-SNMP is no longer an optional build dependency. - Replace optional MySQL cross-instance sync with Redis (hiredis). Removed --enable-mysql, all db_* / CLI and config options, libmysqlclient build dependency, and docs/mysql-phrel.sql schema. - Added --enable-redis, configuration block, and redis_host, redis_port, redis_sock, redis_user, redis_pass, instance_id, instance-file, sync_algo, and sync_threshold options. Default sync_algo is combined (local.avg + sum of peer avgs) for correct load-balancer detection; sync_threshold 2 PPS; check_interval 30 seconds. - Added optional instance_id with auto-assignment via Redis INCR and persistence to instance_file (default ~/phreld.id). Redis connect failure logs a warning and phreld continues without cross-instance sync. - Enable Redis support by default in RPM and Debian packages (hiredis-devel / libhiredis-dev). Override with rpmbuild --define 'redis 0' to disable. - Fix redis_foreach_host() pipelining when reading stats from multiple peers. Rename calc-interval config key to check-interval. v1.1.0 (07/03/26) - Major enhancement - Import source into git and modernize the autotools build system. - Require libpcap via pkg-config; add optional SNMP and MySQL support. - Improve packet capture, logging, signal handling, and SNMP trap support. - Refactor hash management, thread data handling, and iptables chain updates. - Add secure string helpers and scrub sensitive configuration data from memory. - Remove the obsolete dump option and simplify configuration handling. - Add systemd service support; replace the SysV init script with phreld.service. - Add RPM and Debian packaging with make pkg, rpm, and deb targets. - Ship a default phreld.conf that rate limits ICMP to 10 packets per second. - Update installation instructions and copyright years. v1.0.2 (05/31/13) - Bug fix - Fixed a compile failure when NetSNMP was not available. - Cleaned up a number of warnings. v1.0.1 (04/20/13) - Bug fix - Fixed a segfault on startup related to specific server interfaces. - Fixed a bug with excluded CIDR prefix ranges. - Cleaned up a number of warnings and removed my_end() call. v1.0.0 (09/09/11) - Major enhancement - Added support for IPv6. - Added support for setting direction of capture. - Added graceful handling of malloc() failures. v0.9.8 (01/25/09) - Major enhancement (Never Released) - Added syncronization between instances of PHREL via MySQL, which is useful with server farms behind load balancers. v0.9.7 (07/21/08) - Bug fix and minor enhancement (Never Released) - Applied patch kindly provided by Steve Grubb of Red Hat, which fixed a hand full of issues and improved security. - Added spec file and init script also provided by Steve Grubb. - Included the article "Protecting your DNS Infrastructure with PHREL" with the documentation. v0.9.6 (10/19/06) - Bug fix - Command line thresholds are no longer required if they are specificed within the configuration file. v0.9.5 (04/15/06) - Bug fix and minor enhancement - Fixed several incorrect uses of memset() which prevented proper initialization of internal structures, causing seg faults on some systems. - Updated with enterprises number assigned by Internet Assigned Numbers Authority (IANA). - Made promiscuous mode a configurable option and changed default to disable promiscuous mode. - Lowered max chain size to 28 characters and shortened chain names due to length restrictions in Fedora Core 4. Reported by Bekar. - Added support for a configuration file. v0.9.4 (03/26/06) - Bug fix and minor enhancement - Cleaned up SNMP trap code. - Added support for startup, shutdown and restart SNMP traps. - Added check for verifying iptables binary is valid and executable. - Added support for include prefix ranges. - Fixed typos in man page. v0.9.3 (03/22/06) - Bug fix and minor enhancement - Fixed assert failure on incoming traffic from 0.0.0.0/32 (spoofed). - Added support for SNMP traps. - Created MIB for PHREL using temporary enterprises number. Included in the mibs directory. - Added support for net-snmp, dmalloc, pthread and libpcap to the configure script. - Cleaned up include headers and fixed compiler warnings. - Added man page. v0.9.2 (03/06/06) - Bug fix and minor enhancement - Fixed all compiler warnings. - Memory for samples is now dynamically allocated. - Fixed fork on startup bug. - Added option for user definable chain instead of DROP. - Better handling of failed chain inserts. - Added work around for select() bug. v0.9.1 (03/05/06) - Minor enhancement - Capture code rewritten to use select to call libpcap which allows PHREL to shutdown when there is no incoming traffic. - Added options for configurable intervals. - Added option for configuring PPS algo. - Converted from inet_ntoa() to inet_ntop() for thread safety. v0.9.0 (03/02/06) - Initial release - Implemented exclusions. - Implemented per threshold burst and decay.