summaryrefslogtreecommitdiffstats
path: root/src/rule.c
diff options
context:
space:
mode:
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>2013-01-10 04:29:05 +0000
committerPablo Neira Ayuso <pablo@netfilter.org>2013-01-13 20:05:08 +0100
commit84d946b6573b02f83f14984ae737508749d2a419 (patch)
tree6c6b90dbf73b6bea8235986d15b04c37b58094ed /src/rule.c
parent8741da3feeb86a1dacaab0d71b654a5c2e2f67ce (diff)
rule: Add a function to get rule's family
Add nft_rule_attr_get_u8 to obtain the family number. Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Diffstat (limited to 'src/rule.c')
-rw-r--r--src/rule.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/rule.c b/src/rule.c
index dd05412..6dc46f3 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -104,6 +104,12 @@ EXPORT_SYMBOL(nft_rule_attr_set_str);
void *nft_rule_attr_get(struct nft_rule *r, uint16_t attr)
{
switch(attr) {
+ case NFT_RULE_ATTR_FAMILY:
+ if (r->flags & (1 << NFT_RULE_ATTR_FAMILY))
+ return &r->family;
+ else
+ return NULL;
+ break;
case NFT_RULE_ATTR_TABLE:
if (r->flags & (1 << NFT_RULE_ATTR_TABLE))
return r->table;
@@ -140,6 +146,13 @@ uint64_t nft_rule_attr_get_u64(struct nft_rule *r, uint16_t attr)
}
EXPORT_SYMBOL(nft_rule_attr_get_u64);
+uint8_t nft_rule_attr_get_u8(struct nft_rule *r, uint16_t attr)
+{
+ uint8_t val = *((uint8_t *)nft_rule_attr_get(r, attr));
+ return val;
+}
+EXPORT_SYMBOL(nft_rule_attr_get_u8);
+
struct nlmsghdr *
nft_rule_nlmsg_build_hdr(char *buf, uint16_t cmd, uint16_t family,
uint16_t type, uint32_t seq)
@@ -301,6 +314,7 @@ int nft_rule_nlmsg_parse(const struct nlmsghdr *nlh, struct nft_rule *r)
ret = nft_rule_parse_expr(tb[NFTA_RULE_EXPRESSIONS], r);
r->family = nfg->nfgen_family;
+ r->flags |= (1 << NFT_RULE_ATTR_FAMILY);
return ret;
}