Skip to content

Commit e227b75

Browse files
authored
Deprecate match filter with packet (#1986)
* Deprecated matchPacketWithFilter in favor of the shorter `GenericFilter::matches`. * Updated call sites to use matches instead of matchPacketWithFilter. * Updated tests to use matches syntax. * Fixed comment.
1 parent 47cd680 commit e227b75

File tree

8 files changed

+40
-26
lines changed

8 files changed

+40
-26
lines changed

Examples/IPDefragUtil/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ void processPackets(pcpp::IFileReaderDevice* reader, pcpp::IFileWriterDevice* wr
125125
if (filterByBpf)
126126
{
127127
// check if packet matches the BPF filter supplied by the user
128-
if (pcpp::IPcapDevice::matchPacketWithFilter(filter, &rawPacket))
128+
if (filter.matches(rawPacket))
129129
{
130130
stats.ipPacketsMatchBpfFilter++;
131131
}

Examples/IPFragUtil/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ void processPackets(pcpp::IFileReaderDevice* reader, pcpp::IFileWriterDevice* wr
258258
if (filterByBpf)
259259
{
260260
// check if packet matches the BPF filter supplied by the user
261-
if (pcpp::IPcapDevice::matchPacketWithFilter(filter, &rawPacket))
261+
if (filter.matches(rawPacket))
262262
{
263263
stats.ipPacketsMatchBpfFilter++;
264264
}

Examples/PcapSplitter/SimpleSplitters.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class BpfCriteriaSplitter : public Splitter
131131
*/
132132
int getFileNumber(pcpp::Packet& packet, std::vector<int>& filesToClose)
133133
{
134-
if (pcpp::IPcapDevice::matchPacketWithFilter(filter, packet.getRawPacket()))
134+
if (packet.getRawPacket() != nullptr && filter.matches(*packet.getRawPacket()))
135135
return 0;
136136
return 1;
137137
}

Pcap++/header/PcapDevice.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22

33
#include "Device.h"
4+
#include "DeprecationUtils.h"
45

56
// forward declaration for the pcap descriptor defined in pcap.h
67
struct pcap;
@@ -159,6 +160,8 @@ namespace pcpp
159160
/// @param[in] filter A filter class to test against
160161
/// @param[in] rawPacket A pointer to the raw packet to match the filter with
161162
/// @return True if raw packet matches the filter or false otherwise
163+
/// @deprecated This method is deprecated, use GeneralFilter::matches(...) method directly.
164+
PCPP_DEPRECATED("Prefer GeneralFilter::matches(...) method directly.")
162165
static bool matchPacketWithFilter(GeneralFilter& filter, RawPacket* rawPacket);
163166

164167
// implement abstract methods

Pcap++/header/PcapFilter.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ namespace pcpp
109109
/// @param[in] rawPacket A pointer to a raw packet which the filter will be matched against
110110
/// @return True if the filter matches (or if it's empty). False if the packet doesn't match or if the filter
111111
/// could not be compiled
112+
/// @deprecated This method is deprecated, use matches(...) overload instead.
113+
PCPP_DEPRECATED("Prefer matches(...) overload.")
112114
bool matchPacketWithFilter(const RawPacket* rawPacket) const;
113115

114116
/// Match a packet data with the filter stored in this object. If the filter is empty the method returns "true".
@@ -120,6 +122,8 @@ namespace pcpp
120122
/// @param[in] linkType The packet link type
121123
/// @return True if the filter matches (or if it's empty). False if the packet doesn't match or if the filter
122124
/// could not be compiled
125+
/// @deprecated This method is deprecated, use matches(...) overload instead.
126+
PCPP_DEPRECATED("Prefer matches(...) overload.")
123127
bool matchPacketWithFilter(const uint8_t* packetData, uint32_t packetDataLength, timespec packetTimestamp,
124128
uint16_t linkType) const;
125129

@@ -170,6 +174,8 @@ namespace pcpp
170174
/// Match a raw packet with a given BPF filter.
171175
/// @param[in] rawPacket A pointer to the raw packet to match the BPF filter with
172176
/// @return True if a raw packet matches the BPF filter or false otherwise
177+
/// @deprecated This method is deprecated, use matches(...) overload instead.
178+
PCPP_DEPRECATED("Prefer matches(...) overload.")
173179
bool matchPacketWithFilter(RawPacket* rawPacket) const;
174180

175181
/// @brief Match a raw packet against the filter.

Pcap++/src/PcapDevice.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,13 @@ namespace pcpp
152152

153153
bool IPcapDevice::matchPacketWithFilter(GeneralFilter& filter, RawPacket* rawPacket)
154154
{
155-
return filter.matchPacketWithFilter(rawPacket);
155+
if (rawPacket == nullptr)
156+
{
157+
PCPP_LOG_ERROR("Raw packet pointer is null");
158+
return false;
159+
}
160+
161+
return filter.matches(*rawPacket);
156162
}
157163

158164
std::string IPcapDevice::getPcapLibVersionInfo()

Pcap++/src/PcapFileDevice.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -581,8 +581,7 @@ namespace pcpp
581581
return false;
582582
}
583583

584-
while (!m_BpfWrapper.matchPacketWithFilter(pktData, pktHeader.captured_length, pktHeader.timestamp,
585-
pktHeader.data_link))
584+
while (!m_BpfWrapper.matches(pktData, pktHeader.captured_length, pktHeader.timestamp, pktHeader.data_link))
586585
{
587586
if (!light_get_next_packet(toLightPcapNgT(m_LightPcapNg), &pktHeader, &pktData))
588587
{
@@ -722,7 +721,7 @@ namespace pcpp
722721
return false;
723722
}
724723

725-
if (!m_BpfWrapper.matchPacketWithFilter(&packet))
724+
if (!m_BpfWrapper.matches(packet))
726725
{
727726
return false;
728727
}

Tests/Pcap++Test/Tests/FilterTests.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,12 @@ PTF_TEST_CASE(TestPcapFilters_General_BPFStr)
225225

226226
int validCounter = 0;
227227

228-
for (pcpp::RawPacketVector::VectorIterator iter = rawPacketVec.begin(); iter != rawPacketVec.end(); iter++)
228+
for (auto* rawPacketPtr : rawPacketVec)
229229
{
230-
if (bpfStringFilter.matchPacketWithFilter(*iter))
230+
if (bpfStringFilter.matches(*rawPacketPtr))
231231
{
232232
++validCounter;
233-
pcpp::Packet packet(*iter);
233+
pcpp::Packet packet(rawPacketPtr);
234234
pcpp::EthLayer* ethLayer = packet.getLayerOfType<pcpp::EthLayer>();
235235
PTF_ASSERT_EQUAL(ethLayer->getDestMac(), macAddr);
236236
}
@@ -250,13 +250,13 @@ PTF_TEST_CASE(TestPcapFilters_MatchStatic)
250250
fileReaderDev.close();
251251

252252
// Test empty BPFstring (the "ALL" filter) in combination with a "-" (example wrong filter)
253-
for (pcpp::RawPacketVector::VectorIterator iter = rawPacketVec.begin(); iter != rawPacketVec.end(); iter++)
253+
for (auto* rawPacketPtr : rawPacketVec)
254254
{
255255
pcpp::BPFStringFilter emptyFilter("");
256-
PTF_ASSERT_TRUE(emptyFilter.matchPacketWithFilter(*iter));
256+
PTF_ASSERT_TRUE(emptyFilter.matches(*rawPacketPtr));
257257
pcpp::BPFStringFilter wrongFilter("-");
258258
pcpp::Logger::getInstance().suppressLogs();
259-
PTF_ASSERT_FALSE(wrongFilter.matchPacketWithFilter(*iter));
259+
PTF_ASSERT_FALSE(wrongFilter.matches(*rawPacketPtr));
260260
pcpp::Logger::getInstance().enableLogs();
261261
}
262262

@@ -815,7 +815,7 @@ PTF_TEST_CASE(TestPcapFiltersOffline)
815815

816816
PTF_TEST_CASE(TestPcapFilters_LinkLayer)
817817
{
818-
// check if matchPacketWithFilter work properly for packets with different LinkLayerType
818+
// check if GeneralFilter::matches(...) work properly for packets with different LinkLayerType
819819

820820
// pcpp::LINKTYPE_DLT_RAW1 layer
821821
pcpp::PcapFileReaderDevice fileReaderDev1(RAW_IP_PCAP_PATH);
@@ -825,16 +825,16 @@ PTF_TEST_CASE(TestPcapFilters_LinkLayer)
825825
fileReaderDev1.close();
826826

827827
int validCounter = 0;
828-
for (pcpp::RawPacketVector::VectorIterator iter = rawPacketVec.begin(); iter != rawPacketVec.end(); iter++)
828+
for (auto* rawPacketPtr : rawPacketVec)
829829
{
830-
pcpp::Packet packet(*iter);
830+
pcpp::Packet packet(rawPacketPtr);
831831
if (pcpp::IPv4Layer* ip4layer = packet.getLayerOfType<pcpp::IPv4Layer>())
832832
{
833833
pcpp::BPFStringFilter bpfStringFilter(
834834
"host " + ip4layer->getDstIPAddress().toString()); // checking against real filter, not the "" filter
835-
if (bpfStringFilter.matchPacketWithFilter(*iter))
835+
if (bpfStringFilter.matches(*rawPacketPtr))
836836
{
837-
if ((*iter)->getLinkLayerType() == pcpp::LINKTYPE_DLT_RAW1)
837+
if (rawPacketPtr->getLinkLayerType() == pcpp::LINKTYPE_DLT_RAW1)
838838
{
839839
++validCounter;
840840
}
@@ -851,16 +851,16 @@ PTF_TEST_CASE(TestPcapFilters_LinkLayer)
851851
fileReaderDev2.close();
852852

853853
validCounter = 0;
854-
for (pcpp::RawPacketVector::VectorIterator iter = rawPacketVec.begin(); iter != rawPacketVec.end(); iter++)
854+
for (auto* rawPacketPtr : rawPacketVec)
855855
{
856-
pcpp::Packet packet(*iter);
856+
pcpp::Packet packet(rawPacketPtr);
857857
if (pcpp::IPv4Layer* ip4layer = packet.getLayerOfType<pcpp::IPv4Layer>())
858858
{
859859
pcpp::BPFStringFilter bpfStringFilter(
860860
"host " + ip4layer->getDstIPAddress().toString()); // checking against real filter, not the "" filter
861-
if (bpfStringFilter.matchPacketWithFilter(*iter))
861+
if (bpfStringFilter.matches(*rawPacketPtr))
862862
{
863-
if ((*iter)->getLinkLayerType() == pcpp::LINKTYPE_LINUX_SLL)
863+
if (rawPacketPtr->getLinkLayerType() == pcpp::LINKTYPE_LINUX_SLL)
864864
{
865865
++validCounter;
866866
}
@@ -877,16 +877,16 @@ PTF_TEST_CASE(TestPcapFilters_LinkLayer)
877877
fileReaderDev3.close();
878878

879879
validCounter = 0;
880-
for (pcpp::RawPacketVector::VectorIterator iter = rawPacketVec.begin(); iter != rawPacketVec.end(); iter++)
880+
for (auto* rawPacketPtr : rawPacketVec)
881881
{
882-
pcpp::Packet packet(*iter);
882+
pcpp::Packet packet(rawPacketPtr);
883883
if (pcpp::IPv4Layer* ip4layer = packet.getLayerOfType<pcpp::IPv4Layer>())
884884
{
885885
pcpp::BPFStringFilter bpfStringFilter(
886886
"host " + ip4layer->getDstIPAddress().toString()); // checking against real filter, not the "" filter
887-
if (bpfStringFilter.matchPacketWithFilter(*iter))
887+
if (bpfStringFilter.matches(*rawPacketPtr))
888888
{
889-
if ((*iter)->getLinkLayerType() == pcpp::LINKTYPE_ETHERNET)
889+
if (rawPacketPtr->getLinkLayerType() == pcpp::LINKTYPE_ETHERNET)
890890
{
891891
++validCounter;
892892
}

0 commit comments

Comments
 (0)