/* * * Connection Manager * * Copyright (C) 2007-2012 Intel Corporation. All rights reserved. * * 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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #define SUPPLICANT_EAP_METHOD_MD5 (1 << 0) #define SUPPLICANT_EAP_METHOD_TLS (1 << 1) #define SUPPLICANT_EAP_METHOD_MSCHAPV2 (1 << 2) #define SUPPLICANT_EAP_METHOD_PEAP (1 << 3) #define SUPPLICANT_EAP_METHOD_TTLS (1 << 4) #define SUPPLICANT_EAP_METHOD_GTC (1 << 5) #define SUPPLICANT_EAP_METHOD_OTP (1 << 6) #define SUPPLICANT_EAP_METHOD_LEAP (1 << 7) #define SUPPLICANT_EAP_METHOD_WSC (1 << 8) #define SUPPLICANT_CAPABILITY_KEYMGMT_NONE (1 << 0) #define SUPPLICANT_CAPABILITY_KEYMGMT_IEEE8021X (1 << 1) #define SUPPLICANT_CAPABILITY_KEYMGMT_WPA_NONE (1 << 2) #define SUPPLICANT_CAPABILITY_KEYMGMT_WPA_PSK (1 << 3) #define SUPPLICANT_CAPABILITY_KEYMGMT_WPA_EAP (1 << 4) #define SUPPLICANT_CAPABILITY_KEYMGMT_WPS (1 << 5) #define SUPPLICANT_CAPABILITY_AUTHALG_OPEN (1 << 0) #define SUPPLICANT_CAPABILITY_AUTHALG_SHARED (1 << 1) #define SUPPLICANT_CAPABILITY_AUTHALG_LEAP (1 << 2) #define SUPPLICANT_CAPABILITY_PROTO_WPA (1 << 0) #define SUPPLICANT_CAPABILITY_PROTO_RSN (1 << 1) #define SUPPLICANT_CAPABILITY_GROUP_WEP40 (1 << 0) #define SUPPLICANT_CAPABILITY_GROUP_WEP104 (1 << 1) #define SUPPLICANT_CAPABILITY_GROUP_TKIP (1 << 2) #define SUPPLICANT_CAPABILITY_GROUP_CCMP (1 << 3) #define SUPPLICANT_CAPABILITY_PAIRWISE_NONE (1 << 0) #define SUPPLICANT_CAPABILITY_PAIRWISE_TKIP (1 << 1) #define SUPPLICANT_CAPABILITY_PAIRWISE_CCMP (1 << 2) #define SUPPLICANT_CAPABILITY_SCAN_ACTIVE (1 << 0) #define SUPPLICANT_CAPABILITY_SCAN_PASSIVE (1 << 1) #define SUPPLICANT_CAPABILITY_SCAN_SSID (1 << 2) #define SUPPLICANT_CAPABILITY_MODE_INFRA (1 << 0) #define SUPPLICANT_CAPABILITY_MODE_IBSS (1 << 1) #define SUPPLICANT_CAPABILITY_MODE_AP (1 << 2) enum supplicant_mode { SUPPLICANT_MODE_UNKNOWN, SUPPLICANT_MODE_INFRA, SUPPLICANT_MODE_IBSS, }; enum supplicant_security { SUPPLICANT_SECURITY_UNKNOWN, SUPPLICANT_SECURITY_NONE, SUPPLICANT_SECURITY_WEP, SUPPLICANT_SECURITY_PSK, SUPPLICANT_SECURITY_IEEE8021X, }; enum supplicant_state { SUPPLICANT_STATE_UNKNOWN, SUPPLICANT_STATE_DISCONNECTED, SUPPLICANT_STATE_INACTIVE, SUPPLICANT_STATE_SCANNING, SUPPLICANT_STATE_AUTHENTICATING, SUPPLICANT_STATE_ASSOCIATING, SUPPLICANT_STATE_ASSOCIATED, SUPPLICANT_STATE_4WAY_HANDSHAKE, SUPPLICANT_STATE_GROUP_HANDSHAKE, SUPPLICANT_STATE_COMPLETED, }; struct supplicant_interface; typedef void (* supplicant_interface_create_callback) (int result, struct supplicant_interface *interface, void *user_data); typedef void (* supplicant_interface_remove_callback) (int result, void *user_data); typedef void (* supplicant_interface_scan_callback) (int result, void *user_data); typedef void (* supplicant_interface_disconnect_callback) (int result, void *user_data); int supplicant_interface_create(const char *ifname, const char *driver, supplicant_interface_create_callback callback, void *user_data); int supplicant_interface_remove(struct supplicant_interface *interface, supplicant_interface_remove_callback callback, void *user_data); int supplicant_interface_scan(struct supplicant_interface *interface, supplicant_interface_scan_callback callback, void *user_data); int supplicant_interface_disconnect(struct supplicant_interface *interface, supplicant_interface_disconnect_callback callback, void *user_data); const char *supplicant_interface_get_ifname(struct supplicant_interface *interface); const char *supplicant_interface_get_driver(struct supplicant_interface *interface); struct supplicant_network; struct supplicant_interface *supplicant_network_get_interface(struct supplicant_network *network); const char *supplicant_network_get_name(struct supplicant_network *network); const char *supplicant_network_get_identifier(struct supplicant_network *network); enum supplicant_mode supplicant_network_get_mode(struct supplicant_network *network); struct supplicant_callbacks { void (*system_ready) (void); void (*system_killed) (void); void (*interface_added) (struct supplicant_interface *interface); void (*interface_removed) (struct supplicant_interface *interface); void (*scan_started) (struct supplicant_interface *interface); void (*scan_finished) (struct supplicant_interface *interface); void (*network_added) (struct supplicant_network *network); void (*network_removed) (struct supplicant_network *network); }; int supplicant_register(const struct supplicant_callbacks *callbacks); void supplicant_unregister(const struct supplicant_callbacks *callbacks); void supplicant_set_debug_level(unsigned int level);