MCPcopy Create free account
hub / github.com/bytecodealliance/rustix / bind

Function bind

src/backend/linux_raw/net/syscalls.rs:628–656  ·  view source on GitHub ↗
(fd: BorrowedFd<'_>, addr: &impl SocketAddrArg)

Source from the content-addressed store, hash-verified

626
627#[inline]
628pub(crate) fn bind(fd: BorrowedFd<'_>, addr: &impl SocketAddrArg) -> io::Result<()> {
629 // SAFETY: This passes the `addr_ptr` reference to the OS which reads the
630 // buffers only within the `addr_len` bound.
631 unsafe {
632 addr.with_sockaddr(|addr_ptr, addr_len| {
633 #[cfg(not(target_arch = "x86"))]
634 {
635 ret(syscall_readonly!(
636 __NR_bind,
637 fd,
638 raw_arg(addr_ptr as *mut _),
639 socklen_t(addr_len)
640 ))
641 }
642 #[cfg(target_arch = "x86")]
643 {
644 ret(syscall_readonly!(
645 __NR_socketcall,
646 x86_sys(SYS_BIND),
647 slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[
648 fd.into(),
649 raw_arg(addr_ptr as *mut _),
650 socklen_t(addr_len)
651 ])
652 ))
653 }
654 })
655 }
656}
657
658#[inline]
659pub(crate) fn connect(fd: BorrowedFd<'_>, addr: &impl SocketAddrArg) -> io::Result<()> {

Callers

nothing calls this directly

Calls 2

retFunction · 0.50
with_sockaddrMethod · 0.45

Tested by

no test coverage detected