Skip to content

Commit de45ae7

Browse files
committed
Bump version to 26.07
1 parent ab9ad1d commit de45ae7

4 files changed

Lines changed: 91 additions & 76 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# We need 3.12 or later, so that we can set policy CMP0074; see below.
22
cmake_minimum_required(VERSION 3.12)
33

4-
set(PCAPPP_VERSION "25.05+")
4+
set(PCAPPP_VERSION "26.07")
55

66
# MAIN_PROJECT CHECK
77
set(PCAPPP_MAIN_PROJECT OFF)

Common++/header/PcapPlusPlusVersion.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
/// @brief The main namespace for the PcapPlusPlus lib
99
namespace pcpp
1010
{
11-
#define PCAPPLUSPLUS_VERSION "25.05+"
12-
#define PCAPPLUSPLUS_VERSION_OFFICIAL "non-official release"
11+
#define PCAPPLUSPLUS_VERSION "26.07"
12+
#define PCAPPLUSPLUS_VERSION_OFFICIAL "official release"
1313

1414
#define PCAPPLUSPLUS_VERSION_FULL "v" PCAPPLUSPLUS_VERSION " (" PCAPPLUSPLUS_VERSION_OFFICIAL ")"
1515

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
May 2025 release of PcapPlusPlus (v25.05)
2-
=========================================
1+
July 2026 release of PcapPlusPlus (v26.07)
2+
==========================================
Lines changed: 86 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,97 @@
1-
Release notes (changes from v24.09)
1+
Release notes (changes from v25.05)
22
-----------------------------------
33

4-
- New protocol support:
5-
- WireGuard (thanks @nadongjun !)
6-
- Add gratuitous ARP requests (thanks @Dimi1010 !)
7-
- GTPv2
8-
- Cisco HDLC
9-
- 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 !)
10-
- Updated the CMake files to support using `pcapplusplus/` as the include prefix (thanks @clementperon !)
11-
- Added support for DPDK 23.11 and 24.11
12-
- Introduced nanosecond precision for timestamps in TCP reassembly
13-
- Added support for timestamp-related libpcap options (thanks @vcomito-apexai !)
14-
- Added multi-language README support (Traditional Chinese, Korean) (thanks @tigercosmos, @nadongjun !)
15-
- Updated OS/platform support running in CI: Ubuntu ARM64, Alpine 3.20, Fedora 42, FreeBSD 13.4/14.1, newer macOS runners (thanks @clementperon !)
16-
- Migrated Android build to use the new version of ToyVPN
17-
- Introduced a new benchmark system using Google Benchmark (thanks @egecetin !)
18-
- Enhanced Python testing and linting infrastructure with `ruff` (thanks @tigercosmos !)
19-
- Code refactoring:
20-
- Overhauled the logging infrastructure for better performance and flexibility (thanks @Dimi1010 !)
21-
- Reformatted `CMakeLists` files using `gersemi` (thanks @egecetin !)
22-
- Updated the internal implementation of `PcapLiveDevice` to store IP information as `IPAddress` (thanks @Dimi1010 !)
23-
- Streamlined packet parsing using templated next-layer sub-construction (thanks @Dimi1010 !)
24-
- 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 !)
25-
- Improved the internal implementation of `MacAddress`, `IPAddress` and `IPNetwork` classes (thanks @Dimi1010 !)
26-
- Enhanced and modernized the internal implementation of `PfRingDevice` (thanks @Dimi1010 !)
27-
- Removed usage of VLAs (Variable Length Arrays) for C++ standard compliance (thanks @Dimi1010 !)
28-
- Numerous C++11 modernization efforts (thanks @Dimi1010, @egecetin, @lumiZGorlic, @kiwixz, @ol-imorozko !)
29-
- Improved documentation using triple-slash Doxygen formatting (thanks @Dimi1010, @tigercosmos !)
30-
- 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 !)
4+
- libpcap / WinPcap / Npcap is now optional. You can build `Common++` and `Packet++` on their own, without `Pcap++` and without any dependency on a packet-capture engine. As part of this, PcapPlusPlus can now read and write `.pcap` files entirely without libpcap (thanks @Dimi1010 for the follow-up performance fixes and keeping this working across build configs!)
5+
- Bumped the minimum required C++ standard to C++14 (thanks @Dimi1010 !)
6+
- Protocol support:
7+
* Added Modbus protocol (thanks @yahyayozo !)
8+
* Added DoIP – Diagnostic over Internet Protocol (thanks @raissi-oussema !)
9+
* Added PostgreSQL Wire Protocol (PGWire), including additional message types (thanks @Mfon-19 for a follow-up refactor!)
10+
* Added MySQL Wire Protocol
11+
* Discrete `FTPControl` and `FTPData` protocol types (thanks @Dimi1010 !)
12+
* Add support for `AccurateECN` TCP flag (thanks @turtleman123 !)
13+
* Improve SIP packet detection using heuristic parsing (thanks @sorooshm78 !)
14+
* Recognize LLC payload in SLL2 (thanks @Dimi1010 !)
15+
- Added extensive X.509 / cryptography support:
16+
* X.509 certificate decoding, extension parsing, and parsing of X.509 certificates embedded in SSL/TLS messages
17+
* Export/import of X.509 certificates to PEM format, plus a new general-purpose PEM codec
18+
* Cryptographic key decoders (RSA/EC private and public keys)
19+
* Base64 encoding/decoding
20+
* A new `X509Toolkit` example application
21+
* Expanded ASN.1 codec support: `BitString`, `UTCTime`/`GeneralizedTime`, `ObjectIdentifier` and string records, plus arbitrary-size integer support (thanks @Dimi1010 for internal Asn1Codec/Asn1Record improvements along the way!)
22+
- Added support for WinDivert as a packet capture engine on Windows
23+
- Added support for DPDK 25.11, plus new dedicated DPDK CI tests (thanks @minhnhatnoe for an `rte_eal_cleanup` fix on device destructure!)
24+
- `IFileReaderDevice::createReader()` and `IFileReaderDevice::tryCreateReader()` use file-content heuristics to automatically pick the right reader (pcap/pcapng/snoop) instead of relying solely on the file extension (thanks @Dimi1010 !)
25+
- Add incremental packet parsing support with `Packet::parsePacket()` (thanks @Dimi1010 !)
26+
- Added multi-language README support: Japanese (thanks @tigercosmos !) and Russian (thanks @camelsayswhat !) - in addition to the existing Traditional Chinese and Korean translations
27+
- AI/LLM support: added `AGENTS.md` to make it easier for LLMs to work on PcapPlusPlus, added `translation/ai_translation_prompt.md` to use AI to maintain the README translations (thanks @tigercosmos !)
28+
- `IPv4Address`/`IPv6Address`/`MacAddress` user-defined literals, e.g. constructing addresses directly from string literals, and sized buffer-construction overloads (thanks @Dimi1010 !)
29+
- Explicit-ownership overloads for `RawPacket::setRawData()`, and a sized overload for `Layer::copyData()` (thanks @Dimi1010 !)
30+
- Improved zstd support: added a build flag to control zstd support (thanks @Dimi1010 !), fixed compression level not being applied consistently (thanks @MerinoSheep !), and fixed a memory leak when reading zstd-compressed files (thanks @SuperBigYB !)
31+
- A new `SuppressLogs` RAII class for temporarily suppressing log output (thanks @Dimi1010 !)
32+
- Platform/CI updates: added Ubuntu 26.04 support, removed Ubuntu 20.04, added macOS 26 support, and moved Windows CI to Visual Studio 2026 / Windows Server 2025 (thanks @Dimi1010 and @tigercosmos for CI work along the way!)
33+
- Large-scale internal refactoring of the device layer (`PcapLiveDevice`, `DpdkDeviceList`, file readers/writers, statistics tracking), the logging infrastructure, and the packet parsing infrastructure, improving encapsulation, thread-safety, and maintainability (thanks @Dimi1010 for the bulk of this work, with additional C++ modernization from @tigercosmos, @adityaxa and @gyl30 !)
34+
- Improved benchmarking: added a pure-parsing benchmark and extended benchmarks to support PcapNG and Snoop files (thanks @Dimi1010 !)
35+
- Test refactoring: replace packet creation macros in with C++ functions (thanks @Dimi1010 !)
36+
- Tons of security and correctness bug fixes (thanks @Dimi1010, @egecetin, @alacrity-aya, @gyl30, @SAY-5, @ZX41R, @danasana, @bratbiswas, @BohdanBuinich, @BraedonKlock, @KangLin, @sorooshm78, @turtleman123 !)
3137

