33 #include <boost/uuid/uuid.hpp> 34 #include "serialization/keyvalue_serialization.h" 35 #include "net/net_utils_base.h" 36 #include "misc_language.h" 37 #include "string_tools.h" 38 #include "time_helper.h" 40 #ifdef ALLOW_DEBUG_COMMANDS 52 s << std::hex << peer_id;
53 return epee::string_tools::pad_string(
s.str(), 16,
'0',
true);
56 #pragma pack (push, 1) 63 BEGIN_KV_SERIALIZE_MAP()
66 END_KV_SERIALIZE_MAP()
69 template<typename AddressType>
76 BEGIN_KV_SERIALIZE_MAP()
79 KV_SERIALIZE(last_seen)
80 END_KV_SERIALIZE_MAP()
84 template<typename AddressType>
91 BEGIN_KV_SERIALIZE_MAP()
94 KV_SERIALIZE(first_seen)
95 END_KV_SERIALIZE_MAP()
99 template<typename AddressType>
106 BEGIN_KV_SERIALIZE_MAP()
109 KV_SERIALIZE(is_income)
110 END_KV_SERIALIZE_MAP()
121 std::stringstream ss;
122 ss << std::setfill (
'0') << std::setw (8) << std::hex << std::noshowbase;
125 ss << pe.id <<
"\t" << pe.adr.str() <<
" \tlast_seen: " << epee::misc_utils::get_time_interval_string(now_time - pe.last_seen) << std::endl;
133 BEGIN_KV_SERIALIZE_MAP()
134 KV_SERIALIZE(max_out_connection_count)
135 KV_SERIALIZE(max_in_connection_count)
136 KV_SERIALIZE(handshake_interval)
137 KV_SERIALIZE(packet_max_size)
138 KV_SERIALIZE(config_id)
139 END_KV_SERIALIZE_MAP()
141 uint32_t max_out_connection_count;
142 uint32_t max_in_connection_count;
143 uint32_t connection_timeout;
144 uint32_t ping_connection_timeout;
145 uint32_t handshake_interval;
146 uint32_t packet_max_size;
148 uint32_t send_peerlist_sz;
158 BEGIN_KV_SERIALIZE_MAP()
159 KV_SERIALIZE_VAL_POD_AS_BLOB(network_id)
160 KV_SERIALIZE(peer_id)
161 KV_SERIALIZE(local_time)
162 KV_SERIALIZE(my_port)
163 END_KV_SERIALIZE_MAP()
167 #define P2P_COMMANDS_POOL_BASE 1000 172 template<
class t_playload_type>
182 BEGIN_KV_SERIALIZE_MAP()
183 KV_SERIALIZE(node_data)
184 KV_SERIALIZE(payload_data)
185 END_KV_SERIALIZE_MAP()
194 BEGIN_KV_SERIALIZE_MAP()
195 KV_SERIALIZE(node_data)
196 KV_SERIALIZE(payload_data)
200 KV_SERIALIZE(local_peerlist_new)
201 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
202 for (
const auto &p: this_ref.local_peerlist_new)
204 if (p.adr.get_type_id() == epee::net_utils::ipv4_network_address::ID)
206 const epee::net_utils::network_address &na = p.adr;
207 const epee::net_utils::ipv4_network_address &ipv4 = na.as<
const epee::net_utils::ipv4_network_address>();
211 MDEBUG(
"Not including in legacy peer list: " << p.adr.str());
213 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
220 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
221 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
222 for (
const auto &p: local_peerlist)
223 ((
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}));
226 END_KV_SERIALIZE_MAP()
234 template<
class t_playload_type>
242 BEGIN_KV_SERIALIZE_MAP()
243 KV_SERIALIZE(payload_data)
244 END_KV_SERIALIZE_MAP()
253 BEGIN_KV_SERIALIZE_MAP()
254 KV_SERIALIZE(local_time)
255 KV_SERIALIZE(payload_data)
259 KV_SERIALIZE(local_peerlist_new)
260 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
261 for (
const auto &p: this_ref.local_peerlist_new)
263 if (p.adr.get_type_id() == epee::net_utils::ipv4_network_address::ID)
265 const epee::net_utils::network_address &na = p.adr;
266 const epee::net_utils::ipv4_network_address &ipv4 = na.as<
const epee::net_utils::ipv4_network_address>();
270 MDEBUG(
"Not including in legacy peer list: " << p.adr.str());
272 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
279 std::list<peerlist_entry_base<network_address_old>> local_peerlist;
280 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(local_peerlist, stg, hparent_section,
"local_peerlist");
281 for (
const auto &p: local_peerlist)
282 ((
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}));
285 END_KV_SERIALIZE_MAP()
302 #define PING_OK_RESPONSE_STATUS_TEXT "OK" 308 BEGIN_KV_SERIALIZE_MAP()
309 END_KV_SERIALIZE_MAP()
317 BEGIN_KV_SERIALIZE_MAP()
319 KV_SERIALIZE(peer_id)
320 END_KV_SERIALIZE_MAP()
325 #ifdef ALLOW_DEBUG_COMMANDS 329 struct proof_of_trust
335 BEGIN_KV_SERIALIZE_MAP()
336 KV_SERIALIZE(peer_id)
338 KV_SERIALIZE_VAL_POD_AS_BLOB(sign)
339 END_KV_SERIALIZE_MAP()
343 template<
class payload_stat_info>
344 struct COMMAND_REQUEST_STAT_INFO_T
351 BEGIN_KV_SERIALIZE_MAP()
353 END_KV_SERIALIZE_MAP()
359 std::string os_version;
360 uint64_t connections_count;
361 uint64_t incoming_connections_count;
362 payload_stat_info payload_info;
364 BEGIN_KV_SERIALIZE_MAP()
366 KV_SERIALIZE(os_version)
367 KV_SERIALIZE(connections_count)
368 KV_SERIALIZE(incoming_connections_count)
369 KV_SERIALIZE(payload_info)
370 END_KV_SERIALIZE_MAP()
378 struct COMMAND_REQUEST_NETWORK_STATE
385 BEGIN_KV_SERIALIZE_MAP()
387 END_KV_SERIALIZE_MAP()
392 std::list<peerlist_entry> local_peerlist_white;
393 std::list<peerlist_entry> local_peerlist_gray;
394 std::list<connection_entry> connections_list;
397 BEGIN_KV_SERIALIZE_MAP()
398 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_white)
399 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_gray)
400 KV_SERIALIZE_CONTAINER_POD_AS_BLOB(connections_list)
402 KV_SERIALIZE(local_time)
403 END_KV_SERIALIZE_MAP()
410 struct COMMAND_REQUEST_PEER_ID
416 BEGIN_KV_SERIALIZE_MAP()
417 END_KV_SERIALIZE_MAP()
424 BEGIN_KV_SERIALIZE_MAP()
426 END_KV_SERIALIZE_MAP()
433 struct COMMAND_REQUEST_SUPPORT_FLAGS
439 BEGIN_KV_SERIALIZE_MAP()
440 END_KV_SERIALIZE_MAP()
445 uint32_t support_flags;
447 BEGIN_KV_SERIALIZE_MAP()
448 KV_SERIALIZE(support_flags)
449 END_KV_SERIALIZE_MAP()
459 s.append(reinterpret_cast<const char*>(&pot.peer_id),
sizeof(pot.peer_id));
460 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:74
AddressType adr
Definition: p2p_protocol_defs.h:102
AddressType adr
Definition: p2p_protocol_defs.h:72
void serialize(Archive &a, std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)
Definition: unordered_containers_boost_serialization.h:126
#define P2P_COMMANDS_POOL_BASE
Definition: p2p_protocol_defs.h:167
peerid_type id
Definition: p2p_protocol_defs.h:103
AddressType adr
Definition: p2p_protocol_defs.h:87
int64_t first_seen
Definition: p2p_protocol_defs.h:89
peerid_type id
Definition: p2p_protocol_defs.h:73
Definition: p2p_protocol_defs.h:100
time_t time
Definition: blockchain.cpp:90
peerid_type id
Definition: p2p_protocol_defs.h:88
bool is_income
Definition: p2p_protocol_defs.h:104
Definition: p2p_protocol_defs.h:85
void cn_fast_hash(const void *data, size_t length, char *hash)
Definition: hash.c:46
uint8_t version
Definition: blockchain.cpp:87
Definition: cryptonote_format_utils.h:41
POD_CLASS signature
Definition: crypto.h:95
POD_CLASS hash
Definition: hash.h:49
#define s(x, c)
Definition: aesb.c:46
Definition: p2p_protocol_defs.h:70