summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2013-08-17 12:40:32 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2013-08-17 12:40:32 +0200
commit7c24c00fe03318a4b95a0b9cf02257604c954937 (patch)
tree1731cec67b5d750c39775986afcdecd4e03f7afd /src
parent522b47f1944d53c87bde973e3e67a383a78577df (diff)
expr: add nft_rule_expr_get_u16 and nft_rule_expr_set_u16
Now required since log has two u16 fields. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/expr.c23
-rw-r--r--src/libnftables.map2
2 files changed, 25 insertions, 0 deletions
diff --git a/src/expr.c b/src/expr.c
index 1f33181..d565637 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -82,6 +82,13 @@ nft_rule_expr_set_u8(struct nft_rule_expr *expr, uint16_t type, uint8_t data)
EXPORT_SYMBOL(nft_rule_expr_set_u8);
void
+nft_rule_expr_set_u16(struct nft_rule_expr *expr, uint16_t type, uint16_t data)
+{
+ nft_rule_expr_set(expr, type, &data, sizeof(uint16_t));
+}
+EXPORT_SYMBOL(nft_rule_expr_set_u16);
+
+void
nft_rule_expr_set_u32(struct nft_rule_expr *expr, uint16_t type, uint32_t data)
{
nft_rule_expr_set(expr, type, &data, sizeof(uint32_t));
@@ -139,6 +146,22 @@ uint8_t nft_rule_expr_get_u8(const struct nft_rule_expr *expr, uint16_t type)
}
EXPORT_SYMBOL(nft_rule_expr_get_u8);
+uint16_t nft_rule_expr_get_u16(const struct nft_rule_expr *expr, uint16_t type)
+{
+ const void *data;
+ size_t data_len;
+
+ data = nft_rule_expr_get(expr, type, &data_len);
+ if (data == NULL)
+ return 0;
+
+ if (data_len != sizeof(uint16_t))
+ return 0;
+
+ return *((uint16_t *)data);
+}
+EXPORT_SYMBOL(nft_rule_expr_get_u16);
+
uint32_t nft_rule_expr_get_u32(const struct nft_rule_expr *expr, uint16_t type)
{
const void *data;
diff --git a/src/libnftables.map b/src/libnftables.map
index 614c705..c4a1c26 100644
--- a/src/libnftables.map
+++ b/src/libnftables.map
@@ -84,11 +84,13 @@ global:
nft_rule_expr_is_set;
nft_rule_expr_set;
nft_rule_expr_set_u8;
+ nft_rule_expr_set_u16;
nft_rule_expr_set_u32;
nft_rule_expr_set_u64;
nft_rule_expr_set_str;
nft_rule_expr_get;
nft_rule_expr_get_u8;
+ nft_rule_expr_get_u16;
nft_rule_expr_get_u32;
nft_rule_expr_get_u64;
nft_rule_expr_get_str;