Patchwork [libnftables] change XML output format to element better than attributes

login
register
mail settings
Submitter Arturo Borrero
Date Feb. 13, 2013, 10:15 p.m.
Message ID <20130213221513.11611.54603.stgit@nfdev.cica.es>
Download mbox | patch
Permalink /patch/220282/
State Accepted
Headers show

Comments

Arturo Borrero - Feb. 13, 2013, 10:15 p.m.
Some of the problems with attributes are:

* attributes cannot contain multiple values (child elements can)
* attributes are not easily expandable (for future changes)
* attributes cannot describe structures (child elements can)
* attributes are more difficult to manipulate by program code
* attribute values are not easy to test against a DTD

Examples of this question at: http://www.w3schools.com/dtd/dtd_el_vs_attr.asp
---
 src/chain.c |   16 ++++++++--------
 src/table.c |    5 +++--
 2 files changed, 11 insertions(+), 10 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Pablo Neira - Feb. 14, 2013, 8:34 a.m.
On Wed, Feb 13, 2013 at 11:15:13PM +0100, Arturo Borrero wrote:
> Some of the problems with attributes are:
> 
> * attributes cannot contain multiple values (child elements can)
> * attributes are not easily expandable (for future changes)
> * attributes cannot describe structures (child elements can)
> * attributes are more difficult to manipulate by program code
> * attribute values are not easy to test against a DTD
> 
> Examples of this question at: http://www.w3schools.com/dtd/dtd_el_vs_attr.asp

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/src/chain.c b/src/chain.c
index 3c83e6d..1b1c3fe 100644
--- a/src/chain.c
+++ b/src/chain.c
@@ -443,14 +443,14 @@  static int nft_chain_snprintf_xml(char *buf, size_t size, struct nft_chain *c)
 		"<chain name=\"%s\" handle=\"%lu\""
 			" bytes=\"%lu\" packets=\"%lu\" >\n"
 			"\t<properties>\n"
-				"\t\t<flags value=\"%d\" />\n"
-				"\t\t<type value=\"%s\" />\n"
-				"\t\t<table value=\"%s\" />\n"
-				"\t\t<prio value=\"%d\" />\n"
-				"\t\t<use value=\"%d\" />\n"
-				"\t\t<hooknum value=\"%d\" />\n"
-				"\t\t<policy value=\"%d\" />\n"
-				"\t\t<family value=\"%d\" />\n"
+				"\t\t<flags>%d</flags>\n"
+				"\t\t<type>%s</type>\n"
+				"\t\t<table>%s</table>\n"
+				"\t\t<prio>%d</prio>\n"
+				"\t\t<use>%d</use>\n"
+				"\t\t<hooknum>%d</hooknum>\n"
+				"\t\t<policy>%d</policy>\n"
+				"\t\t<family>%d</family>\n"
 			"\t</properties>\n"
 		"</chain>\n",
 			c->name, c->handle, c->bytes, c->packets,
diff --git a/src/table.c b/src/table.c
index eb485b2..d2e07db 100644
--- a/src/table.c
+++ b/src/table.c
@@ -179,8 +179,9 @@  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\t<family>%u</family>\n"
+					"\t\t<flags>%d</flags>\n"
+					"\t\t<table_flags>%d</table_flags>\n"
 				"\t</properties>\n"
 			"</table>\n" ,
 			t->name, t->family, t->flags, t->table_flags);