aboutsummaryrefslogtreecommitdiff
path: root/src/table.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/table.rs')
-rw-r--r--src/table.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/table.rs b/src/table.rs
index 768eedd..5074ac9 100644
--- a/src/table.rs
+++ b/src/table.rs
@@ -7,7 +7,7 @@ use crate::nlmsg::{
use crate::parser::{parse_object, DecodeError, InnerFormat};
use crate::sys::{
self, NFNL_SUBSYS_NFTABLES, NFTA_OBJ_TABLE, NFTA_TABLE_FLAGS, NFTA_TABLE_NAME,
- NFT_MSG_DELTABLE, NFT_MSG_GETTABLE, NFT_MSG_NEWTABLE, NLM_F_ACK,
+ NFT_MSG_DELTABLE, NFT_MSG_GETTABLE, NFT_MSG_NEWTABLE, NLM_F_ACK, NLM_F_CREATE,
};
use crate::{impl_attr_getters_and_setters, MsgType, ProtocolFamily};
@@ -72,7 +72,17 @@ impl NfNetlinkObject for Table {
MsgType::Add => NFT_MSG_NEWTABLE,
MsgType::Del => NFT_MSG_DELTABLE,
} as u16;
- writer.write_header(raw_msg_type, self.family, NLM_F_ACK as u16, seq, None);
+ writer.write_header(
+ raw_msg_type,
+ self.family,
+ (if let MsgType::Add = msg_type {
+ NLM_F_CREATE
+ } else {
+ 0
+ } | NLM_F_ACK) as u16,
+ seq,
+ None,
+ );
self.inner.serialize(writer);
writer.finalize_writing_object();
}