diff --git a/CMakeLists.txt b/CMakeLists.txt index 53fc39d..1344026 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.16) # If MAJOR is 0, and MINOR > 0, Version is BETA project(ColumnLynx - VERSION 0.0.3 + VERSION 0.0.4 LANGUAGES CXX ) diff --git a/src/common/utils.cpp b/src/common/utils.cpp index 7003ebf..c62b6ec 100644 --- a/src/common/utils.cpp +++ b/src/common/utils.cpp @@ -37,7 +37,7 @@ namespace ColumnLynx::Utils { } std::string getVersion() { - return "a0.3"; + return "a0.4"; } unsigned short serverPort() { diff --git a/src/common/virtual_interface.cpp b/src/common/virtual_interface.cpp index 76a0c67..953bd27 100644 --- a/src/common/virtual_interface.cpp +++ b/src/common/virtual_interface.cpp @@ -42,8 +42,11 @@ namespace ColumnLynx::Net { sc.sc_id = ctlInfo.ctl_id; sc.sc_unit = 0; // utun0 (0 = auto-assign) - if (connect(mFd, (struct sockaddr*)&sc, sizeof(sc)) < 0) + if (connect(mFd, (struct sockaddr*)&sc, sizeof(sc)) < 0) { + if (errno == EPERM) + throw std::runtime_error("connect(AF_SYS_CONTROL) failed: Insufficient permissions (try running as root)"); throw std::runtime_error("connect(AF_SYS_CONTROL) failed: " + std::string(strerror(errno))); + } // Retrieve actual utun device name struct sockaddr_storage addr;