use crate::cerr;
use super::RawSocket;
impl RawSocket {
pub(crate) fn so_timestamp(&self, options: u32) -> std::io::Result<()> {
unsafe {
cerr(libc::setsockopt(
self.fd,
libc::SOL_SOCKET,
libc::SO_TIMESTAMP,
&options as *const _ as *const libc::c_void,
std::mem::size_of_val(&options) as libc::socklen_t,
))
}?;
if options != 0 {
let clock = libc::SO_TS_REALTIME as u32;
unsafe {
cerr(libc::setsockopt(
self.fd,
libc::SOL_SOCKET,
libc::SO_TS_CLOCK,
&clock as *const _ as *const libc::c_void,
std::mem::size_of_val(&clock) as libc::socklen_t,
))
}?;
}
Ok(())
}
}