From 2f1e7122841d00b3c0134ab9ee19e6ce02a9bd5c Mon Sep 17 00:00:00 2001 From: Alvaro Neira Ayuso Date: Thu, 6 Jun 2013 23:14:16 +0000 Subject: table: add function to export tables in JSON format Signed-off-by: Alvaro Neira Signed-off-by: Pablo Neira Ayuso --- include/libnftables/table.h | 1 + src/internal.h | 1 + src/table.c | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/include/libnftables/table.h b/include/libnftables/table.h index 658230c..19f322c 100644 --- a/include/libnftables/table.h +++ b/include/libnftables/table.h @@ -31,6 +31,7 @@ void nft_table_nlmsg_build_payload(struct nlmsghdr *nlh, const struct nft_table enum { NFT_TABLE_O_DEFAULT = 0, NFT_TABLE_O_XML, + NFT_TABLE_O_JSON, }; enum nft_table_parse_type { diff --git a/src/internal.h b/src/internal.h index 3ad5e89..0c5de21 100644 --- a/src/internal.h +++ b/src/internal.h @@ -20,6 +20,7 @@ #define NFT_TABLE_XML_VERSION 0 #define NFT_CHAIN_XML_VERSION 0 #define NFT_RULE_XML_VERSION 0 +#define NFT_TABLE_JSON_VERSION 0 struct expr_ops; diff --git a/src/table.c b/src/table.c index a868da4..de106bb 100644 --- a/src/table.c +++ b/src/table.c @@ -300,6 +300,22 @@ int nft_table_parse(struct nft_table *t, enum nft_table_parse_type type, } EXPORT_SYMBOL(nft_table_parse); +static int nft_table_snprintf_json(char *buf, size_t size, struct nft_table *t) +{ + return snprintf(buf, size, + "{\"table\" : {" + "\"name\" : \"%s\"," + "\"version\" : %d," + "\"properties\" : {" + "\"family\" : %u," + "\"table_flags\" : %d" + "}" + "}" + "}" , + t->name, NFT_TABLE_JSON_VERSION, + t->family, t->table_flags); +} + static int nft_table_snprintf_xml(char *buf, size_t size, struct nft_table *t) { return snprintf(buf, size, @@ -325,6 +341,8 @@ int nft_table_snprintf(char *buf, size_t size, struct nft_table *t, switch(type) { case NFT_TABLE_O_XML: return nft_table_snprintf_xml(buf, size, t); + case NFT_TABLE_O_JSON: + return nft_table_snprintf_json(buf, size, t); case NFT_TABLE_O_DEFAULT: return nft_table_snprintf_default(buf, size, t); default: -- cgit v1.2.3