From 6cdc49ffbe0a672c27f4fffe831563b12a8e2e61 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 18 Jul 2013 20:01:27 +0200 Subject: src: simplify getter logic This patch refactors the getter code to simplify it. The default cases have been removed so gcc will spot a warning if an attribute is not handled appropriately. Signed-off-by: Pablo Neira Ayuso --- src/rule.c | 49 ++++++++++++------------------------------------- 1 file changed, 12 insertions(+), 37 deletions(-) (limited to 'src/rule.c') diff --git a/src/rule.c b/src/rule.c index df9d739..9a93f33 100644 --- a/src/rule.c +++ b/src/rule.c @@ -1,5 +1,5 @@ /* - * (C) 2012 by Pablo Neira Ayuso + * (C) 2012-2013 by Pablo Neira Ayuso * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published @@ -166,51 +166,26 @@ EXPORT_SYMBOL(nft_rule_attr_set_str); const void *nft_rule_attr_get(const struct nft_rule *r, uint16_t attr) { + if (!(r->flags & (1 << attr))) + return NULL; + switch(attr) { case NFT_RULE_ATTR_FAMILY: - if (r->flags & (1 << NFT_RULE_ATTR_FAMILY)) - return &r->family; - else - return NULL; - break; + return &r->family; case NFT_RULE_ATTR_TABLE: - if (r->flags & (1 << NFT_RULE_ATTR_TABLE)) - return r->table; - else - return NULL; - break; + return r->table; case NFT_RULE_ATTR_CHAIN: - if (r->flags & (1 << NFT_RULE_ATTR_CHAIN)) - return r->chain; - else - return NULL; + return r->chain; case NFT_RULE_ATTR_HANDLE: - if (r->flags & (1 << NFT_RULE_ATTR_HANDLE)) - return &r->handle; - else - return NULL; - break; + return &r->handle; case NFT_RULE_ATTR_FLAGS: - if (r->flags & (1 << NFT_RULE_ATTR_FLAGS)) - return &r->rule_flags; - else - return NULL; - break; + return &r->rule_flags; case NFT_RULE_ATTR_COMPAT_PROTO: - if (r->flags & (1 << NFT_RULE_ATTR_COMPAT_PROTO)) - return &r->compat.proto; - else - return NULL; - break; + return &r->compat.proto; case NFT_RULE_ATTR_COMPAT_FLAGS: - if (r->flags & (1 << NFT_RULE_ATTR_COMPAT_FLAGS)) - return &r->compat.flags; - else - return NULL; - break; - default: - return NULL; + return &r->compat.flags; } + return NULL; } EXPORT_SYMBOL(nft_rule_attr_get); -- cgit v1.2.3