diff --git a/src/endian.rs b/src/endian.rs new file mode 100644 index 0000000..5f6e9bf --- /dev/null +++ b/src/endian.rs @@ -0,0 +1,27 @@ +pub trait ToNativeEndian { + fn to_ne(self) -> Self; +} + +impl ToNativeEndian for u32 { + #[cfg(target_endian = "big")] + fn to_ne(self) -> Self { + self.to_be() + } + + #[cfg(target_endian = "little")] + fn to_ne(self) -> Self { + self.to_le() + } +} + +impl ToNativeEndian for u64 { + #[cfg(target_endian = "big")] + fn to_ne(self) -> Self { + self.to_be() + } + + #[cfg(target_endian = "little")] + fn to_ne(self) -> Self { + self.to_le() + } +} diff --git a/src/pinger_icmp_ts.rs b/src/pinger_icmp_ts.rs index 1d267ba..fe24385 100644 --- a/src/pinger_icmp_ts.rs +++ b/src/pinger_icmp_ts.rs @@ -1,5 +1,6 @@ use std::net::IpAddr; +use crate::endian::ToNativeEndian; use crate::pinger::{PingError, PingListener, PingReply, PingSender}; use crate::utils::Utils; use etherparse::icmpv4::TimestampMessage; @@ -30,9 +31,9 @@ impl PingListener for PingerICMPTimestampListener { let time_since_midnight: i64 = (time_now.tv_sec() as i64 % 86400 * 1000) + (time_now.tv_nsec() as i64 / 1000000); - let originate_timestamp = Utils::to_ne(reply.originate_timestamp); - let receive_timestamp = Utils::to_ne(reply.receive_timestamp); - let transmit_timestamp = Utils::to_ne(reply.transmit_timestamp); + let originate_timestamp = reply.originate_timestamp.to_ne(); + let receive_timestamp = reply.receive_timestamp.to_ne(); + let transmit_timestamp = reply.transmit_timestamp.to_ne(); let rtt: i64 = time_since_midnight - originate_timestamp as i64; let dl_time: i64 = time_since_midnight - transmit_timestamp as i64; diff --git a/src/utils.rs b/src/utils.rs index 8a77df3..7bd013b 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -21,14 +21,4 @@ impl Utils { let time = clock_gettime(ClockId::CLOCK_MONOTONIC)?; Ok((time.tv_sec() as f64, time.tv_nsec() as f64)) } - - #[cfg(target_endian = "big")] - pub fn to_ne(val: u64) -> u64 { - val.to_be() - } - - #[cfg(target_endian = "little")] - pub fn to_ne(val: u32) -> u32 { - val.to_le() - } }