From b3d9cd463f5266588bf1b69148a0d456a2b8e815 Mon Sep 17 00:00:00 2001 From: Jeff Date: Fri, 14 Jan 2022 13:03:01 -0500 Subject: [PATCH] route poker: allow not blackholing routes. allow runtime configuration to disable ip blackholing. --- llarp/config/config.cpp | 11 +++++++++++ llarp/config/config.hpp | 1 + llarp/router/route_poker.cpp | 6 ++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/llarp/config/config.cpp b/llarp/config/config.cpp index 00932520b..40b897ac6 100644 --- a/llarp/config/config.cpp +++ b/llarp/config/config.cpp @@ -546,6 +546,17 @@ namespace llarp "configuration manually."}, AssignmentAcceptor(m_EnableRoutePoker)); + conf.defineOption( + "network", + "blackhole-routes", + ClientOnly, + Default{true}, + Comment{ + "Enable / disable route configuration blackholes.", + "When enabled lokinet will drop ip4 and ip6 not included in exit config.", + "Enabled by default."}, + AssignmentAcceptor(m_BlackholeRoutes)); + conf.defineOption( "network", "ifname", diff --git a/llarp/config/config.hpp b/llarp/config/config.hpp index 677a5ed2e..4b518fc04 100644 --- a/llarp/config/config.hpp +++ b/llarp/config/config.hpp @@ -130,6 +130,7 @@ namespace llarp std::optional m_AddrMapPersistFile; bool m_EnableRoutePoker; + bool m_BlackholeRoutes; void defineConfigOptions(ConfigDefinition& conf, const ConfigGenParameters& params); diff --git a/llarp/router/route_poker.cpp b/llarp/router/route_poker.cpp index 95b56d52b..b24b88476 100644 --- a/llarp/router/route_poker.cpp +++ b/llarp/router/route_poker.cpp @@ -202,8 +202,10 @@ namespace llarp vpn::IRouteManager& route = m_Router->GetVPNPlatform()->RouteManager(); - // black hole all routes by default - route.AddBlackhole(); + // black hole all routes if enabled + if (m_Router->GetConfig()->network.m_BlackholeRoutes) + route.AddBlackhole(); + // explicit route pokes for first hops m_Router->ForEachPeer( [&](auto session, auto) mutable { AddRoute(session->GetRemoteEndpoint().asIPv4()); },