#endif
int addressfamily = AF_UNSPEC;
-int maxtimeout = 900;
int seconds_till_retry = 5;
int max_connection_burst = 100;
-listen_socket_t listen_socket[MAXSOCKETS];
-int listen_sockets;
-
/* Setup sockets */
static void configure_tcp(connection_t *c) {
static bool bind_to_address(connection_t *c) {
int s = -1;
- for(int i = 0; i < listen_sockets && listen_socket[i].bindto; i++) {
- if(listen_socket[i].sa.sa.sa_family != c->address.sa.sa_family)
+ for(int i = 0; i < mesh->listen_sockets && mesh->listen_socket[i].bindto; i++) {
+ if(mesh->listen_socket[i].sa.sa.sa_family != c->address.sa.sa_family)
continue;
if(s >= 0)
return false;
if(s < 0)
return false;
- sockaddr_t sa = listen_socket[s].sa;
+ sockaddr_t sa = mesh->listen_socket[s].sa;
if(sa.sa.sa_family == AF_INET)
sa.in.sin_port = 0;
else if(sa.sa.sa_family == AF_INET6)
return nfd;
} /* int setup_vpn_in_socket */
-static void retry_outgoing_handler(void *data) {
+static void retry_outgoing_handler(event_loop_t *loop, void *data) {
setup_outgoing_connection(data);
}
void retry_outgoing(outgoing_t *outgoing) {
outgoing->timeout += 5;
- if(outgoing->timeout > maxtimeout)
- outgoing->timeout = maxtimeout;
+ if(outgoing->timeout > mesh->maxtimeout)
+ outgoing->timeout = mesh->maxtimeout;
- timeout_add(&outgoing->ev, retry_outgoing_handler, outgoing, &(struct timeval){outgoing->timeout, rand() % 100000});
+ timeout_add(&mesh->loop, &outgoing->ev, retry_outgoing_handler, outgoing, &(struct timeval){outgoing->timeout, rand() % 100000});
logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Trying to re-establish outgoing connection in %d seconds", outgoing->timeout);
}
buffer_read(&c->outbuf, outlen);
if(!c->outbuf.len)
- io_set(&c->io, IO_READ);
+ io_set(&mesh->loop, &c->io, IO_READ);
}
-static void handle_meta_io(void *data, int flags) {
+static void handle_meta_io(event_loop_t *loop, void *data, int flags) {
connection_t *c = data;
if(c->status.connecting) {
connection_add(c);
- io_add(&c->io, handle_meta_io, c, c->socket, IO_READ|IO_WRITE);
+ io_add(&mesh->loop, &c->io, handle_meta_io, c, c->socket, IO_READ|IO_WRITE);
return true;
}
}
void setup_outgoing_connection(outgoing_t *outgoing) {
- timeout_del(&outgoing->ev);
+ timeout_del(&mesh->loop, &outgoing->ev);
node_t *n = lookup_node(outgoing->name);
accept a new tcp connect and create a
new connection
*/
-void handle_new_meta_connection(void *data, int flags) {
+void handle_new_meta_connection(event_loop_t *loop, void *data, int flags) {
listen_socket_t *l = data;
connection_t *c;
sockaddr_t sa;
logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Connection from %s", c->hostname);
- io_add(&c->io, handle_meta_io, c, c->socket, IO_READ);
+ io_add(&mesh->loop, &c->io, handle_meta_io, c, c->socket, IO_READ);
configure_tcp(c);
}
static void free_outgoing(outgoing_t *outgoing) {
- timeout_del(&outgoing->ev);
+ timeout_del(&mesh->loop, &outgoing->ev);
if(outgoing->ai)
freeaddrinfo(outgoing->ai);