diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-10-09 00:03:28 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-10-15 14:04:27 +0200 |
commit | 80077787f8f21da1efd8dc27a4c5767ab47a1df6 (patch) | |
tree | 01d9b399a1aad23d7ea1d1e1daa0ad98bec69e0a /src/expr/data_reg.c | |
parent | aaf20ad0dc22d2ebcad1b2c43288e984f0efe2c3 (diff) |
src: remove json support
We have better json support in libnftables these days.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/expr/data_reg.c')
-rw-r--r-- | src/expr/data_reg.c | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c index ad7f4cb..48a012b 100644 --- a/src/expr/data_reg.c +++ b/src/expr/data_reg.c @@ -24,116 +24,6 @@ #include <libnftnl/rule.h> #include "internal.h" -#ifdef JSON_PARSING -static int nftnl_data_reg_verdict_json_parse(union nftnl_data_reg *reg, json_t *data, - struct nftnl_parse_err *err) -{ - int verdict; - const char *verdict_str; - const char *chain; - - verdict_str = nftnl_jansson_parse_str(data, "verdict", err); - if (verdict_str == NULL) - return DATA_NONE; - - if (nftnl_str2verdict(verdict_str, &verdict) != 0) { - err->node_name = "verdict"; - err->error = NFTNL_PARSE_EBADTYPE; - errno = EINVAL; - return -1; - } - - reg->verdict = (uint32_t)verdict; - - if (nftnl_jansson_node_exist(data, "chain")) { - chain = nftnl_jansson_parse_str(data, "chain", err); - if (chain == NULL) - return DATA_NONE; - - reg->chain = strdup(chain); - } - - return DATA_VERDICT; -} - -static int nftnl_data_reg_value_json_parse(union nftnl_data_reg *reg, json_t *data, - struct nftnl_parse_err *err) -{ - char node_name[32] = {}; - int ret, remain = sizeof(node_name), offset = 0, i; - - if (nftnl_jansson_parse_val(data, "len", NFTNL_TYPE_U32, ®->len, err) < 0) - return DATA_NONE; - - for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) { - ret = snprintf(node_name, sizeof(node_name), "data%u", i); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - if (nftnl_jansson_str2num(data, node_name, BASE_HEX, - ®->val[i], NFTNL_TYPE_U32, err) != 0) - return DATA_NONE; - } - - return DATA_VALUE; -} - -int nftnl_data_reg_json_parse(union nftnl_data_reg *reg, json_t *data, - struct nftnl_parse_err *err) -{ - - const char *type; - - type = nftnl_jansson_parse_str(data, "type", err); - if (type == NULL) - return -1; - - /* Select what type of parsing is needed */ - if (strcmp(type, "value") == 0) - return nftnl_data_reg_value_json_parse(reg, data, err); - else if (strcmp(type, "verdict") == 0) - return nftnl_data_reg_verdict_json_parse(reg, data, err); - - return DATA_NONE; -} -#endif - -static int -nftnl_data_reg_value_snprintf_json(char *buf, size_t size, - const union nftnl_data_reg *reg, - uint32_t flags) -{ - int remain = size, offset = 0, ret, i, j; - uint32_t utemp; - uint8_t *tmp; - - ret = snprintf(buf, remain, "\"reg\":{\"type\":\"value\","); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - ret = snprintf(buf + offset, remain, "\"len\":%u,", reg->len); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) { - ret = snprintf(buf + offset, remain, "\"data%d\":\"0x", i); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - utemp = htonl(reg->val[i]); - tmp = (uint8_t *)&utemp; - - for (j = 0; j<sizeof(uint32_t); j++) { - ret = snprintf(buf + offset, remain, "%.02x", tmp[j]); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - } - - ret = snprintf(buf + offset, remain, "\","); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - } - offset--; - ret = snprintf(buf + offset, remain, "}"); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - return offset; -} - static int nftnl_data_reg_value_snprintf_default(char *buf, size_t size, const union nftnl_data_reg *reg, @@ -167,29 +57,6 @@ nftnl_data_reg_verdict_snprintf_def(char *buf, size_t size, return offset; } -static int -nftnl_data_reg_verdict_snprintf_json(char *buf, size_t size, - const union nftnl_data_reg *reg, - uint32_t flags) -{ - int remain = size, offset = 0, ret = 0; - - ret = snprintf(buf, size, "\"reg\":{\"type\":\"verdict\"," - "\"verdict\":\"%s\"", nftnl_verdict2str(reg->verdict)); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - if (reg->chain != NULL) { - ret = snprintf(buf + offset, remain, ",\"chain\":\"%s\"", - reg->chain); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - } - - ret = snprintf(buf + offset, remain, "}"); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - return offset; -} - int nftnl_data_reg_snprintf(char *buf, size_t size, const union nftnl_data_reg *reg, uint32_t output_format, uint32_t flags, @@ -202,8 +69,6 @@ int nftnl_data_reg_snprintf(char *buf, size_t size, return nftnl_data_reg_value_snprintf_default(buf, size, reg, flags); case NFTNL_OUTPUT_JSON: - return nftnl_data_reg_value_snprintf_json(buf, size, - reg, flags); case NFTNL_OUTPUT_XML: default: break; @@ -216,8 +81,6 @@ int nftnl_data_reg_snprintf(char *buf, size_t size, return nftnl_data_reg_verdict_snprintf_def(buf, size, reg, flags); case NFTNL_OUTPUT_JSON: - return nftnl_data_reg_verdict_snprintf_json(buf, size, - reg, flags); case NFTNL_OUTPUT_XML: default: break; |