Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/backend/libc/net/addr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ impl SocketAddrUnix {
Self {
unix: Self::init(),
#[cfg(not(any(bsd, target_os = "haiku")))]
len: offsetof_sun_path() as _,
len: offsetof_sun_path() as c::socklen_t,
}
}

Expand Down Expand Up @@ -155,11 +155,11 @@ impl SocketAddrUnix {
pub(crate) fn addr_len(&self) -> SocketAddrLen {
#[cfg(not(any(bsd, target_os = "haiku")))]
{
self.len as _
bitcast!(self.len)
}
#[cfg(any(bsd, target_os = "haiku"))]
{
c::socklen_t::from(self.unix.sun_len) as _
bitcast!(c::socklen_t::from(self.unix.sun_len))
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/backend/libc/net/msghdr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ pub(crate) unsafe fn with_msghdr<R>(
addr.with_sockaddr(|addr_ptr, addr_len| {
let mut h = zero_msghdr();
h.msg_name = addr_ptr as *mut _;
h.msg_namelen = addr_len as _;
h.msg_namelen = bitcast!(addr_len);
h.msg_iov = iov.as_ptr() as _;
h.msg_iovlen = msg_iov_len(iov.len());
h.msg_control = control.as_control_ptr().cast();
Expand Down
10 changes: 5 additions & 5 deletions src/backend/libc/net/read_sockaddr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ pub(crate) fn read_sockaddr_v4(addr: &SocketAddrAny) -> Result<SocketAddrV4, Err
if addr.address_family() != AddressFamily::INET {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_in>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_in>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_in>() };
Ok(SocketAddrV4::new(
Ipv4Addr::from(u32::from_be(in_addr_s_addr(decode.sin_addr))),
Expand All @@ -163,7 +163,7 @@ pub(crate) fn read_sockaddr_v6(addr: &SocketAddrAny) -> Result<SocketAddrV6, Err
if addr.address_family() != AddressFamily::INET6 {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_in6>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_in6>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_in6>() };
Ok(SocketAddrV6::new(
Ipv6Addr::from(in6_addr_s6_addr(decode.sin6_addr)),
Expand All @@ -181,7 +181,7 @@ pub(crate) fn read_sockaddr_unix(addr: &SocketAddrAny) -> Result<SocketAddrUnix,
}

let offsetof_sun_path = super::addr::offsetof_sun_path();
let len = addr.len() as usize;
let len = addr.addr_len() as usize;

assert!(len >= offsetof_sun_path);

Expand Down Expand Up @@ -237,7 +237,7 @@ pub(crate) fn read_sockaddr_xdp(addr: &SocketAddrAny) -> Result<SocketAddrXdp, E
if addr.address_family() != AddressFamily::XDP {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_xdp>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_xdp>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_xdp>() };
Ok(SocketAddrXdp::new(
SockaddrXdpFlags::from_bits_retain(decode.sxdp_flags),
Expand All @@ -253,7 +253,7 @@ pub(crate) fn read_sockaddr_netlink(addr: &SocketAddrAny) -> Result<SocketAddrNe
if addr.address_family() != AddressFamily::NETLINK {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_nl>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_nl>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_nl>() };
Ok(SocketAddrNetlink::new(decode.nl_pid, decode.nl_groups))
}
10 changes: 7 additions & 3 deletions src/backend/libc/net/syscalls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ pub(crate) fn sendto(
send_recv_len(buf.len()),
bitflags_bits!(flags),
addr_ptr.cast(),
addr_len as _,
bitcast!(addr_len),
))
})
}
Expand Down Expand Up @@ -135,7 +135,11 @@ pub(crate) fn socket_with(
pub(crate) fn bind(sockfd: BorrowedFd<'_>, addr: &impl SocketAddrArg) -> io::Result<()> {
unsafe {
addr.with_sockaddr(|addr_ptr, addr_len| {
ret(c::bind(borrowed_fd(sockfd), addr_ptr.cast(), addr_len as _))
ret(c::bind(
borrowed_fd(sockfd),
addr_ptr.cast(),
bitcast!(addr_len),
))
})
}
}
Expand All @@ -146,7 +150,7 @@ pub(crate) fn connect(sockfd: BorrowedFd<'_>, addr: &impl SocketAddrArg) -> io::
ret(c::connect(
borrowed_fd(sockfd),
addr_ptr.cast(),
addr_len as _,
bitcast!(addr_len),
))
})
}
Expand Down
6 changes: 3 additions & 3 deletions src/backend/linux_raw/net/addr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ impl SocketAddrUnix {
return Err(io::Errno::NAMETOOLONG);
}
for (i, b) in bytes.iter().enumerate() {
unix.sun_path[i] = *b as _;
unix.sun_path[i] = bitcast!(*b);
}
let len = offsetof_sun_path() + bytes.len();
let len = len.try_into().unwrap();
Expand Down Expand Up @@ -81,7 +81,7 @@ impl SocketAddrUnix {
Self {
unix: Self::init(),
#[cfg(not(any(bsd, target_os = "haiku")))]
len: offsetof_sun_path() as _,
len: offsetof_sun_path() as SocketAddrLen,
}
}

Expand Down Expand Up @@ -123,7 +123,7 @@ impl SocketAddrUnix {

#[inline]
pub(crate) fn addr_len(&self) -> SocketAddrLen {
self.len as _
bitcast!(self.len)
}

#[inline]
Expand Down
4 changes: 2 additions & 2 deletions src/backend/linux_raw/net/msghdr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ pub(crate) unsafe fn with_recv_msghdr<R>(
control.set_control_len(msghdr.msg_controllen as usize);
}

name.len = msghdr.msg_namelen as _;
name.len = bitcast!(msghdr.msg_namelen);

res
}
Expand Down Expand Up @@ -105,7 +105,7 @@ pub(crate) unsafe fn with_msghdr<R>(
// beyond the call to `with_sockaddr`.
let mut msghdr = noaddr_msghdr(iov, control);
msghdr.msg_name = addr_ptr as _;
msghdr.msg_namelen = addr_len as _;
msghdr.msg_namelen = bitcast!(addr_len);

f(&msghdr)
})
Expand Down
10 changes: 5 additions & 5 deletions src/backend/linux_raw/net/read_sockaddr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ pub(crate) fn read_sockaddr_v4(addr: &SocketAddrAny) -> Result<SocketAddrV4, Err
if addr.address_family() != AddressFamily::INET {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_in>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_in>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_in>() };
Ok(SocketAddrV4::new(
Ipv4Addr::from(u32::from_be(decode.sin_addr.s_addr)),
Expand All @@ -77,7 +77,7 @@ pub(crate) fn read_sockaddr_v6(addr: &SocketAddrAny) -> Result<SocketAddrV6, Err
if addr.address_family() != AddressFamily::INET6 {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_in6>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_in6>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_in6>() };
Ok(SocketAddrV6::new(
Ipv6Addr::from(unsafe { decode.sin6_addr.in6_u.u6_addr8 }),
Expand All @@ -93,7 +93,7 @@ pub(crate) fn read_sockaddr_unix(addr: &SocketAddrAny) -> Result<SocketAddrUnix,
return Err(Errno::AFNOSUPPORT);
}
let offsetof_sun_path = super::addr::offsetof_sun_path();
let len = addr.len() as usize;
let len = addr.addr_len() as usize;

assert!(len >= offsetof_sun_path);

Expand Down Expand Up @@ -130,7 +130,7 @@ pub(crate) fn read_sockaddr_xdp(addr: &SocketAddrAny) -> Result<SocketAddrXdp, E
if addr.address_family() != AddressFamily::XDP {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_xdp>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_xdp>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_xdp>() };
Ok(SocketAddrXdp::new(
SockaddrXdpFlags::from_bits_retain(decode.sxdp_flags),
Expand All @@ -145,7 +145,7 @@ pub(crate) fn read_sockaddr_netlink(addr: &SocketAddrAny) -> Result<SocketAddrNe
if addr.address_family() != AddressFamily::NETLINK {
return Err(Errno::AFNOSUPPORT);
}
assert!(addr.len() as usize >= size_of::<c::sockaddr_nl>());
assert!(addr.addr_len() as usize >= size_of::<c::sockaddr_nl>());
let decode = unsafe { &*addr.as_ptr().cast::<c::sockaddr_nl>() };
Ok(SocketAddrNetlink::new(decode.nl_pid, decode.nl_groups))
}
6 changes: 3 additions & 3 deletions src/net/send_recv/msg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ impl<'buf, 'slice, 'fd> SendAncillaryBuffer<'buf, 'slice, 'fd> {
// Get the pointer to the payload and copy the data.
unsafe {
let payload = c::CMSG_DATA(last_header);
ptr::copy_nonoverlapping(source.as_ptr(), payload, source_len as _);
ptr::copy_nonoverlapping(source.as_ptr(), payload, source_len as usize);
}

true
Expand Down Expand Up @@ -626,7 +626,7 @@ impl<'a> MMsgHdr<'a> {
// give us a pointer directly, so we use that.
let mut msghdr = noaddr_msghdr(iov, control);
msghdr.msg_name = addr.as_ptr() as _;
msghdr.msg_namelen = addr.len() as _;
msghdr.msg_namelen = bitcast!(addr.addr_len());

Self::wrap(msghdr)
}
Expand All @@ -644,7 +644,7 @@ impl<'a> MMsgHdr<'a> {
/// Returns the number of bytes sent. This will return 0 until after a
/// successful call to [sendmmsg].
pub fn bytes_sent(&self) -> usize {
self.raw.msg_len as _
self.raw.msg_len as usize
}
}

Expand Down
6 changes: 3 additions & 3 deletions src/net/socket_addr_any.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ impl SocketAddrAny {

/// Returns the length of the encoded sockaddr.
#[inline]
pub fn len(&self) -> SocketAddrLen {
pub fn addr_len(&self) -> SocketAddrLen {
self.len.get()
}
}
Expand Down Expand Up @@ -206,7 +206,7 @@ impl fmt::Debug for SocketAddrAny {

f.debug_struct("SocketAddrAny")
.field("address_family", &self.address_family())
.field("namelen", &self.len())
.field("namelen", &self.addr_len())
.finish()
}
}
Expand All @@ -217,7 +217,7 @@ unsafe impl SocketAddrArg for SocketAddrAny {
&self,
f: impl FnOnce(*const SocketAddrOpaque, SocketAddrLen) -> R,
) -> R {
f(self.as_ptr().cast(), self.len())
f(self.as_ptr().cast(), self.addr_len())
}
}

Expand Down