/*
net_packet.c -- Handles in- and outgoing VPN packets
- Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org>,
- 2000-2005 Guus Sliepen <guus@tinc-vpn.org>
+ Copyright (C) 1998-2005 Ivo Timmermans,
+ 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <openssl/hmac.h>
#include <zlib.h>
-#include <lzo1x.h>
+#include LZO1X_H
#include "avl_tree.h"
#include "conf.h"
#include "connection.h"
#include "device.h"
#include "ethernet.h"
-#include "event.h"
+#include "tevent.h"
#include "graph.h"
#include "list.h"
#include "logger.h"
send_udppacket(n, &packet);
}
- n->mtuevent = xmalloc(sizeof(*n->mtuevent));
+ n->mtuevent = new_tevent();
n->mtuevent->handler = (event_handler_t)send_mtu_probe;
n->mtuevent->data = n;
n->mtuevent->time = now + 1;
- event_add(n->mtuevent);
+ tevent_add(n->mtuevent);
}
void mtu_probe_h(node_t *n, vpn_packet_t *packet) {
receive_packet(c->node, &outpkt);
}
-static void send_udppacket(node_t *n, vpn_packet_t *inpkt)
+static void send_udppacket(node_t *n, vpn_packet_t *origpkt)
{
vpn_packet_t pkt1, pkt2;
vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 };
+ vpn_packet_t *inpkt = origpkt;
int nextpkt = 0;
vpn_packet_t *outpkt;
int origlen;
}
end:
- inpkt->len = origlen;
+ origpkt->len = origlen;
}
/*
ifdebug(TRAFFIC) logger(LOG_INFO, _("Broadcasting packet of %d bytes from %s (%s)"),
packet->len, from->name, from->hostname);
- if(from != myself) {
- if(overwrite_mac)
- memcpy(packet->data, mymac.x, ETH_ALEN);
- write_packet(packet);
- }
+ if(from != myself)
+ send_packet(myself, packet);
for(node = connection_tree->head; node; node = node->next) {
c = node->data;
}
}
-void handle_incoming_vpn_data(int sock)
+void handle_incoming_vpn_data(int sock, short events, void *data)
{
vpn_packet_t pkt;
char *hostname;
receive_udppacket(n, &pkt);
}
+
+void handle_device_data(int sock, short events, void *data)
+{
+ vpn_packet_t packet;
+
+ if(read_packet(&packet))
+ route(myself, &packet);
+}