aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nftnl/src/expr/log.rs12
-rw-r--r--nftnl/src/expr/mod.rs15
-rw-r--r--nftnl/src/query.rs1
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)?
{