wasmer_wasix/syscalls/wasix/
sock_get_opt_flag.rs1use super::*;
2use crate::syscalls::*;
3
4#[instrument(level = "trace", skip_all, fields(%sock, %opt), ret)]
13pub fn sock_get_opt_flag<M: MemorySize>(
14 mut ctx: FunctionEnvMut<'_, WasiEnv>,
15 sock: WasiFd,
16 opt: Sockoption,
17 ret_flag: WasmPtr<Bool, M>,
18) -> Errno {
19 let option: crate::net::socket::WasiSocketOption = match opt.try_into() {
20 Ok(o) => o,
21 Err(_) => return Errno::Inval,
22 };
23 let flag = wasi_try!(__sock_actor(
24 &mut ctx,
25 sock,
26 Rights::empty(),
27 |socket, _| socket.get_opt_flag(option)
28 ));
29
30 let env = ctx.data();
31 let memory = unsafe { env.memory_view(&ctx) };
32 let flag = match flag {
33 false => Bool::False,
34 true => Bool::True,
35 };
36
37 wasi_try_mem!(ret_flag.write(&memory, flag));
38
39 Errno::Success
40}