aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/node_os/interface_addresses.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/node_os/interface_addresses.cpp')
-rw-r--r--src/bun.js/bindings/node_os/interface_addresses.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/bun.js/bindings/node_os/interface_addresses.cpp b/src/bun.js/bindings/node_os/interface_addresses.cpp
index 706c43340..d39f66bd5 100644
--- a/src/bun.js/bindings/node_os/interface_addresses.cpp
+++ b/src/bun.js/bindings/node_os/interface_addresses.cpp
@@ -1,3 +1,4 @@
+#include "mimalloc.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
@@ -6,6 +7,11 @@
#include <ifaddrs.h>
#include <arpa/inet.h>
+#define free mi_free
+#define malloc mi_malloc
+#define realloc mi_realloc
+#define strdup mi_strdup
+
#ifdef __linux__
#include <netpacket/packet.h>
#include <net/ethernet.h>
@@ -22,8 +28,9 @@ extern "C" uint32_t getBitCountFromIPv4Mask(uint32_t mask) {
extern "C" uint32_t getBitCountFromIPv6Mask(const in6_addr &mask) {
uint32_t bitCount = 0;
- for (uint32_t ii = 0; ii < 4; ii++) {
- bitCount += __builtin_popcount(mask.s6_addr32[ii]);
+ // uint32 version is unsupported on some platforms
+ for (size_t ii = 0; ii < 16; ii++) {
+ bitCount += __builtin_popcount(mask.s6_addr[ii]);
}
return bitCount;
@@ -37,7 +44,7 @@ extern "C" NetworkInterface *getNetworkInterfaces() {
struct ifaddrs *ifap, *ifa;
unsigned char *ptr;
- getifaddrs (&ifap);
+ getifaddrs(&ifap);
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
if (ifa->ifa_addr && ifa->ifa_addr->sa_family==AF_INET) {
struct sockaddr_in *sa = (struct sockaddr_in *) ifa->ifa_addr;