From 9064374e7758bc4fa167d1c30ccc751ea588f5db Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sun, 22 Jan 2012 19:41:07 +0100 Subject: expect: add XML support for nfexp_snprintf() Example of the XML output: 192.168.0.2 192.168.1.2 255.255.255.255 255.255.255.255 192.168.0.2 192.168.1.2 0 41739 0 65535 36390 21 ftp 300 0 Signed-off-by: Pablo Neira Ayuso --- src/conntrack/snprintf_xml.c | 54 +++++++++++++------------------------------- 1 file changed, 16 insertions(+), 38 deletions(-) (limited to 'src/conntrack') diff --git a/src/conntrack/snprintf_xml.c b/src/conntrack/snprintf_xml.c index 63c814a..756d118 100644 --- a/src/conntrack/snprintf_xml.c +++ b/src/conntrack/snprintf_xml.c @@ -53,17 +53,12 @@ * */ -enum { - __ADDR_SRC = 0, - __ADDR_DST, -}; - -static const char *__proto2str(u_int8_t protonum) +const char *__proto2str(u_int8_t protonum) { return proto2str[protonum] ? proto2str[protonum] : "unknown"; } -static const char *__l3proto2str(u_int8_t protonum) +const char *__l3proto2str(u_int8_t protonum) { return l3proto2str[protonum] ? l3proto2str[protonum] : "unknown"; } @@ -97,24 +92,16 @@ static int __snprintf_ipv6_xml(char *buf, return snprintf(buf, len, "%s", tmp); } -static int __snprintf_addr_xml(char *buf, - unsigned int len, - const struct __nfct_tuple *tuple, - unsigned int type) +int __snprintf_addr_xml(char *buf, unsigned int len, + const struct __nfct_tuple *tuple, + enum __nfct_addr type) { int ret; unsigned int size = 0, offset = 0; + const char *tag = (type == __ADDR_SRC) ? "src" : "dst"; - switch(type) { - case __ADDR_SRC: - ret = snprintf(buf, len, ""); - BUFFER_SIZE(ret, size, len, offset); - break; - case __ADDR_DST: - ret = snprintf(buf+offset, len, ""); - BUFFER_SIZE(ret, size, len, offset); - break; - } + ret = snprintf(buf, len, "<%s>", tag); + BUFFER_SIZE(ret, size, len, offset); switch (tuple->l3protonum) { case AF_INET: @@ -127,24 +114,15 @@ static int __snprintf_addr_xml(char *buf, break; } - switch(type) { - case __ADDR_SRC: - ret = snprintf(buf+offset, len, ""); - BUFFER_SIZE(ret, size, len, offset); - break; - case __ADDR_DST: - ret = snprintf(buf+offset, len, ""); - BUFFER_SIZE(ret, size, len, offset); - break; - } + ret = snprintf(buf+offset, len, "", tag); + BUFFER_SIZE(ret, size, len, offset); return size; } -static int __snprintf_proto_xml(char *buf, - unsigned int len, - const struct __nfct_tuple *tuple, - unsigned int type) +int __snprintf_proto_xml(char *buf, unsigned int len, + const struct __nfct_tuple *tuple, + enum __nfct_addr type) { int ret = 0; unsigned int size = 0, offset = 0; @@ -261,7 +239,7 @@ __snprintf_deltatime(char *buf, unsigned int len, const struct nf_conntrack *ct) return size; } -static int +int __snprintf_localtime_xml(char *buf, unsigned int len, const struct tm *tm) { int ret = 0; @@ -317,10 +295,10 @@ static int __snprintf_tuple_xml(char *buf, tuple->l3protonum, __l3proto2str(tuple->l3protonum)); BUFFER_SIZE(ret, size, len, offset); - ret = __snprintf_addr_xml(buf+offset, len, tuple, __DIR_ORIG); + ret = __snprintf_addr_xml(buf+offset, len, tuple, __ADDR_SRC); BUFFER_SIZE(ret, size, len, offset); - ret = __snprintf_addr_xml(buf+offset, len, tuple, __DIR_REPL); + ret = __snprintf_addr_xml(buf+offset, len, tuple, __ADDR_DST); BUFFER_SIZE(ret, size, len, offset); ret = snprintf(buf+offset, len, ""); -- cgit v1.2.3