/*
device.c -- Interaction with Solaris tun device
- Copyright (C) 2001-2003 Ivo Timmermans <ivo@o2w.nl>,
- 2001-2003 Guus Sliepen <guus@sliepen.eu.org>
+ Copyright (C) 2001-2005 Ivo Timmermans,
+ 2001-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
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: device.c,v 1.4 2003/08/27 13:47:52 guus Exp $
+ $Id$
*/
int device_fd = -1;
char *device = NULL;
char *iface = NULL;
-char ifrname[IFNAMSIZ];
char *device_info = NULL;
-int device_total_in = 0;
-int device_total_out = 0;
+static int device_total_in = 0;
+static int device_total_out = 0;
-bool setup_device(void)
-{
+bool setup_device(void) {
int ip_fd = -1, if_fd = -1;
int ppa;
char *ptr;
return true;
}
-void close_device(void)
-{
+void close_device(void) {
cp();
close(device_fd);
}
-bool read_packet(vpn_packet_t *packet)
-{
+bool read_packet(vpn_packet_t *packet) {
int lenin;
cp();
return false;
}
- packet->data[12] = 0x08;
- packet->data[13] = 0x00;
+ switch(packet->data[14] >> 4) {
+ case 4:
+ packet->data[12] = 0x08;
+ packet->data[13] = 0x00;
+ break;
+ case 6:
+ packet->data[12] = 0x86;
+ packet->data[13] = 0xDD;
+ break;
+ default:
+ ifdebug(TRAFFIC) logger(LOG_ERR,
+ _ ("Unknown IP version %d while reading packet from %s %s"),
+ packet->data[14] >> 4, device_info, device);
+ return false;
+ }
packet->len = lenin + 14;
return true;
}
-bool write_packet(vpn_packet_t *packet)
-{
+bool write_packet(vpn_packet_t *packet) {
cp();
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"),
return true;
}
-void dump_device_stats(void)
-{
+void dump_device_stats(void) {
cp();
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device);