1
1
Fork 0
mirror of https://github.com/oxen-io/lokinet synced 2023-12-14 06:53:00 +01:00
lokinet/llarp/exit_info.cpp

63 lines
1.3 KiB
C++
Raw Normal View History

#ifndef _WIN32
2018-04-05 16:43:16 +02:00
#include <arpa/inet.h>
#endif
2018-04-04 18:10:27 +02:00
#include <llarp/bencode.h>
2018-08-31 14:46:54 +02:00
#include <llarp/exit_info.hpp>
2018-05-11 01:32:46 +02:00
#include <llarp/mem.h>
2018-04-05 16:23:14 +02:00
#include <llarp/string.h>
#include <list>
2018-05-11 01:32:46 +02:00
2018-08-31 14:46:54 +02:00
namespace llarp
{
2018-08-31 14:46:54 +02:00
ExitInfo::~ExitInfo()
{
2018-05-11 01:32:46 +02:00
}
2018-08-31 15:51:24 +02:00
ExitInfo&
ExitInfo::operator=(const ExitInfo& other)
{
memcpy(address.s6_addr, other.address.s6_addr, 16);
memcpy(netmask.s6_addr, other.netmask.s6_addr, 16);
pubkey = other.pubkey;
version = other.version;
return *this;
}
2018-08-31 14:46:54 +02:00
bool
ExitInfo::BEncode(llarp_buffer_t* buf) const
{
2018-08-31 14:46:54 +02:00
char tmp[128] = {0};
if(!bencode_start_dict(buf))
return false;
2018-08-31 14:46:54 +02:00
if(!inet_ntop(AF_INET6, &address, tmp, sizeof(tmp)))
return false;
2018-08-31 14:46:54 +02:00
if(!BEncodeWriteDictString("a", std::string(tmp), buf))
return false;
2018-08-31 14:46:54 +02:00
if(!inet_ntop(AF_INET6, &netmask, tmp, sizeof(tmp)))
return false;
2018-08-31 14:46:54 +02:00
if(!BEncodeWriteDictString("b", std::string(tmp), buf))
return false;
2018-08-31 14:46:54 +02:00
if(!BEncodeWriteDictEntry("k", pubkey, buf))
return false;
2018-08-31 14:46:54 +02:00
if(!BEncodeWriteDictInt("v", version, buf))
return false;
2018-08-31 14:46:54 +02:00
return bencode_end(buf);
}
2018-08-31 14:46:54 +02:00
bool
ExitInfo::DecodeKey(__attribute__((unused)) llarp_buffer_t k,
__attribute__((unused)) llarp_buffer_t* buf)
2018-08-31 14:46:54 +02:00
{
bool read = false;
2018-08-31 15:51:24 +02:00
// TODO: implement me
2018-08-31 14:46:54 +02:00
return read;
}
2018-05-30 22:56:47 +02:00
2018-08-31 14:46:54 +02:00
} // namespace llarp