main_winmain.c revision c5ec7f57ead87efa365800228aa0b09a12d9e6c4
18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * WPA Supplicant / WinMain() function for Windows-based applications 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 2006, Jouni Malinen <j@w1.fi> 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This software may be distributed under the terms of the BSD license. 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * See README for more details. 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "includes.h" 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "common.h" 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "wpa_supplicant_i.h" 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef _WIN32_WCE 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CMDLINE LPWSTR 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else /* _WIN32_WCE */ 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CMDLINE LPSTR 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _WIN32_WCE */ 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project CMDLINE lpCmdLine, int nShowCmd) 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int i; 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct wpa_interface *ifaces, *iface; 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int iface_count, exitcode = -1; 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct wpa_params params; 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct wpa_global *global; 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (os_program_init()) 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return -1; 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project os_memset(¶ms, 0, sizeof(params)); 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project params.wpa_debug_level = MSG_MSGDUMP; 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project params.wpa_debug_file_path = "\\Temp\\wpa_supplicant-log.txt"; 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project params.wpa_debug_show_keys = 1; 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project iface = ifaces = os_zalloc(sizeof(struct wpa_interface)); 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (ifaces == NULL) 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return -1; 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project iface_count = 1; 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project iface->confname = "default"; 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project iface->driver = "ndis"; 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project iface->ifname = ""; 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project exitcode = 0; 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project global = wpa_supplicant_init(¶ms); 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (global == NULL) { 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project printf("Failed to initialize wpa_supplicant\n"); 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project exitcode = -1; 52 } 53 54 for (i = 0; exitcode == 0 && i < iface_count; i++) { 55 if ((ifaces[i].confname == NULL && 56 ifaces[i].ctrl_interface == NULL) || 57 ifaces[i].ifname == NULL) { 58 if (iface_count == 1 && (params.ctrl_interface || 59 params.dbus_ctrl_interface)) 60 break; 61 exitcode = -1; 62 break; 63 } 64 if (wpa_supplicant_add_iface(global, &ifaces[i]) == NULL) 65 exitcode = -1; 66 } 67 68 if (exitcode == 0) 69 exitcode = wpa_supplicant_run(global); 70 71 wpa_supplicant_deinit(global); 72 73 os_free(ifaces); 74 75 os_program_deinit(); 76 77 return exitcode; 78} 79