diff --git a/llarp/ev/ev.h b/llarp/ev/ev.h index de8aa4e89..f2873f145 100644 --- a/llarp/ev/ev.h +++ b/llarp/ev/ev.h @@ -206,10 +206,9 @@ llarp_fd_promise_wait_for_value(struct llarp_fd_promise *promise); struct llarp_tun_io { // TODO: more info? - char ifaddr[128]; -#ifdef _WIN32 - uint32_t bindaddr; -#endif + char ifaddr[128]; + // windows only + uint32_t dnsaddr; int netmask; char ifname[IFNAMSIZ + 1]; diff --git a/llarp/ev/ev_win32.cpp b/llarp/ev/ev_win32.cpp index ae4109ee8..dd97a118a 100644 --- a/llarp/ev/ev_win32.cpp +++ b/llarp/ev/ev_win32.cpp @@ -58,7 +58,7 @@ win32_tun_io::setup() llarp::LogWarn("failed to put interface up: ", ebuf); return false; } - tunif->bindaddr = t->bindaddr; + tunif->bindaddr = t->dnsaddr; if(tuntap_set_ip(tunif, t->ifaddr, t->ifaddr, t->netmask) == -1) { diff --git a/llarp/ev/ev_win32.hpp b/llarp/ev/ev_win32.hpp index 2ce43f510..92bc5891a 100644 --- a/llarp/ev/ev_win32.hpp +++ b/llarp/ev/ev_win32.hpp @@ -99,5 +99,6 @@ struct win32_tun_io tuntap_destroy(tunif); } }; - + +#endif #endif diff --git a/llarp/handlers/exit.cpp b/llarp/handlers/exit.cpp index a06db779e..52aa014b7 100644 --- a/llarp/handlers/exit.cpp +++ b/llarp/handlers/exit.cpp @@ -36,12 +36,8 @@ namespace llarp : m_Router(r) , m_Resolver(std::make_shared< dns::Proxy >( r->netloop(), r->logic(), r->netloop(), r->logic(), this)) - , m_Name(name) -#ifdef _WIN32 - , m_Tun{{0}, 0, 0, {0}, nullptr, nullptr, nullptr, -#else - , m_Tun{{0}, 0, {0}, nullptr, nullptr, nullptr, -#endif + , m_Name(name) + , m_Tun{{0}, 0, 0, {0}, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr} , m_LocalResolverAddr("127.0.0.1", 53) , m_InetToNetwork(name + "_exit_rx", r->netloop(), r->netloop()) diff --git a/llarp/handlers/tun.cpp b/llarp/handlers/tun.cpp index d74b47f67..fcc7b1680 100644 --- a/llarp/handlers/tun.cpp +++ b/llarp/handlers/tun.cpp @@ -217,10 +217,9 @@ namespace llarp resolverAddr = v.substr(0, pos); dnsport = std::atoi(v.substr(pos + 1).c_str()); } - m_LocalResolverAddr = llarp::Addr(resolverAddr, dnsport); -#ifdef _WIN32 - tunif->bindaddr = m_LocalResolverAddr.ton(); -#endif + m_LocalResolverAddr = llarp::Addr(resolverAddr, dnsport); + // this field is ignored on all other platforms + tunif->dnsaddr = m_LocalResolverAddr.ton(); llarp::LogInfo(Name(), " binding DNS server to ", m_LocalResolverAddr); } if(k == "upstream-dns")