char *iface = NULL;
static char *device_info = NULL;
+static uint64_t device_total_in = 0;
+static uint64_t device_total_out = 0;
+
extern char *myport;
static DWORD WINAPI tapreader(void *bla) {
DWORD len;
OVERLAPPED overlapped;
vpn_packet_t packet;
- int errors;
logger(DEBUG_ALWAYS, LOG_DEBUG, "Tap reader running");
} else {
logger(DEBUG_ALWAYS, LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno));
- errors++;
- if(errors >= 10) {
- EnterCriticalSection(&mutex);
- running = false;
- LeaveCriticalSection(&mutex);
- }
- usleep(1000000);
- continue;
+ return -1;
}
}
- errors = 0;
+ EnterCriticalSection(&mutex);
packet.len = len;
packet.priority = 0;
-
- EnterCriticalSection(&mutex);
route(myself, &packet);
event_flush_output();
LeaveCriticalSection(&mutex);
}
static void close_device(void) {
- CloseHandle(device_handle);
+ CloseHandle(device_handle); device_handle = INVALID_HANDLE_VALUE;
- free(device);
- free(iface);
+ free(device); device = NULL;
+ free(iface); iface = NULL;
+ device_info = NULL;
}
static bool read_packet(vpn_packet_t *packet) {
return false;
}
+ device_total_out += packet->len;
+
return true;
}