diff --git a/src/lib.rs b/src/lib.rs index 1e1709f..623f503 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -237,6 +237,18 @@ impl IntoRawFd for VsockListener { } } +impl From for OwnedFd { + fn from(value: VsockListener) -> Self { + value.socket + } +} + +impl From for VsockListener { + fn from(socket: OwnedFd) -> Self { + Self { socket } + } +} + /// A virtio sequential packet socket between a local and a remote host. /// /// This is the vsock equivalent of [`std::net::UdpSocket`]. @@ -407,6 +419,18 @@ impl IntoRawFd for VsockSocket { } } +impl From for OwnedFd { + fn from(value: VsockSocket) -> Self { + value.socket + } +} + +impl From for VsockSocket { + fn from(socket: OwnedFd) -> Self { + Self { socket } + } +} + /// A virtio stream between a local and a remote socket. /// /// This is the vsock equivalent of [`std::net::TcpStream`]. @@ -554,6 +578,18 @@ impl IntoRawFd for VsockStream { } } +impl From for OwnedFd { + fn from(value: VsockStream) -> Self { + value.socket + } +} + +impl From for VsockStream { + fn from(socket: OwnedFd) -> Self { + Self { socket } + } +} + const IOCTL_VM_SOCKETS_GET_LOCAL_CID: usize = 0x7b9; ioctl_read_bad!( vm_sockets_get_local_cid,