xref: /onnv-gate/usr/src/lib/libdladm/common/libdlwlan.h (revision 10266:bbc5945eddd7)
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