X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fmingw%2Fdevice.c;h=01854d67b7d2f6014afc5e3a9b733e94191b2be5;hp=1f63d0ab2c90d69308f2562293f5184068951f05;hb=ef65a64443f740e3b22d9e903f764d9a58ce0ff0;hpb=c044d12dfd54c033bc5ad9fbf9f889724762f76c diff --git a/src/mingw/device.c b/src/mingw/device.c index 1f63d0ab..01854d67 100644 --- a/src/mingw/device.c +++ b/src/mingw/device.c @@ -17,7 +17,7 @@ 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.1.2.10 2003/08/02 21:33:19 guus Exp $ + $Id: device.c,v 1.1.2.13 2003/08/08 19:49:47 guus Exp $ */ #include "system.h" @@ -53,6 +53,8 @@ char *device_info = NULL; int device_total_in = 0; int device_total_out = 0; +extern char *myport; + DWORD WINAPI tapreader(void *bla) { int sock, err, status; struct addrinfo *ai; @@ -68,7 +70,7 @@ DWORD WINAPI tapreader(void *bla) { /* Open a socket to the parent process */ - err = getaddrinfo(NULL, "12345", &hint, &ai); + err = getaddrinfo(NULL, myport, &hint, &ai); if(err || !ai) { logger(LOG_ERR, _("System call `%s' failed: %s"), "getaddrinfo", gai_strerror(errno)); @@ -140,7 +142,7 @@ bool setup_device(void) .ai_family = AF_UNSPEC, .ai_socktype = SOCK_DGRAM, .ai_protocol = IPPROTO_UDP, - .ai_flags = AI_PASSIVE, + .ai_flags = 0, }; cp(); @@ -168,10 +170,13 @@ bool setup_device(void) continue; len = sizeof(adaptername); - RegQueryValueEx(key2, "Name", 0, 0, adaptername, &len); + err = RegQueryValueEx(key2, "Name", 0, 0, adaptername, &len); RegCloseKey(key2); + if(err) + continue; + if(device) { if(!strcmp(device, adapterid)) { found = true; @@ -217,14 +222,14 @@ bool setup_device(void) } if(device_handle == INVALID_HANDLE_VALUE) { - logger(LOG_ERR, _("%s (%s) is no a usable Windows tap device!"), device, iface); + logger(LOG_ERR, _("%s (%s) is not a usable Windows tap device: %s"), device, iface, winerror(GetLastError())); return false; } /* Get MAC address from tap device */ if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_MAC, mymac.x, sizeof(mymac.x), mymac.x, sizeof(mymac.x), &len, 0)) { - logger(LOG_ERR, _("Could not get MAC address from Windows tap device!")); + logger(LOG_ERR, _("Could not get MAC address from Windows tap device %s (%s): %s"), device, iface, winerror(GetLastError())); return false; } @@ -234,7 +239,7 @@ bool setup_device(void) /* Create a listening socket */ - err = getaddrinfo(NULL, "12345", &hint, &ai); + err = getaddrinfo(NULL, myport, &hint, &ai); if(err || !ai) { logger(LOG_ERR, _("System call `%s' failed: %s"), "getaddrinfo", gai_strerror(errno));