Move key regeneration handling to net_setup.c.
[tinc] / src / net_packet.c
index bb81081..596b9d5 100644 (file)
@@ -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"
@@ -53,7 +52,6 @@
 #endif
 
 int keylifetime = 0;
-int keyexpires = 0;
 EVP_CIPHER_CTX packet_ctx;
 static char lzo_wrkmem[LZO1X_999_MEM_COMPRESS > LZO1X_1_MEM_COMPRESS ? LZO1X_999_MEM_COMPRESS : LZO1X_1_MEM_COMPRESS];
 
@@ -61,15 +59,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 +93,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(!timeout_initialized(&n->mtuevent))
+               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) {
@@ -248,7 +247,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt)
                n->received_seqno = inpkt->seqno;
                        
        if(n->received_seqno > MAX_SEQNO)
-               keyexpires = 0;
+               regenerate_key();
 
        /* Decompress the packet */