get first tun interface wiring

pull/16/head
Ryan Tharp 6 years ago
parent 31595d209d
commit 6590d502cd

@ -47,7 +47,8 @@ extern "C"
/// put RC into nodeDB
bool
llarp_main_putDatabase(struct llarp_main *ptr, struct llarp::RouterContact *rc);
llarp_main_putDatabase(struct llarp_main *ptr,
struct llarp::RouterContact *rc);
/// get RC from nodeDB
llarp::RouterContact *
@ -78,12 +79,16 @@ extern "C"
llarp_main_queryDHT_RC(struct llarp_main *ptr,
struct llarp_router_lookup_job *job);
/// set up DNS libs with a context
bool
llarp_main_init_dnsd(struct llarp_main *ptr, struct dnsd_context *dnsd,
uint16_t server_port, const char *upstream_host,
uint16_t upstream_port);
struct llarp_logic *logic, uint16_t server_port,
const char *upstream_host, uint16_t upstream_port);
/// set up dotLokiLookup with logic for setting timers
bool
llarp_main_init_dotLokiLookup(struct llarp_main *ptr,
struct dotLokiLookup *dll);
llarp::RouterContact *
llarp_main_getLocalRC(struct llarp_main *ptr);
@ -96,17 +101,21 @@ extern "C"
#ifdef __cplusplus
llarp::handlers::TunEndpoint *
main_router_getFirstTunEndpoint(struct llarp_main *ptr);
llarp_tun_io *
main_router_getRange(struct llarp_main *ptr);
/// map an ip to a hidden service address
bool
main_router_mapAddress(struct llarp_main *ptr, const llarp::service::Address &addr, uint32_t ip);
main_router_mapAddress(struct llarp_main *ptr,
const llarp::service::Address &addr, uint32_t ip);
/// info of possible path usage
bool
main_router_prefetch(struct llarp_main *ptr, const llarp::service::Address &addr);
main_router_prefetch(struct llarp_main *ptr,
const llarp::service::Address &addr);
}
#endif
#endif

@ -19,6 +19,10 @@ namespace llarp
void
Tick();
/// DRY refactor
llarp::service::Endpoint *
getFirstEndpoint();
/// DRY refactor
llarp::handlers::TunEndpoint *
getFirstTun();

@ -11,6 +11,7 @@
#include "router.hpp"
#include "dnsd.hpp"
#include "dns_dotlokilookup.hpp"
#if(__FreeBSD__) || (__OpenBSD__) || (__NetBSD__)
#include <pthread_np.h>
@ -337,13 +338,21 @@ extern "C"
bool
llarp_main_init_dnsd(struct llarp_main *ptr, struct dnsd_context *dnsd,
uint16_t server_port, const char *upstream_host,
uint16_t upstream_port)
struct llarp_logic *logic, uint16_t server_port,
const char *upstream_host, uint16_t upstream_port)
{
return llarp_dnsd_init(dnsd, ptr->ctx->mainloop, ptr->ctx->logic, "*",
return llarp_dnsd_init(dnsd, ptr->ctx->logic, ptr->ctx->mainloop, "*",
server_port, upstream_host, upstream_port);
}
bool
llarp_main_init_dotLokiLookup(struct llarp_main *ptr,
struct dotLokiLookup *dll)
{
dll->logic = ptr->ctx->logic;
return true;
}
void
llarp_main_free(struct llarp_main *ptr)
{
@ -445,19 +454,28 @@ llarp_main_queryDHT(struct check_online_request *request)
}
bool
main_router_mapAddress(struct llarp_main *ptr, const llarp::service::Address &addr, uint32_t ip)
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, ip);
}
bool
main_router_prefetch(struct llarp_main *ptr, const llarp::service::Address &addr)
main_router_prefetch(struct llarp_main *ptr,
const llarp::service::Address &addr)
{
auto *endpoint = &ptr->ctx->router->hiddenServiceContext;
return endpoint->Prefetch(addr);
}
llarp::handlers::TunEndpoint *
main_router_getFirstTunEndpoint(struct llarp_main *ptr)
{
auto *endpoint = &ptr->ctx->router->hiddenServiceContext;
return endpoint->getFirstTun();
}
llarp_tun_io *
main_router_getRange(struct llarp_main *ptr)
{

@ -31,8 +31,8 @@ namespace llarp
}
}
llarp::handlers::TunEndpoint *
Context::getFirstTun()
llarp::service::Endpoint *
Context::getFirstEndpoint()
{
if(!m_Endpoints.size())
{
@ -41,8 +41,19 @@ namespace llarp
}
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 uniqueEndpoint->get();
}
llarp::handlers::TunEndpoint *
Context::getFirstTun()
{
llarp::service::Endpoint *endpointer = this->getFirstEndpoint();
if(!endpointer)
{
return nullptr;
}
llarp::handlers::TunEndpoint *tunEndpoint =
dynamic_cast< llarp::handlers::TunEndpoint * >(endpointer);
return tunEndpoint;
}
@ -67,8 +78,11 @@ namespace llarp
llarp::LogError("No tunnel endpoint found");
return false;
}
//HiddenServiceAddresslookup *lookup = new HiddenServiceEndpoint(tunEndpoint, callback, addr, tunEndpoint->GenTXID());
return tunEndpoint->EnsurePathToService(addr, [](Address addr, void* ctx) {}, 10000);
// HiddenServiceAddresslookup *lookup = new
// HiddenServiceEndpoint(tunEndpoint, callback, addr,
// tunEndpoint->GenTXID());
return tunEndpoint->EnsurePathToService(
addr, [](Address addr, void *ctx) {}, 10000);
}
bool
@ -82,7 +96,8 @@ namespace llarp
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);
llarp::handlers::TunEndpoint *tunEndpoint =
dynamic_cast< llarp::handlers::TunEndpoint * >(endpointer);
if(!tunEndpoint)
{
llarp::LogError("No tunnel endpoint found");

Loading…
Cancel
Save