32-
Breaking changes
33-
----------------
38+
## Breaking changes
3439

35-
- `Logger::LogLevel` has been deprecated and moved to `LogLevel`. `LogLevel` is now an `enum class`, so arithmetic operations on it will fail to compile
36-
- The `Logger` copy constructor and copy assignment operator are marked as deleted
37-
- The return type of `Packet::getRawPacketReadOnly()` has been changed from `RawPacket*` to `RawPacket const*`
38-
- SSLv2 support has been removed (it was non-functional in previous versions) (thanks to @droe!)
40+
- The minimum required C++ standard has been raised to C++14
41+
- `IPcapDevice` has been removed; its logic now lives in `PcapLiveDevice`
42+
- libpcap/WinPcap/Npcap is now an optional dependency — building without it disables `Pcap++` capture features, though `Common++`/`Packet++` (including pcap file I/O) remain fully usable
43+
- Various internal APIs around device lists and statistics tracking were reworked as part of the refactoring above; this may affect code relying on undocumented internals
3944

40-
Deprecation list
41-
----------------
45+
## Deprecation list
4246

43-
- `PcapLiveDevice::getAddresses()`, which was previously deprecated, has now been removed
44-
- 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`
45-
- The following methods are now deprecated and will be removed in future versions:
46-
- `Logger::Error`, `Logger::Info`, and `Logger::Debug` are deprecated. Please use `LogLevel::XXX` instead
47-
- `PcapLiveDeviceList::getPcapLiveDeviceBy***` methods have been deprecated in favor of `PcapLiveDeviceList::getDeviceBy***`
48-
- `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
47+
- `IPv6Address::copyTo()` has been deprecated, please use `IPv6Address::copyToNewBuffer()` instead
48+
- `MacAddress::copyTo()` has been deprecated, please use `MacAddress::copyToNewBuffer()` instead
49+
- `Asn1IntegerRecord::getValue()` has been deprecated, please use `Asn1IntegerRecord::getIntValue()` instead
50+
- `RawPacket::getObjectType()` has been deprecated due to unclear semantics
51+
- `RawPacket::setRawData()` has been deprecated, please use the overload that takes `takeOwnership` parameter for explicit control
52+
- `RawPacket::initWithRawData()` has been deprecated, please use `RawPacket::setRawData()` with `takeOwnership=false` instead
53+
- `SSLExtension::SSLExtension()` has been deprecated, please use the constructor with bounded span instead
54+
- Several `TcpOptionBuilder` constructors have been deprecated, please use the new constructors with `TcpOptionEnumType` instead
55+
- `TcpLayer::getTcpOption(TcpOptionType option)` has been deprecated, please use the overload `TcpLayer::getTcpOption(TcpOptionEnumType option)` instead
56+
- `TcpLayer::removeTcpOption(TcpOptionType optionType)` has been deprecated, please use the overload `TcpLayer::removeTcpOption(TcpOptionEnumType optionType)` instead
57+
- `MBufRawPacket::getObjectType()` has been deprecated due to unclear semantics
58+
- `IFileReaderDevice::getReader()` has been deprecated, please use `IFileReaderDevice::tryCreateReader()` instead
59+
- `PcapFileReaderDevice::isNanoSecondPrecisionSupported()` has been deprecated, nanosecond precision is now natively supported by the internal parser and always returns true
60+
- `PcapFileWriterDevice::isNanoSecondPrecisionSupported()` has been deprecated, nanosecond precision is now natively supported by the internal parser and always returns true
61+
- `BpfFilterWrapper::matchPacketWithFilter()` has been deprecated, please use `BpfFilterWrapper::matches()` instead
62+
- `GeneralFilter::matchPacketWithFilter()` has been deprecated, please use `GeneralFilter::matches()` instead
63+
- `PcapLiveDevice::matchPacketWithFilter()` has been deprecated, please use `PcapLiveDevice::matches()` instead
64+
- `PcapLiveDevice::sendPacket(Packet* packet, bool checkMtu = true)` has been deprecated, please use `PcapLiveDevice::sendPacket(Packet const& packet, bool checkMtu)` instead
65+
- `PcapRemoteDeviceList::getRemoteDeviceByIP()` has been deprecated, please use `PcapRemoteDeviceList::getDeviceByIP()` instead
66+
- `PfRingDeviceList::getPfRingDeviceByName()` has been deprecated, please use `PfRingDeviceList::getDeviceByIP()` instead
4967

