expose mapAddress of first tunEndpoint

pull/16/head
Ryan Tharp 6 years ago
parent 30dc6186e9
commit 2bdee7d528

@ -7,6 +7,8 @@
#include <llarp/version.h>
#ifdef __cplusplus
#include "router.hpp" // for service::address
extern "C"
{
#endif
@ -75,6 +77,7 @@ 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,
@ -91,6 +94,11 @@ extern "C"
handleBaseCmdLineArgs(int argc, char *argv[]);
#ifdef __cplusplus
/// map an ip to a hidden service address
bool
main_router_mapAddress(struct llarp_main *ptr, const llarp::service::Address &addr, uint32_t ip);
}
#endif
#endif

@ -18,6 +18,10 @@ namespace llarp
void
Tick();
/// punch a hole open for DNS to add mappings
bool
MapAddress(const llarp::service::Address &addr, uint32_t ip);
bool
AddEndpoint(const Config::section_t &conf);

@ -458,7 +458,15 @@ llarp_main_queryDHT(struct check_online_request *request)
{1000, request, &llarp_main_checkOnline});
// 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, ip);
}
const char *
handleBaseCmdLineArgs(int argc, char *argv[])
{

@ -29,6 +29,26 @@ namespace llarp
++itr;
}
}
bool
Context::MapAddress(const llarp::service::Address &addr, uint32_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 = dynamic_cast<llarp::handlers::TunEndpoint *>(endpointer);
if (!tunEndpoint)
{
llarp::LogError("No tunnel endpoint found");
return false;
}
return tunEndpoint->MapAddress(addr, ip);
}
bool
Context::AddEndpoint(const Config::section_t &conf)

Loading…
Cancel
Save