xref: /titanic_50/usr/src/lib/libdladm/common/libdlwlan.h (revision f595a68a3b8953a12aa778c2abd7642df8da8c3a)
1*f595a68aSyz147064 /*
2*f595a68aSyz147064  * CDDL HEADER START
3*f595a68aSyz147064  *
4*f595a68aSyz147064  * The contents of this file are subject to the terms of the
5*f595a68aSyz147064  * Common Development and Distribution License (the "License").
6*f595a68aSyz147064  * You may not use this file except in compliance with the License.
7*f595a68aSyz147064  *
8*f595a68aSyz147064  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*f595a68aSyz147064  * or http://www.opensolaris.org/os/licensing.
10*f595a68aSyz147064  * See the License for the specific language governing permissions
11*f595a68aSyz147064  * and limitations under the License.
12*f595a68aSyz147064  *
13*f595a68aSyz147064  * When distributing Covered Code, include this CDDL HEADER in each
14*f595a68aSyz147064  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*f595a68aSyz147064  * If applicable, add the following below this CDDL HEADER, with the
16*f595a68aSyz147064  * fields enclosed by brackets "[]" replaced with your own identifying
17*f595a68aSyz147064  * information: Portions Copyright [yyyy] [name of copyright owner]
18*f595a68aSyz147064  *
19*f595a68aSyz147064  * CDDL HEADER END
20*f595a68aSyz147064  */
21*f595a68aSyz147064 /*
22*f595a68aSyz147064  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23*f595a68aSyz147064  * Use is subject to license terms.
24*f595a68aSyz147064  */
25*f595a68aSyz147064 
26*f595a68aSyz147064 #ifndef _LIBDLWLAN_H
27*f595a68aSyz147064 #define	_LIBDLWLAN_H
28*f595a68aSyz147064 
29*f595a68aSyz147064 #pragma ident	"%Z%%M%	%I%	%E% SMI"
30*f595a68aSyz147064 
31*f595a68aSyz147064 /*
32*f595a68aSyz147064  * This file includes structures, macros and routines used by WLAN link
33*f595a68aSyz147064  * administration.
34*f595a68aSyz147064  */
35*f595a68aSyz147064 
36*f595a68aSyz147064 #include <sys/types.h>
37*f595a68aSyz147064 #include <libdladm.h>
38*f595a68aSyz147064 
39*f595a68aSyz147064 /*
40*f595a68aSyz147064  * General libdlwlan definitions and functions.
41*f595a68aSyz147064  *
42*f595a68aSyz147064  * These interfaces are ON consolidation-private.
43*f595a68aSyz147064  * For documentation, refer to PSARC/2006/623.
44*f595a68aSyz147064  */
45*f595a68aSyz147064 
46*f595a68aSyz147064 #ifdef	__cplusplus
47*f595a68aSyz147064 extern "C" {
48*f595a68aSyz147064 #endif
49*f595a68aSyz147064 
50*f595a68aSyz147064 #define	DLADM_WLAN_MAX_ESSID_LEN	32	/* per 802.11 spec */
51*f595a68aSyz147064 #define	DLADM_WLAN_BSSID_LEN		6	/* per 802.11 spec */
52*f595a68aSyz147064 
53*f595a68aSyz147064 #define	DLADM_WLAN_CONNECT_TIMEOUT_DEFAULT	10
54*f595a68aSyz147064 #define	DLADM_WLAN_CONNECT_CREATEIBSS		0x00000001
55*f595a68aSyz147064 #define	DLADM_WLAN_CONNECT_NOSCAN		0x00000002
56*f595a68aSyz147064 
57*f595a68aSyz147064 typedef struct dladm_wlan_essid {
58*f595a68aSyz147064 	char	we_bytes[DLADM_WLAN_MAX_ESSID_LEN];
59*f595a68aSyz147064 } dladm_wlan_essid_t;
60*f595a68aSyz147064 
61*f595a68aSyz147064 typedef struct dladm_wlan_bssid {
62*f595a68aSyz147064 	uint8_t	wb_bytes[DLADM_WLAN_BSSID_LEN];
63*f595a68aSyz147064 } dladm_wlan_bssid_t;
64*f595a68aSyz147064 
65*f595a68aSyz147064 typedef enum {
66*f595a68aSyz147064 	DLADM_WLAN_SECMODE_NONE = 1,
67*f595a68aSyz147064 	DLADM_WLAN_SECMODE_WEP
68*f595a68aSyz147064 } dladm_wlan_secmode_t;
69*f595a68aSyz147064 
70*f595a68aSyz147064 typedef enum {
71*f595a68aSyz147064 	DLADM_WLAN_STRENGTH_VERY_WEAK = 1,
72*f595a68aSyz147064 	DLADM_WLAN_STRENGTH_WEAK,
73*f595a68aSyz147064 	DLADM_WLAN_STRENGTH_GOOD,
74*f595a68aSyz147064 	DLADM_WLAN_STRENGTH_VERY_GOOD,
75*f595a68aSyz147064 	DLADM_WLAN_STRENGTH_EXCELLENT
76*f595a68aSyz147064 } dladm_wlan_strength_t;
77*f595a68aSyz147064 
78*f595a68aSyz147064 typedef enum {
79*f595a68aSyz147064 	DLADM_WLAN_MODE_NONE = 0,
80*f595a68aSyz147064 	DLADM_WLAN_MODE_80211A,
81*f595a68aSyz147064 	DLADM_WLAN_MODE_80211B,
82*f595a68aSyz147064 	DLADM_WLAN_MODE_80211G
83*f595a68aSyz147064 } dladm_wlan_mode_t;
84*f595a68aSyz147064 
85*f595a68aSyz147064 typedef enum {
86*f595a68aSyz147064 	DLADM_WLAN_AUTH_OPEN = 1,
87*f595a68aSyz147064 	DLADM_WLAN_AUTH_SHARED
88*f595a68aSyz147064 } dladm_wlan_auth_t;
89*f595a68aSyz147064 
90*f595a68aSyz147064 typedef enum {
91*f595a68aSyz147064 	DLADM_WLAN_BSSTYPE_BSS = 1,
92*f595a68aSyz147064 	DLADM_WLAN_BSSTYPE_IBSS,
93*f595a68aSyz147064 	DLADM_WLAN_BSSTYPE_ANY
94*f595a68aSyz147064 } dladm_wlan_bsstype_t;
95*f595a68aSyz147064 
96*f595a68aSyz147064 typedef enum {
97*f595a68aSyz147064 	DLADM_WLAN_LINKSTATUS_DISCONNECTED = 1,
98*f595a68aSyz147064 	DLADM_WLAN_LINKSTATUS_CONNECTED
99*f595a68aSyz147064 } dladm_wlan_linkstatus_t;
100*f595a68aSyz147064 
101*f595a68aSyz147064 typedef uint32_t dladm_wlan_speed_t;
102*f595a68aSyz147064 typedef	uint32_t dladm_wlan_channel_t;
103*f595a68aSyz147064 
104*f595a68aSyz147064 enum {
105*f595a68aSyz147064 	DLADM_WLAN_ATTR_ESSID	= 0x00000001,
106*f595a68aSyz147064 	DLADM_WLAN_ATTR_BSSID	= 0x00000002,
107*f595a68aSyz147064 	DLADM_WLAN_ATTR_SECMODE	= 0x00000004,
108*f595a68aSyz147064 	DLADM_WLAN_ATTR_STRENGTH = 0x00000008,
109*f595a68aSyz147064 	DLADM_WLAN_ATTR_MODE	= 0x00000010,
110*f595a68aSyz147064 	DLADM_WLAN_ATTR_SPEED	= 0x00000020,
111*f595a68aSyz147064 	DLADM_WLAN_ATTR_AUTH	= 0x00000040,
112*f595a68aSyz147064 	DLADM_WLAN_ATTR_BSSTYPE	= 0x00000080,
113*f595a68aSyz147064 	DLADM_WLAN_ATTR_CHANNEL	= 0x00000100
114*f595a68aSyz147064 };
115*f595a68aSyz147064 typedef struct dladm_wlan_attr {
116*f595a68aSyz147064 	uint_t			wa_valid;
117*f595a68aSyz147064 	dladm_wlan_essid_t	wa_essid;
118*f595a68aSyz147064 	dladm_wlan_bssid_t	wa_bssid;
119*f595a68aSyz147064 	dladm_wlan_secmode_t	wa_secmode;
120*f595a68aSyz147064 	dladm_wlan_strength_t	wa_strength;
121*f595a68aSyz147064 	dladm_wlan_mode_t	wa_mode;
122*f595a68aSyz147064 	dladm_wlan_speed_t	wa_speed;
123*f595a68aSyz147064 	dladm_wlan_auth_t	wa_auth;
124*f595a68aSyz147064 	dladm_wlan_bsstype_t	wa_bsstype;
125*f595a68aSyz147064 	dladm_wlan_channel_t	wa_channel;
126*f595a68aSyz147064 } dladm_wlan_attr_t;
127*f595a68aSyz147064 
128*f595a68aSyz147064 enum {
129*f595a68aSyz147064 	DLADM_WLAN_LINKATTR_STATUS	= 0x00000001,
130*f595a68aSyz147064 	DLADM_WLAN_LINKATTR_WLAN	= 0x00000002
131*f595a68aSyz147064 };
132*f595a68aSyz147064 typedef struct dladm_wlan_linkattr {
133*f595a68aSyz147064 	uint_t			la_valid;
134*f595a68aSyz147064 	dladm_wlan_linkstatus_t	la_status;
135*f595a68aSyz147064 	dladm_wlan_attr_t	la_wlan_attr;
136*f595a68aSyz147064 } dladm_wlan_linkattr_t;
137*f595a68aSyz147064 
138*f595a68aSyz147064 #define	DLADM_WLAN_WEPKEY64_LEN		5 	/* per WEP spec */
139*f595a68aSyz147064 #define	DLADM_WLAN_WEPKEY128_LEN	13 	/* per WEP spec */
140*f595a68aSyz147064 #define	DLADM_WLAN_MAX_WEPKEY_LEN	13	/* per WEP spec */
141*f595a68aSyz147064 #define	DLADM_WLAN_MAX_WEPKEYS		4 	/* MAX_NWEPKEYS */
142*f595a68aSyz147064 #define	DLADM_WLAN_MAX_WEPKEYNAME_LEN	64
143*f595a68aSyz147064 typedef struct dladm_wlan_wepkey {
144*f595a68aSyz147064 	uint_t		wk_idx;
145*f595a68aSyz147064 	uint_t		wk_len;
146*f595a68aSyz147064 	uint8_t		wk_val[DLADM_WLAN_MAX_WEPKEY_LEN];
147*f595a68aSyz147064 	char		wk_name[DLADM_WLAN_MAX_WEPKEYNAME_LEN];
148*f595a68aSyz147064 } dladm_wlan_wepkey_t;
149*f595a68aSyz147064 
150*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_scan(const char *, void *,
151*f595a68aSyz147064 			    boolean_t (*)(void *, dladm_wlan_attr_t *));
152*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_connect(const char *, dladm_wlan_attr_t *,
153*f595a68aSyz147064 			    int, void *, uint_t, uint_t);
154*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_disconnect(const char *);
155*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_get_linkattr(const char *,
156*f595a68aSyz147064 			    dladm_wlan_linkattr_t *);
157*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_walk(void *,
158*f595a68aSyz147064 			    boolean_t (*)(void *, const char *));
159*f595a68aSyz147064 extern boolean_t	dladm_wlan_is_valid(const char *);
160*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_set_prop(const char *, const char *,
161*f595a68aSyz147064 			    char **, uint_t, char **);
162*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_walk_prop(const char *, void *,
163*f595a68aSyz147064 			    boolean_t (*)(void *, const char *));
164*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_get_prop(const char *, dladm_prop_type_t,
165*f595a68aSyz147064 			    const char *, char **, uint_t *);
166*f595a68aSyz147064 
167*f595a68aSyz147064 extern const char	*dladm_wlan_essid2str(dladm_wlan_essid_t *, char *);
168*f595a68aSyz147064 extern const char	*dladm_wlan_bssid2str(dladm_wlan_bssid_t *, char *);
169*f595a68aSyz147064 extern const char	*dladm_wlan_secmode2str(dladm_wlan_secmode_t *, char *);
170*f595a68aSyz147064 extern const char	*dladm_wlan_strength2str(dladm_wlan_strength_t *,
171*f595a68aSyz147064 			    char *);
172*f595a68aSyz147064 extern const char	*dladm_wlan_mode2str(dladm_wlan_mode_t *, char *);
173*f595a68aSyz147064 extern const char	*dladm_wlan_speed2str(dladm_wlan_speed_t *, char *);
174*f595a68aSyz147064 extern const char	*dladm_wlan_auth2str(dladm_wlan_auth_t *, char *);
175*f595a68aSyz147064 extern const char	*dladm_wlan_bsstype2str(dladm_wlan_bsstype_t *, char *);
176*f595a68aSyz147064 extern const char	*dladm_wlan_linkstatus2str(dladm_wlan_linkstatus_t *,
177*f595a68aSyz147064 			    char *);
178*f595a68aSyz147064 
179*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2essid(const char *,
180*f595a68aSyz147064 			    dladm_wlan_essid_t *);
181*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2bssid(const char *,
182*f595a68aSyz147064 			    dladm_wlan_bssid_t *);
183*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2secmode(const char *,
184*f595a68aSyz147064 			    dladm_wlan_secmode_t *);
185*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2strength(const char *,
186*f595a68aSyz147064 			    dladm_wlan_strength_t *);
187*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2mode(const char *,
188*f595a68aSyz147064 			    dladm_wlan_mode_t *);
189*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2speed(const char *,
190*f595a68aSyz147064 			    dladm_wlan_speed_t *);
191*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2auth(const char *,
192*f595a68aSyz147064 			    dladm_wlan_auth_t *);
193*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2bsstype(const char *,
194*f595a68aSyz147064 			    dladm_wlan_bsstype_t *);
195*f595a68aSyz147064 extern dladm_status_t	dladm_wlan_str2linkstatus(const char *,
196*f595a68aSyz147064 			    dladm_wlan_linkstatus_t *);
197*f595a68aSyz147064 
198*f595a68aSyz147064 #ifdef	__cplusplus
199*f595a68aSyz147064 }
200*f595a68aSyz147064 #endif
201*f595a68aSyz147064 
202*f595a68aSyz147064 #endif	/* _LIBDLWLAN_H */
203