wpasvc: Add skip_on_error registry value to skip interfaces on error
authorJouni Malinen <j@w1.fi>
Wed, 24 Dec 2008 18:39:32 +0000 (20:39 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 24 Dec 2008 18:39:32 +0000 (20:39 +0200)
This can be used to include binding information for multiple interfaces
in Windows registry and only use the ones that match with an available
network interface.

wpa_supplicant/main_winsvc.c
wpa_supplicant/win_example.reg

index 6d416fd..4b072fc 100644 (file)
@@ -70,9 +70,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 +117,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) {
+               if (skip_on_error)
+                       wpa_printf(MSG_DEBUG, "Skipped interface '%s' due to "
+                                  "initialization failure", iface.ifname);
+               else
+                       return -1;
+       }
 
        return 0;
 }
index 876c53c..875d4ef 100755 (executable)
@@ -38,4 +38,5 @@ REGEDIT4
 "adapter"="{A7627643-C310-49E5-BD89-7E77709C04AB}"\r
 "config"="test"\r
 "ctrl_interface"=""\r
+"skip_on_error"=dword:00000000\r
 \r