summaryrefslogtreecommitdiffstats
path: root/src/set.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/set.c')
-rw-r--r--src/set.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/set.c b/src/set.c
index ef2d11d..029e2f2 100644
--- a/src/set.c
+++ b/src/set.c
@@ -56,6 +56,31 @@ void nft_set_free(struct nft_set *s)
}
EXPORT_SYMBOL(nft_set_free);
+void nft_set_attr_unset(struct nft_set *s, uint16_t attr)
+{
+ switch (attr) {
+ case NFT_SET_ATTR_TABLE:
+ if (s->flags & (1 << NFT_SET_ATTR_TABLE))
+ if (s->table) {
+ free(s->table);
+ s->table = NULL;
+ }
+ break;
+ case NFT_SET_ATTR_NAME:
+ if (s->flags & (1 << NFT_SET_ATTR_NAME))
+ if (s->name) {
+ free(s->name);
+ s->name = NULL;
+ }
+ break;
+ default:
+ return;
+ }
+
+ s->flags &= ~(1 << attr);
+}
+EXPORT_SYMBOL(nft_set_attr_unset);
+
void nft_set_attr_set(struct nft_set *s, uint16_t attr, const void *data)
{
switch(attr) {