From: Guus Sliepen Date: Sat, 28 May 2011 21:36:52 +0000 (+0200) Subject: Fix sparse warnings and add an extra sprinkling of const. X-Git-Tag: import-tinc-1.1~486^2~5 X-Git-Url: http://git.meshlink.io/?a=commitdiff_plain;ds=sidebyside;h=6d08eb1614b59d5f86a43edda9db06fca72b76cd;hp=07ffb1a19859791d419b83a876ba552dadedbf46;p=meshlink Fix sparse warnings and add an extra sprinkling of const. This is more or less the equivalent of Sven-Haegar Koch's fixes in the 1.1 branch. --- diff --git a/lib/pidfile.c b/lib/pidfile.c index 425b3043..6e24d5f0 100644 --- a/lib/pidfile.c +++ b/lib/pidfile.c @@ -27,6 +27,8 @@ #include "system.h" +#include "pidfile.h" + #ifndef HAVE_MINGW /* read_pid * @@ -34,7 +36,7 @@ * 0 is returned if either there's no pidfile, it's empty * or no pid can be read. */ -pid_t read_pid (char *pidfile) +pid_t read_pid (const char *pidfile) { FILE *f; long pid; @@ -53,7 +55,7 @@ pid_t read_pid (char *pidfile) * table (using /proc) to determine if the process already exists. If * so the pid is returned, otherwise 0. */ -pid_t check_pid (char *pidfile) +pid_t check_pid (const char *pidfile) { pid_t pid = read_pid(pidfile); @@ -79,7 +81,7 @@ pid_t check_pid (char *pidfile) * Writes the pid to the specified file. If that fails 0 is * returned, otherwise the pid. */ -pid_t write_pid (char *pidfile) +pid_t write_pid (const char *pidfile) { FILE *f; int fd; @@ -124,7 +126,7 @@ pid_t write_pid (char *pidfile) * Remove the the specified file. The result from unlink(2) * is returned */ -int remove_pid (char *pidfile) +int remove_pid (const char *pidfile) { return unlink (pidfile); } diff --git a/lib/pidfile.h b/lib/pidfile.h index d7b970c1..590a7bc7 100644 --- a/lib/pidfile.h +++ b/lib/pidfile.h @@ -26,7 +26,7 @@ * 0 is returned if either there's no pidfile, it's empty * or no pid can be read. */ -pid_t read_pid (char *pidfile); +extern pid_t read_pid (const char *pidfile); /* check_pid * @@ -34,19 +34,19 @@ pid_t read_pid (char *pidfile); * table (using /proc) to determine if the process already exists. If * so 1 is returned, otherwise 0. */ -pid_t check_pid (char *pidfile); +extern pid_t check_pid (const char *pidfile); /* write_pid * * Writes the pid to the specified file. If that fails 0 is * returned, otherwise the pid. */ -pid_t write_pid (char *pidfile); +extern pid_t write_pid (const char *pidfile); /* remove_pid * * Remove the the specified file. The result from unlink(2) * is returned */ -int remove_pid (char *pidfile); +extern int remove_pid (const char *pidfile); #endif diff --git a/lib/utils.c b/lib/utils.c index dd7e4de2..6ea904a5 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -23,9 +23,9 @@ #include "../src/logger.h" #include "utils.h" -const char hexadecimals[] = "0123456789ABCDEF"; +static const char hexadecimals[] = "0123456789ABCDEF"; -int charhex2bin(char c) { +static int charhex2bin(char c) { if(isdigit(c)) return c - '0'; else @@ -67,7 +67,7 @@ const char *winerror(int err) { } #endif -unsigned int bitfield_to_int(void *bitfield, size_t size) { +unsigned int bitfield_to_int(const void *bitfield, size_t size) { unsigned int value = 0; if(size > sizeof value) size = sizeof value; diff --git a/lib/utils.h b/lib/utils.h index 4456616d..f6ff7052 100644 --- a/lib/utils.h +++ b/lib/utils.h @@ -40,6 +40,6 @@ extern const char *winerror(int); #define sockinprogress(x) ((x) == EINPROGRESS) #endif -extern unsigned int bitfield_to_int(void *bitfield, size_t size); +extern unsigned int bitfield_to_int(const void *bitfield, size_t size); #endif /* __TINC_UTILS_H__ */ diff --git a/lib/xalloc.h b/lib/xalloc.h index 51f99bdf..952f9217 100644 --- a/lib/xalloc.h +++ b/lib/xalloc.h @@ -16,7 +16,7 @@ extern int xalloc_exit_failure; extern char *const xalloc_msg_memory_exhausted; /* FIXME: describe */ -extern void (*xalloc_fail_func) (); +extern void (*xalloc_fail_func) (int); void *xmalloc PARAMS ((size_t n)) __attribute__ ((__malloc__)); void *xmalloc_and_zero PARAMS ((size_t n)) __attribute__ ((__malloc__)); diff --git a/lib/xmalloc.c b/lib/xmalloc.c index 4e79aff9..e4079ce4 100644 --- a/lib/xmalloc.c +++ b/lib/xmalloc.c @@ -56,7 +56,7 @@ int xalloc_exit_failure = EXIT_FAILURE; char *const xalloc_msg_memory_exhausted = "Memory exhausted"; /* FIXME: describe */ -void (*xalloc_fail_func) (int) = 0; +void (*xalloc_fail_func) (int) = NULL; static void xalloc_fail (int size) @@ -70,13 +70,12 @@ xalloc_fail (int size) /* Allocate N bytes of memory dynamically, with error checking. */ void * -xmalloc (n) - size_t n; +xmalloc (size_t n) { void *p; p = malloc (n); - if (p == 0) + if (p == NULL) xalloc_fail ((int)n); return p; } @@ -84,13 +83,12 @@ xmalloc (n) /* Allocate N bytes of memory dynamically, and set it all to zero. */ void * -xmalloc_and_zero (n) - size_t n; +xmalloc_and_zero (size_t n) { void *p; p = malloc (n); - if (p == 0) + if (p == NULL) xalloc_fail ((int)n); memset (p, '\0', n); return p; @@ -101,12 +99,10 @@ xmalloc_and_zero (n) If P is NULL, run xmalloc. */ void * -xrealloc (p, n) - void *p; - size_t n; +xrealloc (void *p, size_t n) { p = realloc (p, n); - if (p == 0) + if (p == NULL) xalloc_fail (n); return p; } @@ -134,7 +130,7 @@ xcalloc (n, s) void *p; p = calloc (n, s); - if (p == 0) + if (p == NULL) xalloc_fail (); return p; } diff --git a/src/bsd/device.c b/src/bsd/device.c index d6ef0e82..a41827ff 100644 --- a/src/bsd/device.c +++ b/src/bsd/device.c @@ -22,6 +22,7 @@ #include "system.h" #include "conf.h" +#include "device.h" #include "logger.h" #include "net.h" #include "route.h" diff --git a/src/conf.c b/src/conf.c index 5f8fdb1e..b895b7f6 100644 --- a/src/conf.c +++ b/src/conf.c @@ -92,7 +92,7 @@ void config_add(avl_tree_t *config_tree, config_t *cfg) { avl_insert(config_tree, cfg); } -config_t *lookup_config(avl_tree_t *config_tree, char *variable) { +config_t *lookup_config(const avl_tree_t *config_tree, char *variable) { config_t cfg, *found; cfg.variable = variable; @@ -110,7 +110,7 @@ config_t *lookup_config(avl_tree_t *config_tree, char *variable) { return found; } -config_t *lookup_config_next(avl_tree_t *config_tree, const config_t *cfg) { +config_t *lookup_config_next(const avl_tree_t *config_tree, const config_t *cfg) { avl_node_t *node; config_t *found; @@ -188,7 +188,7 @@ bool get_config_address(const config_t *cfg, struct addrinfo **result) { } bool get_config_subnet(const config_t *cfg, subnet_t ** result) { - subnet_t subnet = {0}; + subnet_t subnet = {NULL}; if(!cfg) return false; @@ -368,7 +368,7 @@ void read_config_options(avl_tree_t *config_tree, const char *prefix) { } } -bool read_server_config() { +bool read_server_config(void) { char *fname; bool x; diff --git a/src/conf.h b/src/conf.h index 3eae4ad7..5b0796e5 100644 --- a/src/conf.h +++ b/src/conf.h @@ -48,8 +48,8 @@ extern void exit_configuration(avl_tree_t **); extern config_t *new_config(void) __attribute__ ((__malloc__)); extern void free_config(config_t *); extern void config_add(avl_tree_t *, config_t *); -extern config_t *lookup_config(avl_tree_t *, char *); -extern config_t *lookup_config_next(avl_tree_t *, const config_t *); +extern config_t *lookup_config(const avl_tree_t *, char *); +extern config_t *lookup_config_next(const avl_tree_t *, const config_t *); extern bool get_config_bool(const config_t *, bool *); extern bool get_config_int(const config_t *, int *); extern bool get_config_string(const config_t *, char **); diff --git a/src/connection.h b/src/connection.h index 05e8b4ba..eb13413b 100644 --- a/src/connection.h +++ b/src/connection.h @@ -32,16 +32,16 @@ #define OPTION_CLAMP_MSS 0x0008 typedef struct connection_status_t { - int pinged:1; /* sent ping */ - int active:1; /* 1 if active.. */ - int connecting:1; /* 1 if we are waiting for a non-blocking connect() to finish */ - int termreq:1; /* the termination of this connection was requested */ - int remove:1; /* Set to 1 if you want this connection removed */ - int timeout:1; /* 1 if gotten timeout */ - int encryptout:1; /* 1 if we can encrypt outgoing traffic */ - int decryptin:1; /* 1 if we have to decrypt incoming traffic */ - int mst:1; /* 1 if this connection is part of a minimum spanning tree */ - int unused:23; + unsigned int pinged:1; /* sent ping */ + unsigned int active:1; /* 1 if active.. */ + unsigned int connecting:1; /* 1 if we are waiting for a non-blocking connect() to finish */ + unsigned int termreq:1; /* the termination of this connection was requested */ + unsigned int remove:1; /* Set to 1 if you want this connection removed */ + unsigned int timeout:1; /* 1 if gotten timeout */ + unsigned int encryptout:1; /* 1 if we can encrypt outgoing traffic */ + unsigned int decryptin:1; /* 1 if we have to decrypt incoming traffic */ + unsigned int mst:1; /* 1 if this connection is part of a minimum spanning tree */ + unsigned int unused:23; } connection_status_t; #include "edge.h" diff --git a/src/cygwin/device.c b/src/cygwin/device.c index 90966cd2..42016cb5 100644 --- a/src/cygwin/device.c +++ b/src/cygwin/device.c @@ -24,6 +24,7 @@ #include #include "conf.h" +#include "device.h" #include "logger.h" #include "net.h" #include "route.h" diff --git a/src/dummy/device.c b/src/dummy/device.c index c84e899b..25a38f2d 100644 --- a/src/dummy/device.c +++ b/src/dummy/device.c @@ -19,6 +19,7 @@ #include "system.h" +#include "device.h" #include "logger.h" #include "net.h" diff --git a/src/event.c b/src/event.c index 99e6a238..e03b04dc 100644 --- a/src/event.c +++ b/src/event.c @@ -28,7 +28,7 @@ avl_tree_t *event_tree; extern time_t now; -int id; +static int id; static int event_compare(const event_t *a, const event_t *b) { if(a->time > b->time) diff --git a/src/graph.c b/src/graph.c index 3495f23c..9aadcd86 100644 --- a/src/graph.c +++ b/src/graph.c @@ -49,6 +49,7 @@ #include "connection.h" #include "device.h" #include "edge.h" +#include "graph.h" #include "logger.h" #include "netutl.h" #include "node.h" @@ -65,7 +66,7 @@ static bool graph_changed = true; Please note that sorting on weight is already done by add_edge(). */ -void mst_kruskal(void) { +static void mst_kruskal(void) { avl_node_t *node, *next; edge_t *e; node_t *n; @@ -146,7 +147,7 @@ void mst_kruskal(void) { Running time: O(E) */ -void sssp_bfs(void) { +static void sssp_bfs(void) { avl_node_t *node, *next, *to; edge_t *e; node_t *n; diff --git a/src/graph.h b/src/graph.h index 26006015..fb410961 100644 --- a/src/graph.h +++ b/src/graph.h @@ -22,8 +22,6 @@ #define __TINC_GRAPH_H__ extern void graph(void); -extern void mst_kruskal(void); -extern void sssp_bfs(void); extern void dump_graph(void); #endif /* __TINC_GRAPH_H__ */ diff --git a/src/linux/device.c b/src/linux/device.c index 0632d51a..c7c1b65c 100644 --- a/src/linux/device.c +++ b/src/linux/device.c @@ -28,6 +28,7 @@ #endif #include "conf.h" +#include "device.h" #include "logger.h" #include "net.h" #include "route.h" diff --git a/src/mingw/device.c b/src/mingw/device.c index fec53cf8..1dac3bfa 100644 --- a/src/mingw/device.c +++ b/src/mingw/device.c @@ -24,6 +24,7 @@ #include #include "conf.h" +#include "device.h" #include "logger.h" #include "net.h" #include "route.h" diff --git a/src/net.c b/src/net.c index e6a1166f..3508dd73 100644 --- a/src/net.c +++ b/src/net.c @@ -423,7 +423,7 @@ int main_loop(void) { } } - send_key_changed(broadcast, myself); + send_key_changed(); keyexpires = now + keylifetime; } diff --git a/src/net.h b/src/net.h index 55856e2b..b831cdd8 100644 --- a/src/net.h +++ b/src/net.h @@ -121,6 +121,8 @@ extern time_t now; extern int contradicting_add_edge; extern int contradicting_del_edge; +extern volatile bool running; + /* Yes, very strange placement indeed, but otherwise the typedefs get all tangled up */ #include "connection.h" #include "node.h" @@ -133,7 +135,7 @@ extern bool handle_new_meta_connection(int); extern int setup_listen_socket(const sockaddr_t *); extern int setup_vpn_in_socket(const sockaddr_t *); extern void send_packet(const struct node_t *, vpn_packet_t *); -extern void receive_tcppacket(struct connection_t *, char *, int); +extern void receive_tcppacket(struct connection_t *, const char *, int); extern void broadcast_packet(const struct node_t *, vpn_packet_t *); extern bool setup_network(void); extern void setup_outgoing_connection(struct outgoing_t *); @@ -144,7 +146,7 @@ extern void terminate_connection(struct connection_t *, bool); extern void flush_queue(struct node_t *); extern bool read_rsa_public_key(struct connection_t *); extern void send_mtu_probe(struct node_t *); -extern void load_all_subnets(); +extern void load_all_subnets(void); #ifndef HAVE_MINGW #define closesocket(s) close(s) diff --git a/src/net_packet.c b/src/net_packet.c index c7efa886..062523e5 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -365,7 +365,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) { receive_packet(n, inpkt); } -void receive_tcppacket(connection_t *c, char *buffer, int len) { +void receive_tcppacket(connection_t *c, const char *buffer, int len) { vpn_packet_t outpkt; outpkt.len = len; diff --git a/src/net_setup.c b/src/net_setup.c index cc6ef680..f18e3bfe 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -144,7 +144,7 @@ bool read_rsa_public_key(connection_t *c) { return false; } -bool read_rsa_private_key(void) { +static bool read_rsa_private_key(void) { FILE *fp; char *fname, *key, *pubkey; struct stat s; @@ -267,7 +267,7 @@ void load_all_subnets(void) { /* Configure node_t myself and set up the local sockets (listen only) */ -bool setup_myself(void) { +static bool setup_myself(void) { config_t *cfg; subnet_t *subnet; char *name, *hostname, *mode, *afname, *cipher, *digest; diff --git a/src/net_socket.c b/src/net_socket.c index 2e6b0685..a45bc204 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -535,7 +535,7 @@ bool handle_new_meta_connection(int sock) { return true; } -void free_outgoing(outgoing_t *outgoing) { +static void free_outgoing(outgoing_t *outgoing) { if(outgoing->ai) freeaddrinfo(outgoing->ai); diff --git a/src/node.c b/src/node.c index 36979ef3..d6156b6a 100644 --- a/src/node.c +++ b/src/node.c @@ -124,7 +124,7 @@ void node_del(node_t *n) { } node_t *lookup_node(char *name) { - node_t n = {0}; + node_t n = {NULL}; n.name = name; @@ -132,7 +132,7 @@ node_t *lookup_node(char *name) { } node_t *lookup_node_udp(const sockaddr_t *sa) { - node_t n = {0}; + node_t n = {NULL}; n.address = *sa; n.name = NULL; @@ -158,7 +158,7 @@ void update_node_udp(node_t *n, const sockaddr_t *sa) { ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s set to %s", n->name, n->hostname); } else { memset(&n->address, 0, sizeof n->address); - n->hostname = 0; + n->hostname = NULL; ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s cleared", n->name); } } diff --git a/src/node.h b/src/node.h index 7bac28e3..107a59b6 100644 --- a/src/node.h +++ b/src/node.h @@ -28,13 +28,13 @@ #include "subnet.h" typedef struct node_status_t { - int unused_active:1; /* 1 if active (not used for nodes) */ - int validkey:1; /* 1 if we currently have a valid key for him */ - int unused_waitingforkey:1; /* 1 if we already sent out a request */ - int visited:1; /* 1 if this node has been visited by one of the graph algorithms */ - int reachable:1; /* 1 if this node is reachable in the graph */ - int indirect:1; /* 1 if this node is not directly reachable by us */ - int unused:26; + unsigned int unused_active:1; /* 1 if active (not used for nodes) */ + unsigned int validkey:1; /* 1 if we currently have a valid key for him */ + unsigned int unused_waitingforkey:1; /* 1 if we already sent out a request */ + unsigned int visited:1; /* 1 if this node has been visited by one of the graph algorithms */ + unsigned int reachable:1; /* 1 if this node is reachable in the graph */ + unsigned int indirect:1; /* 1 if this node is not directly reachable by us */ + unsigned int unused:26; } node_status_t; typedef struct node_t { diff --git a/src/process.c b/src/process.c index e74c1d9a..c6592371 100644 --- a/src/process.c +++ b/src/process.c @@ -25,6 +25,7 @@ #include "device.h" #include "edge.h" #include "logger.h" +#include "net.h" #include "node.h" #include "pidfile.h" #include "process.h" @@ -41,10 +42,9 @@ extern char *identname; extern char *pidfilename; extern char **g_argv; extern bool use_logfile; -extern volatile bool running; #ifndef HAVE_MINGW -sigset_t emptysigset; +static sigset_t emptysigset; #endif static int saved_debug_level = -1; diff --git a/src/protocol.c b/src/protocol.c index 9d7c349f..5de30d7d 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -189,7 +189,7 @@ void exit_requests(void) { } bool seen_request(char *request) { - past_request_t *new, p = {0}; + past_request_t *new, p = {NULL}; p.request = request; diff --git a/src/protocol.h b/src/protocol.h index 2aed26d1..6c46c726 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -96,10 +96,10 @@ extern bool send_add_subnet(struct connection_t *, const struct subnet_t *); extern bool send_del_subnet(struct connection_t *, const struct subnet_t *); extern bool send_add_edge(struct connection_t *, const struct edge_t *); extern bool send_del_edge(struct connection_t *, const struct edge_t *); -extern void send_key_changed(); +extern void send_key_changed(void); extern bool send_req_key(struct node_t *); extern bool send_ans_key(struct node_t *); -extern bool send_tcppacket(struct connection_t *, struct vpn_packet_t *); +extern bool send_tcppacket(struct connection_t *, const struct vpn_packet_t *); /* Request handlers */ diff --git a/src/protocol_key.c b/src/protocol_key.c index 6ff68d27..f34ebaa5 100644 --- a/src/protocol_key.c +++ b/src/protocol_key.c @@ -34,9 +34,9 @@ #include "utils.h" #include "xalloc.h" -bool mykeyused = false; +static bool mykeyused = false; -void send_key_changed() { +void send_key_changed(void) { avl_node_t *node; connection_t *c; diff --git a/src/protocol_misc.c b/src/protocol_misc.c index 28571ef3..6f7ab03b 100644 --- a/src/protocol_misc.c +++ b/src/protocol_misc.c @@ -119,7 +119,7 @@ bool pong_h(connection_t *c) { /* Sending and receiving packets via TCP */ -bool send_tcppacket(connection_t *c, vpn_packet_t *packet) { +bool send_tcppacket(connection_t *c, const vpn_packet_t *packet) { /* If there already is a lot of data in the outbuf buffer, discard this packet. We use a very simple Random Early Drop algorithm. */ diff --git a/src/protocol_subnet.c b/src/protocol_subnet.c index 9ae491d0..62656c38 100644 --- a/src/protocol_subnet.c +++ b/src/protocol_subnet.c @@ -45,7 +45,7 @@ bool add_subnet_h(connection_t *c) { char subnetstr[MAX_STRING_SIZE]; char name[MAX_STRING_SIZE]; node_t *owner; - subnet_t s = {0}, *new, *old; + subnet_t s = {NULL}, *new, *old; if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) { logger(LOG_ERR, "Got bad %s from %s (%s)", "ADD_SUBNET", c->name, @@ -154,7 +154,7 @@ bool del_subnet_h(connection_t *c) { char subnetstr[MAX_STRING_SIZE]; char name[MAX_STRING_SIZE]; node_t *owner; - subnet_t s = {0}, *find; + subnet_t s = {NULL}, *find; if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) { logger(LOG_ERR, "Got bad %s from %s (%s)", "DEL_SUBNET", c->name, diff --git a/src/raw_socket/device.c b/src/raw_socket/device.c index f68e4619..abe368ad 100644 --- a/src/raw_socket/device.c +++ b/src/raw_socket/device.c @@ -23,6 +23,7 @@ #include #include "conf.h" +#include "device.h" #include "net.h" #include "logger.h" #include "utils.h" diff --git a/src/solaris/device.c b/src/solaris/device.c index 3a50b169..0dfffb1b 100644 --- a/src/solaris/device.c +++ b/src/solaris/device.c @@ -26,6 +26,7 @@ #include #include "conf.h" +#include "device.h" #include "logger.h" #include "net.h" #include "utils.h" diff --git a/src/subnet.c b/src/subnet.c index 67be0010..f010e4ea 100644 --- a/src/subnet.c +++ b/src/subnet.c @@ -52,7 +52,7 @@ static subnet_t *cache_mac_subnet[2]; static bool cache_mac_valid[2]; static int cache_mac_slot; -void subnet_cache_flush() { +void subnet_cache_flush(void) { cache_ipv4_valid[0] = cache_ipv4_valid[1] = false; cache_ipv6_valid[0] = cache_ipv6_valid[1] = false; cache_mac_valid[0] = cache_mac_valid[1] = false; @@ -451,7 +451,7 @@ subnet_t *lookup_subnet_ipv6(const ipv6_t *address) { void subnet_update(node_t *owner, subnet_t *subnet, bool up) { avl_node_t *node; int i; - char *envp[9] = {0}; + char *envp[9] = {NULL}; char netstr[MAXNETSTR]; char *name, *address, *port; char empty[] = ""; diff --git a/src/uml_socket/device.c b/src/uml_socket/device.c index 59551b4f..a2da7575 100644 --- a/src/uml_socket/device.c +++ b/src/uml_socket/device.c @@ -23,6 +23,7 @@ #include #include "conf.h" +#include "device.h" #include "net.h" #include "logger.h" #include "utils.h" diff --git a/src/vde/device.c b/src/vde/device.c index 6148ccbe..63171f9a 100644 --- a/src/vde/device.c +++ b/src/vde/device.c @@ -22,6 +22,7 @@ #include #include "conf.h" +#include "device.h" #include "net.h" #include "logger.h" #include "utils.h"