From 7c24c00fe03318a4b95a0b9cf02257604c954937 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sat, 17 Aug 2013 12:40:32 +0200 Subject: 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 --- src/expr.c | 23 +++++++++++++++++++++++ src/libnftables.map | 2 ++ 2 files changed, 25 insertions(+) (limited to 'src') diff --git a/src/expr.c b/src/expr.c index 1f33181..d565637 100644 --- a/src/expr.c +++ b/src/expr.c @@ -81,6 +81,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) { @@ -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; -- cgit v1.2.3