router version

pull/1072/head
jeff 4 years ago
parent 227926a525
commit f728e6016b

@ -214,6 +214,7 @@ set(LIB_SRC
router/router.cpp
router_contact.cpp
router_id.cpp
router_version.cpp
routing/dht_message.cpp
routing/handler.cpp
routing/message_parser.cpp

@ -1,6 +1,8 @@
#include <constants/version.hpp>
#include <constants/version.h>
#include <constants/proto.hpp>
// clang-format off
#define LLARP_STRINGIFY2(val) #val
#define LLARP_STRINGIFY(val) LLARP_STRINGIFY2(val)
@ -10,6 +12,7 @@
namespace llarp
{
const std::array<uint16_t, 3> VERSION{{LLARP_VERSION_MAJ, LLARP_VERSION_MIN, LLARP_VERSION_PATCH}};
const std::array<uint64_t, 4> ROUTER_VERSION{{LLARP_PROTO_VERSION, LLARP_VERSION_MAJ, LLARP_VERSION_MIN, LLARP_VERSION_PATCH}};
const char* const VERSION_STR = LLARP_VERSION_STR;
const char* const VERSION_TAG = "@VERSIONTAG@";
const char* const VERSION_FULL = LLARP_NAME "-" LLARP_VERSION_STR "-@VERSIONTAG@";

@ -6,10 +6,11 @@
namespace llarp
{
// Given a full lokinet version of: lokinet-1.2.3-abc these are:
extern const std::array< uint16_t, 3 > VERSION; // [1, 2, 3]
extern const char* const VERSION_STR; // "1.2.3"
extern const char* const VERSION_TAG; // "abc"
extern const char* const VERSION_FULL; // "lokinet-1.2.3-abc"
extern const std::array< uint16_t, 3 > VERSION; // [1, 2, 3]
extern const std::array< uint64_t, 4 > ROUTER_VERSION; // [proto, 1, 2, 3]
extern const char* const VERSION_STR; // "1.2.3"
extern const char* const VERSION_TAG; // "abc"
extern const char* const VERSION_FULL; // "lokinet-1.2.3-abc"
extern const char* const RELEASE_MOTTO;
extern const char* const DEFAULT_NETID;

@ -919,6 +919,11 @@ namespace llarp
// set public signing key
_rc.pubkey = seckey_topublic(identity());
// set router version if service node
if(IsServiceNode())
{
_rc.routerVersion = RouterVersion(llarp::ROUTER_VERSION);
}
AddressInfo ai;
_linkManager.ForEachInboundLink([&](LinkLayer_ptr link) {

@ -126,7 +126,12 @@ namespace llarp
return false;
if(!enckey.BEncode(buf))
return false;
// write router version if present
if(routerVersion.has_value())
{
if(not BEncodeWriteDictEntry("r", routerVersion.value(), buf))
return false;
}
/* write last updated */
if(!bencode_write_bytestring(buf, "u", 1))
return false;
@ -160,7 +165,8 @@ namespace llarp
nickname.Zero();
enckey.Zero();
pubkey.Zero();
last_updated = 0;
routerVersion = absl::optional< RouterVersion >{};
last_updated = 0;
}
util::StatusObject
@ -176,7 +182,10 @@ namespace llarp
{
obj["nickname"] = Nick();
}
if(routerVersion.has_value())
{
obj["routerVersion"] = routerVersion->ToString();
}
return obj;
}
@ -193,6 +202,15 @@ namespace llarp
if(!BEncodeMaybeReadDictEntry("k", pubkey, read, key, buf))
return false;
if(key == "r")
{
RouterVersion r;
if(not r.BDecode(buf))
return false;
routerVersion = r;
return true;
}
if(key == "n")
{
llarp_buffer_t strbuf;

@ -8,6 +8,7 @@
#include <util/aligned.hpp>
#include <util/bencode.hpp>
#include <util/status.hpp>
#include <router_version.hpp>
#include <functional>
#include <nlohmann/json.hpp>
@ -104,6 +105,7 @@ namespace llarp
uint64_t last_updated = 0;
uint64_t version = LLARP_PROTO_VERSION;
absl::optional< RouterVersion > routerVersion;
util::StatusObject
ExtractStatus() const;

Loading…
Cancel
Save