From 4db878d6f81fd64029c48003f4e1ae57069a7c65 Mon Sep 17 00:00:00 2001 From: "/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org" Date: Tue, 1 May 2007 18:30:03 +0000 Subject: introduce the new expectation API --- src/expect/snprintf_default.c | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/expect/snprintf_default.c (limited to 'src/expect/snprintf_default.c') diff --git a/src/expect/snprintf_default.c b/src/expect/snprintf_default.c new file mode 100644 index 0000000..1b64eb2 --- /dev/null +++ b/src/expect/snprintf_default.c @@ -0,0 +1,62 @@ +/* + * (C) 2006-2007 by Pablo Neira Ayuso + * + * This software may be used and distributed according to the terms + * of the GNU General Public License, incorporated herein by reference. + */ + +#include "internal.h" + +static int __snprintf_expect_proto(char *buf, + unsigned int len, + const struct nf_expect *exp) +{ + return(snprintf(buf, len, "%u proto=%d ", + exp->timeout, + exp->expected.tuple[__DIR_ORIG].protonum)); +} + +int __snprintf_expect_default(char *buf, + unsigned int remain, + const struct nf_expect *exp, + unsigned int msg_type, + unsigned int flags) +{ + int ret = 0, size = 0; + + switch(msg_type) { + case NFCT_T_NEW: + ret = snprintf(buf, remain, "%9s ", "[NEW]"); + break; + default: + break; + } + + if (ret == -1) + return -1; + size += ret; + remain -= ret; + + ret = __snprintf_expect_proto(buf+size, remain, exp); + if (ret == -1) + return -1; + size += ret; + remain -= ret; + + ret = __snprintf_address(buf+size, remain, &exp->expected.tuple[__DIR_ORIG]); + if (ret == -1) + return -1; + size += ret; + remain -= ret; + + ret = __snprintf_proto(buf+size, remain, &exp->expected.tuple[__DIR_ORIG]); + if (ret == -1) + return -1; + size += ret; + remain -= ret; + + /* Delete the last blank space */ + size--; + + return size; +} -- cgit v1.2.3