From dde20393f929f22636dcedd82e5a2fe81394139e Mon Sep 17 00:00:00 2001 From: Arturo Borrero Gonzalez Date: Fri, 7 Jun 2013 00:52:17 +0000 Subject: src: add nft_*_unset functions These functions unset the given attribute in each object and release the data if needed. Signed-off-by: Arturo Borrero Gonzalez Signed-off-by: Pablo Neira Ayuso --- src/set.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/set.c') 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) { -- cgit v1.2.3