diff options
author | /C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org> | 2007-05-01 18:30:03 +0000 |
---|---|---|
committer | /C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org> | 2007-05-01 18:30:03 +0000 |
commit | 4db878d6f81fd64029c48003f4e1ae57069a7c65 (patch) | |
tree | b15b1aa433fdd9284fed8db9a02a19b8d1aa46a0 /src/expect/snprintf_default.c | |
parent | 7736631fef63efde9c0fd68af89c3e2900286428 (diff) |
introduce the new expectation API
Diffstat (limited to 'src/expect/snprintf_default.c')
-rw-r--r-- | src/expect/snprintf_default.c | 62 |
1 files changed, 62 insertions, 0 deletions
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 <pablo@netfilter.org> + * + * 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; +} |