aboutsummaryrefslogtreecommitdiff
path: root/rustables/src/rule.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rustables/src/rule.rs')
-rw-r--r--rustables/src/rule.rs39
1 files changed, 16 insertions, 23 deletions
diff --git a/rustables/src/rule.rs b/rustables/src/rule.rs
index 09a465e..7ab0de9 100644
--- a/rustables/src/rule.rs
+++ b/rustables/src/rule.rs
@@ -24,16 +24,12 @@ impl Rule {
sys::NFTNL_RULE_FAMILY as u16,
chain.get_table().get_family() as u32,
);
- sys::nftnl_rule_set_str(
- rule,
- sys::NFTNL_RULE_TABLE as u16,
- chain.get_table().get_name().as_ptr(),
- );
- sys::nftnl_rule_set_str(
- rule,
- sys::NFTNL_RULE_CHAIN as u16,
- chain.get_name().as_ptr(),
- );
+ if let Some(table_name) = chain.get_table().get_name() {
+ sys::nftnl_rule_set_str(rule, sys::NFTNL_RULE_TABLE as u16, table_name.as_ptr());
+ }
+ if let Some(chain_name) = chain.get_name() {
+ sys::nftnl_rule_set_str(rule, sys::NFTNL_RULE_CHAIN as u16, chain_name.as_ptr());
+ }
Rule { rule, chain }
}
@@ -83,10 +79,11 @@ impl Rule {
pub fn get_userdata(&self) -> Option<&CStr> {
unsafe {
let ptr = sys::nftnl_rule_get_str(self.rule, sys::NFTNL_RULE_USERDATA as u16);
- if ptr == std::ptr::null() {
- return None;
+ if !ptr.is_null() {
+ Some(CStr::from_ptr(ptr))
+ } else {
+ None
}
- Some(CStr::from_ptr(ptr))
}
}
@@ -241,21 +238,17 @@ pub fn list_rules_for_chain(chain: &Rc<Chain>) -> Result<Vec<Rule>, crate::query
return Err(crate::query::Error::NetlinkAllocationFailed);
}
- sys::nftnl_rule_set_str(
- rule,
- sys::NFTNL_RULE_TABLE as u16,
- chain.get_table().get_name().as_ptr(),
- );
+ if let Some(table_name) = chain.get_table().get_name() {
+ sys::nftnl_rule_set_str(rule, sys::NFTNL_RULE_TABLE as u16, table_name.as_ptr());
+ }
sys::nftnl_rule_set_u32(
rule,
sys::NFTNL_RULE_FAMILY as u16,
chain.get_table().get_family() as u32,
);
- sys::nftnl_rule_set_str(
- rule,
- sys::NFTNL_RULE_CHAIN as u16,
- chain.get_name().as_ptr(),
- );
+ if let Some(chain_name) = chain.get_name() {
+ sys::nftnl_rule_set_str(rule, sys::NFTNL_RULE_CHAIN as u16, chain_name.as_ptr());
+ }
sys::nftnl_rule_nlmsg_build_payload(hdr, rule);