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