From b8ebaa938e322a5c59fdce261e253822d8f9be23 Mon Sep 17 00:00:00 2001 From: Arturo Borrero Date: Fri, 20 Jun 2014 10:55:08 +0200 Subject: expr: nat: add helper function to translate nat types to string This patch adds a helper functon to translate nat types to string. Signed-off-by: Arturo Borrero Gonzalez Signed-off-by: Pablo Neira Ayuso --- src/expr/nat.c | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) (limited to 'src/expr/nat.c') diff --git a/src/expr/nat.c b/src/expr/nat.c index 0136fca..c719b6c 100644 --- a/src/expr/nat.c +++ b/src/expr/nat.c @@ -184,6 +184,18 @@ nft_rule_expr_nat_build(struct nlmsghdr *nlh, struct nft_rule_expr *e) htonl(nat->sreg_proto_max)); } +static inline const char *nft_nat2str(uint16_t nat) +{ + switch (nat) { + case NFT_NAT_SNAT: + return "snat"; + case NFT_NAT_DNAT: + return "dnat"; + default: + return "unknown"; + } +} + static inline int nft_str2nat(const char *nat) { if (strcmp(nat, "snat") == 0) @@ -304,11 +316,8 @@ nft_rule_expr_nat_snprintf_json(char *buf, size_t size, struct nft_expr_nat *nat = nft_expr_data(e); int len = size, offset = 0, ret = 0; - if (nat->type == NFT_NAT_SNAT) - ret = snprintf(buf, len, "\"nat_type\":\"snat\","); - else if (nat->type == NFT_NAT_DNAT) - ret = snprintf(buf, len, "\"nat_type\":\"dnat\","); - + ret = snprintf(buf, len, "\"nat_type\":\"%s\",", + nft_nat2str(nat->type)); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); ret = snprintf(buf+offset, len, "\"family\":\"%s\",", @@ -340,14 +349,7 @@ nft_rule_expr_nat_snprintf_xml(char *buf, size_t size, struct nft_expr_nat *nat = nft_expr_data(e); int len = size, offset = 0, ret = 0; - /* Is a mandatory element. Provide a default, even empty */ - if (nat->type == NFT_NAT_SNAT) - ret = snprintf(buf, len, "snat"); - else if (nat->type == NFT_NAT_DNAT) - ret = snprintf(buf, len, "dnat"); - else - ret = snprintf(buf, len, "unknown"); - + ret = snprintf(buf, len, "%s", nft_nat2str(nat->type)); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); ret = snprintf(buf+offset, len, "%s", @@ -380,16 +382,8 @@ nft_rule_expr_nat_snprintf_default(char *buf, size_t size, struct nft_expr_nat *nat = nft_expr_data(e); int len = size, offset = 0, ret = 0; - switch (nat->type) { - case NFT_NAT_SNAT: - ret = snprintf(buf, len, "snat "); - SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - break; - case NFT_NAT_DNAT: - ret = snprintf(buf, len, "dnat "); - SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - break; - } + ret = snprintf(buf, len, "%s ", nft_nat2str(nat->type)); + SNPRINTF_BUFFER_SIZE(ret, size, len, offset); ret = snprintf(buf+offset, len, "%s ", nft_family2str(nat->family)); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); -- cgit v1.2.3