Convert protocol type to enum class

pull/1573/head
Jason Rhinelander 3 years ago
parent 9bf002cc8d
commit 0339bd941a

@ -925,7 +925,7 @@ namespace llarp
{ {
(void)ip; (void)ip;
SendToServiceOrQueue( SendToServiceOrQueue(
service::Address{addr.as_array()}, pkt.ConstBuffer(), service::eProtocolExit); service::Address{addr.as_array()}, pkt.ConstBuffer(), service::ProtocolType::Exit);
} }
return; return;
} }
@ -960,7 +960,7 @@ namespace llarp
{ {
ctx->sendTimeout = 5s; ctx->sendTimeout = 5s;
} }
self->SendToServiceOrQueue(addr, pkt.ConstBuffer(), service::eProtocolExit); self->SendToServiceOrQueue(addr, pkt.ConstBuffer(), service::ProtocolType::Exit);
}, },
1s); 1s);
} }
@ -983,7 +983,7 @@ namespace llarp
this, this,
service::Address(itr->second.as_array()), service::Address(itr->second.as_array()),
std::placeholders::_1, std::placeholders::_1,
service::eProtocolExit); service::ProtocolType::Exit);
} }
else else
{ {
@ -1019,8 +1019,8 @@ namespace llarp
service::ProtocolType t, service::ProtocolType t,
uint64_t seqno) uint64_t seqno)
{ {
if (t != service::eProtocolTrafficV4 && t != service::eProtocolTrafficV6 if (t != service::ProtocolType::TrafficV4 && t != service::ProtocolType::TrafficV6
&& t != service::eProtocolExit) && t != service::ProtocolType::Exit)
return false; return false;
AlignedBuffer<32> addr; AlignedBuffer<32> addr;
bool snode = false; bool snode = false;
@ -1036,7 +1036,7 @@ namespace llarp
{ {
// exit side from exit // exit side from exit
src = ObtainIPForAddr(addr, snode); src = ObtainIPForAddr(addr, snode);
if (t == service::eProtocolExit) if (t == service::ProtocolType::Exit)
{ {
if (pkt.IsV4()) if (pkt.IsV4())
dst = pkt.dst4to6(); dst = pkt.dst4to6();
@ -1052,7 +1052,7 @@ namespace llarp
dst = m_OurIP; dst = m_OurIP;
} }
} }
else if (t == service::eProtocolExit) else if (t == service::ProtocolType::Exit)
{ {
// client side exit traffic from exit // client side exit traffic from exit
if (pkt.IsV4()) if (pkt.IsV4())

@ -226,11 +226,11 @@ namespace llarp
ServiceProtocol() const ServiceProtocol() const
{ {
if (IsV4()) if (IsV4())
return service::eProtocolTrafficV4; return service::ProtocolType::TrafficV4;
if (IsV6()) if (IsV6())
return service::eProtocolTrafficV6; return service::ProtocolType::TrafficV6;
return service::eProtocolControl; return service::ProtocolType::Control;
} }
huint128_t huint128_t

@ -65,7 +65,7 @@ namespace llarp::rpc
return; return;
} }
if (msg->proto != llarp::service::eProtocolAuth) if (msg->proto != llarp::service::ProtocolType::Auth)
{ {
// not an auth message, reject // not an auth message, reject
reply(service::AuthResult{service::AuthResultCode::eAuthRejected, "protocol error"}); reply(service::AuthResult{service::AuthResultCode::eAuthRejected, "protocol error"});

@ -958,14 +958,14 @@ namespace llarp
bool bool
Endpoint::ProcessDataMessage(std::shared_ptr<ProtocolMessage> msg) Endpoint::ProcessDataMessage(std::shared_ptr<ProtocolMessage> msg)
{ {
if ((msg->proto == eProtocolExit if ((msg->proto == ProtocolType::Exit
&& (m_state->m_ExitEnabled || m_ExitMap.ContainsValue(msg->sender.Addr()))) && (m_state->m_ExitEnabled || m_ExitMap.ContainsValue(msg->sender.Addr())))
|| msg->proto == eProtocolTrafficV4 || msg->proto == eProtocolTrafficV6) || msg->proto == ProtocolType::TrafficV4 || msg->proto == ProtocolType::TrafficV6)
{ {
m_InboundTrafficQueue.tryPushBack(std::move(msg)); m_InboundTrafficQueue.tryPushBack(std::move(msg));
return true; return true;
} }
if (msg->proto == eProtocolControl) if (msg->proto == ProtocolType::Control)
{ {
// TODO: implement me (?) // TODO: implement me (?)
// right now it's just random noise // right now it's just random noise
@ -1014,7 +1014,7 @@ namespace llarp
msg.PutBuffer(reason); msg.PutBuffer(reason);
f.N.Randomize(); f.N.Randomize();
f.C.Zero(); f.C.Zero();
msg.proto = eProtocolAuth; msg.proto = ProtocolType::Auth;
if (not GetReplyIntroFor(tag, msg.introReply)) if (not GetReplyIntroFor(tag, msg.introReply))
{ {
LogError("Failed to send auth reply: no reply intro"); LogError("Failed to send auth reply: no reply intro");
@ -1252,7 +1252,7 @@ namespace llarp
return false; return false;
pkt.UpdateIPv4Address(src, dst); pkt.UpdateIPv4Address(src, dst);
/// TODO: V6 /// TODO: V6
return HandleInboundPacket(tag, pkt.ConstBuffer(), eProtocolTrafficV4, 0); return HandleInboundPacket(tag, pkt.ConstBuffer(), ProtocolType::TrafficV4, 0);
}, },
Router(), Router(),
numDesiredPaths, numDesiredPaths,

@ -327,7 +327,7 @@ namespace llarp
Encrypted<64> tmp; Encrypted<64> tmp;
tmp.Randomize(); tmp.Randomize();
llarp_buffer_t buf(tmp.data(), tmp.size()); llarp_buffer_t buf(tmp.data(), tmp.size());
AsyncEncryptAndSendTo(buf, eProtocolControl); AsyncEncryptAndSendTo(buf, ProtocolType::Control);
} }
} }
} }
@ -551,7 +551,7 @@ namespace llarp
ProtocolMessage msg{}; ProtocolMessage msg{};
if (frame.DecryptPayloadInto(sessionKey, msg)) if (frame.DecryptPayloadInto(sessionKey, msg))
{ {
if (msg.proto == eProtocolAuth and not msg.payload.empty()) if (msg.proto == ProtocolType::Auth and not msg.payload.empty())
{ {
result.reason = std::string{ result.reason = std::string{
reinterpret_cast<const char*>(msg.payload.data()), msg.payload.size()}; reinterpret_cast<const char*>(msg.payload.data()), msg.payload.size()};
@ -574,7 +574,7 @@ namespace llarp
authResultListener = nullptr; authResultListener = nullptr;
hook = [handler](std::shared_ptr<ProtocolMessage> msg) { hook = [handler](std::shared_ptr<ProtocolMessage> msg) {
AuthResult result{AuthResultCode::eAuthAccepted, "OK"}; AuthResult result{AuthResultCode::eAuthAccepted, "OK"};
if (msg->proto == eProtocolAuth and not msg->payload.empty()) if (msg->proto == ProtocolType::Auth and not msg->payload.empty())
{ {
result.reason = std::string{ result.reason = std::string{
reinterpret_cast<const char*>(msg->payload.data()), msg->payload.size()}; reinterpret_cast<const char*>(msg->payload.data()), msg->payload.size()};
@ -605,7 +605,7 @@ namespace llarp
void void
OutboundContext::SendPacketToRemote(const llarp_buffer_t& buf) OutboundContext::SendPacketToRemote(const llarp_buffer_t& buf)
{ {
AsyncEncryptAndSendTo(buf, eProtocolExit); AsyncEncryptAndSendTo(buf, ProtocolType::Exit);
} }
} // namespace service } // namespace service

@ -37,7 +37,7 @@ namespace llarp
ProtocolMessage(const ConvoTag& tag); ProtocolMessage(const ConvoTag& tag);
ProtocolMessage(); ProtocolMessage();
~ProtocolMessage(); ~ProtocolMessage();
ProtocolType proto = eProtocolTrafficV4; ProtocolType proto = ProtocolType::TrafficV4;
llarp_time_t queued = 0s; llarp_time_t queued = 0s;
std::vector<byte_t> payload; std::vector<byte_t> payload;
Introduction introReply; Introduction introReply;

@ -4,11 +4,14 @@
namespace llarp::service namespace llarp::service
{ {
using ProtocolType = uint64_t; // Supported protocol types; the values are given explicitly because they are specifically used
// when sending over the wire.
constexpr ProtocolType eProtocolControl = 0UL; enum class ProtocolType : uint64_t
constexpr ProtocolType eProtocolTrafficV4 = 1UL; {
constexpr ProtocolType eProtocolTrafficV6 = 2UL; Control = 0UL,
constexpr ProtocolType eProtocolExit = 3UL; TrafficV4 = 1UL,
constexpr ProtocolType eProtocolAuth = 4UL; TrafficV6 = 2UL,
Exit = 3UL,
Auth = 4UL,
};
} // namespace llarp::service } // namespace llarp::service

@ -114,7 +114,7 @@ namespace llarp
{ {
// send auth message // send auth message
const llarp_buffer_t authdata{maybe->token}; const llarp_buffer_t authdata{maybe->token};
AsyncGenIntro(authdata, eProtocolAuth); AsyncGenIntro(authdata, ProtocolType::Auth);
authResultListener = resultHandler; authResultListener = resultHandler;
} }
else else
@ -134,7 +134,7 @@ namespace llarp
{ {
// send auth message // send auth message
const llarp_buffer_t authdata(maybe->token); const llarp_buffer_t authdata(maybe->token);
AsyncGenIntro(authdata, eProtocolAuth); AsyncGenIntro(authdata, ProtocolType::Auth);
} }
else else
{ {

@ -6,6 +6,7 @@
#include <llarp/util/logging/logger.hpp> #include <llarp/util/logging/logger.hpp>
#include "mem.hpp" #include "mem.hpp"
#include <type_traits>
#include <fstream> #include <fstream>
#include <set> #include <set>
#include <vector> #include <vector>
@ -41,7 +42,12 @@ namespace llarp
bool bool
BEncodeWriteDictInt(const char* k, const Int_t& i, llarp_buffer_t* buf) BEncodeWriteDictInt(const char* k, const Int_t& i, llarp_buffer_t* buf)
{ {
return bencode_write_bytestring(buf, k, 1) && bencode_write_uint64(buf, i); if (!bencode_write_bytestring(buf, k, 1))
return false;
if constexpr (std::is_enum_v<Int_t>)
return bencode_write_uint64(buf, static_cast<std::underlying_type_t<Int_t>>(i));
else
return bencode_write_uint64(buf, i);
} }
template <typename List_t> template <typename List_t>
@ -92,7 +98,7 @@ namespace llarp
return false; return false;
} }
i = Int_t(read_i); i = static_cast<Int_t>(read_i);
read = true; read = true;
} }
return true; return true;

@ -1,8 +1,9 @@
#include <common.hpp> #include <common.hpp>
#include <llarp.hpp> #include <llarp.hpp>
#include <llarp/tooling/hive_context.hpp> #include <llarp/tooling/hive_context.hpp>
#include <llarp/router/router.cpp> #include <llarp/router/router.hpp>
#include <llarp/handlers/pyhandler.hpp> #include <llarp/handlers/pyhandler.hpp>
#include "service/protocol_type.hpp"
namespace llarp namespace llarp
{ {
void void
@ -28,7 +29,8 @@ namespace llarp
std::vector<byte_t> buf; std::vector<byte_t> buf;
buf.resize(pkt.size()); buf.resize(pkt.size());
std::copy_n(pkt.c_str(), pkt.size(), buf.data()); std::copy_n(pkt.c_str(), pkt.size(), buf.data());
return ep and ep->SendToServiceOrQueue(to, std::move(buf), service::eProtocolControl); return ep
and ep->SendToServiceOrQueue(to, std::move(buf), service::ProtocolType::Control);
}) })
.def( .def(
"AddEndpoint", "AddEndpoint",

Loading…
Cancel
Save