wasmer_wasix/syscalls/wasix/
sock_get_opt_size.rs1use super::*;
2use crate::syscalls::*;
3
4#[instrument(level = "trace", skip_all, fields(%sock, %opt), ret)]
13pub fn sock_get_opt_size<M: MemorySize>(
14 mut ctx: FunctionEnvMut<'_, WasiEnv>,
15 sock: WasiFd,
16 opt: Sockoption,
17 ret_size: WasmPtr<Filesize, M>,
18) -> Errno {
19 let size = wasi_try!(__sock_actor(
20 &mut ctx,
21 sock,
22 Rights::empty(),
23 |socket, _| match opt {
24 Sockoption::RecvBufSize => socket.recv_buf_size().map(|a| a as Filesize),
25 Sockoption::SendBufSize => socket.send_buf_size().map(|a| a as Filesize),
26 Sockoption::Ttl => socket.ttl().map(|a| a as Filesize),
27 Sockoption::LastError => socket.last_error().map(|a| u16::from(a) as Filesize),
28 Sockoption::MulticastTtlV4 => {
29 socket.multicast_ttl_v4().map(|a| a as Filesize)
30 }
31 _ => Err(Errno::Inval),
32 }
33 ));
34
35 let env = ctx.data();
36 let memory = unsafe { env.memory_view(&ctx) };
37 wasi_try_mem!(ret_size.write(&memory, size));
38
39 Errno::Success
40}