Android & hive fixes

pull/1557/head
Jason Rhinelander 3 years ago
parent 673d065ed8
commit d995766436

@ -100,7 +100,7 @@ namespace llarp
{
m_PacketRouter.reset(
new vpn::PacketRouter{[&](net::IPPacket pkt) { HandleGotUserPacket(std::move(pkt)); }});
#if ANDROID
#ifdef ANDROID
m_Resolver = std::make_shared<DnsInterceptor>(r, this);
m_PacketRouter->AddUDPHandler(huint16_t{53}, [&](net::IPPacket pkt) {
const size_t ip_header_size = (pkt.Header()->ihl * 4);
@ -111,11 +111,10 @@ namespace llarp
const SockAddr raddr{src.n, *reinterpret_cast<const uint16_t*>(ptr)};
const SockAddr laddr{dst.n, *reinterpret_cast<const uint16_t*>(ptr + 2)};
std::vector<byte_t> buf;
buf.resize(pkt.sz - (udp_header_size + ip_header_size));
std::copy_n(ptr + udp_header_size, buf.size(), buf.data());
OwnedBuffer buf{pkt.sz - (udp_header_size + ip_header_size)};
std::copy_n(ptr + udp_header_size, buf.sz, buf.buf.get());
if (m_Resolver->ShouldHandlePacket(laddr, raddr, buf))
m_Resolver->HandlePacket(laddr, raddr, std::move(buf));
m_Resolver->HandlePacket(laddr, raddr, buf);
else
HandleGotUserPacket(std::move(pkt));
});

@ -19,7 +19,7 @@
#include <util/logging/logger.hpp>
#include <util/str.hpp>
#if ANDROID
#ifdef ANDROID
#include <android/ifaddrs.h>
#else
#ifndef _WIN32

@ -8,7 +8,7 @@ namespace tooling
{}
std::shared_ptr<llarp::AbstractRouter>
HiveContext::makeRouter(llarp::EventLoop_ptr loop)
HiveContext::makeRouter(const llarp::EventLoop_ptr& loop)
{
return std::make_shared<HiveRouter>(loop, makeVPNPlatform(), m_hive);
}

@ -12,7 +12,7 @@ namespace tooling
HiveContext(RouterHive* hive);
std::shared_ptr<llarp::AbstractRouter>
makeRouter(llarp::EventLoop_ptr loop) override;
makeRouter(const llarp::EventLoop_ptr& loop) override;
/// Get this context's router as a HiveRouter.
///

@ -74,11 +74,11 @@ namespace tooling
llarp::LogInfo("Signalling all routers to stop");
for (auto& [routerId, ctx] : relays)
{
ctx->mainloop->call([ctx = ctx]() { ctx->HandleSignal(SIGINT); });
ctx->loop->call([ctx = ctx]() { ctx->HandleSignal(SIGINT); });
}
for (auto& [routerId, ctx] : clients)
{
ctx->mainloop->call([ctx = ctx]() { ctx->HandleSignal(SIGINT); });
ctx->loop->call([ctx = ctx]() { ctx->HandleSignal(SIGINT); });
}
llarp::LogInfo("Waiting on routers to be stopped");
@ -149,7 +149,7 @@ namespace tooling
RouterHive::VisitRouter(Context_ptr ctx, std::function<void(Context_ptr)> visit)
{
// TODO: this should be called from each router's appropriate Loop, e.g.:
// ctx->mainloop->call([visit, ctx]() { visit(ctx); });
// ctx->loop->call([visit, ctx]() { visit(ctx); });
// however, this causes visit calls to be deferred
visit(ctx);
}
@ -180,7 +180,7 @@ namespace tooling
size_t done_count = 0;
for (auto& [routerId, ctx] : relays)
{
ctx->mainloop->call([&, i, ctx = ctx]() {
ctx->loop->call([&, i, ctx = ctx]() {
size_t count = ctx->router->NumberOfConnectedRouters();
std::lock_guard guard{results_lock};
results[i] = count;

@ -76,7 +76,7 @@ namespace llarp
void
SendPacket(service::Address remote, std::vector<byte_t> pkt, service::ProtocolType proto)
{
LogicCall(m_router->logic(), [remote, pkt, proto, self = shared_from_this()]() {
m_router->loop()->call([remote, pkt, proto, self = shared_from_this()]() {
self->SendToServiceOrQueue(remote, llarp_buffer_t(pkt), proto);
});
}

@ -8,7 +8,7 @@ namespace llarp
void
AbstractRouter_Init(py::module& mod)
{
py::class_<AbstractRouter>(mod, "AbstractRouter")
py::class_<AbstractRouter, std::shared_ptr<AbstractRouter>>(mod, "AbstractRouter")
.def("rc", &AbstractRouter::rc)
.def("Stop", &AbstractRouter::Stop)
.def("peerDb", &AbstractRouter::peerDb);
@ -21,7 +21,7 @@ namespace tooling
void
HiveRouter_Init(py::module& mod)
{
py::class_<HiveRouter, llarp::AbstractRouter>(mod, "HiveRouter")
py::class_<HiveRouter, llarp::AbstractRouter, std::shared_ptr<HiveRouter>>(mod, "HiveRouter")
.def("disableGossiping", &HiveRouter::disableGossiping)
.def("enableGossiping", &HiveRouter::enableGossiping);
}

Loading…
Cancel
Save