From: Guus Sliepen Date: Thu, 17 May 2007 22:01:07 +0000 (+0000) Subject: Use libevent to send MTU probes. X-Git-Tag: release-1.1pre1~187 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=3321591d93d00326eee01fa7c78fb0d56b3d0fba;p=oweals%2Ftinc.git Use libevent to send MTU probes. --- diff --git a/src/net_packet.c b/src/net_packet.c index bb81081..57794f9 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -36,7 +36,6 @@ #include "connection.h" #include "device.h" #include "ethernet.h" -#include "tevent.h" #include "graph.h" #include "list.h" #include "logger.h" @@ -61,15 +60,14 @@ static void send_udppacket(node_t *, vpn_packet_t *); #define MAX_SEQNO 1073741824 -void send_mtu_probe(node_t *n) -{ +static void send_mtu_probe_handler(int fd, short events, void *data) { + node_t *n = data; vpn_packet_t packet; int len, i; cp(); n->mtuprobes++; - n->mtuevent = NULL; if(n->mtuprobes >= 10 && !n->minmtu) { ifdebug(TRAFFIC) logger(LOG_INFO, _("No response to MTU probes from %s (%s)"), n->name, n->hostname); @@ -96,11 +94,13 @@ void send_mtu_probe(node_t *n) send_udppacket(n, &packet); } - n->mtuevent = new_tevent(); - n->mtuevent->handler = (event_handler_t)send_mtu_probe; - n->mtuevent->data = n; - n->mtuevent->time = now + 1; - tevent_add(n->mtuevent); + event_add(&n->mtuevent, &(struct timeval){1, 0}); +} + +void send_mtu_probe(node_t *n) { + if(!n->mtuevent.ev_callback) + timeout_set(&n->mtuevent, send_mtu_probe_handler, n); + send_mtu_probe_handler(0, 0, n); } void mtu_probe_h(node_t *n, vpn_packet_t *packet) { diff --git a/src/node.c b/src/node.c index d90e00a..61af641 100644 --- a/src/node.c +++ b/src/node.c @@ -106,10 +106,7 @@ void free_node(node_t *n) EVP_CIPHER_CTX_cleanup(&n->packet_ctx); - if(n->mtuevent) { - tevent_del(n->mtuevent); - free_tevent(n->mtuevent); - } + event_del(&n->mtuevent); if(n->hostname) free(n->hostname); diff --git a/src/node.h b/src/node.h index b3319e1..a612e93 100644 --- a/src/node.h +++ b/src/node.h @@ -80,7 +80,7 @@ typedef struct node_t { length_t minmtu; /* Probed minimum MTU */ length_t maxmtu; /* Probed maximum MTU */ int mtuprobes; /* Number of probes */ - tevent_t *mtuevent; /* Probe event */ + struct event mtuevent; /* Probe event */ } node_t; extern struct node_t *myself;