From 7bc3d94895c4b1486163314bc81e2c87e1dae795 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Fri, 30 Nov 2018 09:14:30 -0500 Subject: [PATCH] try fixing rdns for local interace's address --- include/llarp/handlers/tun.hpp | 5 ++++- include/llarp/service/context.hpp | 5 ----- llarp/context.cpp | 8 -------- llarp/handlers/tun.cpp | 17 ++++++++++++----- llarp/service/context.cpp | 22 +--------------------- 5 files changed, 17 insertions(+), 40 deletions(-) diff --git a/include/llarp/handlers/tun.hpp b/include/llarp/handlers/tun.hpp index 83a3cd815..a62450e89 100644 --- a/include/llarp/handlers/tun.hpp +++ b/include/llarp/handlers/tun.hpp @@ -34,11 +34,14 @@ namespace llarp TickTun(llarp_time_t now); bool - MapAddress(const service::Address& remote, huint32_t ip); + MapAddress(const service::Address& remote, huint32_t ip, bool SNode); bool Start(); + bool + IsSNode() const; + /// set up tun interface, blocking bool SetupTun(); diff --git a/include/llarp/service/context.hpp b/include/llarp/service/context.hpp index 40cde905d..58704837c 100644 --- a/include/llarp/service/context.hpp +++ b/include/llarp/service/context.hpp @@ -59,11 +59,6 @@ namespace llarp bool Prefetch(const llarp::service::Address &addr); - /// punch a hole open for DNS to add mappings - /// ip is in network order - bool - MapAddress(const llarp::service::Address &addr, huint32_t ip); - bool MapAddressAll(const llarp::service::Address &addr, llarp::Addr &localPrivateIpAddr); diff --git a/llarp/context.cpp b/llarp/context.cpp index c9db0b0ad..c3bc09240 100644 --- a/llarp/context.cpp +++ b/llarp/context.cpp @@ -455,14 +455,6 @@ extern "C" // llarp_dht_lookup_router(ptr->ctx->router->dht, job); } - bool - main_router_mapAddress(struct llarp_main *ptr, - const llarp::service::Address &addr, uint32_t ip) - { - auto &endpoint = ptr->ctx->router->hiddenServiceContext; - return endpoint.MapAddress(addr, llarp::huint32_t{ip}); - } - bool main_router_prefetch(struct llarp_main *ptr, const llarp::service::Address &addr) diff --git a/llarp/handlers/tun.cpp b/llarp/handlers/tun.cpp index b5a089c73..71217d10d 100644 --- a/llarp/handlers/tun.cpp +++ b/llarp/handlers/tun.cpp @@ -111,7 +111,7 @@ namespace llarp llarp::LogError("cannot map to invalid ip ", ip_str); return false; } - return MapAddress(addr, huint32_t{ntohl(ip.s_addr)}); + return MapAddress(addr, huint32_t{ntohl(ip.s_addr)}, false); } if(k == "ifname") { @@ -180,7 +180,7 @@ namespace llarp } bool - TunEndpoint::MapAddress(const service::Address &addr, huint32_t ip) + TunEndpoint::MapAddress(const service::Address &addr, huint32_t ip, bool SNode) { auto itr = m_IPToAddr.find(ip); if(itr != m_IPToAddr.end()) @@ -192,8 +192,9 @@ namespace llarp } llarp::LogInfo(Name() + " map ", addr.ToString(), " to ", ip); - m_IPToAddr.insert(std::make_pair(ip, addr.data())); - m_AddrToIP.insert(std::make_pair(addr.data(), ip)); + m_IPToAddr[ip] = addr.data(); + m_AddrToIP[addr.data()] = ip; + m_SNodes[addr.data()] = SNode; MarkIPActiveForever(ip); return true; } @@ -241,6 +242,12 @@ namespace llarp #endif } + bool TunEndpoint::IsSNode() const + { + // TODO : implement me + return false; + } + bool TunEndpoint::SetupTun() { @@ -304,7 +311,7 @@ namespace llarp llarp::LogInfo(Name(), " set ", tunif.ifname, " to have address ", lAddr); llarp::LogInfo(Name(), " allocated up to ", m_MaxIP); - MapAddress(m_Identity.pub.Addr(), m_OurIP); + MapAddress(m_Identity.pub.Addr(), m_OurIP, IsSNode()); return true; } diff --git a/llarp/service/context.cpp b/llarp/service/context.cpp index 5512b3938..61406e144 100644 --- a/llarp/service/context.cpp +++ b/llarp/service/context.cpp @@ -142,26 +142,6 @@ namespace llarp 10000); } - bool - Context::MapAddress(const llarp::service::Address &addr, huint32_t ip) - { - if(!m_Endpoints.size()) - { - llarp::LogError("No endpoints found"); - return false; - } - auto firstEndpoint = m_Endpoints.begin(); - auto *uniqueEndpoint = &firstEndpoint->second; - llarp::service::Endpoint *endpointer = uniqueEndpoint->get(); - llarp::handlers::TunEndpoint *tunEndpoint = - static_cast< llarp::handlers::TunEndpoint * >(endpointer); - if(!tunEndpoint) - { - llarp::LogError("No tunnel endpoint found"); - return false; - } - return tunEndpoint->MapAddress(addr, ip); - } bool MapAddressAllIter(struct Context::endpoint_iter *endpointCfg) @@ -176,7 +156,7 @@ namespace llarp return true; // still continue } return tunEndpoint->MapAddress(context->serviceAddr, - context->localPrivateIpAddr.xtohl()); + context->localPrivateIpAddr.xtohl(), false); } bool