summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--extensions/libct_proto_icmp.c2
-rw-r--r--extensions/libct_proto_tcp.c2
-rw-r--r--extensions/libct_proto_udp.c4
-rw-r--r--include/cache.h2
-rw-r--r--include/conntrack.h8
-rw-r--r--include/conntrackd.h4
-rw-r--r--include/debug.h4
-rw-r--r--include/linux_list.h2
-rw-r--r--include/log.h6
-rw-r--r--include/network.h2
-rw-r--r--src/alarm.c3
-rw-r--r--src/buffer.c1
-rw-r--r--src/cache.c28
-rw-r--r--src/cache_iterators.c5
-rw-r--r--src/cache_lifetime.c2
-rw-r--r--src/cache_timer.c2
-rw-r--r--src/cache_wt.c2
-rw-r--r--src/conntrack.c44
-rw-r--r--src/hash.c8
-rw-r--r--src/ignore_pool.c10
-rw-r--r--src/local.c2
-rw-r--r--src/log.c9
-rw-r--r--src/main.c12
-rw-r--r--src/mcast.c10
-rw-r--r--src/network.c5
-rw-r--r--src/read_config_yy.y2
-rw-r--r--src/run.c17
-rw-r--r--src/stats-mode.c6
-rw-r--r--src/sync-alarm.c2
-rw-r--r--src/sync-ftfw.c9
-rw-r--r--src/sync-mode.c2
-rw-r--r--src/traffic_stats.c4
33 files changed, 131 insertions, 93 deletions
diff --git a/ChangeLog b/ChangeLog
index 6543aaf..f42234a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -42,7 +42,6 @@ o wake up the daemon iff there are real events to handle instead of polling
o add support for tagged vlan interfaces in the config file, e.g. eth0.1
o improve alarm framework based on suggestions from Max Kellerman
o constify queue_iterate()
-o use timeradd() since manipulating tv_sec directly
Max Kellermann <max@duempel.org>:
@@ -63,6 +62,8 @@ o merge several *_alarm() functions into init_alarm()
o use add_alarm() in mod_alarm() to avoid code duplication
o import tcp_state_helper only once
o add missing printf arguments
+o use timeradd() since manipulating tv_sec directly
+o fix lots of gcc warnings
version 0.9.5 (2007/07/29)
------------------------------
diff --git a/extensions/libct_proto_icmp.c b/extensions/libct_proto_icmp.c
index 09fd8da..7c59072 100644
--- a/extensions/libct_proto_icmp.c
+++ b/extensions/libct_proto_icmp.c
@@ -51,7 +51,7 @@ static char icmp_commands_v_options[NUMBER_OF_CMD][ICMP_NUMBER_OF_OPT] =
/*EXP_EVENT*/ {0,0,0},
};
-static void help()
+static void help(void)
{
fprintf(stdout, " --icmp-type\t\t\ticmp type\n");
fprintf(stdout, " --icmp-code\t\t\ticmp code\n");
diff --git a/extensions/libct_proto_tcp.c b/extensions/libct_proto_tcp.c
index 1f630b3..a3b1826 100644
--- a/extensions/libct_proto_tcp.c
+++ b/extensions/libct_proto_tcp.c
@@ -73,7 +73,7 @@ static const char *states[] = {
"LISTEN"
};
-static void help()
+static void help(void)
{
fprintf(stdout, " --orig-port-src\t\toriginal source port\n");
fprintf(stdout, " --orig-port-dst\t\toriginal destination port\n");
diff --git a/extensions/libct_proto_udp.c b/extensions/libct_proto_udp.c
index 2216b71..267e3d6 100644
--- a/extensions/libct_proto_udp.c
+++ b/extensions/libct_proto_udp.c
@@ -38,7 +38,7 @@ static const char *udp_optflags[UDP_NUMBER_OF_OPT] = {
"mask-port-dst", "tuple-port-src", "tuple-port-dst"
};
-static void help()
+static void help(void)
{
fprintf(stdout, " --orig-port-src\t\toriginal source port\n");
fprintf(stdout, " --orig-port-dst\t\toriginal destination port\n");
@@ -166,8 +166,6 @@ static void final_check(unsigned int flags,
unsigned int cmd,
struct nf_conntrack *ct)
{
- int ret = 0;
-
if ((flags & (UDP_ORIG_SPORT|UDP_ORIG_DPORT))
&& !(flags & (UDP_REPL_SPORT|UDP_REPL_DPORT))) {
nfct_set_attr_u16(ct,
diff --git a/include/cache.h b/include/cache.h
index 5ca6ce4..e4fb945 100644
--- a/include/cache.h
+++ b/include/cache.h
@@ -75,7 +75,7 @@ struct cache_extra {
struct nf_conntrack;
-struct cache *cache_create(char *name, unsigned int features, u_int8_t proto, struct cache_extra *extra);
+struct cache *cache_create(const char *name, unsigned int features, u_int8_t proto, struct cache_extra *extra);
void cache_destroy(struct cache *e);
struct us_conntrack *cache_add(struct cache *c, struct nf_conntrack *ct);
diff --git a/include/conntrack.h b/include/conntrack.h
index 1b2581e..8f2b6a2 100644
--- a/include/conntrack.h
+++ b/include/conntrack.h
@@ -148,9 +148,9 @@ enum {
struct ctproto_handler {
struct list_head head;
- char *name;
+ const char *name;
u_int16_t protonum;
- char *version;
+ const char *version;
enum ctattr_protoinfo protoinfo_attr;
@@ -164,7 +164,7 @@ struct ctproto_handler {
unsigned int command,
struct nf_conntrack *ct);
- void (*help)();
+ void (*help)(void);
struct option *opts;
@@ -181,7 +181,7 @@ void generic_opt_check(int options,
int nops,
char *optset,
const char *optflg[]);
-void exit_error(enum exittype status, char *msg, ...);
+void exit_error(enum exittype status, const char *msg, ...);
extern void register_proto(struct ctproto_handler *h);
diff --git a/include/conntrackd.h b/include/conntrackd.h
index 33732a4..d3f66ba 100644
--- a/include/conntrackd.h
+++ b/include/conntrackd.h
@@ -181,4 +181,8 @@ void local_handler(int fd, void *data);
int init(void);
void run(void);
+/* from read_config_yy.c */
+int
+init_config(char *filename);
+
#endif
diff --git a/include/debug.h b/include/debug.h
index 1ffd9ac..f205983 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -14,8 +14,8 @@
})
#define debug printf
#else
-#define debug_ct(ct, msg)
-#define debug
+#define debug_ct(ct, msg) do {} while (0)
+#define debug(...) do {} while (0)
#endif
#endif
diff --git a/include/linux_list.h b/include/linux_list.h
index 57b56d7..b84b1c4 100644
--- a/include/linux_list.h
+++ b/include/linux_list.h
@@ -13,7 +13,7 @@
*
*/
#define container_of(ptr, type, member) ({ \
- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
/*
diff --git a/include/log.h b/include/log.h
index b5bbddb..64bf1ce 100644
--- a/include/log.h
+++ b/include/log.h
@@ -6,10 +6,10 @@
struct buffer;
struct nf_conntrack;
-int init_log();
-void dlog(FILE *fd, int priority, char *format, ...);
+int init_log(void);
+void dlog(FILE *fd, int priority, const char *format, ...);
void dlog_buffered_ct(FILE *fd, struct buffer *b, struct nf_conntrack *ct);
void dlog_buffered_ct_flush(void *buffer_data, void *data);
-void close_log();
+void close_log(void);
#endif
diff --git a/include/network.h b/include/network.h
index 88ff43b..d0b639b 100644
--- a/include/network.h
+++ b/include/network.h
@@ -60,7 +60,7 @@ int mcast_track_seq(u_int32_t seq, u_int32_t *exp_seq);
struct mcast_conf;
int mcast_buffered_init(struct mcast_conf *conf);
-void mcast_buffered_destroy();
+void mcast_buffered_destroy(void);
int mcast_buffered_send_netmsg(struct mcast_sock *m, void *data, int len);
int mcast_buffered_pending_netmsg(struct mcast_sock *m);
diff --git a/src/alarm.c b/src/alarm.c
index 3467e7b..25075ef 100644
--- a/src/alarm.c
+++ b/src/alarm.c
@@ -36,7 +36,8 @@ void init_alarm(struct alarm_list *t,
t->function = fcn;
}
-void __add_alarm(struct alarm_list *alarm)
+static void
+__add_alarm(struct alarm_list *alarm)
{
struct alarm_list *t;
diff --git a/src/buffer.c b/src/buffer.c
index 4f60123..79266a7 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -50,6 +50,7 @@ int buffer_add(struct buffer *b, void *data, unsigned int size)
memcpy(b->data + b->cur_size, data, size);
b->cur_size += size;
+ return 0;
}
void buffer_flush(struct buffer *b,
diff --git a/src/cache.c b/src/cache.c
index a0950d5..c5afb00 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -23,6 +23,7 @@
#include <errno.h>
#include "us-conntrack.h"
#include "cache.h"
+#include <stdlib.h>
static u_int32_t hash(const void *data, struct hashtable *table)
{
@@ -120,7 +121,7 @@ struct cache_feature *cache_feature[CACHE_MAX_FEATURE] = {
[WRITE_THROUGH_FEATURE] = &writethrough_feature,
};
-struct cache *cache_create(char *name,
+struct cache *cache_create(const char *name,
unsigned int features,
u_int8_t proto,
struct cache_extra *extra)
@@ -209,7 +210,7 @@ void cache_destroy(struct cache *c)
static struct us_conntrack *__add(struct cache *c, struct nf_conntrack *ct)
{
- int i;
+ unsigned i;
size_t size = c->h->datasize;
char buf[size];
struct us_conntrack *u = (struct us_conntrack *) buf;
@@ -226,7 +227,7 @@ static struct us_conntrack *__add(struct cache *c, struct nf_conntrack *ct)
u = hashtable_add(c->h, u);
if (u) {
- void *data = u->data;
+ char *data = u->data;
for (i = 0; i < c->num_features; i++) {
c->features[i]->add(u, data);
@@ -234,7 +235,7 @@ static struct us_conntrack *__add(struct cache *c, struct nf_conntrack *ct)
}
if (c->extra && c->extra->add)
- c->extra->add(u, ((void *) u) + c->extra_offset);
+ c->extra->add(u, ((char *) u) + c->extra_offset);
return u;
}
@@ -268,8 +269,8 @@ static struct us_conntrack *__update(struct cache *c, struct nf_conntrack *ct)
u = (struct us_conntrack *) hashtable_test(c->h, u);
if (u) {
- int i;
- void *data = u->data;
+ unsigned i;
+ char *data = u->data;
if (nfct_attr_is_set(ct, ATTR_STATUS))
nfct_set_attr_u32(u->ct, ATTR_STATUS,
@@ -287,14 +288,15 @@ static struct us_conntrack *__update(struct cache *c, struct nf_conntrack *ct)
}
if (c->extra && c->extra->update)
- c->extra->update(u, ((void *) u) + c->extra_offset);
+ c->extra->update(u, ((char *) u) + c->extra_offset);
return u;
}
return NULL;
}
-struct us_conntrack *__cache_update(struct cache *c, struct nf_conntrack *ct)
+static struct us_conntrack *
+__cache_update(struct cache *c, struct nf_conntrack *ct)
{
struct us_conntrack *u;
@@ -358,8 +360,8 @@ static int __del(struct cache *c, struct nf_conntrack *ct)
u = (struct us_conntrack *) hashtable_test(c->h, u);
if (u) {
- int i;
- void *data = u->data;
+ unsigned i;
+ char *data = u->data;
struct nf_conntrack *p = u->ct;
for (i = 0; i < c->num_features; i++) {
@@ -368,7 +370,7 @@ static int __del(struct cache *c, struct nf_conntrack *ct)
}
if (c->extra && c->extra->destroy)
- c->extra->destroy(u, ((void *) u) + c->extra_offset);
+ c->extra->destroy(u, ((char *) u) + c->extra_offset);
hashtable_del(c->h, u);
free(p);
@@ -390,12 +392,12 @@ int cache_del(struct cache *c, struct nf_conntrack *ct)
struct us_conntrack *cache_get_conntrack(struct cache *c, void *data)
{
- return data - c->extra_offset;
+ return (struct us_conntrack *)((char*)data - c->extra_offset);
}
void *cache_get_extra(struct cache *c, void *data)
{
- return data + c->extra_offset;
+ return (char*)data + c->extra_offset;
}
void cache_stats(const struct cache *c, int fd)
diff --git a/src/cache_iterators.c b/src/cache_iterators.c
index d43ae6f..4fdb920 100644
--- a/src/cache_iterators.c
+++ b/src/cache_iterators.c
@@ -19,6 +19,7 @@
#include "cache.h"
#include "jhash.h"
#include "hash.h"
+#include "log.h"
#include "conntrackd.h"
#include "netlink.h"
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
@@ -36,8 +37,8 @@ static int do_dump(void *data1, void *data2)
int size;
struct __dump_container *container = data1;
struct us_conntrack *u = data2;
- void *data = u->data;
- int i;
+ char *data = u->data;
+ unsigned i;
memset(buf, 0, sizeof(buf));
size = nfct_snprintf(buf,
diff --git a/src/cache_lifetime.c b/src/cache_lifetime.c
index ae54df2..26496d2 100644
--- a/src/cache_lifetime.c
+++ b/src/cache_lifetime.c
@@ -21,6 +21,8 @@
#include "us-conntrack.h"
#include "cache.h"
#include "alarm.h"
+#include <sys/time.h>
+#include <time.h>
static void lifetime_add(struct us_conntrack *u, void *data)
{
diff --git a/src/cache_timer.c b/src/cache_timer.c
index 8b4e4ea..53ed703 100644
--- a/src/cache_timer.c
+++ b/src/cache_timer.c
@@ -62,7 +62,7 @@ static int timer_dump(struct us_conntrack *u, void *data, char *buf, int type)
gettimeofday(&tv, NULL);
timersub(&tv, &alarm->tv, &tmp);
- return sprintf(buf, " [expires in %ds]", tmp.tv_sec);
+ return sprintf(buf, " [expires in %lds]", tmp.tv_sec);
}
struct cache_feature timer_feature = {
diff --git a/src/cache_wt.c b/src/cache_wt.c
index fee17e2..9d0af0b 100644
--- a/src/cache_wt.c
+++ b/src/cache_wt.c
@@ -25,7 +25,7 @@
static void add_update(struct us_conntrack *u)
{
char __ct[nfct_maxsize()];
- struct nf_conntrack *ct = (struct nf_conntrack *) __ct;
+ struct nf_conntrack *ct = (struct nf_conntrack *)(void*) __ct;
memcpy(ct, u->ct, nfct_maxsize());
diff --git a/src/conntrack.c b/src/conntrack.c
index 28340c1..f301a82 100644
--- a/src/conntrack.c
+++ b/src/conntrack.c
@@ -45,6 +45,8 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
+#include <sys/time.h>
+#include <time.h>
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
@@ -175,14 +177,15 @@ static struct ctproto_handler *findproto(char *name)
return handler;
}
-void extension_help(struct ctproto_handler *h)
+static void
+extension_help(struct ctproto_handler *h)
{
fprintf(stdout, "\n");
fprintf(stdout, "Proto `%s' help:\n", h->name);
h->help();
}
-void
+static void __attribute__((noreturn))
exit_tryhelp(int status)
{
fprintf(stderr, "Try `%s -h' or '%s --help' for more information.\n",
@@ -190,7 +193,8 @@ exit_tryhelp(int status)
exit(status);
}
-void exit_error(enum exittype status, char *msg, ...)
+void __attribute__((noreturn))
+exit_error(enum exittype status, const char *msg, ...)
{
va_list args;
@@ -281,7 +285,7 @@ merge_options(struct option *oldopts, const struct option *newopts,
#define ENOTSUPP 524 /* Operation is not supported */
/* Translates errno numbers into more human-readable form than strerror. */
-const char *
+static const char *
err2str(int err, enum action command)
{
unsigned int i;
@@ -318,7 +322,7 @@ err2str(int err, enum action command)
#define PARSE_MAX 3
static struct parse_parameter {
- char *parameter[6];
+ const char *parameter[6];
size_t size;
unsigned int value[6];
} parse_array[PARSE_MAX] = {
@@ -336,7 +340,8 @@ static int
do_parse_parameter(const char *str, size_t str_length, unsigned int *value,
int parse_type)
{
- int i, ret = 0;
+ size_t i;
+ int ret = 0;
struct parse_parameter *p = &parse_array[parse_type];
if (strncasecmp(str, "SRC_NAT", str_length) == 0) {
@@ -384,7 +389,8 @@ add_command(unsigned int *cmd, const int newcmd, const int othercmds)
*cmd |= newcmd;
}
-unsigned int check_type(int argc, char *argv[])
+static unsigned int
+check_type(int argc, char *argv[])
{
char *table = NULL;
@@ -424,7 +430,8 @@ struct addr_parse {
unsigned int family;
};
-int parse_inetaddr(const char *cp, struct addr_parse *parse)
+static int
+parse_inetaddr(const char *cp, struct addr_parse *parse)
{
if (inet_aton(cp, &parse->addr))
return AF_INET;
@@ -441,7 +448,8 @@ union ct_address {
u_int32_t v6[4];
};
-int parse_addr(const char *cp, union ct_address *address)
+static int
+parse_addr(const char *cp, union ct_address *address)
{
struct addr_parse parse;
int ret;
@@ -458,7 +466,7 @@ int parse_addr(const char *cp, union ct_address *address)
static void
nat_parse(char *arg, int portok, struct nf_conntrack *obj, int type)
{
- char *colon, *dash, *error;
+ char *colon, *error;
union ct_address parse;
colon = strchr(arg, ':');
@@ -495,7 +503,8 @@ nat_parse(char *arg, int portok, struct nf_conntrack *obj, int type)
nfct_set_attr_u32(obj, ATTR_DNAT_IPV4, parse.v4);
}
-static void event_sighandler(int s)
+static void __attribute__((noreturn))
+event_sighandler(int s)
{
fprintf(stdout, "Now closing conntrack event dumping...\n");
nfct_close(cth);
@@ -524,7 +533,6 @@ static const char usage_conntrack_parameters[] =
" -e, --event-mask eventmask\t\tEvent mask, eg. NEW,DESTROY\n"
" -z, --zero \t\t\t\tZero counters while listing\n"
" -o, --output type[,...]\t\tOutput format, eg. xml\n";
- ;
static const char usage_expectation_parameters[] =
"Expectation parameters and options:\n"
@@ -546,7 +554,9 @@ static const char usage_parameters[] =
;
-void usage(char *prog) {
+static void
+usage(char *prog)
+{
fprintf(stdout, "Command line interface for the connection "
"tracking system. Version %s\n", VERSION);
fprintf(stdout, "Usage: %s [commands] [options]\n", prog);
@@ -662,11 +672,11 @@ int main(int argc, char *argv[])
char __obj[nfct_maxsize()];
char __exptuple[nfct_maxsize()];
char __mask[nfct_maxsize()];
- struct nf_conntrack *obj = (struct nf_conntrack *) __obj;
- struct nf_conntrack *exptuple = (struct nf_conntrack *) __exptuple;
- struct nf_conntrack *mask = (struct nf_conntrack *) __mask;
+ struct nf_conntrack *obj = (struct nf_conntrack *)(void*) __obj;
+ struct nf_conntrack *exptuple = (struct nf_conntrack *)(void*) __exptuple;
+ struct nf_conntrack *mask = (struct nf_conntrack *)(void*) __mask;
char __exp[nfexp_maxsize()];
- struct nf_expect *exp = (struct nf_expect *) __exp;
+ struct nf_expect *exp = (struct nf_expect *)(void*) __exp;
int l3protonum;
union ct_address ad;
unsigned int command;
diff --git a/src/hash.c b/src/hash.c
index 3ed6ad2..553dd1d 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -53,7 +53,6 @@ hashtable_create(int hashsize, int limit, int datasize,
{
int i;
struct hashtable *h;
- struct hashtype *t;
int size = sizeof(struct hashtable)
+ hashsize * sizeof(struct slist_head);
@@ -87,7 +86,6 @@ void *hashtable_add(struct hashtable *table, void *data)
struct slist_head *e;
struct hashtable_node *n;
u_int32_t id;
- int i;
/* hash table is full */
if (table->count >= table->limit) {
@@ -122,7 +120,6 @@ void *hashtable_test(struct hashtable *table, const void *data)
struct slist_head *e;
u_int32_t id;
struct hashtable_node *n;
- int i;
id = table->hash(data, table);
@@ -141,7 +138,6 @@ int hashtable_del(struct hashtable *table, void *data)
struct slist_head *e, *next, *prev;
u_int32_t id;
struct hashtable_node *n;
- int i;
id = table->hash(data, table);
@@ -160,7 +156,7 @@ int hashtable_del(struct hashtable *table, void *data)
int hashtable_flush(struct hashtable *table)
{
- int i;
+ u_int32_t i;
struct slist_head *e, *next, *prev;
struct hashtable_node *n;
@@ -179,7 +175,7 @@ int hashtable_flush(struct hashtable *table)
int hashtable_iterate(struct hashtable *table, void *data,
int (*iterate)(void *data1, void *data2))
{
- int i;
+ u_int32_t i;
struct slist_head *e, *next, *prev;
struct hashtable_node *n;
diff --git a/src/ignore_pool.c b/src/ignore_pool.c
index ee457ba..82afa93 100644
--- a/src/ignore_pool.c
+++ b/src/ignore_pool.c
@@ -20,8 +20,11 @@
#include "hash.h"
#include "conntrackd.h"
#include "ignore.h"
+#include "log.h"
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
+#include <stdlib.h>
+
/* XXX: These should be configurable */
#define IGNORE_POOL_SIZE 128
#define IGNORE_POOL_LIMIT INT_MAX
@@ -53,7 +56,6 @@ static int compare6(const void *data1, const void *data2)
struct ignore_pool *ignore_pool_create(u_int8_t proto)
{
- int i, j = 0;
struct ignore_pool *ip;
ip = malloc(sizeof(struct ignore_pool));
@@ -100,7 +102,8 @@ int ignore_pool_add(struct ignore_pool *ip, void *data)
return 1;
}
-int __ignore_pool_test_ipv4(struct ignore_pool *ip, struct nf_conntrack *ct)
+static int
+__ignore_pool_test_ipv4(struct ignore_pool *ip, struct nf_conntrack *ct)
{
return (hashtable_test(ip->h, nfct_get_attr(ct, ATTR_ORIG_IPV4_SRC)) ||
hashtable_test(ip->h, nfct_get_attr(ct, ATTR_ORIG_IPV4_DST)) ||
@@ -108,7 +111,8 @@ int __ignore_pool_test_ipv4(struct ignore_pool *ip, struct nf_conntrack *ct)
hashtable_test(ip->h, nfct_get_attr(ct, ATTR_REPL_IPV4_DST)));
}
-int __ignore_pool_test_ipv6(struct ignore_pool *ip, struct nf_conntrack *ct)
+static int
+__ignore_pool_test_ipv6(struct ignore_pool *ip, struct nf_conntrack *ct)
{
return (hashtable_test(ip->h, nfct_get_attr(ct, ATTR_ORIG_IPV6_SRC)) ||
hashtable_test(ip->h, nfct_get_attr(ct, ATTR_ORIG_IPV6_DST)) ||
diff --git a/src/local.c b/src/local.c
index be51b9e..9ff5f82 100644
--- a/src/local.c
+++ b/src/local.c
@@ -68,7 +68,7 @@ int do_local_server_step(int fd, void *data,
{
int rfd;
struct sockaddr_un local;
- size_t sin_size = sizeof(struct sockaddr_un);
+ socklen_t sin_size = sizeof(struct sockaddr_un);
if ((rfd = accept(fd, (struct sockaddr *)&local, &sin_size)) == -1)
return -1;
diff --git a/src/log.c b/src/log.c
index 51109b6..b42e049 100644
--- a/src/log.c
+++ b/src/log.c
@@ -18,7 +18,7 @@
* Description: Logging support for the conntrack daemon
*/
-#include <stdio.h>
+#include "log.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -26,6 +26,7 @@
#include <stdarg.h>
#include <string.h>
#include <errno.h>
+#include <unistd.h>
#include "buffer.h"
#include "conntrackd.h"
@@ -78,11 +79,11 @@ int init_log(void)
return 0;
}
-void dlog(FILE *fd, int priority, char *format, ...)
+void dlog(FILE *fd, int priority, const char *format, ...)
{
time_t t;
char *buf;
- char *prio;
+ const char *prio;
va_list args;
if (fd) {
@@ -125,7 +126,7 @@ void dlog_buffered_ct_flush(void *buffer_data, void *data)
{
FILE *fd = data;
- fprintf(fd, "%s", buffer_data);
+ fprintf(fd, "%s", (const char*)buffer_data);
fflush(fd);
}
diff --git a/src/main.c b/src/main.c
index 2497a7f..11974ff 100644
--- a/src/main.c
+++ b/src/main.c
@@ -28,6 +28,9 @@
#include "hash.h"
#include "jhash.h"
+#undef _POSIX_SOURCE
+#include <sys/capability.h>
+
struct ct_general_state st;
union ct_state state;
@@ -52,7 +55,8 @@ static const char usage_options[] =
"Options:\n"
" -C [configfile], configuration file path\n";
-void show_usage(char *progname)
+static void
+show_usage(char *progname)
{
fprintf(stdout, "Connection tracking userspace daemon v%s\n", VERSION);
fprintf(stdout, "Usage: %s [commands] [options]\n\n", progname);
@@ -61,7 +65,8 @@ void show_usage(char *progname)
fprintf(stdout, "%s\n", usage_options);
}
-void set_operation_mode(int *current, int want, char *argv[])
+static void
+set_operation_mode(int *current, int want, char *argv[])
{
if (*current == NOT_SET) {
*current = want;
@@ -109,7 +114,7 @@ static int check_capabilities(void)
int main(int argc, char *argv[])
{
- int ret, i, config_set = 0, action;
+ int ret, i, config_set = 0, action = -1;
char config_file[PATH_MAX];
int type = 0;
struct utsname u;
@@ -305,4 +310,5 @@ int main(int argc, char *argv[])
* run main process
*/
run();
+ return 0;
}
diff --git a/src/mcast.c b/src/mcast.c
index cdaed5f..cf03593 100644
--- a/src/mcast.c
+++ b/src/mcast.c
@@ -192,7 +192,6 @@ __mcast_client_create_ipv6(struct mcast_sock *m, struct mcast_conf *conf)
struct mcast_sock *mcast_client_create(struct mcast_conf *conf)
{
int ret = 0;
- struct sockaddr_in addr;
struct mcast_sock *m;
m = (struct mcast_sock *) malloc(sizeof(struct mcast_sock));
@@ -300,9 +299,12 @@ void mcast_dump_stats(int fd, struct mcast_sock *s, struct mcast_sock *r)
"%20llu Pckts recv\n"
"%20llu Error send "
"%20llu Error recv\n\n",
- s->stats.bytes, r->stats.bytes,
- s->stats.messages, r->stats.messages,
- s->stats.error, r->stats.error);
+ (unsigned long long)s->stats.bytes,
+ (unsigned long long)r->stats.bytes,
+ (unsigned long long)s->stats.messages,
+ (unsigned long long)r->stats.messages,
+ (unsigned long long)s->stats.error,
+ (unsigned long long)r->stats.error);
send(fd, buf, size, 0);
}
diff --git a/src/network.c b/src/network.c
index e7ffbac..9d6e6e1 100644
--- a/src/network.c
+++ b/src/network.c
@@ -22,6 +22,8 @@
#include "sync.h"
#include "log.h"
+#include <stdlib.h>
+
static unsigned int seq_set, cur_seq;
static int __do_send(struct mcast_sock *m, void *data, int len)
@@ -65,8 +67,6 @@ static int __do_prepare(struct mcast_sock *m, void *data, int len)
static int __prepare_ctl(struct mcast_sock *m, void *data)
{
- struct nethdr_ack *nack = (struct nethdr_ack *) data;
-
return __do_prepare(m, data, NETHDR_ACK_SIZ);
}
@@ -172,7 +172,6 @@ void build_netmsg(struct nf_conntrack *ct, int query, struct nethdr *net)
int handle_netmsg(struct nethdr *net)
{
- int ret;
struct netpld *pld = NETHDR_DATA(net);
/* message too small: no room for the header */
diff --git a/src/read_config_yy.y b/src/read_config_yy.y
index 8f8759f..82131d7 100644
--- a/src/read_config_yy.y
+++ b/src/read_config_yy.y
@@ -639,7 +639,7 @@ buffer_size: T_STAT_BUFFER_SIZE T_NUMBER
%%
-int
+int __attribute__((noreturn))
yyerror(char *msg)
{
fprintf(stderr, "Error parsing config file: ");
diff --git a/src/run.c b/src/run.c
index 7fbeaf5..3fd98cd 100644
--- a/src/run.c
+++ b/src/run.c
@@ -20,12 +20,19 @@
#include "conntrackd.h"
#include "netlink.h"
+#include "ignore.h"
+#include "log.h"
+#include "alarm.h"
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
#include <errno.h>
#include "us-conntrack.h"
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/time.h>
+#include <time.h>
void killer(int foo)
{
@@ -84,7 +91,8 @@ void local_handler(int fd, void *data)
dlog(STATE(log), LOG_WARNING, "unknown local request %d", type);
}
-int init(void)
+int
+init(void)
{
if (CONFIG(flags) & CTD_STATS_MODE)
STATE(mode) = &stats_mode;
@@ -164,11 +172,11 @@ static int __run(struct timeval *next_alarm)
if (ret == -1) {
/* interrupted syscall, retry */
if (errno == EINTR)
- return;
+ return 0;
dlog(STATE(log), LOG_WARNING,
"select failed: %s", strerror(errno));
- return;
+ return 0;
}
/* timeout expired, run the alarm list */
@@ -223,7 +231,8 @@ static int __run(struct timeval *next_alarm)
return 0;
}
-void run(void)
+void __attribute__((noreturn))
+run(void)
{
struct timeval next_alarm;
struct timeval *next = &next_alarm;
diff --git a/src/stats-mode.c b/src/stats-mode.c
index 0983b97..563e1f6 100644
--- a/src/stats-mode.c
+++ b/src/stats-mode.c
@@ -31,8 +31,6 @@
static int init_stats(void)
{
- int ret;
-
state.stats = malloc(sizeof(struct ct_stats_state));
if (!state.stats) {
dlog(STATE(log), LOG_ERR, "can't allocate memory for stats");
@@ -59,7 +57,7 @@ static int init_stats(void)
return 0;
}
-static void kill_stats()
+static void kill_stats(void)
{
cache_destroy(STATE_STATS(cache));
/* flush the buffer before exiting */
@@ -130,7 +128,7 @@ static int overrun_cb(enum nf_conntrack_msg_type type,
return NFCT_CB_CONTINUE;
}
-static void overrun_stats()
+static void overrun_stats(void)
{
int ret;
struct nfct_handle *h;
diff --git a/src/sync-alarm.c b/src/sync-alarm.c
index d9a8267..05ddf81 100644
--- a/src/sync-alarm.c
+++ b/src/sync-alarm.c
@@ -22,6 +22,8 @@
#include "us-conntrack.h"
#include "alarm.h"
+#include <stdlib.h>
+
static void refresher(struct alarm_list *a, void *data)
{
int len;
diff --git a/src/sync-ftfw.c b/src/sync-ftfw.c
index 63fd4b2..d881298 100644
--- a/src/sync-ftfw.c
+++ b/src/sync-ftfw.c
@@ -25,13 +25,14 @@
#include "debug.h"
#include "network.h"
#include "alarm.h"
+#include "log.h"
#include <libnfnetlink/libnfnetlink.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
#if 0
#define dp printf
#else
-#define dp
+#define dp(...)
#endif
static LIST_HEAD(rs_list);
@@ -92,7 +93,7 @@ static void do_alive_alarm(struct alarm_list *a, void *data)
add_alarm(&alive_alarm);
}
-static int ftfw_init()
+static int ftfw_init(void)
{
tx_queue = queue_create(CONFIG(resend_queue_size));
if (tx_queue == NULL) {
@@ -117,7 +118,7 @@ static int ftfw_init()
return 0;
}
-static void ftfw_kill()
+static void ftfw_kill(void)
{
queue_destroy(rs_queue);
queue_destroy(tx_queue);
@@ -330,7 +331,7 @@ static int tx_list_xmit(struct list_head *i, struct us_conntrack *u)
return ret;
}
-static void ftfw_run()
+static void ftfw_run(void)
{
struct cache_ftfw *cn, *tmp;
diff --git a/src/sync-mode.c b/src/sync-mode.c
index 8be8c18..f2bfc9f 100644
--- a/src/sync-mode.c
+++ b/src/sync-mode.c
@@ -38,7 +38,7 @@ static void do_mcast_handler_step(struct nethdr *net)
int query;
struct netpld *pld = NETHDR_DATA(net);
char __ct[nfct_maxsize()];
- struct nf_conntrack *ct = (struct nf_conntrack *) __ct;
+ struct nf_conntrack *ct = (struct nf_conntrack *)(void*) __ct;
struct us_conntrack *u = NULL;
if (STATE_SYNC(sync)->recv(net))
diff --git a/src/traffic_stats.c b/src/traffic_stats.c
index b2cdaae..b6fa030 100644
--- a/src/traffic_stats.c
+++ b/src/traffic_stats.c
@@ -48,8 +48,8 @@ void dump_traffic_stats(int fd)
STATE(packets)[NFCT_DIR_REPLY];
size = sprintf(buf, "traffic processed:\n");
- size += sprintf(buf+size, "%20llu Bytes ", bytes);
- size += sprintf(buf+size, "%20llu Pckts\n\n", packets);
+ size += sprintf(buf+size, "%20llu Bytes ", (unsigned long long)bytes);
+ size += sprintf(buf+size, "%20llu Pckts\n\n", (unsigned long long)packets);
send(fd, buf, size, 0);
}