wasmer_wasix/syscalls/wasix/
port_route_remove.rs1use super::*;
2use crate::syscalls::*;
3
4#[instrument(level = "trace", skip_all, fields(ip = field::Empty), ret)]
7pub fn port_route_remove<M: MemorySize>(
8 mut ctx: FunctionEnvMut<'_, WasiEnv>,
9 ip: WasmPtr<__wasi_addr_t, M>,
10) -> Result<Errno, WasiError> {
11 WasiEnv::do_pending_operations(&mut ctx)?;
12
13 let env = ctx.data();
14 let memory = unsafe { env.memory_view(&ctx) };
15
16 let ip = wasi_try_ok!(crate::net::read_ip(&memory, ip));
17 Span::current().record("ip", format!("{ip:?}"));
18
19 wasi_try_ok!(port_route_remove_internal(&mut ctx, ip)?);
20
21 #[cfg(feature = "journal")]
22 if ctx.data().enable_journal {
23 JournalEffector::save_port_route_remove(&mut ctx, ip).map_err(|err| {
24 tracing::error!("failed to save port_route_remove event - {}", err);
25 WasiError::Exit(ExitCode::from(Errno::Fault))
26 })?;
27 }
28
29 Ok(Errno::Success)
30}
31
32pub(crate) fn port_route_remove_internal(
33 ctx: &mut FunctionEnvMut<'_, WasiEnv>,
34 ip: IpAddr,
35) -> Result<Result<(), Errno>, WasiError> {
36 let env = ctx.data();
37 let net = env.net().clone();
38 wasi_try_ok_ok!(__asyncify(ctx, None, async {
39 net.route_remove(ip).await.map_err(net_error_into_wasi_err)
40 })?);
41
42 Ok(Ok(()))
43}