X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=wpa_supplicant%2Fmain_winsvc.c;h=9950aa99ae7a866349d8ace5d035fbba11890bf0;hb=977c0796f9b990aa8998477f67a9bc6a6d424e2d;hp=6d416fd4104613b643e7c227aaf351b60d274e25;hpb=99a10f8d2c00a36ec67530f9162cd5ae5e3e7816;p=mech_eap.git diff --git a/wpa_supplicant/main_winsvc.c b/wpa_supplicant/main_winsvc.c index 6d416fd..9950aa9 100644 --- a/wpa_supplicant/main_winsvc.c +++ b/wpa_supplicant/main_winsvc.c @@ -2,17 +2,11 @@ * WPA Supplicant / main() function for Win32 service * Copyright (c) 2003-2006, Jouni Malinen * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Alternatively, this software may be distributed under the terms of BSD - * license. - * - * See README and COPYING for more details. + * This software may be distributed under the terms of the BSD license. + * See README for more details. * * The root of wpa_supplicant configuration in registry is - * HKEY_LOCAL_MACHINE\SOFTWARE\wpa_supplicant. This level includes global + * HKEY_LOCAL_MACHINE\\SOFTWARE\\%wpa_supplicant. This level includes global * parameters and a 'interfaces' subkey with all the interface configuration * (adapter to confname mapping). Each such mapping is a subkey that has * 'adapter' and 'config' values. @@ -70,9 +64,10 @@ static int read_interface(struct wpa_global *global, HKEY _hk, HKEY hk; #define TBUFLEN 255 TCHAR adapter[TBUFLEN], config[TBUFLEN], ctrl_interface[TBUFLEN]; - DWORD buflen; + DWORD buflen, val; LONG ret; struct wpa_interface iface; + int skip_on_error = 0; ret = RegOpenKeyEx(_hk, name, 0, KEY_QUERY_VALUE, &hk); if (ret != ERROR_SUCCESS) { @@ -116,10 +111,21 @@ static int read_interface(struct wpa_global *global, HKEY _hk, iface.confname = (char *) config; } + buflen = sizeof(val); + ret = RegQueryValueEx(hk, TEXT("skip_on_error"), NULL, NULL, + (LPBYTE) &val, &buflen); + if (ret == ERROR_SUCCESS && buflen == sizeof(val)) + skip_on_error = val; + RegCloseKey(hk); - if (wpa_supplicant_add_iface(global, &iface) == NULL) - return -1; + if (wpa_supplicant_add_iface(global, &iface, NULL) == NULL) { + if (skip_on_error) + wpa_printf(MSG_DEBUG, "Skipped interface '%s' due to " + "initialization failure", iface.ifname); + else + return -1; + } return 0; }