First working alpha, version a0.4. #6
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user