From 4a684c2ee4cdff2c5c6bfa06d93b58cb4e868bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Neira=20Ayuso?= Date: Thu, 27 Jun 2013 21:56:18 +0200 Subject: src: support JSON format in chain, rule and expressions While at it, order possible switch cases of _snprintf. Signed-off-by: Alvaro Neira Ayuso Signed-off-by: Pablo Neira Ayuso --- src/expr/data_reg.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 7 deletions(-) (limited to 'src/expr/data_reg.c') diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c index c123d88..fd05499 100644 --- a/src/expr/data_reg.c +++ b/src/expr/data_reg.c @@ -253,6 +253,44 @@ int nft_data_reg_xml_parse(union nft_data_reg *reg, char *xml) #endif } +static int +nft_data_reg_value_snprintf_json(char *buf, size_t size, + union nft_data_reg *reg, + uint32_t flags) +{ + int len = size, offset = 0, ret, i, j; + uint32_t utemp; + uint8_t *tmp; + int data_len = reg->len/sizeof(uint32_t); + + ret = snprintf(buf, len, "\"data_reg\": { \"type\" : \"value\", "); + SNPRINTF_BUFFER_SIZE(ret, size, len, offset); + + ret = snprintf(buf+offset, len, "\"len\" : %zd, ", reg->len); + SNPRINTF_BUFFER_SIZE(ret, size, len, offset); + + for (i = 0; ival[i]); + tmp = (uint8_t *)&utemp; + + for (j = 0; jverdict); case NFT_RULE_O_XML: return snprintf(buf, size, "" "%d" "", reg->verdict); - case NFT_RULE_O_DEFAULT: - return snprintf(buf, size, "verdict=%d", reg->verdict); + case NFT_RULE_O_JSON: + return snprintf(buf, size, + "\"data_reg\": { \"type\" : \"verdict\", " + "\"verdict\" : %d" + "}", reg->verdict); default: break; } case DATA_CHAIN: switch(output_format) { + case NFT_RULE_O_DEFAULT: + return snprintf(buf, size, "chain=%s", reg->chain); case NFT_RULE_O_XML: return snprintf(buf, size, "" "%s" "", reg->chain); - case NFT_RULE_O_DEFAULT: - return snprintf(buf, size, "chain=%s", reg->chain); + case NFT_RULE_O_JSON: + return snprintf(buf, size, + "\"data_reg\": { \"type\" : \"chain\", " + "\"chain\" : %d" + "}", reg->verdict); default: break; } -- cgit v1.2.3