Skip to content

May 2025 Release

Latest
Compare
Choose a tag to compare
@seladb seladb released this 15 May 07:34
· 53 commits to master since this release
a49a79e

May 2025 release of PcapPlusPlus (v25.05)

Binaries included in this release

  • Binaries compiled for Ubuntu 24.04 LTS, 22.04 LTS, 20.04 LTS
    • For Ubuntu 24.04 both x86_64 and ARM packages are available
  • Binaries compiled for RHEL 9.4
  • Binaries compiled for Fedora 42
  • Binaries compiled for Alpine 3.20.3
  • Binaries compiled for macOS Intel and Apple Silicon with Xcode 15 and 16
  • Binaries compiled for Android with all 4 ABIs: arm64-v8a, armeabi-v7a, x86, x86_64
  • Binaries compiled for FreeBSD 14.1 and 13.4
  • Binaries compiled for Windows using MinGW-w64 15.1.0 (32bit + 64bit)
  • Binaries compiled for Windows using Microsoft Visual Studio 2022, 2019 (32bit + 64bit, Debug + Release configurations)
  • Full documentation (both PcapPlusPlus website and API doxygen documentation) is available here: https://pcapplusplus.github.io/docs/quickstart

What's changed (changes from v24.09)

  • New protocol support:
    • WireGuard (thanks @nadongjun !)
    • Add gratuitous ARP requests (thanks @Dimi1010 !)
    • GTPv2
    • Cisco HDLC
  • Added the option to build only Common++ and Packet++ libraries without Pcap++, removing the dependency on third-party libraries like libpcap or WinPcap/Npcap (thanks @Dimi1010 !)
  • Updated the CMake files to support using pcapplusplus/ as the include prefix (thanks @clementperon !)
  • Added support for DPDK 23.11 and 24.11
  • Introduced nanosecond precision for timestamps in TCP reassembly
  • Added support for timestamp-related libpcap options (thanks @vcomito-apexai !)
  • Added multi-language README support (Traditional Chinese, Korean) (thanks @tigercosmos, @nadongjun !)
  • Updated OS/platform support running in CI: Ubuntu ARM64, Alpine 3.20, Fedora 42, FreeBSD 13.4/14.1, newer macOS runners (thanks @clementperon !)
  • Migrated Android build to use the new version of ToyVPN
  • Introduced a new benchmark system using Google Benchmark (thanks @egecetin !)
  • Enhanced Python testing and linting infrastructure with ruff (thanks @tigercosmos !)
  • Code refactoring:
    • Overhauled the logging infrastructure for better performance and flexibility (thanks @Dimi1010 !)
    • Reformatted CMakeLists files using gersemi (thanks @egecetin !)
    • Updated the internal implementation of PcapLiveDevice to store IP information as IPAddress (thanks @Dimi1010!)
    • Streamlined packet parsing using templated next-layer sub-construction (thanks @Dimi1010 !)
    • Refactored device list classes (PcapLiveDeviceList, DpdkDeviceList, etc.) to use smart pointers internally for memory management and consolidated common behavior under a base class (thanks @Dimi1010 !)
    • Improved the internal implementation of MacAddress, IPAddress and IPNetwork classes (thanks @Dimi1010 !)
    • Enhanced and modernized the internal implementation of PfRingDevice (thanks @Dimi1010 !)
    • Removed usage of VLAs (Variable Length Arrays) for C++ standard compliance (thanks @Dimi1010 !)
    • Numerous C++11 modernization efforts (thanks @Dimi1010, @egecetin, @lumiZGorlic, @kiwixz, @ol-imorozko !)
  • Improved documentation using triple-slash Doxygen formatting (thanks @Dimi1010, @tigercosmos !)
  • Tons of bug fixes, security fixes and small improvements (thanks @Dimi1010, @clementperon, @rndx21033, @prudens, @Doekin, @egecetin, @ol-imorozko, @1ndahous3, @fxlb, @jj683, @oss-patch, @enomis101, @Shivam7-1, @orgads, @Alexis-Lapierre, @s-genereux, @fasonju !)

Breaking changes

  • Logger::LogLevel has been deprecated and moved to LogLevel. LogLevel is now an enum class, so arithmetic operations on it will fail to compile
  • The Logger copy constructor and copy assignment operator are marked as deleted
  • The return type of Packet::getRawPacketReadOnly() has been changed from RawPacket* to RawPacket const*
  • SSLv2 support has been removed (it was non-functional in previous versions) (thanks to @droe!)

Deprecation list

  • PcapLiveDevice::getAddresses(), which was previously deprecated, has now been removed
  • libpcap versions < 0.9 are no longer supported. As a result, the following CMake options have been removed: PCAPPP_ENABLE_PCAP_IMMEDIATE_MODE and PCAPPP_ENABLE_PCAP_SET_DIRECTION
  • The following methods are now deprecated and will be removed in future versions:
    • Logger::Error, Logger::Info, and Logger::Debug are deprecated. Please use LogLevel::XXX instead
    • PcapLiveDeviceList::getPcapLiveDeviceBy*** methods have been deprecated in favor of PcapLiveDeviceList::getDeviceBy***
    • ArpLayer(ArpOpcode opCode, const MacAddress &senderMacAddr, const MacAddress &targetMacAddr, const IPv4Address &senderIpAddr, const IPv4Address &targetIpAddr) constructor has been deprecated in favor of more explicit overloads

Collaborators

Full Changelog: v24.09...v25.05