diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index a6abb7b..3742d39 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -63,11 +63,19 @@ public: std::string managementIp, managementGateway, mode, dataIp; unsigned int dataMtu = 1500; - TerminalNetworkSettings() = default; + TerminalNetworkSettings() { this->reset(); } TerminalNetworkSettings(const TerminalNetworkSettings& src) = default; ~TerminalNetworkSettings() = default; TerminalNetworkSettings& operator= (const TerminalNetworkSettings& src) = default; + + void reset() { + managementIp = "0.0.0.0/0"; + managementGateway = ""; + mode = "l2"; + dataIp = "0.0.0.0/0"; + dataMtu = 1500; + } }; class TerminalFirmwareVersion { @@ -157,11 +165,11 @@ private: TerminalNetworkSettings s; std::string tmp; std::lock_guard lock(this->cpApiMutex); - CP_GetNetwork(sid, "addr", &s.managementIp); - CP_GetNetwork(sid, "mask", &tmp); - s.managementIp += "/"; + CP_GetNetwork(sid, "addr", &tmp); + s.managementIp = tmp + "/"; + tmp.clear(); CP_GetNetwork(sid, "mask", &tmp); s.managementIp += std::to_string(calculateSubnetMask(tmp)); - CP_GetNetwork(sid, "gateway", &s.managementGateway); + tmp.clear(); CP_GetNetwork(sid, "gateway", &s.managementGateway); s.managementGateway = tmp; tmp.clear(); CP_GetNetwork(sid, "mode", &tmp); if (tmp == "tun") { s.mode = "l3"; @@ -431,6 +439,7 @@ public: if (readback) { std::string tmp; + s.reset(); CP_GetNetwork(sid, "addr", &s.managementIp); CP_GetNetwork(sid, "mask", &tmp); s.managementIp += "/";