wasmer_wasix/journal/effector/syscalls/
port_route_add.rs

1use std::{net::IpAddr, time::Duration};
2use virtual_net::IpCidr;
3
4use super::*;
5
6impl JournalEffector {
7    pub fn save_port_route_add(
8        ctx: &mut FunctionEnvMut<'_, WasiEnv>,
9        cidr: IpCidr,
10        via_router: IpAddr,
11        preferred_until: Option<Duration>,
12        expires_at: Option<Duration>,
13    ) -> anyhow::Result<()> {
14        Self::save_event(
15            ctx,
16            JournalEntry::PortRouteAddV1 {
17                cidr,
18                via_router,
19                preferred_until,
20                expires_at,
21            },
22        )
23    }
24
25    pub fn apply_port_route_add(
26        ctx: &mut FunctionEnvMut<'_, WasiEnv>,
27        cidr: IpCidr,
28        via_router: IpAddr,
29        preferred_until: Option<Duration>,
30        expires_at: Option<Duration>,
31    ) -> anyhow::Result<()> {
32        crate::syscalls::port_route_add_internal(
33            ctx,
34            cidr,
35            via_router,
36            preferred_until,
37            expires_at,
38        )
39        .map(|r| r.map_err(|err| err.to_string()))
40        .unwrap_or_else(|err| Err(err.to_string()))
41        .map_err(|err| {
42            anyhow::format_err!(
43                "journal restore error: failed to add route (cidr={cidr:?}, via_router={via_router}, preferred_until={preferred_until:?}, expires_at={expires_at:?}) - {err}")
44        })?;
45        Ok(())
46    }
47}