From 2e47262350b5e4e3a0932d6c452be7849a63ff90 Mon Sep 17 00:00:00 2001 From: Stephen Shelton Date: Thu, 19 Mar 2020 16:20:45 -0600 Subject: [PATCH] Demystify LinksConfig --- llarp/config/config.hpp | 19 +++++++++---------- llarp/router/router.cpp | 15 +++++++-------- test/config/test_llarp_config_config.cpp | 10 ++++++---- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/llarp/config/config.hpp b/llarp/config/config.hpp index 4298b8eeb..dd3aea1f1 100644 --- a/llarp/config/config.hpp +++ b/llarp/config/config.hpp @@ -142,24 +142,23 @@ namespace llarp class LinksConfig { public: - static constexpr int Interface = 0; - static constexpr int AddressFamily = 1; - static constexpr int Port = 2; - static constexpr int Options = 3; - - using ServerOptions = std::unordered_set; - using LinkInfo = std::tuple; - using Links = std::vector; + struct LinkInfo + { + std::string interface; + int addressFamily; + uint16_t port; + std::unordered_set serverOptions; + }; public: LinkInfo m_OutboundLink; - Links m_InboundLinks; + std::vector m_InboundLinks; public: // clang-format off const LinkInfo& outboundLink() const { return m_OutboundLink; } - const Links& inboundLinks() const { return m_InboundLinks; } + const std::vector& inboundLinks() const { return m_InboundLinks; } // clang-format on void diff --git a/llarp/router/router.cpp b/llarp/router/router.cpp index c0cd6adee..3e61b29b2 100644 --- a/llarp/router/router.cpp +++ b/llarp/router/router.cpp @@ -397,7 +397,7 @@ namespace llarp } // IWP config - m_OutboundPort = std::get(conf->links.outboundLink()); + m_OutboundPort = conf->links.outboundLink().port; // Router config _rc.SetNick(conf->router.nickname()); _outboundSessionMaker.maxConnectedRouters = conf->router.maxConnectedRouters(); @@ -531,12 +531,12 @@ namespace llarp } // create inbound links, if we are a service node - for (const auto& serverConfig : conf->links.inboundLinks()) + for(const LinksConfig::LinkInfo &serverConfig : conf->links.inboundLinks()) { // get default factory auto inboundLinkFactory = LinkFactory::Obtain(_defaultLinkType, true); // for each option if provided ... - for (const auto& opt : std::get(serverConfig)) + for(const auto &opt : serverConfig.serverOptions) { // try interpreting it as a link type const auto linktype = LinkFactory::TypeFromName(opt); @@ -563,11 +563,10 @@ namespace llarp util::memFn(&AbstractRouter::SessionClosed, this), util::memFn(&AbstractRouter::PumpLL, this)); - const auto& key = std::get(serverConfig); - int af = std::get(serverConfig); - uint16_t port = std::get(serverConfig); - llarp::LogWarn("tun: ", key, " -- af: ", af, " -- port: ", port); - if (!server->Configure(netloop(), key, af, port)) + const std::string& key = serverConfig.interface; + int af = serverConfig.addressFamily; + uint16_t port = serverConfig.port; + if(!server->Configure(netloop(), key, af, port)) { LogError("failed to bind inbound link on ", key, " port ", port); return false; diff --git a/test/config/test_llarp_config_config.cpp b/test/config/test_llarp_config_config.cpp index 85b76fd11..e86349dec 100644 --- a/test/config/test_llarp_config_config.cpp +++ b/test/config/test_llarp_config_config.cpp @@ -96,10 +96,12 @@ ifaddr=10.101.0.1/16 } { - using kv = LinksConfig::Links::value_type; - - ASSERT_THAT(config.links.inboundLinks(), - UnorderedElementsAre(kv("eth0", AF_INET, 5501, {}))); + const auto& links = config.links.inboundLinks(); + ASSERT_EQ(links.size(), 1); + ASSERT_EQ(links[0].interface, "eth0"); + ASSERT_EQ(links[0].addressFamily, AF_INET); + ASSERT_EQ(links[0].port, 5501); + ASSERT_TRUE(links[0].serverOptions.empty()); } ASSERT_THAT(config.bootstrap.routers,