From eedc8c7812ebae368ffeea2a773ef201f3c92a7f Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Fri, 14 Dec 2018 17:14:49 -0800 Subject: [PATCH] Move src/netutil.rs into its own crate --- Cargo.lock | 17 +++++++++++++++-- Cargo.toml | 3 +-- ci/publish-crate.sh | 1 + netutil/Cargo.toml | 24 ++++++++++++++++++++++++ src/netutil.rs => netutil/src/lib.rs | 6 ++---- src/client.rs | 3 +-- src/cluster_info.rs | 2 +- src/lib.rs | 1 - src/tpu_forwarder.rs | 2 +- 9 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 netutil/Cargo.toml rename src/netutil.rs => netutil/src/lib.rs (99%) diff --git a/Cargo.lock b/Cargo.lock index bbcb4b660a..1d15750699 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1744,13 +1744,11 @@ dependencies = [ "hashbrown 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ipnetwork 0.12.8 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pnet_datalink 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1777,6 +1775,7 @@ dependencies = [ "solana-lualoader 0.11.0", "solana-metrics 0.11.0", "solana-native-loader 0.11.0", + "solana-netutil 0.11.0", "solana-noop 0.11.0", "solana-sdk 0.11.0", "solana-storage-program 0.11.0", @@ -2113,6 +2112,20 @@ dependencies = [ "solana-sdk 0.11.0", ] +[[package]] +name = "solana-netutil" +version = "0.11.0" +dependencies = [ + "ipnetwork 0.12.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pnet_datalink 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)", + "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-logger 0.11.0", +] + [[package]] name = "solana-noop" version = "0.11.0" diff --git a/Cargo.toml b/Cargo.toml index c1089bb9b0..bfe7eb094c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,13 +34,11 @@ dirs = "1.0.2" generic-array = { version = "0.12.0", default-features = false, features = ["serde"] } hex-literal = "0.1.1" indexmap = "1.0" -ipnetwork = "0.12.7" itertools = "0.8.0" libc = "0.2.45" log = "0.4.2" matches = "0.1.6" nix = "0.12.0" -pnet_datalink = "0.21.0" rand = "0.6.1" rand_chacha = "0.1.0" rayon = "1.0.0" @@ -67,6 +65,7 @@ solana-logger = { path = "logger", version = "0.11.0" } solana-lualoader = { path = "programs/native/lua_loader", version = "0.11.0" } solana-metrics = { path = "metrics", version = "0.11.0" } solana-native-loader = { path = "programs/native/native_loader", version = "0.11.0" } +solana-netutil = { path = "netutil", version = "0.11.0" } solana-noop = { path = "programs/native/noop", version = "0.11.0" } solana-sdk = { path = "sdk", version = "0.11.0" } solana-storage-program = { path = "programs/native/storage", version = "0.11.0" } diff --git a/ci/publish-crate.sh b/ci/publish-crate.sh index 383469adba..016a8c715c 100755 --- a/ci/publish-crate.sh +++ b/ci/publish-crate.sh @@ -12,6 +12,7 @@ cd "$(dirname "$0")/.." # CRATES=( logger + netutil sdk keygen metrics diff --git a/netutil/Cargo.toml b/netutil/Cargo.toml new file mode 100644 index 0000000000..c3a8cf5d9e --- /dev/null +++ b/netutil/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "solana-netutil" +version = "0.11.0" +description = "Solana Network Utilities" +authors = ["Solana Maintainers "] +repository = "https://github.com/solana-labs/solana" +license = "Apache-2.0" +homepage = "https://solana.com/" +edition = "2018" + +[dependencies] +log = "0.4.2" +ipnetwork = "0.12.7" +nix = "0.12.0" +pnet_datalink = "0.21.0" +rand = "0.6.1" +reqwest = "0.9.0" +socket2 = "0.3.8" + +[dev-dependencies] +solana-logger = { path = "../logger", version = "0.11.0" } + +[lib] +name = "solana_netutil" diff --git a/src/netutil.rs b/netutil/src/lib.rs similarity index 99% rename from src/netutil.rs rename to netutil/src/lib.rs index a265d1d492..afa5223754 100644 --- a/src/netutil.rs +++ b/netutil/src/lib.rs @@ -1,5 +1,5 @@ //! The `netutil` module assists with networking - +use log::trace; use nix::sys::socket::setsockopt; use nix::sys::socket::sockopt::{ReuseAddr, ReusePort}; use pnet_datalink as datalink; @@ -203,10 +203,8 @@ pub fn find_available_port_in_range(range: (u16, u16)) -> io::Result { #[cfg(test)] mod tests { - - use crate::netutil::*; + use super::*; use ipnetwork::IpNetwork; - use pnet_datalink as datalink; #[test] fn test_find_eth0ish_ip_addr() { diff --git a/src/client.rs b/src/client.rs index 03d281fd6f..015647d583 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,8 +1,7 @@ use crate::cluster_info::{NodeInfo, FULLNODE_PORT_RANGE}; -use crate::netutil::bind_in_range; use crate::thin_client::ThinClient; pub fn mk_client(r: &NodeInfo) -> ThinClient { - let (_, transactions_socket) = bind_in_range(FULLNODE_PORT_RANGE).unwrap(); + let (_, transactions_socket) = solana_netutil::bind_in_range(FULLNODE_PORT_RANGE).unwrap(); ThinClient::new(r.rpc, r.tpu, transactions_socket) } diff --git a/src/cluster_info.rs b/src/cluster_info.rs index 3e33252b60..df0eccf2c2 100644 --- a/src/cluster_info.rs +++ b/src/cluster_info.rs @@ -20,7 +20,6 @@ use crate::crds_gossip_error::CrdsGossipError; use crate::crds_gossip_pull::CRDS_GOSSIP_PULL_CRDS_TIMEOUT_MS; use crate::crds_value::{CrdsValue, CrdsValueLabel, LeaderId}; use crate::db_ledger::{DbLedger, LedgerColumnFamily, MetaCf, DEFAULT_SLOT_HEIGHT}; -use crate::netutil::{bind_in_range, bind_to, find_available_port_in_range, multi_bind_in_range}; use crate::packet::{to_blob, Blob, SharedBlob, BLOB_SIZE}; use crate::result::Result; use crate::rpc::RPC_PORT; @@ -32,6 +31,7 @@ use log::Level; use rand::{thread_rng, Rng}; use rayon::prelude::*; use solana_metrics::{influxdb, submit}; +use solana_netutil::{bind_in_range, bind_to, find_available_port_in_range, multi_bind_in_range}; use solana_sdk::hash::Hash; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{Keypair, KeypairUtil, Signable, Signature}; diff --git a/src/lib.rs b/src/lib.rs index bb688e3e25..0aca97b5c1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -43,7 +43,6 @@ pub mod leader_scheduler; pub mod ledger; pub mod ledger_write_stage; pub mod mint; -pub mod netutil; pub mod packet; pub mod poh; pub mod poh_recorder; diff --git a/src/tpu_forwarder.rs b/src/tpu_forwarder.rs index 7bbd7aae91..aaa9a358d6 100644 --- a/src/tpu_forwarder.rs +++ b/src/tpu_forwarder.rs @@ -107,7 +107,7 @@ mod tests { use super::*; use crate::cluster_info::ClusterInfo; use crate::contact_info::ContactInfo; - use crate::netutil::bind_in_range; + use solana_netutil::bind_in_range; use solana_sdk::pubkey::Pubkey; use std::net::UdpSocket; use std::net::{Ipv4Addr, SocketAddr};