void nft_chain_attr_unset(struct nft_chain *c, uint16_t attr)
{
+ if (!(c->flags & (1 << attr)))
+ return;
+
switch (attr) {
case NFT_CHAIN_ATTR_TABLE:
- if (c->flags & (1 << NFT_CHAIN_ATTR_TABLE))
- if (c->table) {
- free(c->table);
- c->table = NULL;
- }
+ if (c->table) {
+ free(c->table);
+ c->table = NULL;
+ }
break;
case NFT_CHAIN_ATTR_USE:
/* cannot be unset?, ignore it */
return;
case NFT_CHAIN_ATTR_TYPE:
- if (c->flags & (1 << NFT_CHAIN_ATTR_TYPE))
- if (c->type) {
- free(c->type);
- c->type = NULL;
- }
+ if (c->type) {
+ free(c->type);
+ c->type = NULL;
+ }
break;
case NFT_CHAIN_ATTR_NAME:
case NFT_CHAIN_ATTR_HOOKNUM:
void nft_rule_attr_unset(struct nft_rule *r, uint16_t attr)
{
+ if (!(r->flags & (1 << attr)))
+ return;
+
switch (attr) {
case NFT_RULE_ATTR_TABLE:
- if (r->flags & (1 << NFT_RULE_ATTR_TABLE))
- if (r->table) {
- free(r->table);
- r->table = NULL;
- }
+ if (r->table) {
+ free(r->table);
+ r->table = NULL;
+ }
break;
case NFT_RULE_ATTR_CHAIN:
- if (r->flags & (1 << NFT_RULE_ATTR_CHAIN))
- if (r->chain) {
- free(r->chain);
- r->chain = NULL;
- }
+ if (r->chain) {
+ free(r->chain);
+ r->chain = NULL;
+ }
break;
case NFT_RULE_ATTR_HANDLE:
case NFT_RULE_ATTR_FLAGS:
case NFT_RULE_ATTR_POSITION:
case NFT_RULE_ATTR_FAMILY:
break;
- default:
- return;
}
r->flags &= ~(1 << attr);
void nft_table_attr_unset(struct nft_table *t, uint16_t attr)
{
+ if (!(t->flags & (1 << attr)))
+ return;
+
switch (attr) {
case NFT_TABLE_ATTR_NAME:
- if (t->flags & (1 << NFT_TABLE_ATTR_NAME)) {
- if (t->name) {
- free(t->name);
- t->name = NULL;
- }
+ if (t->name) {
+ free(t->name);
+ t->name = NULL;
}
break;
case NFT_TABLE_ATTR_FLAGS:
case NFT_TABLE_ATTR_FAMILY:
break;
- default:
- return;
}
t->flags &= ~(1 << attr);
}