summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEduardo Broto <ebroto@tutanota.com>2019-11-20 21:57:33 +0100
committerEduardo Broto <ebroto@tutanota.com>2019-11-30 20:41:12 +0100
commit375d4698e0c86cb9c00ce45b88a64a86b30029c4 (patch)
tree707b74d6551148894b19b3dcb11dbf78395e09b8 /src
parentc5d683078d0bb8727d26db6ce5e5563580d7f9d3 (diff)
feat(dns): resolve hostnames asynchronously
Diffstat (limited to 'src')
-rw-r--r--src/main.rs70
-rw-r--r--src/network/dns/client.rs80
-rw-r--r--src/network/dns/mod.rs9
-rw-r--r--src/network/dns/resolver.rs36
-rw-r--r--src/network/dns_queue.rs41
-rw-r--r--src/network/mod.rs3
-rw-r--r--src/os/shared.rs19
-rw-r--r--src/tests/cases/raw_mode.rs50
-rw-r--r--src/tests/cases/ui.rs78
-rw-r--r--src/tests/fakes/fake_input.rs43
10 files changed, 251 insertions, 178 deletions
diff --git a/src/main.rs b/src/main.rs
index 7626615..d499432 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -5,9 +5,10 @@ mod os;
mod tests;
use display::{RawTerminalBackend, Ui};
-use network::{Connection, DnsQueue, Sniffer, Utilization};
-
-use ::std::net::IpAddr;
+use network::{
+ dns::{self, IpTable},
+ Connection, Sniffer, Utilization,
+};
use ::pnet::datalink::{DataLinkReceiver, NetworkInterface};
use ::std::collections::HashMap;
@@ -54,7 +55,7 @@ fn try_main() -> Result<(), failure::Error> {
use os::get_input;
let opts = Opt::from_args();
- let os_input = get_input(&opts.interface)?;
+ let os_input = get_input(&opts.interface, !opts.no_resolve)?;
let raw_mode = opts.raw;
if raw_mode {
let terminal_backend = RawTerminalBackend {};
@@ -69,7 +70,7 @@ fn try_main() -> Result<(), failure::Error> {
"Failed to get stdout: 'what' does not (yet) support piping, is it being piped?"
),
}
- };
+ }
Ok(())
}
@@ -78,7 +79,7 @@ pub struct OsInputOutput {
pub network_frames: Box<dyn DataLinkReceiver>,
pub get_open_sockets: fn() -> HashMap<Connection, String>,
pub keyboard_events: Box<dyn Iterator<Item = Event> + Send>,
- pub lookup_addr: Box<dyn Fn(&IpAddr) -> Option<String> + Send>,
+ pub dns_client: Option<dns::Client>,
pub on_winch: Box<dyn Fn(Box<dyn Fn()>) + Send>,
pub cleanup: Box<dyn Fn() + Send>,
pub write_to_stdout: Box<dyn FnMut(String) + Send>,
@@ -94,46 +95,17 @@ where
let keyboard_events = os_input.keyboard_events;
let get_open_sockets = os_input.get_open_sockets;
- let lookup_addr = os_input.lookup_addr;
let mut write_to_stdout = os_input.write_to_stdout;
+ let mut dns_client = os_input.dns_client;
let on_winch = os_input.on_winch;
let cleanup = os_input.cleanup;
let raw_mode = opts.raw;
- let no_resolve = opts.no_resolve;
let mut sniffer = Sniffer::new(os_input.network_interface, os_input.network_frames);
let network_utilization = Arc::new(Mutex::new(Utilization::new()));
let ui = Arc::new(Mutex::new(Ui::new(terminal_backend)));
- let dns_queue = if no_resolve {
- Arc::new(None)
- } else {
- Arc::new(Some(DnsQueue::new()))
- };
- let ip_to_host = Arc::new(Mutex::new(HashMap::new()));
-
- if !no_resolve {
- active_threads.push(
- thread::Builder::new()
- .name("dns_resolver".to_string())
- .spawn({
- let dns_queue = dns_queue.clone();
- let ip_to_host = ip_to_host.clone();
- move || {
- if let Some(dns_queue) = Option::as_ref(&dns_queue) {
- while let Some(ip) = dns_queue.wait_for_job() {
- if let Some(addr) = lookup_addr(&IpAddr::V4(ip)) {
- ip_to_host.lock().unwrap().insert(ip, addr);
- }
- }
- }
- }
- })
- .unwrap(),
- );
- }
-
if !raw_mode {
active_threads.push(
thread::Builder::new()
@@ -158,25 +130,22 @@ where
.spawn({
let running = running.clone();
let network_utilization = network_utilization.clone();
- let ip_to_host = ip_to_host.clone();
- let dns_queue = dns_queue.clone();
let ui = ui.clone();
move || {
while running.load(Ordering::Acquire) {
let render_start_time = Instant::now();
let utilization = { network_utilization.lock().unwrap().clone_and_reset() };
let connections_to_procs = get_open_sockets();
- let ip_to_host = { ip_to_host.lock().unwrap().clone() };
- let mut unresolved_ips = Vec::new();
- for connection in connections_to_procs.keys() {
- if !ip_to_host.contains_key(&connection.remote_socket.ip) {
- unresolved_ips.push(connection.remote_socket.ip);
- }
- }
- if let Some(dns_queue) = Option::as_ref(&dns_queue) {
- if !unresolved_ips.is_empty() {
- dns_queue.resolve_ips(unresolved_ips);
- }
+ let mut ip_to_host = IpTable::new();
+ if let Some(dns_client) = dns_client.as_mut() {
+ ip_to_host = dns_client.cache();
+ let unresolved_ips = connections_to_procs
+ .keys()
+ .filter(|conn| !ip_to_host.contains_key(&conn.remote_socket.ip))
+ .map(|conn| conn.remote_socket.ip)
+ .collect::<Vec<_>>();
+
+ dns_client.resolve(unresolved_ips);
}
{
let mut ui = ui.lock().unwrap();
@@ -194,9 +163,6 @@ where
let mut ui = ui.lock().unwrap();
ui.end();
}
- if let Some(dns_queue) = Option::as_ref(&dns_queue) {
- dns_queue.end();
- }
}
})
.unwrap();
diff --git a/src/network/dns/client.rs b/src/network/dns/client.rs
new file mode 100644
index 0000000..bf479d4
--- /dev/null
+++ b/src/network/dns/client.rs
@@ -0,0 +1,80 @@
+use crate::network::dns::{resolver::Lookup, IpTable};
+use std::{
+ future::Future,
+ net::Ipv4Addr,
+ sync::{Arc, Mutex},
+ thread::{Builder, JoinHandle},
+};
+use tokio::{
+ runtime::Runtime,
+ sync::mpsc::{self, Sender},
+};
+
+const CHANNEL_SIZE: usize = 1_000;
+
+pub struct Client {
+ cache: Arc<Mutex<IpTable>>,
+ tx: Option<Sender<Vec<Ipv4Addr>>>,
+ handle: Option<JoinHandle<()>>,
+}
+
+impl Client {
+ pub fn new<R, B>(resolver: R, background: B) -> Result<Self, failure::Error>
+ where
+ R: Lookup + Send + Sync + 'static,
+ B: Future<Output = ()> + Send + 'static,
+ {
+ let cache = Arc::new(Mutex::new(IpTable::new()));
+ let mut runtime = Runtime::new()?;
+ let (tx, mut rx) = mpsc::channel::<Vec<Ipv4Addr>>(CHANNEL_SIZE);
+
+ let handle = Builder::new().name("resolver".into()).spawn({
+ let cache = cache.clone();
+ move || {
+ runtime.block_on(async {
+ let resolver = Arc::new(resolver);
+ tokio::spawn(background);
+
+ while let Some(ips) = rx.recv().await {
+ for ip in ips {
+ tokio::spawn({
+ let resolver = resolver.clone();
+ let cache = cache.clone();
+ async move {
+ if let Some(name) = resolver.lookup(ip).await {
+ let mut cache = cache.lock().unwrap();
+ cache.insert(ip, name);
+ }
+ }
+ });
+ }
+ }
+ });
+ }
+ })?;
+
+ Ok(Self {
+ cache,
+ tx: Some(tx),
+ handle: Some(handle),
+ })
+ }
+
+ pub fn resolve(&mut self, ips: Vec<Ipv4Addr>) {
+ // Discard the message if the channel is full; it will be retried eventually.
+ let _ = self.tx.as_mut().unwrap().try_send(ips);
+ }
+
+ pub fn cache(&mut self) -> IpTable {
+ let cache = self.cache.lock().unwrap();
+ cache.clone()
+ }
+}
+
+impl Drop for Client {
+ fn drop(&mut self) {
+ // Do the Option dance to be able to drop the sender so that the receiver finishes and the thread can be joined.
+ drop(self.tx.take().unwrap());
+ self.handle.take().unwrap().join().unwrap();
+ }
+}
diff --git a/src/network/dns/mod.rs b/src/network/dns/mod.rs
new file mode 100644
index 0000000..be1464e
--- /dev/null
+++ b/src/network/dns/mod.rs
@@ -0,0 +1,9 @@
+use std::{collections::HashMap, net::Ipv4Addr};
+
+mod client;
+mod resolver;
+
+pub use client::*;
+pub use resolver::*;
+
+pub type IpTable = HashMap<Ipv4Addr, String>;
diff --git a/src/network/dns/resolver.rs b/src/network/dns/resolver.rs
new file mode 100644
index 0000000..69f6308
--- /dev/null
+++ b/src/network/dns/resolver.rs
@@ -0,0 +1,36 @@
+use async_trait::async_trait;
+use std::{future::Future, net::Ipv4Addr};
+use trust_dns_resolver::{error::ResolveErrorKind, AsyncResolver};
+
+#[async_trait]
+pub trait Lookup {
+ async fn lookup(&self, ip: Ipv4Addr) -> Option<String>;
+}
+
+pub struct Resolver(AsyncResolver);
+
+impl Resolver {
+ pub fn new() -> Result<(Self, impl Future<Output = ()>), failure::Error> {
+ let (resolver, background) = AsyncResolver::from_system_conf()?;
+ Ok((Self(resolver), background))
+ }
+}
+
+#[async_trait]
+impl Lookup for Resolver {
+ async fn lookup(&self, ip: Ipv4Addr) -> Option<String> {
+ let lookup_future = self.0.reverse_lookup(ip.into());
+ match lookup_future.await {
+ Ok(names) => {
+ // Take the first result and convert it to a string
+ names.into_iter().next().map(|name| name.to_string())
+ }
+ Err(e) => match e.kind() {
+ // If the IP is not associated with a hostname, store the IP
+ // so that we don't retry indefinitely
+ ResolveErrorKind::NoRecordsFound { .. } => Some(ip.to_string()),
+ _ => None,
+ },
+ }
+ }
+}
diff --git a/src/network/dns_queue.rs b/src/network/dns_queue.rs
deleted file mode 100644
index 0110df2..0000000
--- a/src/network/dns_queue.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-use ::std::collections::VecDeque;
-use ::std::net::Ipv4Addr;
-use ::std::sync::{Condvar, Mutex};
-
-pub struct DnsQueue {
- jobs: Mutex<Option<VecDeque<Ipv4Addr>>>,
- cvar: Condvar,
-}
-
-impl DnsQueue {
- pub fn new() -> Self {
- DnsQueue {
- jobs: Mutex::new(Some(VecDeque::new())),
- cvar: Condvar::new(),
- }
- }
-}
-
-impl DnsQueue {
- pub fn resolve_ips(&self, unresolved_ips: Vec<Ipv4Addr>) {
- let mut jobs = self.jobs.lock().unwrap();
- if let Some(queue) = jobs.as_mut() {
- queue.extend(unresolved_ips);
- self.cvar.notify_all();
- }
- }
- pub fn wait_for_job(&self) -> Option<Ipv4Addr> {
- let mut jobs = self.jobs.lock().unwrap();
- loop {
- match jobs.as_mut()?.pop_front() {
- Some(job) => return Some(job),
- None => jobs = self.cvar.wait(jobs).unwrap(),
- }
- }
- }
- pub fn end(&self) {
- let mut jobs = self.jobs.lock().unwrap();
- *jobs = None;
- self.cvar.notify_all();
- }
-}
diff --git a/src/network/mod.rs b/src/network/mod.rs
index 033414b..725a58b 100644
--- a/src/network/mod.rs
+++ b/src/network/mod.rs
@@ -1,9 +1,8 @@
mod connection;
-mod dns_queue;
+pub mod dns;
mod sniffer;
mod utilization;
pub use connection::*;
-pub use dns_queue::*;
pub use sniffer::*;
pub use utilization::*;
diff --git a/src/os/shared.rs b/src/os/shared.rs
index 1149725..313b941 100644
--- a/src/os/shared.rs
+++ b/src/os/shared.rs
@@ -5,7 +5,6 @@ use ::std::io::{self, stdin, Write};
use ::termion::event::Event;
use ::termion::input::TermRead;
-use ::std::net::IpAddr;
use ::std::time;
use signal_hook::iterator::Signals;
@@ -14,7 +13,7 @@ use signal_hook::iterator::Signals;
use crate::os::linux::get_open_sockets;
#[cfg(target_os = "macos")]
use crate::os::macos::get_open_sockets;
-use crate::OsInputOutput;
+use crate::{network::dns, OsInputOutput};
pub struct KeyboardEvents;
@@ -46,10 +45,6 @@ fn get_interface(interface_name: &str) -> Option<NetworkInterface> {
.find(|iface| iface.name == interface_name)
}
-fn lookup_addr(ip: &IpAddr) -> Option<String> {
- ::dns_lookup::lookup_addr(ip).ok()
-}
-
fn sigwinch() -> (Box<dyn Fn(Box<dyn Fn()>) + Send>, Box<dyn Fn() + Send>) {
let signals = Signals::new(&[signal_hook::SIGWINCH]).unwrap();
let on_winch = {
@@ -78,7 +73,7 @@ fn create_write_to_stdout() -> Box<dyn FnMut(String) + Send> {
})
}
-pub fn get_input(interface_name: &str) -> Result<OsInputOutput, failure::Error> {
+pub fn get_input(interface_name: &str, resolve: bool) -> Result<OsInputOutput, failure::Error> {
let keyboard_events = Box::new(KeyboardEvents);
let network_interface = match get_interface(interface_name) {
Some(interface) => interface,
@@ -87,16 +82,22 @@ pub fn get_input(interface_name: &str) -> Result<OsInputOutput, failure::Error>
}
};
let network_frames = get_datalink_channel(&network_interface)?;
- let lookup_addr = Box::new(lookup_addr);
let write_to_stdout = create_write_to_stdout();
let (on_winch, cleanup) = sigwinch();
+ let dns_client = if resolve {
+ let (resolver, background) = dns::Resolver::new()?;
+ let dns_client = dns::Client::new(resolver, background)?;
+ Some(dns_client)
+ } else {
+ None
+ };
Ok(OsInputOutput {
network_interface,
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
diff --git a/src/tests/cases/raw_mode.rs b/src/tests/cases/raw_mode.rs
index 3658f28..26a1801 100644
--- a/src/tests/cases/raw_mode.rs
+++ b/src/tests/cases/raw_mode.rs
@@ -1,5 +1,5 @@
use crate::tests::fakes::{
- create_fake_lookup_addr, create_fake_on_winch, get_interface, get_open_sockets, KeyboardEvents,
+ create_fake_dns_client, create_fake_on_winch, get_interface, get_open_sockets, KeyboardEvents,
NetworkFrames, TestBackend,
};
@@ -85,7 +85,7 @@ fn one_packet_of_traffic() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -102,7 +102,7 @@ fn one_packet_of_traffic() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -154,7 +154,7 @@ fn bi_directional_traffic() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -171,7 +171,7 @@ fn bi_directional_traffic() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -225,7 +225,7 @@ fn multiple_packets_of_traffic_from_different_connections() {
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let stdout = Arc::new(Mutex::new(Vec::new()));
let write_to_stdout = Box::new({
let stdout = stdout.clone();
@@ -242,7 +242,7 @@ fn multiple_packets_of_traffic_from_different_connections() {
on_winch,
cleanup,
keyboard_events,
- lookup_addr,
+ dns_client,
write_to_stdout,
};
let opts = Opt {
@@ -292,7 +292,7 @@ fn multiple_packets_of_traffic_from_single_connection() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -309,7 +309,7 @@ fn multiple_packets_of_traffic_from_single_connection() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -361,7 +361,7 @@ fn one_process_with_multiple_connections() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -378,7 +378,7 @@ fn one_process_with_multiple_connections() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -444,7 +444,7 @@ fn multiple_processes_with_multiple_connections() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -461,7 +461,7 @@ fn multiple_processes_with_multiple_connections() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -513,7 +513,7 @@ fn multiple_connections_from_remote_address() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -530,7 +530,7 @@ fn multiple_connections_from_remote_address() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -584,7 +584,7 @@ fn sustained_traffic_from_one_process() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -601,7 +601,7 @@ fn sustained_traffic_from_one_process() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -669,7 +669,7 @@ fn sustained_traffic_from_multiple_processes() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -686,7 +686,7 @@ fn sustained_traffic_from_multiple_processes() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -782,7 +782,7 @@ fn sustained_traffic_from_multiple_processes_bi_directional() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -799,7 +799,7 @@ fn sustained_traffic_from_multiple_processes_bi_directional() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -908,7 +908,7 @@ fn traffic_with_host_names() {
IpAddr::V4("10.0.0.2".parse().unwrap()),
String::from("i-like-cheese.com"),
);
- let lookup_addr = create_fake_lookup_addr(ips_to_hostnames);
+ let dns_client = create_fake_dns_client(ips_to_hostnames);
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -925,7 +925,7 @@ fn traffic_with_host_names() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -1034,7 +1034,7 @@ fn no_resolve_mode() {
IpAddr::V4("10.0.0.2".parse().unwrap()),
String::from("i-like-cheese.com"),
);
- let lookup_addr = create_fake_lookup_addr(ips_to_hostnames);
+ let dns_client = None;
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let stdout = Arc::new(Mutex::new(Vec::new()));
@@ -1051,7 +1051,7 @@ fn no_resolve_mode() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
diff --git a/src/tests/cases/ui.rs b/src/tests/cases/ui.rs
index 4b81f87..f2f5374 100644
--- a/src/tests/cases/ui.rs
+++ b/src/tests/cases/ui.rs
@@ -1,6 +1,6 @@
use crate::tests::fakes::TerminalEvent::*;
use crate::tests::fakes::{
- create_fake_lookup_addr, create_fake_on_winch, get_interface, get_open_sockets, KeyboardEvents,
+ create_fake_dns_client, create_fake_on_winch, get_interface, get_open_sockets, KeyboardEvents,
NetworkFrames, TestBackend,
};
@@ -71,7 +71,7 @@ fn basic_startup() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -81,7 +81,7 @@ fn basic_startup() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -130,7 +130,7 @@ fn one_packet_of_traffic() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -140,7 +140,7 @@ fn one_packet_of_traffic() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -201,7 +201,7 @@ fn bi_directional_traffic() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let write_to_stdout = Box::new({ move |_output: String| {} });
let cleanup = Box::new(|| {});
@@ -211,7 +211,7 @@ fn bi_directional_traffic() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -274,7 +274,7 @@ fn multiple_packets_of_traffic_from_different_connections() {
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let write_to_stdout = Box::new({ move |_output: String| {} });
let os_input = OsInputOutput {
@@ -284,7 +284,7 @@ fn multiple_packets_of_traffic_from_different_connections() {
on_winch,
cleanup,
keyboard_events,
- lookup_addr,
+ dns_client,
write_to_stdout,
};
let opts = Opt {
@@ -343,7 +343,7 @@ fn multiple_packets_of_traffic_from_single_connection() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -353,7 +353,7 @@ fn multiple_packets_of_traffic_from_single_connection() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -414,7 +414,7 @@ fn one_process_with_multiple_connections() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -424,7 +424,7 @@ fn one_process_with_multiple_connections() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -499,7 +499,7 @@ fn multiple_processes_with_multiple_connections() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -509,7 +509,7 @@ fn multiple_processes_with_multiple_connections() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -570,7 +570,7 @@ fn multiple_connections_from_remote_address() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -580,7 +580,7 @@ fn multiple_connections_from_remote_address() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -643,7 +643,7 @@ fn sustained_traffic_from_one_process() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -653,7 +653,7 @@ fn sustained_traffic_from_one_process() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -730,7 +730,7 @@ fn sustained_traffic_from_multiple_processes() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -740,7 +740,7 @@ fn sustained_traffic_from_multiple_processes() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -845,7 +845,7 @@ fn sustained_traffic_from_multiple_processes_bi_directional() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -855,7 +855,7 @@ fn sustained_traffic_from_multiple_processes_bi_directional() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -973,7 +973,7 @@ fn traffic_with_host_names() {
IpAddr::V4("10.0.0.2".parse().unwrap()),
String::from("i-like-cheese.com"),
);
- let lookup_addr = create_fake_lookup_addr(ips_to_hostnames);
+ let dns_client = create_fake_dns_client(ips_to_hostnames);
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -983,7 +983,7 @@ fn traffic_with_host_names() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -1101,7 +1101,7 @@ fn no_resolve_mode() {
IpAddr::V4("10.0.0.2".parse().unwrap()),
String::from("i-like-cheese.com"),
);
- let lookup_addr = create_fake_lookup_addr(ips_to_hostnames);
+ let dns_client = None;
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -1111,7 +1111,7 @@ fn no_resolve_mode() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -1163,7 +1163,7 @@ fn traffic_with_winch_event() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(true);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -1173,7 +1173,7 @@ fn traffic_with_winch_event() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -1249,7 +1249,7 @@ fn layout_full_width_under_30_height() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);
let cleanup = Box::new(|| {});
let write_to_stdout = Box::new({ move |_output: String| {} });
@@ -1259,7 +1259,7 @@ fn layout_full_width_under_30_height() {
network_frames,
get_open_sockets,
keyboard_events,
- lookup_addr,
+ dns_client,
on_winch,
cleanup,
write_to_stdout,
@@ -1334,7 +1334,7 @@ fn layout_under_150_width_full_height() {
terminal_height,
);
let network_interface = get_interface();
- let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let dns_client = create_fake_dns_client(HashMap::new());
let on_winch = create_fake_on_winch(false);