From 7169863df1780f53ea71659eed2c6d5bb2daa015 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Wed, 19 Jun 2013 17:53:25 +0200 Subject: expr: add nft_rule_expr_snprintf Signed-off-by: Pablo Neira Ayuso --- src/expr.c | 13 +++++++++++++ src/libnftables.map | 1 + src/rule.c | 4 ++-- 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/expr.c b/src/expr.c index 678732e..711c18e 100644 --- a/src/expr.c +++ b/src/expr.c @@ -193,3 +193,16 @@ nft_rule_expr_build_payload(struct nlmsghdr *nlh, struct nft_rule_expr *expr) mnl_attr_nest_end(nlh, nest1); } EXPORT_SYMBOL(nft_rule_expr_build_payload); + +int nft_rule_expr_snprintf(char *buf, size_t size, struct nft_rule_expr *expr, + uint32_t type, uint32_t flags) +{ + int ret; + unsigned int offset = 0, len = size; + + ret = expr->ops->snprintf(buf+offset, len, type, flags, expr); + SNPRINTF_BUFFER_SIZE(ret, size, len, offset); + + return offset; +} +EXPORT_SYMBOL(nft_rule_expr_snprintf); diff --git a/src/libnftables.map b/src/libnftables.map index 7be6588..9546bca 100644 --- a/src/libnftables.map +++ b/src/libnftables.map @@ -89,6 +89,7 @@ global: nft_rule_expr_get_u64; nft_rule_expr_get_str; nft_rule_expr_build_payload; + nft_rule_expr_snprintf; nft_rule_expr_free; nft_rule_list_alloc; diff --git a/src/rule.c b/src/rule.c index 3a35a18..6058878 100644 --- a/src/rule.c +++ b/src/rule.c @@ -697,7 +697,7 @@ static int nft_rule_snprintf_xml(char *buf, size_t size, struct nft_rule *r, "", expr->ops->name); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - ret = expr->ops->snprintf(buf+offset, len, type, flags, expr); + ret = nft_rule_expr_snprintf(buf+offset, size, expr, type, flags); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); ret = snprintf(buf+offset, len, ""); @@ -726,7 +726,7 @@ static int nft_rule_snprintf_default(char *buf, size_t size, struct nft_rule *r, ret = snprintf(buf+offset, len, "%s ", expr->ops->name); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - ret = expr->ops->snprintf(buf+offset, len, type, flags, expr); + ret = nft_rule_expr_snprintf(buf+offset, size, expr, type, flags); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); } -- cgit v1.2.3