adds quic tvu port to contact-info (#31614)
Working towards migrating turbine to QUIC.
This commit is contained in:
parent
376f562d8f
commit
5178d4d49b
|
@ -10,7 +10,7 @@ use {
|
||||||
solana_entry::entry::Entry,
|
solana_entry::entry::Entry,
|
||||||
solana_gossip::{
|
solana_gossip::{
|
||||||
cluster_info::{ClusterInfo, Node},
|
cluster_info::{ClusterInfo, Node},
|
||||||
contact_info::ContactInfo,
|
contact_info::{ContactInfo, Protocol},
|
||||||
},
|
},
|
||||||
solana_ledger::{
|
solana_ledger::{
|
||||||
genesis_utils::{create_genesis_config, GenesisConfigInfo},
|
genesis_utils::{create_genesis_config, GenesisConfigInfo},
|
||||||
|
@ -63,9 +63,9 @@ fn bench_retransmitter(bencher: &mut Bencher) {
|
||||||
let port = socket.local_addr().unwrap().port();
|
let port = socket.local_addr().unwrap().port();
|
||||||
contact_info.set_tvu((Ipv4Addr::LOCALHOST, port)).unwrap();
|
contact_info.set_tvu((Ipv4Addr::LOCALHOST, port)).unwrap();
|
||||||
contact_info
|
contact_info
|
||||||
.set_tvu_forwards(contact_info.tvu().unwrap())
|
.set_tvu_forwards(contact_info.tvu(Protocol::UDP).unwrap())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
info!("local: {:?}", contact_info.tvu().unwrap());
|
info!("local: {:?}", contact_info.tvu(Protocol::UDP).unwrap());
|
||||||
cluster_info.insert_info(contact_info);
|
cluster_info.insert_info(contact_info);
|
||||||
socket.set_nonblocking(true).unwrap();
|
socket.set_nonblocking(true).unwrap();
|
||||||
socket
|
socket
|
||||||
|
|
|
@ -14,7 +14,10 @@ use {
|
||||||
},
|
},
|
||||||
crossbeam_channel::{unbounded, Receiver, RecvError, RecvTimeoutError, Sender},
|
crossbeam_channel::{unbounded, Receiver, RecvError, RecvTimeoutError, Sender},
|
||||||
itertools::Itertools,
|
itertools::Itertools,
|
||||||
solana_gossip::cluster_info::{ClusterInfo, ClusterInfoError},
|
solana_gossip::{
|
||||||
|
cluster_info::{ClusterInfo, ClusterInfoError},
|
||||||
|
contact_info::Protocol,
|
||||||
|
},
|
||||||
solana_ledger::{blockstore::Blockstore, shred::Shred},
|
solana_ledger::{blockstore::Blockstore, shred::Shred},
|
||||||
solana_measure::measure::Measure,
|
solana_measure::measure::Measure,
|
||||||
solana_metrics::{inc_new_counter_error, inc_new_counter_info},
|
solana_metrics::{inc_new_counter_error, inc_new_counter_info},
|
||||||
|
@ -412,7 +415,7 @@ pub fn broadcast_shreds(
|
||||||
shreds.filter_map(move |shred| {
|
shreds.filter_map(move |shred| {
|
||||||
cluster_nodes
|
cluster_nodes
|
||||||
.get_broadcast_peer(&shred.id())?
|
.get_broadcast_peer(&shred.id())?
|
||||||
.tvu()
|
.tvu(Protocol::UDP)
|
||||||
.ok()
|
.ok()
|
||||||
.filter(|addr| socket_addr_space.check(addr))
|
.filter(|addr| socket_addr_space.check(addr))
|
||||||
.map(|addr| (shred.payload(), addr))
|
.map(|addr| (shred.payload(), addr))
|
||||||
|
|
|
@ -3,7 +3,6 @@ use {
|
||||||
crate::cluster_nodes::ClusterNodesCache,
|
crate::cluster_nodes::ClusterNodesCache,
|
||||||
itertools::Itertools,
|
itertools::Itertools,
|
||||||
solana_entry::entry::Entry,
|
solana_entry::entry::Entry,
|
||||||
solana_gossip::legacy_contact_info::LegacyContactInfo as ContactInfo,
|
|
||||||
solana_ledger::shred::{ProcessShredsStats, ReedSolomonCache, Shredder},
|
solana_ledger::shred::{ProcessShredsStats, ReedSolomonCache, Shredder},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
hash::Hash,
|
hash::Hash,
|
||||||
|
@ -305,7 +304,7 @@ impl BroadcastRun for BroadcastDuplicatesRun {
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|shred| {
|
.filter_map(|shred| {
|
||||||
let node = cluster_nodes.get_broadcast_peer(&shred.id())?;
|
let node = cluster_nodes.get_broadcast_peer(&shred.id())?;
|
||||||
if !socket_addr_space.check(&node.tvu().ok()?) {
|
if !socket_addr_space.check(&node.tvu(Protocol::UDP).ok()?) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
if self
|
if self
|
||||||
|
@ -338,7 +337,7 @@ impl BroadcastRun for BroadcastDuplicatesRun {
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|pubkey| {
|
.filter_map(|pubkey| {
|
||||||
let tvu = cluster_info
|
let tvu = cluster_info
|
||||||
.lookup_contact_info(pubkey, ContactInfo::tvu)?
|
.lookup_contact_info(pubkey, |node| node.tvu(Protocol::UDP))?
|
||||||
.ok()?;
|
.ok()?;
|
||||||
Some((shred.payload(), tvu))
|
Some((shred.payload(), tvu))
|
||||||
})
|
})
|
||||||
|
@ -346,7 +345,7 @@ impl BroadcastRun for BroadcastDuplicatesRun {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Some(vec![(shred.payload(), node.tvu().ok()?)])
|
Some(vec![(shred.payload(), node.tvu(Protocol::UDP).ok()?)])
|
||||||
})
|
})
|
||||||
.flatten()
|
.flatten()
|
||||||
.collect();
|
.collect();
|
||||||
|
|
|
@ -6,10 +6,10 @@ use {
|
||||||
rand_chacha::ChaChaRng,
|
rand_chacha::ChaChaRng,
|
||||||
solana_gossip::{
|
solana_gossip::{
|
||||||
cluster_info::{compute_retransmit_peers, ClusterInfo, DATA_PLANE_FANOUT},
|
cluster_info::{compute_retransmit_peers, ClusterInfo, DATA_PLANE_FANOUT},
|
||||||
|
contact_info::{LegacyContactInfo as ContactInfo, LegacyContactInfo, Protocol},
|
||||||
crds::GossipRoute,
|
crds::GossipRoute,
|
||||||
crds_gossip_pull::CRDS_GOSSIP_PULL_CRDS_TIMEOUT_MS,
|
crds_gossip_pull::CRDS_GOSSIP_PULL_CRDS_TIMEOUT_MS,
|
||||||
crds_value::{CrdsData, CrdsValue},
|
crds_value::{CrdsData, CrdsValue},
|
||||||
legacy_contact_info::{LegacyContactInfo as ContactInfo, LegacyContactInfo},
|
|
||||||
weighted_shuffle::WeightedShuffle,
|
weighted_shuffle::WeightedShuffle,
|
||||||
},
|
},
|
||||||
solana_ledger::shred::ShredId,
|
solana_ledger::shred::ShredId,
|
||||||
|
@ -179,7 +179,7 @@ impl ClusterNodes<RetransmitStage> {
|
||||||
if neighbors.is_empty() {
|
if neighbors.is_empty() {
|
||||||
let peers = children.into_iter().filter_map(|node| {
|
let peers = children.into_iter().filter_map(|node| {
|
||||||
node.contact_info()?
|
node.contact_info()?
|
||||||
.tvu()
|
.tvu(Protocol::UDP)
|
||||||
.ok()
|
.ok()
|
||||||
.filter(|addr| addrs.get(addr) == Some(&node.pubkey()))
|
.filter(|addr| addrs.get(addr) == Some(&node.pubkey()))
|
||||||
});
|
});
|
||||||
|
@ -209,7 +209,7 @@ impl ClusterNodes<RetransmitStage> {
|
||||||
})
|
})
|
||||||
.chain(children.into_iter().filter_map(|node| {
|
.chain(children.into_iter().filter_map(|node| {
|
||||||
node.contact_info()?
|
node.contact_info()?
|
||||||
.tvu()
|
.tvu(Protocol::UDP)
|
||||||
.ok()
|
.ok()
|
||||||
.filter(|addr| addrs.get(addr) == Some(&node.pubkey()))
|
.filter(|addr| addrs.get(addr) == Some(&node.pubkey()))
|
||||||
}));
|
}));
|
||||||
|
@ -244,7 +244,7 @@ impl ClusterNodes<RetransmitStage> {
|
||||||
.map(|index| &self.nodes[index])
|
.map(|index| &self.nodes[index])
|
||||||
.inspect(|node| {
|
.inspect(|node| {
|
||||||
if let Some(node) = node.contact_info() {
|
if let Some(node) = node.contact_info() {
|
||||||
if let Ok(addr) = node.tvu() {
|
if let Ok(addr) = node.tvu(Protocol::UDP) {
|
||||||
addrs.entry(addr).or_insert(*node.pubkey());
|
addrs.entry(addr).or_insert(*node.pubkey());
|
||||||
}
|
}
|
||||||
if !drop_redundant_turbine_path {
|
if !drop_redundant_turbine_path {
|
||||||
|
|
|
@ -438,7 +438,7 @@ fn get_target(
|
||||||
info!("{:?}", node.gossip());
|
info!("{:?}", node.gossip());
|
||||||
target = match mode {
|
target = match mode {
|
||||||
Mode::Gossip => Some((*node.pubkey(), node.gossip().unwrap())),
|
Mode::Gossip => Some((*node.pubkey(), node.gossip().unwrap())),
|
||||||
Mode::Tvu => Some((*node.pubkey(), node.tvu().unwrap())),
|
Mode::Tvu => Some((*node.pubkey(), node.tvu(Protocol::UDP).unwrap())),
|
||||||
Mode::TvuForwards => Some((*node.pubkey(), node.tvu_forwards().unwrap())),
|
Mode::TvuForwards => Some((*node.pubkey(), node.tvu_forwards().unwrap())),
|
||||||
Mode::Tpu => Some((*node.pubkey(), node.tpu(protocol).unwrap())),
|
Mode::Tpu => Some((*node.pubkey(), node.tpu(protocol).unwrap())),
|
||||||
Mode::TpuForwards => {
|
Mode::TpuForwards => {
|
||||||
|
|
|
@ -847,7 +847,7 @@ impl ClusterInfo {
|
||||||
self.addr_to_string(&ip_addr, &node.tpu_vote().ok()),
|
self.addr_to_string(&ip_addr, &node.tpu_vote().ok()),
|
||||||
self.addr_to_string(&ip_addr, &node.tpu(contact_info::Protocol::UDP).ok()),
|
self.addr_to_string(&ip_addr, &node.tpu(contact_info::Protocol::UDP).ok()),
|
||||||
self.addr_to_string(&ip_addr, &node.tpu_forwards(contact_info::Protocol::UDP).ok()),
|
self.addr_to_string(&ip_addr, &node.tpu_forwards(contact_info::Protocol::UDP).ok()),
|
||||||
self.addr_to_string(&ip_addr, &node.tvu().ok()),
|
self.addr_to_string(&ip_addr, &node.tvu(contact_info::Protocol::UDP).ok()),
|
||||||
self.addr_to_string(&ip_addr, &node.tvu_forwards().ok()),
|
self.addr_to_string(&ip_addr, &node.tvu_forwards().ok()),
|
||||||
self.addr_to_string(&ip_addr, &node.repair().ok()),
|
self.addr_to_string(&ip_addr, &node.repair().ok()),
|
||||||
self.addr_to_string(&ip_addr, &node.serve_repair().ok()),
|
self.addr_to_string(&ip_addr, &node.serve_repair().ok()),
|
||||||
|
@ -1314,7 +1314,8 @@ impl ClusterInfo {
|
||||||
self.time_gossip_read_lock("all_tvu_peers", &self.stats.all_tvu_peers)
|
self.time_gossip_read_lock("all_tvu_peers", &self.stats.all_tvu_peers)
|
||||||
.get_nodes_contact_info()
|
.get_nodes_contact_info()
|
||||||
.filter(|node| {
|
.filter(|node| {
|
||||||
node.pubkey() != &self_pubkey && self.check_socket_addr_space(&node.tvu())
|
node.pubkey() != &self_pubkey
|
||||||
|
&& self.check_socket_addr_space(&node.tvu(contact_info::Protocol::UDP))
|
||||||
})
|
})
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect()
|
.collect()
|
||||||
|
@ -1329,7 +1330,7 @@ impl ClusterInfo {
|
||||||
.filter(|node| {
|
.filter(|node| {
|
||||||
node.pubkey() != &self_pubkey
|
node.pubkey() != &self_pubkey
|
||||||
&& node.shred_version() == self_shred_version
|
&& node.shred_version() == self_shred_version
|
||||||
&& self.check_socket_addr_space(&node.tvu())
|
&& self.check_socket_addr_space(&node.tvu(contact_info::Protocol::UDP))
|
||||||
})
|
})
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect()
|
.collect()
|
||||||
|
@ -1346,7 +1347,7 @@ impl ClusterInfo {
|
||||||
.filter(|node| {
|
.filter(|node| {
|
||||||
node.pubkey() != &self_pubkey
|
node.pubkey() != &self_pubkey
|
||||||
&& node.shred_version() == self_shred_version
|
&& node.shred_version() == self_shred_version
|
||||||
&& self.check_socket_addr_space(&node.tvu())
|
&& self.check_socket_addr_space(&node.tvu(contact_info::Protocol::UDP))
|
||||||
&& self.check_socket_addr_space(&node.serve_repair())
|
&& self.check_socket_addr_space(&node.serve_repair())
|
||||||
&& match gossip_crds.get::<&LowestSlot>(*node.pubkey()) {
|
&& match gossip_crds.get::<&LowestSlot>(*node.pubkey()) {
|
||||||
None => true, // fallback to legacy behavior
|
None => true, // fallback to legacy behavior
|
||||||
|
@ -1361,7 +1362,7 @@ impl ClusterInfo {
|
||||||
![
|
![
|
||||||
node.tpu(contact_info::Protocol::UDP),
|
node.tpu(contact_info::Protocol::UDP),
|
||||||
node.gossip(),
|
node.gossip(),
|
||||||
node.tvu(),
|
node.tvu(contact_info::Protocol::UDP),
|
||||||
]
|
]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.all(|addr| {
|
.all(|addr| {
|
||||||
|
|
|
@ -34,8 +34,9 @@ const SOCKET_TAG_TPU_QUIC: u8 = 8;
|
||||||
const SOCKET_TAG_TPU_VOTE: u8 = 9;
|
const SOCKET_TAG_TPU_VOTE: u8 = 9;
|
||||||
const SOCKET_TAG_TVU: u8 = 10;
|
const SOCKET_TAG_TVU: u8 = 10;
|
||||||
const SOCKET_TAG_TVU_FORWARDS: u8 = 11;
|
const SOCKET_TAG_TVU_FORWARDS: u8 = 11;
|
||||||
const_assert_eq!(SOCKET_CACHE_SIZE, 12);
|
const SOCKET_TAG_TVU_QUIC: u8 = 12;
|
||||||
const SOCKET_CACHE_SIZE: usize = SOCKET_TAG_TVU_FORWARDS as usize + 1usize;
|
const_assert_eq!(SOCKET_CACHE_SIZE, 13);
|
||||||
|
const SOCKET_CACHE_SIZE: usize = SOCKET_TAG_TVU_QUIC as usize + 1usize;
|
||||||
|
|
||||||
#[derive(Debug, Error)]
|
#[derive(Debug, Error)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
@ -223,7 +224,7 @@ impl ContactInfo {
|
||||||
SOCKET_TAG_TPU_FORWARDS_QUIC
|
SOCKET_TAG_TPU_FORWARDS_QUIC
|
||||||
);
|
);
|
||||||
get_socket!(tpu_vote, SOCKET_TAG_TPU_VOTE);
|
get_socket!(tpu_vote, SOCKET_TAG_TPU_VOTE);
|
||||||
get_socket!(tvu, SOCKET_TAG_TVU);
|
get_socket!(tvu, SOCKET_TAG_TVU, SOCKET_TAG_TVU_QUIC);
|
||||||
get_socket!(tvu_forwards, SOCKET_TAG_TVU_FORWARDS);
|
get_socket!(tvu_forwards, SOCKET_TAG_TVU_FORWARDS);
|
||||||
|
|
||||||
set_socket!(set_gossip, SOCKET_TAG_GOSSIP);
|
set_socket!(set_gossip, SOCKET_TAG_GOSSIP);
|
||||||
|
@ -238,7 +239,7 @@ impl ContactInfo {
|
||||||
SOCKET_TAG_TPU_FORWARDS_QUIC
|
SOCKET_TAG_TPU_FORWARDS_QUIC
|
||||||
);
|
);
|
||||||
set_socket!(set_tpu_vote, SOCKET_TAG_TPU_VOTE);
|
set_socket!(set_tpu_vote, SOCKET_TAG_TPU_VOTE);
|
||||||
set_socket!(set_tvu, SOCKET_TAG_TVU);
|
set_socket!(set_tvu, SOCKET_TAG_TVU, SOCKET_TAG_TVU_QUIC);
|
||||||
set_socket!(set_tvu_forwards, SOCKET_TAG_TVU_FORWARDS);
|
set_socket!(set_tvu_forwards, SOCKET_TAG_TVU_FORWARDS);
|
||||||
|
|
||||||
remove_socket!(remove_serve_repair, SOCKET_TAG_SERVE_REPAIR);
|
remove_socket!(remove_serve_repair, SOCKET_TAG_SERVE_REPAIR);
|
||||||
|
@ -248,7 +249,7 @@ impl ContactInfo {
|
||||||
SOCKET_TAG_TPU_FORWARDS,
|
SOCKET_TAG_TPU_FORWARDS,
|
||||||
SOCKET_TAG_TPU_FORWARDS_QUIC
|
SOCKET_TAG_TPU_FORWARDS_QUIC
|
||||||
);
|
);
|
||||||
remove_socket!(remove_tvu, SOCKET_TAG_TVU);
|
remove_socket!(remove_tvu, SOCKET_TAG_TVU, SOCKET_TAG_TVU_QUIC);
|
||||||
remove_socket!(remove_tvu_forwards, SOCKET_TAG_TVU_FORWARDS);
|
remove_socket!(remove_tvu_forwards, SOCKET_TAG_TVU_FORWARDS);
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -740,7 +741,14 @@ mod tests {
|
||||||
node.tpu_vote().ok().as_ref(),
|
node.tpu_vote().ok().as_ref(),
|
||||||
sockets.get(&SOCKET_TAG_TPU_VOTE)
|
sockets.get(&SOCKET_TAG_TPU_VOTE)
|
||||||
);
|
);
|
||||||
assert_eq!(node.tvu().ok().as_ref(), sockets.get(&SOCKET_TAG_TVU));
|
assert_eq!(
|
||||||
|
node.tvu(Protocol::UDP).ok().as_ref(),
|
||||||
|
sockets.get(&SOCKET_TAG_TVU)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
node.tvu(Protocol::QUIC).ok().as_ref(),
|
||||||
|
sockets.get(&SOCKET_TAG_TVU_QUIC)
|
||||||
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
node.tvu_forwards().ok().as_ref(),
|
node.tvu_forwards().ok().as_ref(),
|
||||||
sockets.get(&SOCKET_TAG_TVU_FORWARDS)
|
sockets.get(&SOCKET_TAG_TVU_FORWARDS)
|
||||||
|
@ -827,7 +835,14 @@ mod tests {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
assert_eq!(old.tpu_vote().unwrap(), node.tpu_vote().unwrap());
|
assert_eq!(old.tpu_vote().unwrap(), node.tpu_vote().unwrap());
|
||||||
assert_eq!(old.tvu().unwrap(), node.tvu().unwrap());
|
assert_eq!(
|
||||||
|
old.tvu(Protocol::QUIC).unwrap(),
|
||||||
|
node.tvu(Protocol::QUIC).unwrap()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
old.tvu(Protocol::UDP).unwrap(),
|
||||||
|
node.tvu(Protocol::UDP).unwrap()
|
||||||
|
);
|
||||||
assert_eq!(old.tvu_forwards().unwrap(), node.tvu_forwards().unwrap());
|
assert_eq!(old.tvu_forwards().unwrap(), node.tvu_forwards().unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -195,7 +195,7 @@ impl LegacyContactInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
get_socket!(gossip);
|
get_socket!(gossip);
|
||||||
get_socket!(tvu);
|
get_socket!(@quic tvu);
|
||||||
get_socket!(tvu_forwards);
|
get_socket!(tvu_forwards);
|
||||||
get_socket!(repair);
|
get_socket!(repair);
|
||||||
get_socket!(@quic tpu);
|
get_socket!(@quic tpu);
|
||||||
|
@ -263,7 +263,7 @@ impl TryFrom<&ContactInfo> for LegacyContactInfo {
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
id: *node.pubkey(),
|
id: *node.pubkey(),
|
||||||
gossip: unwrap_socket!(gossip),
|
gossip: unwrap_socket!(gossip),
|
||||||
tvu: unwrap_socket!(tvu),
|
tvu: unwrap_socket!(tvu, Protocol::UDP),
|
||||||
tvu_forwards: unwrap_socket!(tvu_forwards),
|
tvu_forwards: unwrap_socket!(tvu_forwards),
|
||||||
repair: unwrap_socket!(repair),
|
repair: unwrap_socket!(repair),
|
||||||
tpu: unwrap_socket!(tpu, Protocol::UDP),
|
tpu: unwrap_socket!(tpu, Protocol::UDP),
|
||||||
|
|
|
@ -6,9 +6,9 @@ use {
|
||||||
rayon::iter::*,
|
rayon::iter::*,
|
||||||
solana_gossip::{
|
solana_gossip::{
|
||||||
cluster_info::{ClusterInfo, Node},
|
cluster_info::{ClusterInfo, Node},
|
||||||
|
contact_info::{LegacyContactInfo as ContactInfo, Protocol},
|
||||||
crds::Cursor,
|
crds::Cursor,
|
||||||
gossip_service::GossipService,
|
gossip_service::GossipService,
|
||||||
legacy_contact_info::LegacyContactInfo as ContactInfo,
|
|
||||||
},
|
},
|
||||||
solana_perf::packet::Packet,
|
solana_perf::packet::Packet,
|
||||||
solana_runtime::bank_forks::BankForks,
|
solana_runtime::bank_forks::BankForks,
|
||||||
|
@ -136,7 +136,7 @@ fn retransmit_to(
|
||||||
} else {
|
} else {
|
||||||
peers
|
peers
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|peer| peer.tvu().ok())
|
.filter_map(|peer| peer.tvu(Protocol::UDP).ok())
|
||||||
.filter(|addr| socket_addr_space.check(addr))
|
.filter(|addr| socket_addr_space.check(addr))
|
||||||
.collect()
|
.collect()
|
||||||
};
|
};
|
||||||
|
|
|
@ -105,7 +105,7 @@ impl From<ContactInfo> for AdminRpcContactInfo {
|
||||||
id: node.pubkey().to_string(),
|
id: node.pubkey().to_string(),
|
||||||
last_updated_timestamp: node.wallclock(),
|
last_updated_timestamp: node.wallclock(),
|
||||||
gossip: unwrap_socket!(gossip),
|
gossip: unwrap_socket!(gossip),
|
||||||
tvu: unwrap_socket!(tvu),
|
tvu: unwrap_socket!(tvu, Protocol::UDP),
|
||||||
tvu_forwards: unwrap_socket!(tvu_forwards),
|
tvu_forwards: unwrap_socket!(tvu_forwards),
|
||||||
repair: unwrap_socket!(repair),
|
repair: unwrap_socket!(repair),
|
||||||
tpu: unwrap_socket!(tpu, Protocol::UDP),
|
tpu: unwrap_socket!(tpu, Protocol::UDP),
|
||||||
|
|
|
@ -95,7 +95,7 @@ fn verify_reachable_ports(
|
||||||
if verify_address(&node.info.tpu_vote().ok()) {
|
if verify_address(&node.info.tpu_vote().ok()) {
|
||||||
udp_sockets.extend(node.sockets.tpu_vote.iter());
|
udp_sockets.extend(node.sockets.tpu_vote.iter());
|
||||||
}
|
}
|
||||||
if verify_address(&node.info.tvu().ok()) {
|
if verify_address(&node.info.tvu(Protocol::UDP).ok()) {
|
||||||
udp_sockets.extend(node.sockets.tvu.iter());
|
udp_sockets.extend(node.sockets.tvu.iter());
|
||||||
udp_sockets.extend(node.sockets.broadcast.iter());
|
udp_sockets.extend(node.sockets.broadcast.iter());
|
||||||
udp_sockets.extend(node.sockets.retransmit_sockets.iter());
|
udp_sockets.extend(node.sockets.retransmit_sockets.iter());
|
||||||
|
|
Loading…
Reference in New Issue