From 259c0d4f8893040e80be90f2ee201cae3942cd65 Mon Sep 17 00:00:00 2001 From: Doekin Date: Fri, 4 Oct 2024 23:03:13 +0800 Subject: [PATCH 01/10] Add test to detect missing iphlpapi linkage on Windows --- packages/p/pcapplusplus/xmake.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 310acfaa2fa..4d977014ecd 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -35,11 +35,19 @@ package("pcapplusplus") on_test(function (package) assert(package:check_cxxsnippets({test = [[ + #include #include "pcapplusplus/IPv4Layer.h" #include "pcapplusplus/Packet.h" #include "pcapplusplus/PcapFileDevice.h" - void test() { + #include "pcapplusplus/PcapLiveDeviceList.h" + + void testPcapFileReaderDevice() { pcpp::PcapFileReaderDevice reader("1_packet.pcap"); } + + void testPcapLiveDeviceList() { + std::vector devList = + pcpp::PcapLiveDeviceList::getInstance().getPcapLiveDevicesList(); + } ]]}, {configs = {languages = "c++17"}})) end) From 76c8177212ab37620b6a1d4c01b7ebc3b5a20bc3 Mon Sep 17 00:00:00 2001 From: Doekin Date: Fri, 4 Oct 2024 23:03:44 +0800 Subject: [PATCH 02/10] Add the required iphlpapi linkage for Windows --- packages/p/pcapplusplus/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 4d977014ecd..41a3436f886 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -14,7 +14,7 @@ package("pcapplusplus") add_links("Pcap++", "Packet++", "Common++") if is_plat("windows") then - add_syslinks("ws2_32") + add_syslinks("ws2_32", "iphlpapi") end add_deps("cmake") From 1f1db3d85315255f408e6fd4b370bd0eef7b1aa8 Mon Sep 17 00:00:00 2001 From: Doekin Date: Fri, 4 Oct 2024 23:05:14 +0800 Subject: [PATCH 03/10] Add support for Mingw --- packages/p/pcapplusplus/xmake.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 41a3436f886..7642beae20a 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -13,18 +13,18 @@ package("pcapplusplus") add_links("Pcap++", "Packet++", "Common++") - if is_plat("windows") then + if is_plat("windows") or is_plat("mingw") then add_syslinks("ws2_32", "iphlpapi") end add_deps("cmake") - if is_plat("windows") then + if is_plat("windows") or is_plat("mingw") then add_deps("npcap_sdk") elseif is_plat("linux") then add_deps("libpcap") end - on_install("windows", "linux", function (package) + on_install("windows", "mingw", "linux", function (package) local configs = { "-DPCAPPP_BUILD_EXAMPLES=OFF", "-DPCAPPP_BUILD_TESTS=OFF", From 708eeb9ab962cfa5088ec206a0585c6cd273f4f4 Mon Sep 17 00:00:00 2001 From: Doekin Date: Sat, 5 Oct 2024 01:06:06 +0800 Subject: [PATCH 04/10] Simplify platform check --- packages/p/pcapplusplus/xmake.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 7642beae20a..2ab0b461660 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -13,12 +13,12 @@ package("pcapplusplus") add_links("Pcap++", "Packet++", "Common++") - if is_plat("windows") or is_plat("mingw") then + if is_plat("windows", "mingw") then add_syslinks("ws2_32", "iphlpapi") end add_deps("cmake") - if is_plat("windows") or is_plat("mingw") then + if is_plat("windows", "mingw") then add_deps("npcap_sdk") elseif is_plat("linux") then add_deps("libpcap") From de6601284c5c366f884011c3f24a841b7d712c7a Mon Sep 17 00:00:00 2001 From: Doekin Date: Sun, 6 Oct 2024 12:51:50 +0800 Subject: [PATCH 05/10] Add MacOS, Android and BSD --- packages/p/pcapplusplus/xmake.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 2ab0b461660..b06b6dbc274 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -20,11 +20,11 @@ package("pcapplusplus") add_deps("cmake") if is_plat("windows", "mingw") then add_deps("npcap_sdk") - elseif is_plat("linux") then + elseif is_plat("linux", "macosx", "android", "bsd") then add_deps("libpcap") end - on_install("windows", "mingw", "linux", function (package) + on_install("windows", "mingw", "linux", "macosx", "android", "bsd", function (package) local configs = { "-DPCAPPP_BUILD_EXAMPLES=OFF", "-DPCAPPP_BUILD_TESTS=OFF", From fce753163288ea7096d62091e2c981bcb4459804 Mon Sep 17 00:00:00 2001 From: Doekin Date: Sun, 6 Oct 2024 13:09:54 +0800 Subject: [PATCH 06/10] Add frameworks for MacOS --- packages/p/pcapplusplus/xmake.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index b06b6dbc274..0b207dbf037 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -15,6 +15,8 @@ package("pcapplusplus") if is_plat("windows", "mingw") then add_syslinks("ws2_32", "iphlpapi") + elseif is_plat("macosx") then + add_frameworks("CoreFoundation", "Foundation", "IOKit") end add_deps("cmake") From d4daedc1b0bf303f9d23a0a5c1ad2833c3bb53bb Mon Sep 17 00:00:00 2001 From: Doekin Date: Sun, 6 Oct 2024 13:18:51 +0800 Subject: [PATCH 07/10] accurate MacOS framework --- packages/p/pcapplusplus/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 0b207dbf037..44ebd60c61b 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -16,7 +16,7 @@ package("pcapplusplus") if is_plat("windows", "mingw") then add_syslinks("ws2_32", "iphlpapi") elseif is_plat("macosx") then - add_frameworks("CoreFoundation", "Foundation", "IOKit") + add_frameworks("CoreFoundation", "SystemConfiguration") end add_deps("cmake") From 4ed60a6743d221cfd8cf48eb75ed724cb32d8d2f Mon Sep 17 00:00:00 2001 From: Doekin Date: Sun, 6 Oct 2024 14:30:25 +0800 Subject: [PATCH 08/10] Fix complie issue on BSD caused by VLA usage --- .../p/pcapplusplus/patches/v24.09/VLA.patch | 23 +++++++++++++++++++ packages/p/pcapplusplus/xmake.lua | 2 ++ 2 files changed, 25 insertions(+) create mode 100644 packages/p/pcapplusplus/patches/v24.09/VLA.patch diff --git a/packages/p/pcapplusplus/patches/v24.09/VLA.patch b/packages/p/pcapplusplus/patches/v24.09/VLA.patch new file mode 100644 index 00000000000..bd40c10a364 --- /dev/null +++ b/packages/p/pcapplusplus/patches/v24.09/VLA.patch @@ -0,0 +1,23 @@ +diff --git a/Pcap++/src/PcapLiveDevice.cpp b/Pcap++/src/PcapLiveDevice.cpp +index 7ac0f79e..5faa7c4d 100644 +--- a/Pcap++/src/PcapLiveDevice.cpp ++++ b/Pcap++/src/PcapLiveDevice.cpp +@@ -1011,15 +1011,15 @@ namespace pcpp + return; + } + +- uint8_t buf[len]; ++ std::vector buf(len); + +- if (sysctl(mib, 6, buf, &len, nullptr, 0) < 0) ++ if (sysctl(mib, 6, buf.data(), &len, nullptr, 0) < 0) + { + PCPP_LOG_DEBUG("Error in retrieving MAC address: sysctl 2 error"); + return; + } + +- struct if_msghdr* ifm = (struct if_msghdr*)buf; ++ struct if_msghdr* ifm = (struct if_msghdr*)buf.data(); + struct sockaddr_dl* sdl = (struct sockaddr_dl*)(ifm + 1); + uint8_t* ptr = (uint8_t*)LLADDR(sdl); + m_MacAddress = MacAddress(ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5]); diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 44ebd60c61b..69f221ed0c8 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -9,6 +9,8 @@ package("pcapplusplus") add_versions("v24.09", "0a9d80d09a906c08a1df5f5a937134355c7cb3fc8a599bf1a0f10002cf0285be") add_versions("v23.09", "f2b92d817df6138363be0d144a61716f8ecc43216f0008135da2e0e15727d35a") + add_patches("v24.09", "patches/v24.09/VLA.patch", "8c380468c78118b6d85f6b3856cd49c4d890fd326dde3400b8c47c01c885cef4") + add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true}) add_links("Pcap++", "Packet++", "Common++") From e9d78bc9b5bac31baac1f11983effdac1482f566 Mon Sep 17 00:00:00 2001 From: Doekin Date: Sun, 6 Oct 2024 14:32:47 +0800 Subject: [PATCH 09/10] Fix patch file name --- packages/p/pcapplusplus/patches/v24.09/{VLA.patch => vla.patch} | 0 packages/p/pcapplusplus/xmake.lua | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/p/pcapplusplus/patches/v24.09/{VLA.patch => vla.patch} (100%) diff --git a/packages/p/pcapplusplus/patches/v24.09/VLA.patch b/packages/p/pcapplusplus/patches/v24.09/vla.patch similarity index 100% rename from packages/p/pcapplusplus/patches/v24.09/VLA.patch rename to packages/p/pcapplusplus/patches/v24.09/vla.patch diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 69f221ed0c8..1f8dcf9f107 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -9,7 +9,7 @@ package("pcapplusplus") add_versions("v24.09", "0a9d80d09a906c08a1df5f5a937134355c7cb3fc8a599bf1a0f10002cf0285be") add_versions("v23.09", "f2b92d817df6138363be0d144a61716f8ecc43216f0008135da2e0e15727d35a") - add_patches("v24.09", "patches/v24.09/VLA.patch", "8c380468c78118b6d85f6b3856cd49c4d890fd326dde3400b8c47c01c885cef4") + add_patches("v24.09", "patches/v24.09/vla.patch", "8c380468c78118b6d85f6b3856cd49c4d890fd326dde3400b8c47c01c885cef4") add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true}) From 4000cab73a98bd95d45148ef234ad75ca478194b Mon Sep 17 00:00:00 2001 From: Doekin Date: Sun, 6 Oct 2024 15:09:13 +0800 Subject: [PATCH 10/10] Add pthread syslink for Linux and BSD platforms --- packages/p/pcapplusplus/xmake.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/p/pcapplusplus/xmake.lua b/packages/p/pcapplusplus/xmake.lua index 1f8dcf9f107..9943e76638d 100644 --- a/packages/p/pcapplusplus/xmake.lua +++ b/packages/p/pcapplusplus/xmake.lua @@ -19,6 +19,8 @@ package("pcapplusplus") add_syslinks("ws2_32", "iphlpapi") elseif is_plat("macosx") then add_frameworks("CoreFoundation", "SystemConfiguration") + elseif is_plat("linux", "bsd") then + add_syslinks("pthread") end add_deps("cmake")