diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/expr.c | 13 | ||||
-rw-r--r-- | src/libnftables.map | 1 | ||||
-rw-r--r-- | src/rule.c | 4 |
3 files changed, 16 insertions, 2 deletions
@@ -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; @@ -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); } |