50-
Collaborators
51-
-------------
68+
## Collaborators
5269

53-
- @Dimi1010
54-
- @tigercosmos
55-
- @egecetin
56-
- @clementperon
57-
- @seladb
70+
- @Dimi1010
71+
- @tigercosmos
72+
- @egecetin
73+
- @clementperon
74+
- @seladb
5875

59-
Contributors
60-
------------
76+
## Contributors
6177

62-
- @ol-imorozko
63-
- @rndx21033
64-
- @nadongjun
65-
- @lumiZGorlic
66-
- @1ndahous3
67-
- @s-genereux
68-
- @prudens
69-
- @oss-patch
70-
- @kiwixz
71-
- @jj683
72-
- @fxlb
73-
- @enomis101
74-
- @vcomito-apexai
75-
- @Shivam7-1
76-
- @orgads
77-
- @Doekin
78-
- @Alexis-Lapierre
79-
- @droe
80-
- @fasonju
78+
- @alacrity-aya
79+
- @gyl30
80+
- @danasana
81+
- @bratbiswas
82+
- @minhnhatnoe
83+
- @adityaxa
84+
- @SuperBigYB
85+
- @turtleman123
86+
- @raissi-oussema
87+
- @yahyayozo
88+
- @sorooshm78
89+
- @KangLin
90+
- @MerinoSheep
91+
- @camelsayswhat
92+
- @SAY-5
93+
- @ZX41R
94+
- @Mfon-19
95+
- @BraedonKlock
8196

82-
**Full Changelog**: https://github.com/seladb/PcapPlusPlus/compare/v24.09...v25.05
97+
**Full Changelog**: https://github.com/seladb/PcapPlusPlus/compare/v25.05...v26.07

0 commit comments

Comments
 (0)