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