34 #include <boost/uuid/uuid.hpp>
35 #include <boost/serialization/version.hpp>
36 #include "serialization/keyvalue_serialization.h"
37 #include "net/net_utils_base.h"
40 #include "misc_language.h"
41 #include "string_tools.h"
42 #include "time_helper.h"
44 #ifdef ALLOW_DEBUG_COMMANDS
57 return epee::string_tools::pad_string(
s.str(), 16,
'0',
true);
60 #pragma pack (push, 1)
67 BEGIN_KV_SERIALIZE_MAP()
70 END_KV_SERIALIZE_MAP()
73 template<typename AddressType>
82 BEGIN_KV_SERIALIZE_MAP()
85 if (!is_store || this_ref.last_seen != 0)
86 KV_SERIALIZE_OPT(last_seen, (int64_t)0)
87 KV_SERIALIZE_OPT(pruning_seed, (uint32_t)0)
88 KV_SERIALIZE_OPT(rpc_port, (uint16_t)0)
89 END_KV_SERIALIZE_MAP()
93 template<typename AddressType>
100 BEGIN_KV_SERIALIZE_MAP()
103 KV_SERIALIZE(first_seen)
104 END_KV_SERIALIZE_MAP()
108 template<typename AddressType>
115 BEGIN_KV_SERIALIZE_MAP()
118 KV_SERIALIZE(is_income)
119 END_KV_SERIALIZE_MAP()
130 std::stringstream ss;
131 ss << std::setfill (
'0') << std::setw (8) <<
std::hex << std::noshowbase;
134 ss << pe.id <<
"\t" << pe.adr.str()
135 <<
" \trpc port " << (pe.rpc_port > 0 ? std::to_string(pe.rpc_port) :
"-")
136 <<
" \tpruning seed " << pe.pruning_seed
137 <<
" \tlast_seen: " << (pe.last_seen == 0 ? std::string(
"never") : epee::misc_utils::get_time_interval_string(now_time - pe.last_seen))
146 BEGIN_KV_SERIALIZE_MAP()
147 KV_SERIALIZE(max_out_connection_count)
148 KV_SERIALIZE(max_in_connection_count)
149 KV_SERIALIZE(handshake_interval)
150 KV_SERIALIZE(packet_max_size)
151 KV_SERIALIZE(config_id)
152 END_KV_SERIALIZE_MAP()
154 uint32_t max_out_connection_count;
155 uint32_t max_in_connection_count;
156 uint32_t connection_timeout;
157 uint32_t ping_connection_timeout;
158 uint32_t handshake_interval;
159 uint32_t packet_max_size;
161 uint32_t send_peerlist_sz;
172 BEGIN_KV_SERIALIZE_MAP()
173 KV_SERIALIZE_VAL_POD_AS_BLOB(network_id)
174 KV_SERIALIZE(peer_id)
175 KV_SERIALIZE(local_time)
176 KV_SERIALIZE(my_port)
177 KV_SERIALIZE_OPT(rpc_port, (uint16_t)(0))
178 END_KV_SERIALIZE_MAP()
182 #define P2P_COMMANDS_POOL_BASE 1000
187 template<
class t_playload_type>
197 BEGIN_KV_SERIALIZE_MAP()
198 KV_SERIALIZE(node_data)
199 KV_SERIALIZE(payload_data)
200 END_KV_SERIALIZE_MAP()
210 BEGIN_KV_SERIALIZE_MAP()
211 KV_SERIALIZE(node_data)
212 KV_SERIALIZE(payload_data)
216 KV_SERIALIZE(local_peerlist_new)
217 std::vector<peerlist_entry_base<network_address_old>> local_peerlist;
218 for (
const auto &p: this_ref.local_peerlist_new)
220 if (p.adr.get_type_id() == epee::net_utils::ipv4_network_address::get_type_id())
222 const epee::net_utils::network_address &na = p.adr;
223 const epee::net_utils::ipv4_network_address &ipv4 = na.as<
const epee::net_utils::ipv4_network_address>();
227 MDEBUG(
"Not including in legacy peer list: " << p.adr.str());
229 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
236 std::vector<peerlist_entry_base<network_address_old>> local_peerlist;
237 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
238 for (
const auto &p: local_peerlist)
239 ((
response&)this_ref).local_peerlist_new.push_back(
peerlist_entry({epee::net_utils::ipv4_network_address(p.adr.ip, p.adr.port), p.id, p.last_seen, p.pruning_seed, p.rpc_port}));
242 END_KV_SERIALIZE_MAP()
244 typedef epee::misc_utils::struct_init<response_t>
response;
251 template<
class t_playload_type>
259 BEGIN_KV_SERIALIZE_MAP()
260 KV_SERIALIZE(payload_data)
261 END_KV_SERIALIZE_MAP()
271 BEGIN_KV_SERIALIZE_MAP()
272 KV_SERIALIZE(local_time)
273 KV_SERIALIZE(payload_data)
277 KV_SERIALIZE(local_peerlist_new)
278 std::vector<peerlist_entry_base<network_address_old>> local_peerlist;
279 for (
const auto &p: this_ref.local_peerlist_new)
281 if (p.adr.get_type_id() == epee::net_utils::ipv4_network_address::get_type_id())
283 const epee::net_utils::network_address &na = p.adr;
284 const epee::net_utils::ipv4_network_address &ipv4 = na.as<
const epee::net_utils::ipv4_network_address>();
288 MDEBUG(
"Not including in legacy peer list: " << p.adr.str());
290 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
297 std::vector<peerlist_entry_base<network_address_old>> local_peerlist;
298 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
299 for (
const auto &p: local_peerlist)
300 ((
response&)this_ref).local_peerlist_new.push_back(
peerlist_entry({epee::net_utils::ipv4_network_address(p.adr.ip, p.adr.port), p.id, p.last_seen}));
303 END_KV_SERIALIZE_MAP()
305 typedef epee::misc_utils::struct_init<response_t>
response;
321 #define PING_OK_RESPONSE_STATUS_TEXT "OK"
327 BEGIN_KV_SERIALIZE_MAP()
328 END_KV_SERIALIZE_MAP()
330 typedef epee::misc_utils::struct_init<request_t>
request;
337 BEGIN_KV_SERIALIZE_MAP()
339 KV_SERIALIZE(peer_id)
340 END_KV_SERIALIZE_MAP()
346 #ifdef ALLOW_DEBUG_COMMANDS
350 struct proof_of_trust
356 BEGIN_KV_SERIALIZE_MAP()
357 KV_SERIALIZE(peer_id)
359 KV_SERIALIZE_VAL_POD_AS_BLOB(sign)
360 END_KV_SERIALIZE_MAP()
364 template<
class payload_stat_info>
365 struct COMMAND_REQUEST_STAT_INFO_T
372 BEGIN_KV_SERIALIZE_MAP()
374 END_KV_SERIALIZE_MAP()
376 typedef
epee::misc_utils::struct_init<request_t> request;
381 std::string os_version;
382 uint64_t connections_count;
383 uint64_t incoming_connections_count;
384 payload_stat_info payload_info;
386 BEGIN_KV_SERIALIZE_MAP()
388 KV_SERIALIZE(os_version)
389 KV_SERIALIZE(connections_count)
390 KV_SERIALIZE(incoming_connections_count)
391 KV_SERIALIZE(payload_info)
392 END_KV_SERIALIZE_MAP()
394 typedef
epee::misc_utils::struct_init<response_t> response;
401 struct COMMAND_REQUEST_NETWORK_STATE
408 BEGIN_KV_SERIALIZE_MAP()
410 END_KV_SERIALIZE_MAP()
412 typedef
epee::misc_utils::struct_init<request_t> request;
416 std::vector<peerlist_entry> local_peerlist_white;
417 std::vector<peerlist_entry> local_peerlist_gray;
418 std::vector<connection_entry> connections_list;
421 BEGIN_KV_SERIALIZE_MAP()
422 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_white)
423 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_gray)
424 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(connections_list)
426 KV_SERIALIZE(local_time)
427 END_KV_SERIALIZE_MAP()
429 typedef
epee::misc_utils::struct_init<response_t> response;
435 struct COMMAND_REQUEST_PEER_ID
441 BEGIN_KV_SERIALIZE_MAP()
442 END_KV_SERIALIZE_MAP()
444 typedef
epee::misc_utils::struct_init<request_t> request;
450 BEGIN_KV_SERIALIZE_MAP()
452 END_KV_SERIALIZE_MAP()
454 typedef
epee::misc_utils::struct_init<response_t> response;
460 struct COMMAND_REQUEST_SUPPORT_FLAGS
466 BEGIN_KV_SERIALIZE_MAP()
467 END_KV_SERIALIZE_MAP()
469 typedef
epee::misc_utils::struct_init<request_t> request;
473 uint32_t support_flags;
475 BEGIN_KV_SERIALIZE_MAP()
476 KV_SERIALIZE(support_flags)
477 END_KV_SERIALIZE_MAP()
479 typedef
epee::misc_utils::struct_init<response_t> response;
488 s.append(
reinterpret_cast<const char*
>(&pot.peer_id),
sizeof(pot.peer_id));
489 s.append(
reinterpret_cast<const char*
>(&pot.time),
sizeof(pot.time));
#define s(x, c)
Definition: aesb.c:47
uint8_t version
Definition: blockchain.cpp:90
time_t time
Definition: blockchain.cpp:93
#define tr(x)
Definition: common_defines.h:4
void serialize(Archive &a, std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)
Definition: unordered_containers_boost_serialization.h:127
void cn_fast_hash(const void *data, std::size_t length, hash &hash)
Definition: hash.h:69
POD_CLASS signature
Definition: crypto.h:108
POD_CLASS hash
Definition: hash.h:50
std::string hex(difficulty_type v)
Definition: difficulty.cpp:254
Definition: cryptonote_format_utils.h:44
#define P2P_COMMANDS_POOL_BASE
Definition: p2p_protocol_defs.h:182
Definition: p2p_protocol_defs.h:95
int64_t first_seen
Definition: p2p_protocol_defs.h:98
AddressType adr
Definition: p2p_protocol_defs.h:96
peerid_type id
Definition: p2p_protocol_defs.h:97
Definition: p2p_protocol_defs.h:110
bool is_income
Definition: p2p_protocol_defs.h:113
AddressType adr
Definition: p2p_protocol_defs.h:111
peerid_type id
Definition: p2p_protocol_defs.h:112
Definition: p2p_protocol_defs.h:75
uint32_t pruning_seed
Definition: p2p_protocol_defs.h:79
AddressType adr
Definition: p2p_protocol_defs.h:76
uint16_t rpc_port
Definition: p2p_protocol_defs.h:80
peerid_type id
Definition: p2p_protocol_defs.h:77
int64_t last_seen
Definition: p2p_protocol_defs.h:78