/*
device.c -- Interaction with Windows tap driver in a MinGW environment
Copyright (C) 2002-2005 Ivo Timmermans,
- 2002-2006 Guus Sliepen <guus@tinc-vpn.org>
+ 2002-2007 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
static HANDLE device_handle = INVALID_HANDLE_VALUE;
char *device = NULL;
char *iface = NULL;
-char *device_info = NULL;
+static char *device_info = NULL;
static int device_total_in = 0;
static int device_total_out = 0;
static int nbufs = 64;
-DWORD WINAPI tapreader(void *bla) {
+static DWORD WINAPI tapreader(void *bla) {
int sock, err, status;
struct addrinfo *ai;
struct addrinfo hint = {
sock = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP);
- freeaddrinfo(ai);
-
if(sock < 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "socket", strerror(errno));
+ freeaddrinfo(ai);
return -1;
}
if(connect(sock, ai->ai_addr, ai->ai_addrlen)) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "connect", strerror(errno));
+ freeaddrinfo(ai);
return -1;
}
+ freeaddrinfo(ai);
+
logger(LOG_DEBUG, _("Tap reader running"));
/* Read from tap device and send to parent */
.ai_family = AF_UNSPEC,
.ai_socktype = SOCK_STREAM,
.ai_protocol = IPPROTO_TCP,
- .ai_flags = AI_PASSIVE,
+ .ai_flags = 0,
};
cp();