async_traceroute/
lib.rs

1//! **Async Traceroute library/command-line tool**
2//!
3//! # Example 
4//! ```rust
5//! use std::time::Duration;
6//! 
7//! use futures::pin_mut;
8//! use futures_util::StreamExt;
9//! 
10//! use async_traceroute::{dns_lookup_first_ipv4_addr, TracerouteBuilder};
11//! 
12//! #[tokio::main]
13//! async fn main() -> Result<(), String> {
14//!     let ip_addr = match dns_lookup_first_ipv4_addr("google.com").await {
15//!         None => return Err(String::from("Hostname not resolvable")),
16//!         Some(ip_addr) => ip_addr,
17//!     };
18//! 
19//!     let traceroute = TracerouteBuilder::udp()
20//!         .destination_address(ip_addr)
21//!         .max_ttl(15)
22//!         .queries_per_hop(3)
23//!         .max_wait_probe(Duration::from_secs(3))
24//!         .simultaneous_queries(16)
25//!         .active_dns_lookup(true)
26//!         .initial_destination_port(33434)
27//!         .network_interface("eth0")
28//!         .build();
29//! 
30//!     let traceroute_stream = match traceroute {
31//!         Ok(traceroute) => traceroute.trace(),
32//!         Err(error) => return Err(error),
33//!     };
34//! 
35//!     pin_mut!(traceroute_stream);
36//!     while let Some(probe_result) = traceroute_stream.next().await {
37//!         println!("{:?}", probe_result);
38//!     }
39//! 
40//!     Ok(())
41//! }
42//! ```
43
44#[doc(inline)]
45pub use traceroute::builder::TracerouteBuilder;
46#[doc(inline)]
47pub use traceroute::probe::ProbeMethod;
48#[doc(inline)]
49pub use traceroute::terminal::TracerouteTerminal;
50#[doc(inline)]
51pub use traceroute::Traceroute;
52
53
54#[doc(inline)]
55pub use traceroute::utils::dns::dns_lookup_first_ipv4_addr;
56#[doc(inline)]
57pub use traceroute::utils::dns::dns_lookup;
58pub use traceroute::utils::packet_utils::get_interface;
59pub use traceroute::utils::packet_utils::default_interface;
60
61mod traceroute;
62