13871Syz147064 /* 23871Syz147064 * CDDL HEADER START 33871Syz147064 * 43871Syz147064 * The contents of this file are subject to the terms of the 53871Syz147064 * Common Development and Distribution License (the "License"). 63871Syz147064 * You may not use this file except in compliance with the License. 73871Syz147064 * 83871Syz147064 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 93871Syz147064 * or http://www.opensolaris.org/os/licensing. 103871Syz147064 * See the License for the specific language governing permissions 113871Syz147064 * and limitations under the License. 123871Syz147064 * 133871Syz147064 * When distributing Covered Code, include this CDDL HEADER in each 143871Syz147064 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 153871Syz147064 * If applicable, add the following below this CDDL HEADER, with the 163871Syz147064 * fields enclosed by brackets "[]" replaced with your own identifying 173871Syz147064 * information: Portions Copyright [yyyy] [name of copyright owner] 183871Syz147064 * 193871Syz147064 * CDDL HEADER END 203871Syz147064 */ 213871Syz147064 /* 22*10266SQuaker.Fang@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 233871Syz147064 * Use is subject to license terms. 243871Syz147064 */ 253871Syz147064 263871Syz147064 #ifndef _LIBDLWLAN_H 273871Syz147064 #define _LIBDLWLAN_H 283871Syz147064 293871Syz147064 /* 303871Syz147064 * This file includes structures, macros and routines used by WLAN link 313871Syz147064 * administration. 323871Syz147064 */ 333871Syz147064 343871Syz147064 #include <sys/types.h> 353871Syz147064 #include <libdladm.h> 363871Syz147064 373871Syz147064 /* 383871Syz147064 * General libdlwlan definitions and functions. 393871Syz147064 * 403871Syz147064 * These interfaces are ON consolidation-private. 413871Syz147064 * For documentation, refer to PSARC/2006/623. 423871Syz147064 */ 433871Syz147064 443871Syz147064 #ifdef __cplusplus 453871Syz147064 extern "C" { 463871Syz147064 #endif 473871Syz147064 486834Sff224033 #define DLADM_WLAN_MAX_ESSID_LEN (32 + 1) /* per 802.11 spec */ 496834Sff224033 /* max essid length is 32 */ 506834Sff224033 /* one more for '\0' */ 513871Syz147064 #define DLADM_WLAN_BSSID_LEN 6 /* per 802.11 spec */ 524126Szf162725 #define DLADM_WLAN_WPA_KEY_LEN 32 /* per 802.11i spec */ 534126Szf162725 #define DLADM_WLAN_MAX_WPA_IE_LEN 40 /* per 802.11i spec */ 543871Syz147064 553871Syz147064 #define DLADM_WLAN_CONNECT_TIMEOUT_DEFAULT 10 563871Syz147064 #define DLADM_WLAN_CONNECT_CREATEIBSS 0x00000001 573871Syz147064 #define DLADM_WLAN_CONNECT_NOSCAN 0x00000002 583871Syz147064 593871Syz147064 typedef struct dladm_wlan_essid { 603871Syz147064 char we_bytes[DLADM_WLAN_MAX_ESSID_LEN]; 613871Syz147064 } dladm_wlan_essid_t; 623871Syz147064 633871Syz147064 typedef struct dladm_wlan_bssid { 643871Syz147064 uint8_t wb_bytes[DLADM_WLAN_BSSID_LEN]; 653871Syz147064 } dladm_wlan_bssid_t; 663871Syz147064 674126Szf162725 typedef struct dladm_wlan_ess { 684126Szf162725 dladm_wlan_bssid_t we_bssid; 694126Szf162725 dladm_wlan_essid_t we_ssid; 704126Szf162725 uint_t we_ssid_len; 714126Szf162725 uint8_t we_wpa_ie[DLADM_WLAN_MAX_WPA_IE_LEN]; 724126Szf162725 uint_t we_wpa_ie_len; 734126Szf162725 int we_freq; 744126Szf162725 } dladm_wlan_ess_t; 754126Szf162725 764126Szf162725 typedef enum { 774126Szf162725 DLADM_WLAN_CIPHER_WEP = 0, 784126Szf162725 DLADM_WLAN_CIPHER_TKIP, 794126Szf162725 DLADM_WLAN_CIPHER_AES_OCB, 804126Szf162725 DLADM_WLAN_CIPHER_AES_CCM, 814126Szf162725 DLADM_WLAN_CIPHER_CKIP, 824126Szf162725 DLADM_WLAN_CIPHER_NONE 834126Szf162725 } dladm_wlan_cipher_t; 844126Szf162725 854126Szf162725 typedef enum { 864126Szf162725 DLADM_WLAN_MLME_ASSOC = 1, /* associate station */ 874126Szf162725 DLADM_WLAN_MLME_DISASSOC = 2 /* disassociate station */ 884126Szf162725 } dladm_wlan_mlme_op_t; 894126Szf162725 904126Szf162725 typedef enum { 914126Szf162725 DLADM_WLAN_REASON_UNSPECIFIED = 1, 924126Szf162725 DLADM_WLAN_REASON_DISASSOC_LEAVING = 5 934126Szf162725 } dladm_wlan_reason_t; 944126Szf162725 953871Syz147064 typedef enum { 963871Syz147064 DLADM_WLAN_SECMODE_NONE = 1, 974126Szf162725 DLADM_WLAN_SECMODE_WEP, 984126Szf162725 DLADM_WLAN_SECMODE_WPA 993871Syz147064 } dladm_wlan_secmode_t; 1003871Syz147064 1013871Syz147064 typedef enum { 1023871Syz147064 DLADM_WLAN_STRENGTH_VERY_WEAK = 1, 1033871Syz147064 DLADM_WLAN_STRENGTH_WEAK, 1043871Syz147064 DLADM_WLAN_STRENGTH_GOOD, 1053871Syz147064 DLADM_WLAN_STRENGTH_VERY_GOOD, 1063871Syz147064 DLADM_WLAN_STRENGTH_EXCELLENT 1073871Syz147064 } dladm_wlan_strength_t; 1083871Syz147064 1093871Syz147064 typedef enum { 1103871Syz147064 DLADM_WLAN_MODE_NONE = 0, 1113871Syz147064 DLADM_WLAN_MODE_80211A, 1123871Syz147064 DLADM_WLAN_MODE_80211B, 113*10266SQuaker.Fang@Sun.COM DLADM_WLAN_MODE_80211G, 114*10266SQuaker.Fang@Sun.COM DLADM_WLAN_MODE_80211GN, 115*10266SQuaker.Fang@Sun.COM DLADM_WLAN_MODE_80211AN 1163871Syz147064 } dladm_wlan_mode_t; 1173871Syz147064 1183871Syz147064 typedef enum { 1193871Syz147064 DLADM_WLAN_AUTH_OPEN = 1, 1203871Syz147064 DLADM_WLAN_AUTH_SHARED 1213871Syz147064 } dladm_wlan_auth_t; 1223871Syz147064 1233871Syz147064 typedef enum { 1243871Syz147064 DLADM_WLAN_BSSTYPE_BSS = 1, 1253871Syz147064 DLADM_WLAN_BSSTYPE_IBSS, 1263871Syz147064 DLADM_WLAN_BSSTYPE_ANY 1273871Syz147064 } dladm_wlan_bsstype_t; 1283871Syz147064 1293871Syz147064 typedef enum { 1305895Syz147064 DLADM_WLAN_LINK_DISCONNECTED = 1, 1315895Syz147064 DLADM_WLAN_LINK_CONNECTED 1323871Syz147064 } dladm_wlan_linkstatus_t; 1333871Syz147064 1343871Syz147064 typedef uint32_t dladm_wlan_speed_t; 1353871Syz147064 typedef uint32_t dladm_wlan_channel_t; 1363871Syz147064 1373871Syz147064 enum { 1383871Syz147064 DLADM_WLAN_ATTR_ESSID = 0x00000001, 1393871Syz147064 DLADM_WLAN_ATTR_BSSID = 0x00000002, 1403871Syz147064 DLADM_WLAN_ATTR_SECMODE = 0x00000004, 1413871Syz147064 DLADM_WLAN_ATTR_STRENGTH = 0x00000008, 1423871Syz147064 DLADM_WLAN_ATTR_MODE = 0x00000010, 1433871Syz147064 DLADM_WLAN_ATTR_SPEED = 0x00000020, 1443871Syz147064 DLADM_WLAN_ATTR_AUTH = 0x00000040, 1453871Syz147064 DLADM_WLAN_ATTR_BSSTYPE = 0x00000080, 1463871Syz147064 DLADM_WLAN_ATTR_CHANNEL = 0x00000100 1473871Syz147064 }; 1483871Syz147064 typedef struct dladm_wlan_attr { 1493871Syz147064 uint_t wa_valid; 1503871Syz147064 dladm_wlan_essid_t wa_essid; 1513871Syz147064 dladm_wlan_bssid_t wa_bssid; 1523871Syz147064 dladm_wlan_secmode_t wa_secmode; 1533871Syz147064 dladm_wlan_strength_t wa_strength; 1543871Syz147064 dladm_wlan_mode_t wa_mode; 1553871Syz147064 dladm_wlan_speed_t wa_speed; 1563871Syz147064 dladm_wlan_auth_t wa_auth; 1573871Syz147064 dladm_wlan_bsstype_t wa_bsstype; 1583871Syz147064 dladm_wlan_channel_t wa_channel; 1593871Syz147064 } dladm_wlan_attr_t; 1603871Syz147064 1613871Syz147064 enum { 1623871Syz147064 DLADM_WLAN_LINKATTR_STATUS = 0x00000001, 1633871Syz147064 DLADM_WLAN_LINKATTR_WLAN = 0x00000002 1643871Syz147064 }; 1653871Syz147064 typedef struct dladm_wlan_linkattr { 1663871Syz147064 uint_t la_valid; 1673871Syz147064 dladm_wlan_linkstatus_t la_status; 1683871Syz147064 dladm_wlan_attr_t la_wlan_attr; 1693871Syz147064 } dladm_wlan_linkattr_t; 1703871Syz147064 1713871Syz147064 #define DLADM_WLAN_WEPKEY64_LEN 5 /* per WEP spec */ 1723871Syz147064 #define DLADM_WLAN_WEPKEY128_LEN 13 /* per WEP spec */ 1734126Szf162725 #define DLADM_WLAN_MAX_KEY_LEN 64 /* per WEP/WPA spec */ 1743871Syz147064 #define DLADM_WLAN_MAX_WEPKEYS 4 /* MAX_NWEPKEYS */ 1754126Szf162725 #define DLADM_WLAN_MAX_KEYNAME_LEN 64 1764126Szf162725 typedef struct dladm_wlan_key { 1773871Syz147064 uint_t wk_idx; 1783871Syz147064 uint_t wk_len; 1794126Szf162725 uint8_t wk_val[DLADM_WLAN_MAX_KEY_LEN]; 1804126Szf162725 char wk_name[DLADM_WLAN_MAX_KEYNAME_LEN]; 1814126Szf162725 uint_t wk_class; 1824126Szf162725 } dladm_wlan_key_t; 1833871Syz147064 1848453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_scan(dladm_handle_t, datalink_id_t, void *, 1853871Syz147064 boolean_t (*)(void *, dladm_wlan_attr_t *)); 1868453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_connect(dladm_handle_t, datalink_id_t, 1878453SAnurag.Maskey@Sun.COM dladm_wlan_attr_t *, int, void *, uint_t, uint_t); 1888453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_disconnect(dladm_handle_t, datalink_id_t); 1898453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_get_linkattr(dladm_handle_t, datalink_id_t, 1903871Syz147064 dladm_wlan_linkattr_t *); 1914126Szf162725 /* WPA support routines */ 1928453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_wpa_get_sr(dladm_handle_t, datalink_id_t, 1938453SAnurag.Maskey@Sun.COM dladm_wlan_ess_t *, uint_t, uint_t *); 1948453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_wpa_set_ie(dladm_handle_t, datalink_id_t, 1958453SAnurag.Maskey@Sun.COM uint8_t *, uint_t); 1968453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_wpa_set_wpa(dladm_handle_t, datalink_id_t, 1978453SAnurag.Maskey@Sun.COM boolean_t); 1988453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_wpa_del_key(dladm_handle_t, datalink_id_t, 1998453SAnurag.Maskey@Sun.COM uint_t, const dladm_wlan_bssid_t *); 2008453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_wpa_set_key(dladm_handle_t, datalink_id_t, 2014126Szf162725 dladm_wlan_cipher_t, const dladm_wlan_bssid_t *, 2024126Szf162725 boolean_t, uint64_t, uint_t, uint8_t *, uint_t); 2038453SAnurag.Maskey@Sun.COM extern dladm_status_t dladm_wlan_wpa_set_mlme(dladm_handle_t, datalink_id_t, 2044126Szf162725 dladm_wlan_mlme_op_t, 2054126Szf162725 dladm_wlan_reason_t, dladm_wlan_bssid_t *); 2063871Syz147064 2073871Syz147064 extern const char *dladm_wlan_essid2str(dladm_wlan_essid_t *, char *); 2083871Syz147064 extern const char *dladm_wlan_bssid2str(dladm_wlan_bssid_t *, char *); 2093871Syz147064 extern const char *dladm_wlan_secmode2str(dladm_wlan_secmode_t *, char *); 2103871Syz147064 extern const char *dladm_wlan_strength2str(dladm_wlan_strength_t *, 2113871Syz147064 char *); 2123871Syz147064 extern const char *dladm_wlan_mode2str(dladm_wlan_mode_t *, char *); 2133871Syz147064 extern const char *dladm_wlan_speed2str(dladm_wlan_speed_t *, char *); 2143871Syz147064 extern const char *dladm_wlan_auth2str(dladm_wlan_auth_t *, char *); 2153871Syz147064 extern const char *dladm_wlan_bsstype2str(dladm_wlan_bsstype_t *, char *); 2163871Syz147064 extern const char *dladm_wlan_linkstatus2str(dladm_wlan_linkstatus_t *, 2173871Syz147064 char *); 2183871Syz147064 2193871Syz147064 extern dladm_status_t dladm_wlan_str2essid(const char *, 2203871Syz147064 dladm_wlan_essid_t *); 2213871Syz147064 extern dladm_status_t dladm_wlan_str2bssid(const char *, 2223871Syz147064 dladm_wlan_bssid_t *); 2233871Syz147064 extern dladm_status_t dladm_wlan_str2secmode(const char *, 2243871Syz147064 dladm_wlan_secmode_t *); 2253871Syz147064 extern dladm_status_t dladm_wlan_str2strength(const char *, 2263871Syz147064 dladm_wlan_strength_t *); 2273871Syz147064 extern dladm_status_t dladm_wlan_str2mode(const char *, 2283871Syz147064 dladm_wlan_mode_t *); 2293871Syz147064 extern dladm_status_t dladm_wlan_str2speed(const char *, 2303871Syz147064 dladm_wlan_speed_t *); 2313871Syz147064 extern dladm_status_t dladm_wlan_str2auth(const char *, 2323871Syz147064 dladm_wlan_auth_t *); 2333871Syz147064 extern dladm_status_t dladm_wlan_str2bsstype(const char *, 2343871Syz147064 dladm_wlan_bsstype_t *); 2353871Syz147064 extern dladm_status_t dladm_wlan_str2linkstatus(const char *, 2363871Syz147064 dladm_wlan_linkstatus_t *); 2373871Syz147064 2383871Syz147064 #ifdef __cplusplus 2393871Syz147064 } 2403871Syz147064 #endif 2413871Syz147064 2423871Syz147064 #endif /* _LIBDLWLAN_H */ 243