getRange() and getFirstTun() refactor start

pull/16/head
Ryan Tharp 6 years ago
parent 79fb82a3c8
commit aaeb035033

@ -4,6 +4,7 @@
#include <llarp/service/config.hpp>
#include <llarp/service/endpoint.hpp>
#include <unordered_map>
#include <llarp/handlers/tun.hpp>
namespace llarp
{
@ -18,6 +19,14 @@ namespace llarp
void
Tick();
/// DRY refactor
llarp::handlers::TunEndpoint *
getFirstTun();
/// punch a hole to get ip range from first tun endpoint
llarp_tun_io *
getRange();
/// punch a hole open for DNS to add mappings
bool
MapAddress(const llarp::service::Address &addr, uint32_t ip);

@ -29,7 +29,34 @@ namespace llarp
++itr;
}
}
llarp::handlers::TunEndpoint *
Context::getFirstTun()
{
if (!m_Endpoints.size())
{
llarp::LogError("No endpoints found");
return nullptr;
}
auto firstEndpoint = m_Endpoints.begin();
auto *uniqueEndpoint = &firstEndpoint->second;
llarp::service::Endpoint *endpointer = uniqueEndpoint->get();
llarp::handlers::TunEndpoint *tunEndpoint = dynamic_cast<llarp::handlers::TunEndpoint *>(endpointer);
return tunEndpoint;
}
llarp_tun_io *
Context::getRange()
{
llarp::handlers::TunEndpoint *tunEndpoint = this->getFirstTun();
if (!tunEndpoint)
{
llarp::LogError("No tunnel endpoint found");
return nullptr;
}
return &tunEndpoint->tunif;
}
bool
Context::MapAddress(const llarp::service::Address &addr, uint32_t ip)
{

Loading…
Cancel
Save