From ff81bfed31f1b64be096b46736aed238f323ea08 Mon Sep 17 00:00:00 2001 From: DcruBro Date: Fri, 14 Nov 2025 20:29:25 +0100 Subject: [PATCH] Temporary /24 netmask for macOS --- include/columnlynx/common/net/virtual_interface.hpp | 6 ++++++ src/common/virtual_interface.cpp | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/include/columnlynx/common/net/virtual_interface.hpp b/include/columnlynx/common/net/virtual_interface.hpp index 8bd74ed..321b742 100644 --- a/include/columnlynx/common/net/virtual_interface.hpp +++ b/include/columnlynx/common/net/virtual_interface.hpp @@ -60,6 +60,12 @@ namespace ColumnLynx::Net { return std::string(buf); } + static inline uint32_t prefixLengthToNetmask(uint8_t prefixLen) { + if (prefixLen == 0) return 0; + uint32_t mask = (0xFFFFFFFF << (32 - prefixLen)) & 0xFFFFFFFF; + return htonl(mask); // convert to network byte order + } + private: bool mApplyLinuxIP(uint32_t clientIP, uint32_t serverIP, uint8_t prefixLen, uint16_t mtu); bool mApplyMacOSIP(uint32_t clientIP, uint32_t serverIP, uint8_t prefixLen, uint16_t mtu); diff --git a/src/common/virtual_interface.cpp b/src/common/virtual_interface.cpp index 953bd27..78bec31 100644 --- a/src/common/virtual_interface.cpp +++ b/src/common/virtual_interface.cpp @@ -191,6 +191,14 @@ namespace ColumnLynx::Net { "ifconfig utun0 %s %s mtu %d up", ipStr.c_str(), peerStr.c_str(), mtu); system(cmd); + + // Reset cmd buffer + cmd[0] = '\0'; + + // Set netmask (/24 CIDR temporarily with raw command, improve later) + snprintf(cmd, sizeof(cmd), + "ifconfig utun0 netmask 255.255.255.0"); + system(cmd); return true; }