diff options
Diffstat (limited to 'rustables/src/set.rs')
-rw-r--r-- | rustables/src/set.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/rustables/src/set.rs b/rustables/src/set.rs index 820e368..c099088 100644 --- a/rustables/src/set.rs +++ b/rustables/src/set.rs @@ -42,7 +42,9 @@ impl<'a, K> Set<'a, K> { let set = try_alloc!(sys::nftnl_set_alloc()); sys::nftnl_set_set_u32(set, sys::NFTNL_SET_FAMILY as u16, family as u32); - sys::nftnl_set_set_str(set, sys::NFTNL_SET_TABLE as u16, table.get_name().as_ptr()); + if let Some(table_name) = table.get_name() { + sys::nftnl_set_set_str(set, sys::NFTNL_SET_TABLE as u16, table_name.as_ptr()); + } sys::nftnl_set_set_str(set, sys::NFTNL_SET_NAME as u16, name.as_ptr()); sys::nftnl_set_set_u32(set, sys::NFTNL_SET_ID as u16, id); @@ -130,10 +132,14 @@ impl<'a, K> Set<'a, K> { } } - pub fn get_name(&self) -> &CStr { + pub fn get_name(&self) -> Option<&CStr> { unsafe { let ptr = sys::nftnl_set_get_str(self.set, sys::NFTNL_SET_NAME as u16); - CStr::from_ptr(ptr) + if !ptr.is_null() { + Some(CStr::from_ptr(ptr)) + } else { + None + } } } |