diff options
author | lafleur <lafleur@boum.org> | 2021-11-07 14:40:30 +0100 |
---|---|---|
committer | lafleur <lafleur@boum.org> | 2021-11-07 14:40:30 +0100 |
commit | 84bf6246af06ec9339ee293faa16797bbee58ceb (patch) | |
tree | ee973936607d7ee1b4cd43a484e7d658dfdc182b /src/expr/masquerade.rs | |
parent | 1e33e3ab0790d977add329e9686b4b9e5570ba3c (diff) |
wipe rustables-sys away
Diffstat (limited to 'src/expr/masquerade.rs')
-rw-r--r-- | src/expr/masquerade.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/expr/masquerade.rs b/src/expr/masquerade.rs new file mode 100644 index 0000000..c1a06de --- /dev/null +++ b/src/expr/masquerade.rs @@ -0,0 +1,24 @@ +use super::{DeserializationError, Expression, Rule}; +use crate::sys; +use std::os::raw::c_char; + +/// Sets the source IP to that of the output interface. +#[derive(Debug, PartialEq)] +pub struct Masquerade; + +impl Expression for Masquerade { + fn get_raw_name() -> *const sys::libc::c_char { + b"masq\0" as *const _ as *const c_char + } + + fn from_expr(_expr: *const sys::nftnl_expr) -> Result<Self, DeserializationError> + where + Self: Sized, + { + Ok(Masquerade) + } + + fn to_expr(&self, _rule: &Rule) -> *mut sys::nftnl_expr { + try_alloc!(unsafe { sys::nftnl_expr_alloc(Self::get_raw_name()) }) + } +} |