From 3be534eb2b75f4c3376bf61014c7a06d719cb9e3 Mon Sep 17 00:00:00 2001 From: Marc Date: Sat, 20 Aug 2022 16:10:00 +0100 Subject: Add macOS support (#8) Add macOS build support --- src/libwifi/core/core.c | 10 +++++++++- src/libwifi/core/misc/byteswap.h | 25 ++++++++++++++++++++++++- src/libwifi/parse/misc/radiotap.c | 8 ++++++-- 3 files changed, 39 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/libwifi/core/core.c b/src/libwifi/core/core.c index 0340a82..863e58f 100644 --- a/src/libwifi/core/core.c +++ b/src/libwifi/core/core.c @@ -25,9 +25,17 @@ void libwifi_random_mac(unsigned char buf[6], unsigned char prefix[3]) { memset(buf, 0, 6); if (prefix != NULL) { memcpy(buf, prefix, 3); - getrandom(buf + 3, 3, 0); +#if __APPLE__ + arc4random_buf(buf + 3, 3); +#else + getrandom(buf + 3, 3, 0); +#endif /* __APPLE__ */ } else { +#if __APPLE__ + arc4random_buf(buf, 6); +#else getrandom(buf, 6, 0); +#endif /* __APPLE__ */ } } diff --git a/src/libwifi/core/misc/byteswap.h b/src/libwifi/core/misc/byteswap.h index cab264f..aa91a37 100644 --- a/src/libwifi/core/misc/byteswap.h +++ b/src/libwifi/core/misc/byteswap.h @@ -16,6 +16,28 @@ #ifndef LIBWIFI_CORE_BYTESWAP_H #define LIBWIFI_CORE_BYTESWAP_H +#if __APPLE__ +#include + +#define BYTESWAP16(x) OSSwapInt16(x) +#define BYTESWAP32(x) OSSwapInt32(x) +#define BYTESWAP64(x) OSSwapInt64(x) + +#define htobe16(x) OSSwapHostToBigInt16(x) +#define htole16(x) OSSwapHostToLittleInt16(x) +#define be16toh(x) OSSwapBigToHostInt16(x) +#define le16toh(x) OSSwapLittleToHostInt16(x) + +#define htobe32(x) OSSwapHostToBigInt32(x) +#define htole32(x) OSSwapHostToLittleInt32(x) +#define be32toh(x) OSSwapBigToHostInt32(x) +#define le32toh(x) OSSwapLittleToHostInt32(x) + +#define htobe64(x) OSSwapHostToBigInt64(x) +#define htole64(x) OSSwapHostToLittleInt64(x) +#define be64toh(x) OSSwapBigToHostInt64(x) +#define le64toh(x) OSSwapLittleToHostInt64(x) +#else #include #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ @@ -26,6 +48,7 @@ #define BYTESWAP16(x) (__bswap_16(x)) #define BYTESWAP32(x) (__bswap_32(x)) #define BYTESWAP64(x) (__bswap_32(x)) -#endif +#endif /* __BYTE_ORDER__ */ +#endif /* __APPLE__ */ #endif /* LIBWIFI_CORE_BYTESWAP_H */ diff --git a/src/libwifi/parse/misc/radiotap.c b/src/libwifi/parse/misc/radiotap.c index 80ddced..faf6009 100644 --- a/src/libwifi/parse/misc/radiotap.c +++ b/src/libwifi/parse/misc/radiotap.c @@ -17,14 +17,18 @@ #include "../../core/radiotap/radiotap_iter.h" #include -#include #include +#if !(__APPLE__) +#include +#endif + /** * The libwifi radiotap parser uses the usual ieee80211_radiotap_iterator to parse incoming * radiotap headers into a consumable libwifi_radiotap_info struct. */ -int libwifi_parse_radiotap_info(struct libwifi_radiotap_info *info, const unsigned char *frame, size_t frame_len) { +int libwifi_parse_radiotap_info(struct libwifi_radiotap_info *info, const unsigned char *frame, + size_t frame_len) { memset(info, 0, sizeof(struct libwifi_radiotap_info)); if (frame_len < sizeof(struct ieee80211_radiotap_header)) { -- cgit 1.4.1