diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2009-04-14 10:36:11 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2009-04-14 10:36:11 +0200 |
commit | 806f790eae8212dbdbc3f61e6debdf4e29dfa9bf (patch) | |
tree | 240f16242d1147cac19a208f5e1e86283c8ba2de /src | |
parent | a1586cea00b32b401c76f17aab4121967051d883 (diff) |
snprintf: fix missing protocol state support in XML output
This patch adds the missing bits to display the protocol state
in the XML output.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/conntrack/snprintf_xml.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/conntrack/snprintf_xml.c b/src/conntrack/snprintf_xml.c index 928fc0b..08840a9 100644 --- a/src/conntrack/snprintf_xml.c +++ b/src/conntrack/snprintf_xml.c @@ -40,9 +40,7 @@ * </counters> * </meta> * <meta direction="independent"> - * <layer4> - * <state>ESTABLISHED</state> - * </layer4> + * <state>ESTABLISHED</state> * <timeout>100</timeout> * <mark>1</mark> * <secmark>0</secmark> @@ -290,7 +288,10 @@ int __snprintf_conntrack_xml(char *buf, ret = __snprintf_tuple_xml(buf+offset, len, ct, __DIR_REPL); BUFFER_SIZE(ret, size, len, offset); - if (test_bit(ATTR_TIMEOUT, ct->set) || + if (test_bit(ATTR_TCP_STATE, ct->set) || + test_bit(ATTR_SCTP_STATE, ct->set) || + test_bit(ATTR_DCCP_STATE, ct->set) || + test_bit(ATTR_TIMEOUT, ct->set) || test_bit(ATTR_MARK, ct->set) || test_bit(ATTR_USE, ct->set) || test_bit(ATTR_STATUS, ct->set)) { @@ -299,6 +300,24 @@ int __snprintf_conntrack_xml(char *buf, BUFFER_SIZE(ret, size, len, offset); } + if (test_bit(ATTR_TCP_STATE, ct->set)) { + ret = snprintf(buf+offset, len, "<state>%s</state>", + states[ct->protoinfo.tcp.state]); + BUFFER_SIZE(ret, size, len, offset); + } + + if (test_bit(ATTR_SCTP_STATE, ct->set)) { + ret = snprintf(buf+offset, len, "<state>%s</state>", + states[ct->protoinfo.sctp.state]); + BUFFER_SIZE(ret, size, len, offset); + } + + if (test_bit(ATTR_DCCP_STATE, ct->set)) { + ret = snprintf(buf+offset, len, "<state>%s</state>", + states[ct->protoinfo.dccp.state]); + BUFFER_SIZE(ret, size, len, offset); + } + if (test_bit(ATTR_TIMEOUT, ct->set)) { ret = snprintf(buf+offset, len, "<timeout>%u</timeout>", ct->timeout); @@ -338,7 +357,10 @@ int __snprintf_conntrack_xml(char *buf, BUFFER_SIZE(ret, size, len, offset); } - if (test_bit(ATTR_TIMEOUT, ct->set) || + if (test_bit(ATTR_TCP_STATE, ct->set) || + test_bit(ATTR_SCTP_STATE, ct->set) || + test_bit(ATTR_DCCP_STATE, ct->set) || + test_bit(ATTR_TIMEOUT, ct->set) || test_bit(ATTR_MARK, ct->set) || test_bit(ATTR_USE, ct->set) || test_bit(ATTR_STATUS, ct->set)) { |