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/set_elem.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'src/set_elem.c') 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; } -- cgit v1.2.3