Skip to content

Commit cb97f6e

Browse files
authored
Replaced usages of void* to hold light_pcapng_t pointer with internal::LightPcanNgHandle. (#1805)
1 parent dab1ebe commit cb97f6e

File tree

2 files changed

+41
-16
lines changed

2 files changed

+41
-16
lines changed

Pcap++/header/PcapFileDevice.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ typedef struct pcap_dumper pcap_dumper_t;
1414
/// @brief The main namespace for the PcapPlusPlus lib
1515
namespace pcpp
1616
{
17+
namespace internal
18+
{
19+
/// @struct LightPcapNgHandle
20+
/// An opaque struct representing a handle for pcapng files.
21+
struct LightPcapNgHandle;
22+
} // namespace internal
23+
1724
/// @enum FileTimestampPrecision
1825
/// An enumeration representing the precision of timestamps in a pcap file.
1926
/// The precision can be Unknown, Micro, or Nano.
@@ -226,7 +233,7 @@ namespace pcpp
226233
class PcapNgFileReaderDevice : public IFileReaderDevice
227234
{
228235
private:
229-
void* m_LightPcapNg;
236+
internal::LightPcapNgHandle* m_LightPcapNg;
230237
BpfFilterWrapper m_BpfWrapper;
231238

232239
// private copy c'tor
@@ -430,7 +437,7 @@ namespace pcpp
430437
class PcapNgFileWriterDevice : public IFileWriterDevice
431438
{
432439
private:
433-
void* m_LightPcapNg;
440+
internal::LightPcapNgHandle* m_LightPcapNg;
434441
int m_CompressionLevel;
435442
BpfFilterWrapper m_BpfWrapper;
436443

Pcap++/src/PcapFileDevice.cpp

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,24 @@
1111

1212
namespace pcpp
1313
{
14+
namespace
15+
{
16+
/// @brief Converts a light_pcapng_t* to an opaque LightPcapNgHandle*.
17+
/// @param pcapngHandle The light_pcapng_t* to convert.
18+
/// @return An pointer to the opaque handle.
19+
internal::LightPcapNgHandle* toLightPcapNgHandle(light_pcapng_t* pcapngHandle)
20+
{
21+
return reinterpret_cast<internal::LightPcapNgHandle*>(pcapngHandle);
22+
}
23+
24+
/// @brief Converts an opaque LightPcapNgHandle* to a light_pcapng_t*.
25+
/// @param pcapngHandle The LightPcapNgHandle* to convert.
26+
/// @return A pointer to the light_pcapng_t.
27+
light_pcapng_t* toLightPcapNgT(internal::LightPcapNgHandle* pcapngHandle)
28+
{
29+
return reinterpret_cast<light_pcapng_t*>(pcapngHandle);
30+
}
31+
} // namespace
1432

1533
template <typename T, size_t N> constexpr size_t ARRAY_SIZE(T (&)[N])
1634
{
@@ -373,7 +391,7 @@ namespace pcpp
373391
return true;
374392
}
375393

376-
m_LightPcapNg = light_pcapng_open_read(m_FileName.c_str(), LIGHT_FALSE);
394+
m_LightPcapNg = toLightPcapNgHandle(light_pcapng_open_read(m_FileName.c_str(), LIGHT_FALSE));
377395
if (m_LightPcapNg == nullptr)
378396
{
379397
PCPP_LOG_ERROR("Cannot open pcapng reader device for filename '" << m_FileName << "'");
@@ -400,7 +418,7 @@ namespace pcpp
400418
light_packet_header pktHeader;
401419
const uint8_t* pktData = nullptr;
402420

403-
if (!light_get_next_packet((light_pcapng_t*)m_LightPcapNg, &pktHeader, &pktData))
421+
if (!light_get_next_packet(toLightPcapNgT(m_LightPcapNg), &pktHeader, &pktData))
404422
{
405423
PCPP_LOG_DEBUG("Packet could not be read. Probably end-of-file");
406424
return false;
@@ -409,7 +427,7 @@ namespace pcpp
409427
while (!m_BpfWrapper.matchPacketWithFilter(pktData, pktHeader.captured_length, pktHeader.timestamp,
410428
pktHeader.data_link))
411429
{
412-
if (!light_get_next_packet((light_pcapng_t*)m_LightPcapNg, &pktHeader, &pktData))
430+
if (!light_get_next_packet(toLightPcapNgT(m_LightPcapNg), &pktHeader, &pktData))
413431
{
414432
PCPP_LOG_DEBUG("Packet could not be read. Probably end-of-file");
415433
return false;
@@ -462,7 +480,7 @@ namespace pcpp
462480
if (m_LightPcapNg == nullptr)
463481
return;
464482

465-
light_pcapng_close((light_pcapng_t*)m_LightPcapNg);
483+
light_pcapng_close(toLightPcapNgT(m_LightPcapNg));
466484
m_LightPcapNg = nullptr;
467485

468486
m_DeviceOpened = false;
@@ -477,7 +495,7 @@ namespace pcpp
477495
return "";
478496
}
479497

480-
light_pcapng_file_info* fileInfo = light_pcang_get_file_info((light_pcapng_t*)m_LightPcapNg);
498+
light_pcapng_file_info* fileInfo = light_pcang_get_file_info(toLightPcapNgT(m_LightPcapNg));
481499
if (fileInfo == nullptr)
482500
return "";
483501
char* res = fileInfo->os_desc;
@@ -496,7 +514,7 @@ namespace pcpp
496514
return "";
497515
}
498516

499-
light_pcapng_file_info* fileInfo = light_pcang_get_file_info((light_pcapng_t*)m_LightPcapNg);
517+
light_pcapng_file_info* fileInfo = light_pcang_get_file_info(toLightPcapNgT(m_LightPcapNg));
500518
if (fileInfo == nullptr)
501519
return "";
502520
char* res = fileInfo->hardware_desc;
@@ -515,7 +533,7 @@ namespace pcpp
515533
return "";
516534
}
517535

518-
light_pcapng_file_info* fileInfo = light_pcang_get_file_info((light_pcapng_t*)m_LightPcapNg);
536+
light_pcapng_file_info* fileInfo = light_pcang_get_file_info(toLightPcapNgT(m_LightPcapNg));
519537
if (fileInfo == nullptr)
520538
return "";
521539
char* res = fileInfo->user_app_desc;
@@ -534,7 +552,7 @@ namespace pcpp
534552
return "";
535553
}
536554

537-
light_pcapng_file_info* fileInfo = light_pcang_get_file_info((light_pcapng_t*)m_LightPcapNg);
555+
light_pcapng_file_info* fileInfo = light_pcang_get_file_info(toLightPcapNgT(m_LightPcapNg));
538556
if (fileInfo == nullptr)
539557
return "";
540558
char* res = fileInfo->file_comment;
@@ -846,7 +864,7 @@ namespace pcpp
846864
light_pcapng_file_info* info =
847865
light_create_file_info(os.c_str(), hardware.c_str(), captureApp.c_str(), fileComment.c_str());
848866

849-
m_LightPcapNg = light_pcapng_open_write(m_FileName.c_str(), info, m_CompressionLevel);
867+
m_LightPcapNg = toLightPcapNgHandle(light_pcapng_open_write(m_FileName.c_str(), info, m_CompressionLevel));
850868
if (m_LightPcapNg == nullptr)
851869
{
852870
PCPP_LOG_ERROR("Error opening file writer device for file '"
@@ -896,7 +914,7 @@ namespace pcpp
896914

897915
const uint8_t* pktData = ((RawPacket&)packet).getRawData();
898916

899-
light_write_packet((light_pcapng_t*)m_LightPcapNg, &pktHeader, pktData);
917+
light_write_packet(toLightPcapNgT(m_LightPcapNg), &pktHeader, pktData);
900918
m_NumOfPacketsWritten++;
901919
return true;
902920
}
@@ -930,7 +948,7 @@ namespace pcpp
930948

931949
light_pcapng_file_info* info = light_create_default_file_info();
932950

933-
m_LightPcapNg = light_pcapng_open_write(m_FileName.c_str(), info, m_CompressionLevel);
951+
m_LightPcapNg = toLightPcapNgHandle(light_pcapng_open_write(m_FileName.c_str(), info, m_CompressionLevel));
934952
if (m_LightPcapNg == nullptr)
935953
{
936954
PCPP_LOG_ERROR("Error opening file writer device for file '"
@@ -955,7 +973,7 @@ namespace pcpp
955973
m_NumOfPacketsNotWritten = 0;
956974
m_NumOfPacketsWritten = 0;
957975

958-
m_LightPcapNg = light_pcapng_open_append(m_FileName.c_str());
976+
m_LightPcapNg = toLightPcapNgHandle(light_pcapng_open_append(m_FileName.c_str()));
959977
if (m_LightPcapNg == nullptr)
960978
{
961979
PCPP_LOG_ERROR("Error opening file writer device in append mode for file '"
@@ -974,7 +992,7 @@ namespace pcpp
974992
if (!m_DeviceOpened || m_LightPcapNg == nullptr)
975993
return;
976994

977-
light_pcapng_flush((light_pcapng_t*)m_LightPcapNg);
995+
light_pcapng_flush(toLightPcapNgT(m_LightPcapNg));
978996
PCPP_LOG_DEBUG("File writer flushed to file '" << m_FileName << "'");
979997
}
980998

@@ -983,7 +1001,7 @@ namespace pcpp
9831001
if (m_LightPcapNg == nullptr)
9841002
return;
9851003

986-
light_pcapng_close((light_pcapng_t*)m_LightPcapNg);
1004+
light_pcapng_close(toLightPcapNgT(m_LightPcapNg));
9871005
m_LightPcapNg = nullptr;
9881006

9891007
m_DeviceOpened = false;

0 commit comments

Comments
 (0)