summaryrefslogtreecommitdiffstats
path: root/src/set_elem.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2013-07-18 20:01:27 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2013-07-18 20:08:25 +0200
commit6cdc49ffbe0a672c27f4fffe831563b12a8e2e61 (patch)
tree76e1b5318bfdd9627f8ab5138293cbe569c25da4 /src/set_elem.c
parent5ecac519cd78043d0a5bfead1922a683d32db9d2 (diff)
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 <pablo@netfilter.org>
Diffstat (limited to 'src/set_elem.c')
-rw-r--r--src/set_elem.c31
1 files changed, 10 insertions, 21 deletions
diff --git a/src/set_elem.c b/src/set_elem.c
index eeab726..e95a872 100644
--- a/src/set_elem.c
+++ b/src/set_elem.c
@@ -120,33 +120,22 @@ EXPORT_SYMBOL(nft_set_elem_attr_set_str);
void *nft_set_elem_attr_get(struct nft_set_elem *s, uint16_t attr, size_t *data_len)
{
+ if (!(s->flags & (1 << attr)))
+ return NULL;
+
switch(attr) {
case NFT_SET_ELEM_ATTR_FLAGS:
- if (s->flags & (1 << NFT_SET_ELEM_ATTR_FLAGS))
- return &s->set_elem_flags;
- break;
+ return &s->set_elem_flags;
case NFT_SET_ELEM_ATTR_KEY: /* NFTA_SET_ELEM_KEY */
- if (s->flags & (1 << NFT_SET_ELEM_ATTR_KEY)) {
- *data_len = s->key.len;
- return &s->key.val;
- }
- break;
+ *data_len = s->key.len;
+ return &s->key.val;
case NFT_SET_ELEM_ATTR_VERDICT: /* NFTA_SET_ELEM_DATA */
- if (s->flags & (1 << NFT_SET_ELEM_ATTR_VERDICT))
- return &s->data.verdict;
- break;
+ return &s->data.verdict;
case NFT_SET_ELEM_ATTR_CHAIN: /* NFTA_SET_ELEM_DATA */
- if (s->flags & (1 << NFT_SET_ELEM_ATTR_CHAIN))
- return s->data.chain;
- break;
+ return s->data.chain;
case NFT_SET_ELEM_ATTR_DATA: /* NFTA_SET_ELEM_DATA */
- if (s->flags & (1 << NFT_SET_ELEM_ATTR_DATA)) {
- *data_len = s->data.len;
- return &s->data.val;
- }
- break;
- default:
- break;
+ *data_len = s->data.len;
+ return &s->data.val;
}
return NULL;
}