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++
andPacket++
libraries withoutPcap++
, 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 usinggersemi
(thanks @egecetin !) - Updated the internal implementation of
PcapLiveDevice
to store IP information asIPAddress
(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
andIPNetwork
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 toLogLevel
.LogLevel
is now anenum 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 fromRawPacket*
toRawPacket 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
andPCAPPP_ENABLE_PCAP_SET_DIRECTION
- The following methods are now deprecated and will be removed in future versions:
Logger::Error
,Logger::Info
, andLogger::Debug
are deprecated. Please useLogLevel::XXX
insteadPcapLiveDeviceList::getPcapLiveDeviceBy***
methods have been deprecated in favor ofPcapLiveDeviceList::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