projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use splay trees instead of AVL trees.
[tinc]
/
src
/
net.c
diff --git
a/src/net.c
b/src/net.c
index
b47c702
..
469f10f
100644
(file)
--- a/
src/net.c
+++ b/
src/net.c
@@
-25,7
+25,7
@@
#include <openssl/rand.h>
#include "utils.h"
#include <openssl/rand.h>
#include "utils.h"
-#include "
avl
_tree.h"
+#include "
splay
_tree.h"
#include "conf.h"
#include "connection.h"
#include "device.h"
#include "conf.h"
#include "connection.h"
#include "device.h"
@@
-39,13
+39,10
@@
#include "subnet.h"
#include "xalloc.h"
#include "subnet.h"
#include "xalloc.h"
-volatile bool running = false;
-
/* Purge edges and subnets of unreachable nodes. Use carefully. */
/* Purge edges and subnets of unreachable nodes. Use carefully. */
-static void purge(void)
-{
- avl_node_t *nnode, *nnext, *enode, *enext, *snode, *snext;
+static void purge(void) {
+ splay_node_t *nnode, *nnext, *enode, *enext, *snode, *snext;
node_t *n;
edge_t *e;
subnet_t *s;
node_t *n;
edge_t *e;
subnet_t *s;
@@
-107,9
+104,8
@@
static void purge(void)
put all file descriptors into events
While we're at it, purge stuf that needs to be removed.
*/
put all file descriptors into events
While we're at it, purge stuf that needs to be removed.
*/
-static int build_fdset(void)
-{
- avl_node_t *node, *next;
+static int build_fdset(void) {
+ splay_node_t *node, *next;
connection_t *c;
int i, max = 0;
connection_t *c;
int i, max = 0;
@@
-136,8
+132,7
@@
static int build_fdset(void)
- Check if we need to retry making an outgoing connection
- Deactivate the host
*/
- Check if we need to retry making an outgoing connection
- Deactivate the host
*/
-void terminate_connection(connection_t *c, bool report)
-{
+void terminate_connection(connection_t *c, bool report) {
cp();
if(c->status.remove)
cp();
if(c->status.remove)
@@
-202,9
+197,8
@@
void terminate_connection(connection_t *c, bool report)
end does not reply in time, we consider them dead
and close the connection.
*/
end does not reply in time, we consider them dead
and close the connection.
*/
-static void timeout_handler(int fd, short events, void *event)
-{
- avl_node_t *node, *next;
+static void timeout_handler(int fd, short events, void *event) {
+ splay_node_t *node, *next;
connection_t *c;
time_t now = time(NULL);
connection_t *c;
time_t now = time(NULL);
@@
-247,8
+241,7
@@
static void timeout_handler(int fd, short events, void *event)
event_add(event, &(struct timeval){pingtimeout, 0});
}
event_add(event, &(struct timeval){pingtimeout, 0});
}
-void handle_meta_connection_data(int fd, short events, void *data)
-{
+void handle_meta_connection_data(int fd, short events, void *data) {
connection_t *c = data;
int result;
socklen_t len = sizeof(result);
connection_t *c = data;
int result;
socklen_t len = sizeof(result);
@@
-278,13
+271,8
@@
void handle_meta_connection_data(int fd, short events, void *data)
}
}
}
}
-static void dummy(int a, short b, void *c)
-{
-}
-
static void sigterm_handler(int signal, short events, void *data) {
logger(LOG_NOTICE, _("Got %s signal"), strsignal(signal));
static void sigterm_handler(int signal, short events, void *data) {
logger(LOG_NOTICE, _("Got %s signal"), strsignal(signal));
- running = false;
event_loopexit(NULL);
}
event_loopexit(NULL);
}
@@
-327,7
+315,7
@@
static void sigwinch_handler(int signal, short events, void *data) {
static void sighup_handler(int signal, short events, void *data) {
connection_t *c;
static void sighup_handler(int signal, short events, void *data) {
connection_t *c;
-
avl
_node_t *node;
+
splay
_node_t *node;
char *fname;
struct stat s;
static time_t last_config_check = 0;
char *fname;
struct stat s;
static time_t last_config_check = 0;
@@
-375,7
+363,7
@@
static void sigalrm_handler(int signal, short events, void *data) {
logger(LOG_NOTICE, _("Got %s signal"), strsignal(signal));
connection_t *c;
logger(LOG_NOTICE, _("Got %s signal"), strsignal(signal));
connection_t *c;
-
avl
_node_t *node;
+
splay
_node_t *node;
for(node = connection_tree->head; node; node = node->next) {
c = node->data;
for(node = connection_tree->head; node; node = node->next) {
c = node->data;
@@
-394,8
+382,7
@@
static void sigalrm_handler(int signal, short events, void *data) {
/*
this is where it all happens...
*/
/*
this is where it all happens...
*/
-int main_loop(void)
-{
+int main_loop(void) {
struct timeval tv;
int r;
struct event timeout_event;
struct timeval tv;
int r;
struct event timeout_event;