summaryrefslogtreecommitdiffstats
path: root/src/table.c
diff options
context:
space:
mode:
authorArturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>2013-02-08 17:51:56 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2013-02-08 19:12:55 +0100
commit26e06d838d6471f5233c1da3fee012bf113564a5 (patch)
tree0482737475d6dd151cd74a4e94bd82cff9278232 /src/table.c
parent1cef3296c64244736a000ab0d146d05ca1ac4b8b (diff)
src: add XML output support
Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/table.c')
-rw-r--r--src/table.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/table.c b/src/table.c
index 48e9a6a..eb485b2 100644
--- a/src/table.c
+++ b/src/table.c
@@ -174,12 +174,37 @@ int nft_table_nlmsg_parse(const struct nlmsghdr *nlh, struct nft_table *t)
}
EXPORT_SYMBOL(nft_table_nlmsg_parse);
-int nft_table_snprintf(char *buf, size_t size, struct nft_table *t,
- uint32_t type, uint32_t flags)
+static int nft_table_snprintf_xml(char *buf, size_t size, struct nft_table *t)
+{
+ return snprintf(buf, size,
+ "<table name=\"%s\" >\n"
+ "\t<properties>\n"
+ "\t\t<family value=\"%u\" />\n"
+ "\t\t<flags value=\"%d\" table_flags=\"%d\" />\n"
+ "\t</properties>\n"
+ "</table>\n" ,
+ t->name, t->family, t->flags, t->table_flags);
+}
+
+static int nft_table_snprintf_default(char *buf, size_t size, struct nft_table *t)
{
return snprintf(buf, size, "table=%s family=%u flags=%x\n",
t->name, t->family, t->table_flags);
}
+
+int nft_table_snprintf(char *buf, size_t size, struct nft_table *t,
+ uint32_t type, uint32_t flags)
+{
+ switch(type) {
+ case NFT_TABLE_O_XML:
+ return nft_table_snprintf_xml(buf, size, t);
+ case NFT_TABLE_O_DEFAULT:
+ return nft_table_snprintf_default(buf, size, t);
+ default:
+ break;
+ }
+ return -1;
+}
EXPORT_SYMBOL(nft_table_snprintf);
struct nft_table_list {