Skip to content

Conversation

@SiskaPavel
Copy link
Collaborator

@SiskaPavel SiskaPavel commented Mar 4, 2025

Massive refactor: Plugin-based architecture, CMake, and CI overhaul

  • Project Structure: Completely reorganized the repository, introducing a new directory layout and removing legacy files (autoconf, ChangeLog, NEWS, and old unit tests).
  • Build System: Migrated to CMake, adding support for external libraries, libatomic, libunwind, and introducing initial CMakeLists for the core.
  • Plugin System: Refactored ipfixprobe into a fully modular, plugin-based architecture.
    • Introduced PluginFactory and refactored InputPlugin, StoragePlugin, ProcessPlugin, OutputPlugin, and PluginManager.
    • Added multiple new plugins, including:
      • Input: PCAP, RAW, DPDK, NFB
      • Output: TEXT, IPFIX, UNIREC
      • Processing: BASICPLUS, BSTATS, ICMP, VLAN, FLOW HASH, OSQUERY, IDPCONTENT, PHISTS, PSTATS, SIP, OVPN, SSDP, SSADETECTOR, MQTT, DNS, DNSSD, NETBIOS, PASSIVEDNS, SMTP, QUIC, TLS, RTSP, MPLS, WIREGUARD, HTTP, NTP, NETTISA
      • Storage: CACHE
    • Removed deprecated process plugins (e.g., STATS, FLEXPROBE).
  • Compilation & Packaging:
    • Added support for building .tar.gz and .rpm packages.
    • Introduced CMake options for millisecond timestamp precision and NEMEA support.
  • Code Quality & Formatting:
    • Applied clang-format and clang-tidy rules across the repository.
    • Updated .clang-format, .clang-tidy, and .gitignore.
  • CI/CD:
    • Removed old Travis and outdated workflows.
    • Introduced GitHub Actions for build, test, RPM packaging, and CI entry points.
    • Added composite install dependencies action.
  • Miscellaneous:
    • Added -L PATH option to specify plugin paths at runtime.
    • Refactored functional tests.
    • Introduced editorconfig for consistent formatting.

This refactor lays the foundation for a cleaner, more maintainable, and extensible architecture.

@SiskaPavel SiskaPavel added this to the v5.0.0 milestone Mar 4, 2025
@SiskaPavel SiskaPavel self-assigned this Mar 4, 2025
@SiskaPavel SiskaPavel marked this pull request as draft March 4, 2025 11:40
@SiskaPavel SiskaPavel force-pushed the v5.0.0-cmake-plugins branch 3 times, most recently from f3064a8 to 5faae61 Compare March 4, 2025 16:24
goto EXIT;
}

conf.pluginManager.loadPlugins("/usr/local/lib64/ipfixprobe/", loadPluginsRecursive);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This path should not be hardcoded. I recommend to determine path in CMake and pass it to the code during build process. See following links for inspiration:

This makes sure that app will be able to find plugins whenever it was build manually with custom paths or using RPM build system.

@SiskaPavel SiskaPavel force-pushed the v5.0.0-cmake-plugins branch 2 times, most recently from 2debc5f to 8cab1d5 Compare March 19, 2025 16:41
@SiskaPavel SiskaPavel force-pushed the v5.0.0-cmake-plugins branch 10 times, most recently from b70474e to dcdc87d Compare March 25, 2025 18:56
@SiskaPavel SiskaPavel force-pushed the v5.0.0-cmake-plugins branch from dcdc87d to 2937ff3 Compare March 25, 2025 18:59
@SiskaPavel SiskaPavel merged commit 2c666a4 into master Mar 25, 2025
7 checks passed
@SiskaPavel SiskaPavel deleted the v5.0.0-cmake-plugins branch March 25, 2025 19:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants