diff options
-rw-r--r-- | nftnl/src/expr/log.rs | 12 | ||||
-rw-r--r-- | nftnl/src/expr/mod.rs | 15 | ||||
-rw-r--r-- | nftnl/src/query.rs | 1 |
3 files changed, 21 insertions, 7 deletions
diff --git a/nftnl/src/expr/log.rs b/nftnl/src/expr/log.rs new file mode 100644 index 0000000..e20f4a1 --- /dev/null +++ b/nftnl/src/expr/log.rs @@ -0,0 +1,12 @@ +use super::{Expression, Rule}; +use nftnl_sys as sys; +use std::os::raw::c_char; + +/// A Log expression will log all packets that match the rule. +pub struct Log; + +impl Expression for Log { + fn to_expr(&self, _rule: &Rule) -> *mut sys::nftnl_expr { + try_alloc!(unsafe { sys::nftnl_expr_alloc(b"log\0" as *const _ as *const c_char) }) + } +} diff --git a/nftnl/src/expr/mod.rs b/nftnl/src/expr/mod.rs index fb25fff..b0723d4 100644 --- a/nftnl/src/expr/mod.rs +++ b/nftnl/src/expr/mod.rs @@ -83,11 +83,11 @@ macro_rules! nft_expr { (ct $key:ident) => { nft_expr_ct!($key) }; - (verdict $verdict:ident) => { - nft_expr_verdict!($verdict) + (immediate $expr:ident $value:expr) => { + nft_expr_immediate!($expr $value) }; - (verdict $verdict:ident $chain:expr) => { - nft_expr_verdict!($verdict $chain) + (log) => { + nft_expr_log!() }; (lookup $set:expr) => { nft_expr_lookup!($set) @@ -104,7 +104,10 @@ macro_rules! nft_expr { (payload $proto:ident $field:ident) => { nft_expr_payload!($proto $field) }; - (immediate $expr:ident $value:expr) => { - nft_expr_immediate!($expr $value) + (verdict $verdict:ident) => { + nft_expr_verdict!($verdict) + }; + (verdict $verdict:ident $chain:expr) => { + nft_expr_verdict!($verdict $chain) }; } diff --git a/nftnl/src/query.rs b/nftnl/src/query.rs index 04f051d..7f459cd 100644 --- a/nftnl/src/query.rs +++ b/nftnl/src/query.rs @@ -118,7 +118,6 @@ mod inner { .map_err(Error::NetlinkRecvError)? > 0 { - println!("loooping"); if let mnl::CbResult::Stop = mnl::cb_run(&msg_buffer, seq, portid).map_err(Error::ProcessNetlinkError)? { |