aboutsummaryrefslogtreecommitdiff
path: root/src/expr/masquerade.rs
diff options
context:
space:
mode:
authorlafleur <lafleur@boum.org>2021-11-07 14:40:30 +0100
committerlafleur <lafleur@boum.org>2021-11-07 14:40:30 +0100
commit84bf6246af06ec9339ee293faa16797bbee58ceb (patch)
treeee973936607d7ee1b4cd43a484e7d658dfdc182b /src/expr/masquerade.rs
parent1e33e3ab0790d977add329e9686b4b9e5570ba3c (diff)
wipe rustables-sys away
Diffstat (limited to 'src/expr/masquerade.rs')
-rw-r--r--src/expr/masquerade.rs24
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()) })
+ }
+}