1use std::{error::Error, net::IpAddr};
2
3#[cfg(test)]
4mod tests;
5
6const DEFAULT_ADDRESS: IpAddr = IpAddr::V4(std::net::Ipv4Addr::new(8, 8, 8, 8));
7const DEFAULT_PAYLOAD: &[u8] = &[0; 8];
8
9pub async fn ping(
10 address: Option<IpAddr>,
11 payload: Option<&[u8]>,
12) -> Result<(surge_ping::IcmpPacket, std::time::Duration), Box<dyn Error>> {
13 let address = address.unwrap_or(DEFAULT_ADDRESS);
14 let payload = payload.unwrap_or(DEFAULT_PAYLOAD);
15
16 let pinged = surge_ping::ping(address, payload).await;
17
18 match pinged {
19 Ok(pinged) => {
20 Ok(pinged)
22 }
23 Err(e) => {
24 Err(Box::new(e))
26 }
27 }
28}