summaryrefslogtreecommitdiffstats
path: root/src/conntrack/snprintf_default.c
diff options
context:
space:
mode:
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-06-07 16:53:56 +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-06-07 16:53:56 +0000
commitabe1a6193f8558e1a1ea42ba431d164c18b08a3f (patch)
tree2b77643671f877a0abf9e997d5bda56421e5bbe0 /src/conntrack/snprintf_default.c
parentbd9578d2dc1bf4ed587e0158b8f3c0753fd18f29 (diff)
nfct_snprintf now returns the number of bytes that would have been written, not just the number of bytes written. Emulate snprintf behaviour as in specified in C99
Diffstat (limited to 'src/conntrack/snprintf_default.c')
-rw-r--r--src/conntrack/snprintf_default.c84
1 files changed, 42 insertions, 42 deletions
diff --git a/src/conntrack/snprintf_default.c b/src/conntrack/snprintf_default.c
index 78c0c64..5674963 100644
--- a/src/conntrack/snprintf_default.c
+++ b/src/conntrack/snprintf_default.c
@@ -70,15 +70,15 @@ int __snprintf_address_ipv4(char *buf,
unsigned int len,
const struct __nfct_tuple *tuple)
{
- int ret, size = 0;
+ int ret, size = 0, offset = 0;
struct in_addr src = { .s_addr = tuple->src.v4 };
struct in_addr dst = { .s_addr = tuple->dst.v4 };
ret = snprintf(buf, len, "src=%s ", inet_ntoa(src));
- BUFFER_SIZE(ret, size, len);
+ BUFFER_SIZE(ret, size, len, offset);
- ret = snprintf(buf+size, len, "dst=%s ", inet_ntoa(dst));
- BUFFER_SIZE(ret, size, len);
+ ret = snprintf(buf+offset, len, "dst=%s ", inet_ntoa(dst));
+ BUFFER_SIZE(ret, size, len, offset);
return size;
}
@@ -87,7 +87,7 @@ int __snprintf_address_ipv6(char *buf,
unsigned int len,
const struct __nfct_tuple *tuple)
{
- int ret, size = 0;
+ int ret, size = 0, offset = 0;
struct in6_addr src;
struct in6_addr dst;
char tmp[INET6_ADDRSTRLEN];
@@ -99,13 +99,13 @@ int __snprintf_address_ipv6(char *buf,
return -1;
ret = snprintf(buf, len, "src=%s ", tmp);
- BUFFER_SIZE(ret, size, len);
+ BUFFER_SIZE(ret, size, len, offset);
if (!inet_ntop(AF_INET6, &dst, tmp, sizeof(tmp)))
return -1;
- ret = snprintf(buf+size, len-size, "dst=%s ", tmp);
- BUFFER_SIZE(ret, size, len);
+ ret = snprintf(buf+offset, len-size, "dst=%s ", tmp);
+ BUFFER_SIZE(ret, size, len, offset);
return size;
}
@@ -205,89 +205,89 @@ int __snprintf_id(char *buf, unsigned int len, u_int32_t id)
}
int __snprintf_conntrack_default(char *buf,
- unsigned int remain,
+ unsigned int len,
const struct nf_conntrack *ct,
unsigned int msg_type,
unsigned int flags)
{
- int ret = 0, size = 0;
+ int ret = 0, size = 0, offset = 0;
switch(msg_type) {
case NFCT_T_NEW:
- ret = snprintf(buf, remain, "%9s ", "[NEW]");
+ ret = snprintf(buf, len, "%9s ", "[NEW]");
break;
case NFCT_T_UPDATE:
- ret = snprintf(buf, remain, "%9s ", "[UPDATE]");
+ ret = snprintf(buf, len, "%9s ", "[UPDATE]");
break;
case NFCT_T_DESTROY:
- ret = snprintf(buf, remain, "%9s ", "[DESTROY]");
+ ret = snprintf(buf, len, "%9s ", "[DESTROY]");
break;
default:
break;
}
- BUFFER_SIZE(ret, size, remain);
+ BUFFER_SIZE(ret, size, len, offset);
if (flags & NFCT_OF_SHOW_LAYER3) {
- ret = __snprintf_l3protocol(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_l3protocol(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
}
- ret = __snprintf_protocol(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_protocol(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
if (test_bit(ATTR_TIMEOUT, ct->set)) {
- ret = __snprintf_timeout(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_timeout(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
}
if (test_bit(ATTR_TCP_STATE, ct->set)) {
- ret = __snprintf_protoinfo(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_protoinfo(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
}
- ret = __snprintf_address(buf+size, remain, &ct->tuple[__DIR_ORIG]);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_address(buf+offset, len, &ct->tuple[__DIR_ORIG]);
+ BUFFER_SIZE(ret, size, len, offset);
- ret = __snprintf_proto(buf+size, remain, &ct->tuple[__DIR_ORIG]);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_proto(buf+offset, len, &ct->tuple[__DIR_ORIG]);
+ BUFFER_SIZE(ret, size, len, offset);
if (test_bit(ATTR_ORIG_COUNTER_PACKETS, ct->set) &&
test_bit(ATTR_ORIG_COUNTER_BYTES, ct->set)) {
- ret = __snprintf_counters(buf+size, remain, ct, __DIR_ORIG);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_counters(buf+offset, len, ct, __DIR_ORIG);
+ BUFFER_SIZE(ret, size, len, offset);
}
if (test_bit(ATTR_STATUS, ct->set)) {
- ret = __snprintf_status_not_seen_reply(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_status_not_seen_reply(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
}
- ret = __snprintf_address(buf+size, remain, &ct->tuple[__DIR_REPL]);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_address(buf+offset, len, &ct->tuple[__DIR_REPL]);
+ BUFFER_SIZE(ret, size, len, offset);
- ret = __snprintf_proto(buf+size, remain, &ct->tuple[__DIR_REPL]);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_proto(buf+offset, len, &ct->tuple[__DIR_REPL]);
+ BUFFER_SIZE(ret, size, len, offset);
if (test_bit(ATTR_REPL_COUNTER_PACKETS, ct->set) &&
test_bit(ATTR_REPL_COUNTER_BYTES, ct->set)) {
- ret = __snprintf_counters(buf+size, remain, ct, __DIR_REPL);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_counters(buf+offset, len, ct, __DIR_REPL);
+ BUFFER_SIZE(ret, size, len, offset);
}
if (test_bit(ATTR_STATUS, ct->set)) {
- ret = __snprintf_status_assured(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_status_assured(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
}
if (test_bit(ATTR_MARK, ct->set)) {
- ret = __snprintf_mark(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_mark(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
}
if (test_bit(ATTR_USE, ct->set)) {
- ret = __snprintf_use(buf+size, remain, ct);
- BUFFER_SIZE(ret, size, remain);
+ ret = __snprintf_use(buf+offset, len, ct);
+ BUFFER_SIZE(ret, size, len, offset);
}
/* Delete the last blank space */