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