34 #include <boost/uuid/uuid.hpp> 35 #include "serialization/keyvalue_serialization.h" 36 #include "net/net_utils_base.h" 37 #include "misc_language.h" 39 #ifdef ALLOW_DEBUG_COMMANDS 52 return epee::string_tools::pad_string(
s.str(), 16,
'0',
true);
55 #pragma pack (push, 1) 62 BEGIN_KV_SERIALIZE_MAP()
65 END_KV_SERIALIZE_MAP()
68 template<typename AddressType>
75 BEGIN_KV_SERIALIZE_MAP()
78 KV_SERIALIZE(last_seen)
79 END_KV_SERIALIZE_MAP()
83 template<typename AddressType>
90 BEGIN_KV_SERIALIZE_MAP()
93 KV_SERIALIZE(first_seen)
94 END_KV_SERIALIZE_MAP()
98 template<typename AddressType>
105 BEGIN_KV_SERIALIZE_MAP()
108 KV_SERIALIZE(is_income)
109 END_KV_SERIALIZE_MAP()
120 std::stringstream ss;
121 ss << std::setfill (
'0') << std::setw (8) <<
std::hex << std::noshowbase;
124 ss << pe.id <<
"\t" << pe.adr->str() <<
" \tlast_seen: " << epee::misc_utils::get_time_interval_string(now_time - pe.last_seen) << std::endl;
132 BEGIN_KV_SERIALIZE_MAP()
133 KV_SERIALIZE(connections_count)
134 KV_SERIALIZE(handshake_interval)
135 KV_SERIALIZE(packet_max_size)
136 KV_SERIALIZE(config_id)
137 END_KV_SERIALIZE_MAP()
139 uint32_t connections_count;
140 uint32_t connection_timeout;
141 uint32_t ping_connection_timeout;
142 uint32_t handshake_interval;
143 uint32_t packet_max_size;
145 uint32_t send_peerlist_sz;
155 BEGIN_KV_SERIALIZE_MAP()
156 KV_SERIALIZE_VAL_POD_AS_BLOB(network_id)
157 KV_SERIALIZE(peer_id)
158 KV_SERIALIZE(local_time)
159 KV_SERIALIZE(my_port)
160 END_KV_SERIALIZE_MAP()
164 #define P2P_COMMANDS_POOL_BASE 1000 169 template<
class t_playload_type>
179 BEGIN_KV_SERIALIZE_MAP()
180 KV_SERIALIZE(node_data)
181 KV_SERIALIZE(payload_data)
182 END_KV_SERIALIZE_MAP()
191 BEGIN_KV_SERIALIZE_MAP()
192 KV_SERIALIZE(node_data)
193 KV_SERIALIZE(payload_data)
197 KV_SERIALIZE(local_peerlist_new)
198 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
199 for (
const auto &p: this_ref.local_peerlist_new)
201 if (p.adr.get_type_id() == epee::net_utils::ipv4_network_address::ID)
203 const epee::net_utils::network_address &na = p.adr;
204 const epee::net_utils::ipv4_network_address &ipv4 = na.as<
const epee::net_utils::ipv4_network_address>();
208 MDEBUG(
"Not including in legacy peer list: " << p.adr.str());
210 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
217 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
218 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
219 for (
const auto &p: local_peerlist)
220 ((
response&)this_ref).local_peerlist_new.push_back(
peerlist_entry({
new epee::net_utils::ipv4_network_address(p.adr.ip, p.adr.port), p.id, p.last_seen}));
223 END_KV_SERIALIZE_MAP()
231 template<
class t_playload_type>
239 BEGIN_KV_SERIALIZE_MAP()
240 KV_SERIALIZE(payload_data)
241 END_KV_SERIALIZE_MAP()
250 BEGIN_KV_SERIALIZE_MAP()
251 KV_SERIALIZE(local_time)
252 KV_SERIALIZE(payload_data)
256 KV_SERIALIZE(local_peerlist_new)
257 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
258 for (
const auto &p: this_ref.local_peerlist_new)
260 if (p.adr.get_type_id() == epee::net_utils::ipv4_network_address::ID)
262 const epee::net_utils::network_address &na = p.adr;
263 const epee::net_utils::ipv4_network_address &ipv4 = na.as<
const epee::net_utils::ipv4_network_address>();
267 MDEBUG(
"Not including in legacy peer list: " << p.adr.str());
269 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
276 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
277 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
278 for (
const auto &p: local_peerlist)
279 ((
response&)this_ref).local_peerlist_new.push_back(
peerlist_entry({
new epee::net_utils::ipv4_network_address(p.adr.ip, p.adr.port), p.id, p.last_seen}));
282 END_KV_SERIALIZE_MAP()
299 #define PING_OK_RESPONSE_STATUS_TEXT "OK" 305 BEGIN_KV_SERIALIZE_MAP()
306 END_KV_SERIALIZE_MAP()
314 BEGIN_KV_SERIALIZE_MAP()
316 KV_SERIALIZE(peer_id)
317 END_KV_SERIALIZE_MAP()
322 #ifdef ALLOW_DEBUG_COMMANDS 326 struct proof_of_trust
332 BEGIN_KV_SERIALIZE_MAP()
333 KV_SERIALIZE(peer_id)
335 KV_SERIALIZE_VAL_POD_AS_BLOB(sign)
336 END_KV_SERIALIZE_MAP()
340 template<
class payload_stat_info>
341 struct COMMAND_REQUEST_STAT_INFO_T
348 BEGIN_KV_SERIALIZE_MAP()
350 END_KV_SERIALIZE_MAP()
356 std::string os_version;
357 uint64_t connections_count;
358 uint64_t incoming_connections_count;
359 payload_stat_info payload_info;
361 BEGIN_KV_SERIALIZE_MAP()
363 KV_SERIALIZE(os_version)
364 KV_SERIALIZE(connections_count)
365 KV_SERIALIZE(incoming_connections_count)
366 KV_SERIALIZE(payload_info)
367 END_KV_SERIALIZE_MAP()
375 struct COMMAND_REQUEST_NETWORK_STATE
382 BEGIN_KV_SERIALIZE_MAP()
384 END_KV_SERIALIZE_MAP()
389 std::list<peerlist_entry> local_peerlist_white;
390 std::list<peerlist_entry> local_peerlist_gray;
391 std::list<connection_entry> connections_list;
394 BEGIN_KV_SERIALIZE_MAP()
395 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_white)
396 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_gray)
397 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(connections_list)
399 KV_SERIALIZE(local_time)
400 END_KV_SERIALIZE_MAP()
407 struct COMMAND_REQUEST_PEER_ID
413 BEGIN_KV_SERIALIZE_MAP()
414 END_KV_SERIALIZE_MAP()
421 BEGIN_KV_SERIALIZE_MAP()
423 END_KV_SERIALIZE_MAP()
430 struct COMMAND_REQUEST_SUPPORT_FLAGS
436 BEGIN_KV_SERIALIZE_MAP()
437 END_KV_SERIALIZE_MAP()
442 uint32_t support_flags;
444 BEGIN_KV_SERIALIZE_MAP()
445 KV_SERIALIZE(support_flags)
446 END_KV_SERIALIZE_MAP()
456 s.append(reinterpret_cast<const char*>(&pot.peer_id),
sizeof(pot.peer_id));
457 s.append(reinterpret_cast<const char*>(&pot.time),
sizeof(pot.time));
#define tr(x)
Definition: common_defines.h:4
int64_t last_seen
Definition: p2p_protocol_defs.h:73
AddressType adr
Definition: p2p_protocol_defs.h:101
IntFormatSpec< int, TypeSpec< 'x'> > hex(int value)
AddressType adr
Definition: p2p_protocol_defs.h:71
void serialize(Archive &a, std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)
Definition: unordered_containers_boost_serialization.h:127
#define P2P_COMMANDS_POOL_BASE
Definition: p2p_protocol_defs.h:164
peerid_type id
Definition: p2p_protocol_defs.h:102
AddressType adr
Definition: p2p_protocol_defs.h:86
int64_t first_seen
Definition: p2p_protocol_defs.h:88
peerid_type id
Definition: p2p_protocol_defs.h:72
Definition: p2p_protocol_defs.h:99
time_t time
Definition: blockchain.cpp:89
peerid_type id
Definition: p2p_protocol_defs.h:87
bool is_income
Definition: p2p_protocol_defs.h:103
Definition: p2p_protocol_defs.h:84
void cn_fast_hash(const void *data, size_t length, char *hash)
Definition: hash.c:47
uint8_t version
Definition: blockchain.cpp:86
Definition: connection_basic.cpp:91
POD_CLASS signature
Definition: crypto.h:99
POD_CLASS hash
Definition: hash.h:46
#define s(x, c)
Definition: aesb.c:46
Definition: p2p_protocol_defs.h:69