summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/expr.c13
-rw-r--r--src/libnftables.map1
-rw-r--r--src/rule.c4
3 files changed, 16 insertions, 2 deletions
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 type=\"%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);
ret = snprintf(buf+offset, len, "</expr>");
@@ -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);
}