diff options
author | WaluigiWare64 <68647953+WaluigiWare64@users.noreply.github.com> | 2020-12-19 17:43:53 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-19 17:43:53 +0000 |
commit | df190b04000a8a3c5052de3fd695f6c26892f353 (patch) | |
tree | 85c53cda9b5e6c73dcfb82f97272e509f023788b /src/frontend/qt_sdl/LAN_PCap.cpp | |
parent | d6cade25f4ac6b2ebac9d4830ab7b10294bc4c89 (diff) | |
parent | 659dc58d4d8290d8ef1930d9f21007c0ec4c3739 (diff) |
Merge branch 'master' into feature/zip-support
Diffstat (limited to 'src/frontend/qt_sdl/LAN_PCap.cpp')
-rw-r--r-- | src/frontend/qt_sdl/LAN_PCap.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/frontend/qt_sdl/LAN_PCap.cpp b/src/frontend/qt_sdl/LAN_PCap.cpp index ce278bc..3381e80 100644 --- a/src/frontend/qt_sdl/LAN_PCap.cpp +++ b/src/frontend/qt_sdl/LAN_PCap.cpp @@ -33,7 +33,11 @@ #include <sys/types.h> #include <ifaddrs.h> #include <netinet/in.h> - #include <linux/if_packet.h> + #ifdef __linux__ + #include <linux/if_packet.h> + #else + #include <net/if_dl.h> + #endif #endif @@ -66,6 +70,9 @@ const char* PCapLibNames[] = #ifdef __WIN32__ // TODO: name for npcap in non-WinPCap mode "wpcap.dll", +#elif defined(__APPLE__) + "libpcap.A.dylib", + "libpcap.dylib", #else // Linux lib names "libpcap.so.1", @@ -276,6 +283,7 @@ bool Init(bool open_adapter) struct sockaddr_in* sa = (sockaddr_in*)curaddr->ifa_addr; memcpy(adata->IP_v4, &sa->sin_addr, 4); } + #ifdef __linux__ else if (af == AF_PACKET) { struct sockaddr_ll* sa = (sockaddr_ll*)curaddr->ifa_addr; @@ -284,7 +292,16 @@ bool Init(bool open_adapter) else memcpy(adata->MAC, sa->sll_addr, 6); } - + #else + else if (af == AF_LINK) + { + struct sockaddr_dl* sa = (sockaddr_dl*)curaddr->ifa_addr; + if (sa->sdl_alen != 6) + printf("weird MAC length %d for %s\n", sa->sdl_alen, curaddr->ifa_name); + else + memcpy(adata->MAC, LLADDR(sa), 6); + } + #endif curaddr = curaddr->ifa_next; } } |