about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libwifi/core/core.c10
-rw-r--r--src/libwifi/core/misc/byteswap.h25
-rw-r--r--src/libwifi/parse/misc/radiotap.c8
3 files changed, 39 insertions, 4 deletions
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]) {
25 memset(buf, 0, 6); 25 memset(buf, 0, 6);
26 if (prefix != NULL) { 26 if (prefix != NULL) {
27 memcpy(buf, prefix, 3); 27 memcpy(buf, prefix, 3);
28 getrandom(buf + 3, 3, 0); 28#if __APPLE__
29 arc4random_buf(buf + 3, 3);
30#else
31 getrandom(buf + 3, 3, 0);
32#endif /* __APPLE__ */
29 } else { 33 } else {
34#if __APPLE__
35 arc4random_buf(buf, 6);
36#else
30 getrandom(buf, 6, 0); 37 getrandom(buf, 6, 0);
38#endif /* __APPLE__ */
31 } 39 }
32} 40}
33 41
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 @@
16#ifndef LIBWIFI_CORE_BYTESWAP_H 16#ifndef LIBWIFI_CORE_BYTESWAP_H
17#define LIBWIFI_CORE_BYTESWAP_H 17#define LIBWIFI_CORE_BYTESWAP_H
18 18
19#if __APPLE__
20#include <libkern/OSByteOrder.h>
21
22#define BYTESWAP16(x) OSSwapInt16(x)
23#define BYTESWAP32(x) OSSwapInt32(x)
24#define BYTESWAP64(x) OSSwapInt64(x)
25
26#define htobe16(x) OSSwapHostToBigInt16(x)
27#define htole16(x) OSSwapHostToLittleInt16(x)
28#define be16toh(x) OSSwapBigToHostInt16(x)
29#define le16toh(x) OSSwapLittleToHostInt16(x)
30
31#define htobe32(x) OSSwapHostToBigInt32(x)
32#define htole32(x) OSSwapHostToLittleInt32(x)
33#define be32toh(x) OSSwapBigToHostInt32(x)
34#define le32toh(x) OSSwapLittleToHostInt32(x)
35
36#define htobe64(x) OSSwapHostToBigInt64(x)
37#define htole64(x) OSSwapHostToLittleInt64(x)
38#define be64toh(x) OSSwapBigToHostInt64(x)
39#define le64toh(x) OSSwapLittleToHostInt64(x)
40#else
19#include <byteswap.h> 41#include <byteswap.h>
20 42
21#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ 43#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
@@ -26,6 +48,7 @@
26#define BYTESWAP16(x) (__bswap_16(x)) 48#define BYTESWAP16(x) (__bswap_16(x))
27#define BYTESWAP32(x) (__bswap_32(x)) 49#define BYTESWAP32(x) (__bswap_32(x))
28#define BYTESWAP64(x) (__bswap_32(x)) 50#define BYTESWAP64(x) (__bswap_32(x))
29#endif 51#endif /* __BYTE_ORDER__ */
52#endif /* __APPLE__ */
30 53
31#endif /* LIBWIFI_CORE_BYTESWAP_H */ 54#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 @@
17#include "../../core/radiotap/radiotap_iter.h" 17#include "../../core/radiotap/radiotap_iter.h"
18 18
19#include <errno.h> 19#include <errno.h>
20#include <endian.h>
21#include <stdint.h> 20#include <stdint.h>
22 21
22#if !(__APPLE__)
23#include <endian.h>
24#endif
25
23/** 26/**
24 * The libwifi radiotap parser uses the usual ieee80211_radiotap_iterator to parse incoming 27 * The libwifi radiotap parser uses the usual ieee80211_radiotap_iterator to parse incoming
25 * radiotap headers into a consumable libwifi_radiotap_info struct. 28 * radiotap headers into a consumable libwifi_radiotap_info struct.
26 */ 29 */
27int libwifi_parse_radiotap_info(struct libwifi_radiotap_info *info, const unsigned char *frame, size_t frame_len) { 30int libwifi_parse_radiotap_info(struct libwifi_radiotap_info *info, const unsigned char *frame,
31 size_t frame_len) {
28 memset(info, 0, sizeof(struct libwifi_radiotap_info)); 32 memset(info, 0, sizeof(struct libwifi_radiotap_info));
29 33
30 if (frame_len < sizeof(struct ieee80211_radiotap_header)) { 34 if (frame_len < sizeof(struct ieee80211_radiotap_header)) {