17645Sjames.d.carlson@sun.com /* 27645Sjames.d.carlson@sun.com * CDDL HEADER START 37645Sjames.d.carlson@sun.com * 47645Sjames.d.carlson@sun.com * The contents of this file are subject to the terms of the 57645Sjames.d.carlson@sun.com * Common Development and Distribution License (the "License"). 67645Sjames.d.carlson@sun.com * You may not use this file except in compliance with the License. 77645Sjames.d.carlson@sun.com * 87645Sjames.d.carlson@sun.com * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97645Sjames.d.carlson@sun.com * or http://www.opensolaris.org/os/licensing. 107645Sjames.d.carlson@sun.com * See the License for the specific language governing permissions 117645Sjames.d.carlson@sun.com * and limitations under the License. 127645Sjames.d.carlson@sun.com * 137645Sjames.d.carlson@sun.com * When distributing Covered Code, include this CDDL HEADER in each 147645Sjames.d.carlson@sun.com * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157645Sjames.d.carlson@sun.com * If applicable, add the following below this CDDL HEADER, with the 167645Sjames.d.carlson@sun.com * fields enclosed by brackets "[]" replaced with your own identifying 177645Sjames.d.carlson@sun.com * information: Portions Copyright [yyyy] [name of copyright owner] 187645Sjames.d.carlson@sun.com * 197645Sjames.d.carlson@sun.com * CDDL HEADER END 207645Sjames.d.carlson@sun.com */ 217645Sjames.d.carlson@sun.com /* 22*11767SAnurag.Maskey@Sun.COM * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 237645Sjames.d.carlson@sun.com * Use is subject to license terms. 247645Sjames.d.carlson@sun.com */ 257645Sjames.d.carlson@sun.com 26*11767SAnurag.Maskey@Sun.COM /* 27*11767SAnurag.Maskey@Sun.COM * This file contains data structures and APIs of libnwam. 28*11767SAnurag.Maskey@Sun.COM * Implementation is MT safe. 29*11767SAnurag.Maskey@Sun.COM */ 307645Sjames.d.carlson@sun.com #ifndef _LIBNWAM_H 317645Sjames.d.carlson@sun.com #define _LIBNWAM_H 327645Sjames.d.carlson@sun.com 33*11767SAnurag.Maskey@Sun.COM #ifdef __cplusplus 347645Sjames.d.carlson@sun.com extern "C" { 357645Sjames.d.carlson@sun.com #endif 367645Sjames.d.carlson@sun.com 37*11767SAnurag.Maskey@Sun.COM #include <bsm/adt.h> 38*11767SAnurag.Maskey@Sun.COM #include <net/if.h> 39*11767SAnurag.Maskey@Sun.COM #include <inet/ip.h> 40*11767SAnurag.Maskey@Sun.COM #include <inet/ip6.h> 41*11767SAnurag.Maskey@Sun.COM #include <sys/types.h> 42*11767SAnurag.Maskey@Sun.COM #include <sys/socket.h> 43*11767SAnurag.Maskey@Sun.COM 44*11767SAnurag.Maskey@Sun.COM /* 45*11767SAnurag.Maskey@Sun.COM * Note - several interface functions below are not utilized in ON, but are 46*11767SAnurag.Maskey@Sun.COM * used by the GNOME nwam-manager. One example is nwam_enm_get_name(). 47*11767SAnurag.Maskey@Sun.COM */ 48*11767SAnurag.Maskey@Sun.COM 49*11767SAnurag.Maskey@Sun.COM /* 50*11767SAnurag.Maskey@Sun.COM * Common definitions 51*11767SAnurag.Maskey@Sun.COM */ 52*11767SAnurag.Maskey@Sun.COM 53*11767SAnurag.Maskey@Sun.COM /* nwam FMRI and properties */ 54*11767SAnurag.Maskey@Sun.COM #define NWAM_FMRI "svc:/network/physical:nwam" 55*11767SAnurag.Maskey@Sun.COM #define NWAM_PG "nwamd" 56*11767SAnurag.Maskey@Sun.COM #define NWAM_PROP_ACTIVE_NCP "active_ncp" 57*11767SAnurag.Maskey@Sun.COM 58*11767SAnurag.Maskey@Sun.COM /* nwam flags used for read/commit */ 59*11767SAnurag.Maskey@Sun.COM /* Block waiting for commit if necessary */ 60*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_BLOCKING 0x00000001 61*11767SAnurag.Maskey@Sun.COM /* Committed object must be new */ 62*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_CREATE 0x00000002 63*11767SAnurag.Maskey@Sun.COM /* Tell destroy functions not to free handle */ 64*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_DO_NOT_FREE 0x00000004 65*11767SAnurag.Maskey@Sun.COM /* Object is being enabled/disabled */ 66*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ENTITY_ENABLE 0x00000008 67*11767SAnurag.Maskey@Sun.COM /* Known WLAN being read, committed or destroyed */ 68*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ENTITY_KNOWN_WLAN 0x00000010 69*11767SAnurag.Maskey@Sun.COM 70*11767SAnurag.Maskey@Sun.COM /* nwam flags used for selecting ncu type for walk */ 71*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_TYPE_LINK 0x00000001ULL << 32 72*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_TYPE_INTERFACE 0x00000002ULL << 32 73*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_TYPE_ALL (NWAM_FLAG_NCU_TYPE_LINK | \ 74*11767SAnurag.Maskey@Sun.COM NWAM_FLAG_NCU_TYPE_INTERFACE) 75*11767SAnurag.Maskey@Sun.COM 76*11767SAnurag.Maskey@Sun.COM /* nwam flags used for selecting ncu class for walk */ 77*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_CLASS_PHYS 0x00000100ULL << 32 78*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_CLASS_IP 0x00010000ULL << 32 79*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_CLASS_ALL_LINK NWAM_FLAG_NCU_CLASS_PHYS 80*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_CLASS_ALL_INTERFACE NWAM_FLAG_NCU_CLASS_IP 81*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL_INTERFACE | \ 82*11767SAnurag.Maskey@Sun.COM NWAM_FLAG_NCU_CLASS_ALL_LINK) 83*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_NCU_TYPE_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL | \ 84*11767SAnurag.Maskey@Sun.COM NWAM_FLAG_NCU_TYPE_ALL) 85*11767SAnurag.Maskey@Sun.COM 86*11767SAnurag.Maskey@Sun.COM /* flags used for selecting activation for walk */ 87*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ACTIVATION_MODE_MANUAL 0x000000001ULL << 32 88*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ACTIVATION_MODE_SYSTEM 0x000000002ULL << 32 89*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED 0x000000004ULL << 32 90*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY 0x000000008ULL << 32 91*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL 0x000000010ULL << 32 92*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_ACTIVATION_MODE_ALL (NWAM_FLAG_ACTIVATION_MODE_MANUAL |\ 93*11767SAnurag.Maskey@Sun.COM NWAM_FLAG_ACTIVATION_MODE_SYSTEM |\ 94*11767SAnurag.Maskey@Sun.COM NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED |\ 95*11767SAnurag.Maskey@Sun.COM NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY |\ 96*11767SAnurag.Maskey@Sun.COM NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL) 97*11767SAnurag.Maskey@Sun.COM 98*11767SAnurag.Maskey@Sun.COM /* Walk known WLANs in order of priority (lowest first) */ 99*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_KNOWN_WLAN_WALK_PRIORITY_ORDER 0x000010000ULL << 32 100*11767SAnurag.Maskey@Sun.COM /* Do not perform priority collision checking for known WLANs */ 101*11767SAnurag.Maskey@Sun.COM #define NWAM_FLAG_KNOWN_WLAN_NO_COLLISION_CHECK 0x000020000ULL << 32 102*11767SAnurag.Maskey@Sun.COM 103*11767SAnurag.Maskey@Sun.COM /* nwam return codes */ 104*11767SAnurag.Maskey@Sun.COM typedef enum { 105*11767SAnurag.Maskey@Sun.COM NWAM_SUCCESS, /* No error occured */ 106*11767SAnurag.Maskey@Sun.COM NWAM_LIST_END, /* End of list reached */ 107*11767SAnurag.Maskey@Sun.COM NWAM_INVALID_HANDLE, /* Entity handle is invalid */ 108*11767SAnurag.Maskey@Sun.COM NWAM_HANDLE_UNBOUND, /* Handle not bound to entity */ 109*11767SAnurag.Maskey@Sun.COM NWAM_INVALID_ARG, /* Argument is invalid */ 110*11767SAnurag.Maskey@Sun.COM NWAM_PERMISSION_DENIED, /* Insufficient privileges for action */ 111*11767SAnurag.Maskey@Sun.COM NWAM_NO_MEMORY, /* Out of memory */ 112*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_EXISTS, /* Entity already exists */ 113*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_IN_USE, /* Entity in use */ 114*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_COMMITTED, /* Entity already committed */ 115*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_NOT_FOUND, /* Entity not found */ 116*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_TYPE_MISMATCH, /* Entity type mismatch */ 117*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_INVALID, /* Validation of entity failed */ 118*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_INVALID_MEMBER, /* Entity member invalid */ 119*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_INVALID_STATE, /* Entity is not in appropriate state */ 120*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_INVALID_VALUE, /* Validation of entity value failed */ 121*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_MISSING_MEMBER, /* Required member is missing */ 122*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_NO_VALUE, /* No value associated with entity */ 123*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_MULTIPLE_VALUES, /* Multiple values for entity */ 124*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_READ_ONLY, /* Entity is marked read only */ 125*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_NOT_DESTROYABLE, /* Entity cannot be destroyed */ 126*11767SAnurag.Maskey@Sun.COM NWAM_ENTITY_NOT_MANUAL, /* Entity cannot be manually enabled/disabled */ 127*11767SAnurag.Maskey@Sun.COM NWAM_WALK_HALTED, /* Callback function returned nonzero */ 128*11767SAnurag.Maskey@Sun.COM NWAM_ERROR_BIND, /* Could not bind to backend */ 129*11767SAnurag.Maskey@Sun.COM NWAM_ERROR_BACKEND_INIT, /* Could not initialize backend */ 130*11767SAnurag.Maskey@Sun.COM NWAM_ERROR_INTERNAL /* Internal error */ 131*11767SAnurag.Maskey@Sun.COM } nwam_error_t; 132*11767SAnurag.Maskey@Sun.COM 133*11767SAnurag.Maskey@Sun.COM #define NWAM_MAX_NAME_LEN 128 134*11767SAnurag.Maskey@Sun.COM #define NWAM_MAX_VALUE_LEN 256 135*11767SAnurag.Maskey@Sun.COM #define NWAM_MAX_FMRI_LEN NWAM_MAX_VALUE_LEN 136*11767SAnurag.Maskey@Sun.COM #define NWAM_MAX_NUM_VALUES 32 137*11767SAnurag.Maskey@Sun.COM #define NWAM_MAX_NUM_PROPERTIES 32 138*11767SAnurag.Maskey@Sun.COM 139*11767SAnurag.Maskey@Sun.COM /* used for getting and setting of properties */ 140*11767SAnurag.Maskey@Sun.COM typedef enum { 141*11767SAnurag.Maskey@Sun.COM NWAM_VALUE_TYPE_BOOLEAN, 142*11767SAnurag.Maskey@Sun.COM NWAM_VALUE_TYPE_INT64, 143*11767SAnurag.Maskey@Sun.COM NWAM_VALUE_TYPE_UINT64, 144*11767SAnurag.Maskey@Sun.COM NWAM_VALUE_TYPE_STRING, 145*11767SAnurag.Maskey@Sun.COM NWAM_VALUE_TYPE_UNKNOWN 146*11767SAnurag.Maskey@Sun.COM } nwam_value_type_t; 147*11767SAnurag.Maskey@Sun.COM 148*11767SAnurag.Maskey@Sun.COM /* Holds values of various types for getting and setting of properties */ 149*11767SAnurag.Maskey@Sun.COM /* Forward definition */ 150*11767SAnurag.Maskey@Sun.COM struct nwam_value; 151*11767SAnurag.Maskey@Sun.COM typedef struct nwam_value *nwam_value_t; 152*11767SAnurag.Maskey@Sun.COM 153*11767SAnurag.Maskey@Sun.COM /* Value-related functions. */ 154*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_boolean(boolean_t, nwam_value_t *); 155*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_boolean_array(boolean_t *, uint_t, 156*11767SAnurag.Maskey@Sun.COM nwam_value_t *); 157*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_int64(int64_t, nwam_value_t *); 158*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_int64_array(int64_t *, uint_t, 159*11767SAnurag.Maskey@Sun.COM nwam_value_t *); 160*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_uint64(uint64_t, nwam_value_t *); 161*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_uint64_array(uint64_t *, uint_t, 162*11767SAnurag.Maskey@Sun.COM nwam_value_t *); 163*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_string(char *, nwam_value_t *); 164*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_string_array(char **, uint_t, 165*11767SAnurag.Maskey@Sun.COM nwam_value_t *); 166*11767SAnurag.Maskey@Sun.COM 167*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_boolean(nwam_value_t, boolean_t *); 168*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_boolean_array(nwam_value_t, boolean_t **, 169*11767SAnurag.Maskey@Sun.COM uint_t *); 170*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_int64(nwam_value_t, int64_t *); 171*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_int64_array(nwam_value_t, int64_t **, 172*11767SAnurag.Maskey@Sun.COM uint_t *); 173*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_uint64(nwam_value_t, uint64_t *); 174*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_uint64_array(nwam_value_t, uint64_t **, 175*11767SAnurag.Maskey@Sun.COM uint_t *); 176*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_string(nwam_value_t, char **); 177*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_string_array(nwam_value_t, char ***, 178*11767SAnurag.Maskey@Sun.COM uint_t *); 179*11767SAnurag.Maskey@Sun.COM 180*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_type(nwam_value_t, nwam_value_type_t *); 181*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_numvalues(nwam_value_t, uint_t *); 182*11767SAnurag.Maskey@Sun.COM 183*11767SAnurag.Maskey@Sun.COM extern void nwam_value_free(nwam_value_t); 184*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_copy(nwam_value_t, nwam_value_t *); 185*11767SAnurag.Maskey@Sun.COM 186*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_uint64_get_value_string(const char *, uint64_t, 187*11767SAnurag.Maskey@Sun.COM const char **); 188*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_string_get_uint64(const char *, const char *, 189*11767SAnurag.Maskey@Sun.COM uint64_t *); 190*11767SAnurag.Maskey@Sun.COM 191*11767SAnurag.Maskey@Sun.COM /* 192*11767SAnurag.Maskey@Sun.COM * To retrieve a localized error string 193*11767SAnurag.Maskey@Sun.COM */ 194*11767SAnurag.Maskey@Sun.COM extern const char *nwam_strerror(nwam_error_t); 195*11767SAnurag.Maskey@Sun.COM 196*11767SAnurag.Maskey@Sun.COM /* 197*11767SAnurag.Maskey@Sun.COM * State and auxiliary state describe the state of ENMs, NCUs and locations. 198*11767SAnurag.Maskey@Sun.COM */ 199*11767SAnurag.Maskey@Sun.COM typedef enum { 200*11767SAnurag.Maskey@Sun.COM NWAM_STATE_UNINITIALIZED = 0x0, 201*11767SAnurag.Maskey@Sun.COM NWAM_STATE_INITIALIZED = 0x1, 202*11767SAnurag.Maskey@Sun.COM NWAM_STATE_OFFLINE = 0x2, 203*11767SAnurag.Maskey@Sun.COM NWAM_STATE_OFFLINE_TO_ONLINE = 0x4, 204*11767SAnurag.Maskey@Sun.COM NWAM_STATE_ONLINE_TO_OFFLINE = 0x8, 205*11767SAnurag.Maskey@Sun.COM NWAM_STATE_ONLINE = 0x10, 206*11767SAnurag.Maskey@Sun.COM NWAM_STATE_MAINTENANCE = 0x20, 207*11767SAnurag.Maskey@Sun.COM NWAM_STATE_DEGRADED = 0x40, 208*11767SAnurag.Maskey@Sun.COM NWAM_STATE_DISABLED = 0x80 209*11767SAnurag.Maskey@Sun.COM } nwam_state_t; 210*11767SAnurag.Maskey@Sun.COM 211*11767SAnurag.Maskey@Sun.COM #define NWAM_STATE_ANY (NWAM_STATE_UNINITIALIZED | \ 212*11767SAnurag.Maskey@Sun.COM NWAM_STATE_INITIALIZED | \ 213*11767SAnurag.Maskey@Sun.COM NWAM_STATE_OFFLINE | \ 214*11767SAnurag.Maskey@Sun.COM NWAM_STATE_OFFLINE_TO_ONLINE | \ 215*11767SAnurag.Maskey@Sun.COM NWAM_STATE_ONLINE_TO_OFFLINE | \ 216*11767SAnurag.Maskey@Sun.COM NWAM_STATE_ONLINE | \ 217*11767SAnurag.Maskey@Sun.COM NWAM_STATE_MAINTENANCE | \ 218*11767SAnurag.Maskey@Sun.COM NWAM_STATE_DEGRADED | \ 219*11767SAnurag.Maskey@Sun.COM NWAM_STATE_DISABLED) 220*11767SAnurag.Maskey@Sun.COM 221*11767SAnurag.Maskey@Sun.COM /* 222*11767SAnurag.Maskey@Sun.COM * The auxiliary state denotes specific reasons why an object is in a particular 223*11767SAnurag.Maskey@Sun.COM * state (e.g. "script failed", "disabled by administrator", "waiting for DHCP 224*11767SAnurag.Maskey@Sun.COM * response"). 225*11767SAnurag.Maskey@Sun.COM */ 226*11767SAnurag.Maskey@Sun.COM typedef enum { 227*11767SAnurag.Maskey@Sun.COM /* General auxiliary states */ 228*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_UNINITIALIZED, 229*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_INITIALIZED, 230*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_CONDITIONS_NOT_MET, 231*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_MANUAL_DISABLE, 232*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_METHOD_FAILED, 233*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_METHOD_MISSING, 234*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_METHOD_RUNNING, 235*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_INVALID_CONFIG, 236*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_ACTIVE, 237*11767SAnurag.Maskey@Sun.COM /* Link-specific auxiliary states */ 238*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_LINK_WIFI_SCANNING, 239*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_LINK_WIFI_NEED_SELECTION, 240*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_LINK_WIFI_NEED_KEY, 241*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_LINK_WIFI_CONNECTING, 242*11767SAnurag.Maskey@Sun.COM /* IP interface-specific auxiliary states */ 243*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_IF_WAITING_FOR_ADDR, 244*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_IF_DHCP_TIMED_OUT, 245*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_IF_DUPLICATE_ADDR, 246*11767SAnurag.Maskey@Sun.COM /* Common link/interface auxiliary states */ 247*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_UP, 248*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_DOWN, 249*11767SAnurag.Maskey@Sun.COM NWAM_AUX_STATE_NOT_FOUND 250*11767SAnurag.Maskey@Sun.COM } nwam_aux_state_t; 251*11767SAnurag.Maskey@Sun.COM 252*11767SAnurag.Maskey@Sun.COM /* Activation modes */ 253*11767SAnurag.Maskey@Sun.COM typedef enum { 254*11767SAnurag.Maskey@Sun.COM NWAM_ACTIVATION_MODE_MANUAL, 255*11767SAnurag.Maskey@Sun.COM NWAM_ACTIVATION_MODE_SYSTEM, 256*11767SAnurag.Maskey@Sun.COM NWAM_ACTIVATION_MODE_CONDITIONAL_ANY, 257*11767SAnurag.Maskey@Sun.COM NWAM_ACTIVATION_MODE_CONDITIONAL_ALL, 258*11767SAnurag.Maskey@Sun.COM NWAM_ACTIVATION_MODE_PRIORITIZED 259*11767SAnurag.Maskey@Sun.COM } nwam_activation_mode_t; 2607645Sjames.d.carlson@sun.com 261*11767SAnurag.Maskey@Sun.COM /* 262*11767SAnurag.Maskey@Sun.COM * Conditions are of the form 263*11767SAnurag.Maskey@Sun.COM * 264*11767SAnurag.Maskey@Sun.COM * ncu|enm|loc name is|is-not active 265*11767SAnurag.Maskey@Sun.COM * ip-address is|is-not|is-in-range|is-not-in-range ipaddr[/prefixlen] 266*11767SAnurag.Maskey@Sun.COM * advertised-domain is|is-not|contains|does-not-contain string 267*11767SAnurag.Maskey@Sun.COM * system-domain is|is-not|contains|does-not-contain string 268*11767SAnurag.Maskey@Sun.COM * essid is|is-not|contains|does-not-contain string 269*11767SAnurag.Maskey@Sun.COM * bssid is|is-not <string> 270*11767SAnurag.Maskey@Sun.COM */ 271*11767SAnurag.Maskey@Sun.COM 272*11767SAnurag.Maskey@Sun.COM typedef enum { 273*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_IS, 274*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_IS_NOT, 275*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_IS_IN_RANGE, 276*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_IS_NOT_IN_RANGE, 277*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_CONTAINS, 278*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_DOES_NOT_CONTAIN 279*11767SAnurag.Maskey@Sun.COM } nwam_condition_t; 280*11767SAnurag.Maskey@Sun.COM 281*11767SAnurag.Maskey@Sun.COM typedef enum { 282*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_NCP, 283*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_NCU, 284*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_ENM, 285*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_LOC, 286*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS, 287*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN, 288*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN, 289*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_ESSID, 290*11767SAnurag.Maskey@Sun.COM NWAM_CONDITION_OBJECT_TYPE_BSSID 291*11767SAnurag.Maskey@Sun.COM } nwam_condition_object_type_t; 292*11767SAnurag.Maskey@Sun.COM 293*11767SAnurag.Maskey@Sun.COM /* 294*11767SAnurag.Maskey@Sun.COM * Activation condition-related functions that convert activation 295*11767SAnurag.Maskey@Sun.COM * values to an appropriate string and back. 296*11767SAnurag.Maskey@Sun.COM */ 297*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_condition_to_condition_string( 298*11767SAnurag.Maskey@Sun.COM nwam_condition_object_type_t, nwam_condition_t, const char *, char **); 299*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_condition_string_to_condition(const char *, 300*11767SAnurag.Maskey@Sun.COM nwam_condition_object_type_t *, nwam_condition_t *, char **); 301*11767SAnurag.Maskey@Sun.COM 302*11767SAnurag.Maskey@Sun.COM /* 303*11767SAnurag.Maskey@Sun.COM * Only one location can be active at one time. As a 304*11767SAnurag.Maskey@Sun.COM * consequence, if the activation conditions of multiple 305*11767SAnurag.Maskey@Sun.COM * locations are satisfied, we need to compare activation 306*11767SAnurag.Maskey@Sun.COM * conditions to see if one is more specific than another. 307*11767SAnurag.Maskey@Sun.COM * 308*11767SAnurag.Maskey@Sun.COM * The following heuristics are applied to rate an 309*11767SAnurag.Maskey@Sun.COM * activation condition: 310*11767SAnurag.Maskey@Sun.COM * - "is" is the most specific condition 311*11767SAnurag.Maskey@Sun.COM * - it is followed by "is-in-range" and "contains" 312*11767SAnurag.Maskey@Sun.COM * - "is-not-in-range" and "does-not-contain" are next 313*11767SAnurag.Maskey@Sun.COM * - finally "is-not" is least specific 314*11767SAnurag.Maskey@Sun.COM * 315*11767SAnurag.Maskey@Sun.COM * Regarding the objects these conditions apply to: 316*11767SAnurag.Maskey@Sun.COM * - NCU, ENM and locations are most specific 317*11767SAnurag.Maskey@Sun.COM * - system-domain is next 318*11767SAnurag.Maskey@Sun.COM * - advertised-domain is next 319*11767SAnurag.Maskey@Sun.COM * - IP address is next 320*11767SAnurag.Maskey@Sun.COM * - wireless BSSID is next 321*11767SAnurag.Maskey@Sun.COM * - wireless ESSID is least specific 322*11767SAnurag.Maskey@Sun.COM * 323*11767SAnurag.Maskey@Sun.COM */ 324*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_condition_rate(nwam_condition_object_type_t, 325*11767SAnurag.Maskey@Sun.COM nwam_condition_t, uint64_t *); 326*11767SAnurag.Maskey@Sun.COM 327*11767SAnurag.Maskey@Sun.COM /* 328*11767SAnurag.Maskey@Sun.COM * Location definitions. 329*11767SAnurag.Maskey@Sun.COM */ 330*11767SAnurag.Maskey@Sun.COM 331*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_NAME_AUTOMATIC "Automatic" 332*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_NAME_NO_NET "NoNet" 333*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_NAME_LEGACY "Legacy" 334*11767SAnurag.Maskey@Sun.COM 335*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_NAME_PRE_DEFINED(name) \ 336*11767SAnurag.Maskey@Sun.COM (strcasecmp(name, NWAM_LOC_NAME_AUTOMATIC) == 0 || \ 337*11767SAnurag.Maskey@Sun.COM strcasecmp(name, NWAM_LOC_NAME_NO_NET) == 0 || \ 338*11767SAnurag.Maskey@Sun.COM strcasecmp(name, NWAM_LOC_NAME_LEGACY) == 0) 339*11767SAnurag.Maskey@Sun.COM 340*11767SAnurag.Maskey@Sun.COM /* Forward definition */ 341*11767SAnurag.Maskey@Sun.COM struct nwam_handle; 342*11767SAnurag.Maskey@Sun.COM 343*11767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_loc_handle_t; 344*11767SAnurag.Maskey@Sun.COM 345*11767SAnurag.Maskey@Sun.COM /* Location properties */ 346*11767SAnurag.Maskey@Sun.COM 347*11767SAnurag.Maskey@Sun.COM typedef enum { 348*11767SAnurag.Maskey@Sun.COM NWAM_NAMESERVICES_DNS, 349*11767SAnurag.Maskey@Sun.COM NWAM_NAMESERVICES_FILES, 350*11767SAnurag.Maskey@Sun.COM NWAM_NAMESERVICES_NIS, 351*11767SAnurag.Maskey@Sun.COM NWAM_NAMESERVICES_LDAP 352*11767SAnurag.Maskey@Sun.COM } nwam_nameservices_t; 353*11767SAnurag.Maskey@Sun.COM 354*11767SAnurag.Maskey@Sun.COM typedef enum { 355*11767SAnurag.Maskey@Sun.COM NWAM_CONFIGSRC_MANUAL, 356*11767SAnurag.Maskey@Sun.COM NWAM_CONFIGSRC_DHCP 357*11767SAnurag.Maskey@Sun.COM } nwam_configsrc_t; 358*11767SAnurag.Maskey@Sun.COM 359*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_ACTIVATION_MODE "activation-mode" 360*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_CONDITIONS "conditions" 361*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_ENABLED "enabled" 362*11767SAnurag.Maskey@Sun.COM 363*11767SAnurag.Maskey@Sun.COM /* Nameservice location properties */ 364*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_NAMESERVICES "nameservices" 365*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_NAMESERVICES_CONFIG_FILE "nameservices-config-file" 366*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC "dns-nameservice-configsrc" 367*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN "dns-nameservice-domain" 368*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS "dns-nameservice-servers" 369*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH "dns-nameservice-search" 370*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC "nis-nameservice-configsrc" 371*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS "nis-nameservice-servers" 372*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC "ldap-nameservice-configsrc" 373*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS "ldap-nameservice-servers" 374*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_DEFAULT_DOMAIN "default-domain" 375*11767SAnurag.Maskey@Sun.COM 376*11767SAnurag.Maskey@Sun.COM /* NFSv4 domain */ 377*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_NFSV4_DOMAIN "nfsv4-domain" 378*11767SAnurag.Maskey@Sun.COM 379*11767SAnurag.Maskey@Sun.COM /* IPfilter configuration */ 380*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_IPFILTER_CONFIG_FILE "ipfilter-config-file" 381*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE "ipfilter-v6-config-file" 382*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_IPNAT_CONFIG_FILE "ipnat-config-file" 383*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_IPPOOL_CONFIG_FILE "ippool-config-file" 384*11767SAnurag.Maskey@Sun.COM 385*11767SAnurag.Maskey@Sun.COM /* IPsec configuration */ 386*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_IKE_CONFIG_FILE "ike-config-file" 387*11767SAnurag.Maskey@Sun.COM #define NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE "ipsecpolicy-config-file" 388*11767SAnurag.Maskey@Sun.COM 389*11767SAnurag.Maskey@Sun.COM /* 390*11767SAnurag.Maskey@Sun.COM * NCP/NCU definitions. 391*11767SAnurag.Maskey@Sun.COM */ 392*11767SAnurag.Maskey@Sun.COM 393*11767SAnurag.Maskey@Sun.COM #define NWAM_NCP_NAME_AUTOMATIC "Automatic" 394*11767SAnurag.Maskey@Sun.COM #define NWAM_NCP_NAME_USER "User" 395*11767SAnurag.Maskey@Sun.COM 396*11767SAnurag.Maskey@Sun.COM #define NWAM_NCP_AUTOMATIC(name) \ 397*11767SAnurag.Maskey@Sun.COM (strcasecmp(name, NWAM_NCP_NAME_AUTOMATIC) == 0) 398*11767SAnurag.Maskey@Sun.COM 399*11767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_ncp_handle_t; 400*11767SAnurag.Maskey@Sun.COM 401*11767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_ncu_handle_t; 402*11767SAnurag.Maskey@Sun.COM 403*11767SAnurag.Maskey@Sun.COM typedef enum { 404*11767SAnurag.Maskey@Sun.COM NWAM_NCU_TYPE_UNKNOWN = -1, 405*11767SAnurag.Maskey@Sun.COM NWAM_NCU_TYPE_LINK, 406*11767SAnurag.Maskey@Sun.COM NWAM_NCU_TYPE_INTERFACE, 407*11767SAnurag.Maskey@Sun.COM NWAM_NCU_TYPE_ANY 408*11767SAnurag.Maskey@Sun.COM } nwam_ncu_type_t; 409*11767SAnurag.Maskey@Sun.COM 410*11767SAnurag.Maskey@Sun.COM typedef enum { 411*11767SAnurag.Maskey@Sun.COM NWAM_NCU_CLASS_UNKNOWN = -1, 412*11767SAnurag.Maskey@Sun.COM NWAM_NCU_CLASS_PHYS, 413*11767SAnurag.Maskey@Sun.COM NWAM_NCU_CLASS_IP, 414*11767SAnurag.Maskey@Sun.COM NWAM_NCU_CLASS_ANY 415*11767SAnurag.Maskey@Sun.COM } nwam_ncu_class_t; 416*11767SAnurag.Maskey@Sun.COM 417*11767SAnurag.Maskey@Sun.COM typedef enum { 418*11767SAnurag.Maskey@Sun.COM NWAM_ADDRSRC_DHCP, 419*11767SAnurag.Maskey@Sun.COM NWAM_ADDRSRC_AUTOCONF, 420*11767SAnurag.Maskey@Sun.COM NWAM_ADDRSRC_STATIC 421*11767SAnurag.Maskey@Sun.COM } nwam_addrsrc_t; 422*11767SAnurag.Maskey@Sun.COM 423*11767SAnurag.Maskey@Sun.COM typedef enum { 424*11767SAnurag.Maskey@Sun.COM NWAM_PRIORITY_MODE_EXCLUSIVE, 425*11767SAnurag.Maskey@Sun.COM NWAM_PRIORITY_MODE_SHARED, 426*11767SAnurag.Maskey@Sun.COM NWAM_PRIORITY_MODE_ALL 427*11767SAnurag.Maskey@Sun.COM } nwam_priority_mode_t; 428*11767SAnurag.Maskey@Sun.COM 429*11767SAnurag.Maskey@Sun.COM /* NCU properties common to all type/classes */ 430*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_TYPE "type" 431*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_CLASS "class" 432*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_PARENT_NCP "parent" 433*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_ACTIVATION_MODE "activation-mode" 434*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_ENABLED "enabled" 435*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_PRIORITY_GROUP "priority-group" 436*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_PRIORITY_MODE "priority-mode" 437*11767SAnurag.Maskey@Sun.COM 438*11767SAnurag.Maskey@Sun.COM /* Link NCU properties */ 439*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_LINK_MAC_ADDR "link-mac-addr" 440*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_LINK_AUTOPUSH "link-autopush" 441*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_LINK_MTU "link-mtu" 442*11767SAnurag.Maskey@Sun.COM 443*11767SAnurag.Maskey@Sun.COM /* IP NCU properties */ 444*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_IP_VERSION "ip-version" 445*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_IPV4_ADDRSRC "ipv4-addrsrc" 446*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_IPV4_ADDR "ipv4-addr" 447*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE "ipv4-default-route" 448*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_IPV6_ADDRSRC "ipv6-addrsrc" 449*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_IPV6_ADDR "ipv6-addr" 450*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE "ipv6-default-route" 451*11767SAnurag.Maskey@Sun.COM 452*11767SAnurag.Maskey@Sun.COM /* Some properties should only be set on creation */ 453*11767SAnurag.Maskey@Sun.COM #define NWAM_NCU_PROP_SETONCE(prop) \ 454*11767SAnurag.Maskey@Sun.COM (strcmp(prop, NWAM_NCU_PROP_TYPE) == 0 || \ 455*11767SAnurag.Maskey@Sun.COM strcmp(prop, NWAM_NCU_PROP_CLASS) == 0 || \ 456*11767SAnurag.Maskey@Sun.COM strcmp(prop, NWAM_NCU_PROP_PARENT_NCP) == 0) 457*11767SAnurag.Maskey@Sun.COM /* 458*11767SAnurag.Maskey@Sun.COM * ENM definitions 459*11767SAnurag.Maskey@Sun.COM */ 460*11767SAnurag.Maskey@Sun.COM 461*11767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_enm_handle_t; 462*11767SAnurag.Maskey@Sun.COM 463*11767SAnurag.Maskey@Sun.COM #define NWAM_ENM_PROP_ACTIVATION_MODE "activation-mode" 464*11767SAnurag.Maskey@Sun.COM #define NWAM_ENM_PROP_CONDITIONS "conditions" 465*11767SAnurag.Maskey@Sun.COM #define NWAM_ENM_PROP_ENABLED "enabled" 466*11767SAnurag.Maskey@Sun.COM 467*11767SAnurag.Maskey@Sun.COM /* FMRI associated with ENM */ 468*11767SAnurag.Maskey@Sun.COM #define NWAM_ENM_PROP_FMRI "fmri" 469*11767SAnurag.Maskey@Sun.COM 470*11767SAnurag.Maskey@Sun.COM /* Start/stop scripts associated with ENM */ 471*11767SAnurag.Maskey@Sun.COM #define NWAM_ENM_PROP_START "start" 472*11767SAnurag.Maskey@Sun.COM #define NWAM_ENM_PROP_STOP "stop" 473*11767SAnurag.Maskey@Sun.COM 474*11767SAnurag.Maskey@Sun.COM /* 475*11767SAnurag.Maskey@Sun.COM * Known Wireless LAN info (known WLAN) definitions. 476*11767SAnurag.Maskey@Sun.COM */ 477*11767SAnurag.Maskey@Sun.COM 478*11767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_known_wlan_handle_t; 479*11767SAnurag.Maskey@Sun.COM 480*11767SAnurag.Maskey@Sun.COM #define NWAM_KNOWN_WLAN_PROP_BSSIDS "bssids" 481*11767SAnurag.Maskey@Sun.COM #define NWAM_KNOWN_WLAN_PROP_PRIORITY "priority" 482*11767SAnurag.Maskey@Sun.COM #define NWAM_KNOWN_WLAN_PROP_KEYNAME "keyname" 483*11767SAnurag.Maskey@Sun.COM #define NWAM_KNOWN_WLAN_PROP_KEYSLOT "keyslot" 484*11767SAnurag.Maskey@Sun.COM #define NWAM_KNOWN_WLAN_PROP_SECURITY_MODE "security-mode" 4857645Sjames.d.carlson@sun.com 4867645Sjames.d.carlson@sun.com /* 487*11767SAnurag.Maskey@Sun.COM * Location Functions 4887645Sjames.d.carlson@sun.com */ 489*11767SAnurag.Maskey@Sun.COM 490*11767SAnurag.Maskey@Sun.COM /* Create a location */ 491*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_create(const char *, nwam_loc_handle_t *); 492*11767SAnurag.Maskey@Sun.COM 493*11767SAnurag.Maskey@Sun.COM /* Copy a location */ 494*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_copy(nwam_loc_handle_t, const char *, 495*11767SAnurag.Maskey@Sun.COM nwam_loc_handle_t *); 496*11767SAnurag.Maskey@Sun.COM 497*11767SAnurag.Maskey@Sun.COM /* Read a location from persistent storage */ 498*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_read(const char *, uint64_t, 499*11767SAnurag.Maskey@Sun.COM nwam_loc_handle_t *); 500*11767SAnurag.Maskey@Sun.COM 501*11767SAnurag.Maskey@Sun.COM /* Validate in-memory representation of a location */ 502*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_validate(nwam_loc_handle_t, const char **); 503*11767SAnurag.Maskey@Sun.COM 504*11767SAnurag.Maskey@Sun.COM /* Commit in-memory representation of a location to persistent storage */ 505*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_commit(nwam_loc_handle_t, uint64_t); 506*11767SAnurag.Maskey@Sun.COM 507*11767SAnurag.Maskey@Sun.COM /* Destroy a location in persistent storage */ 508*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_destroy(nwam_loc_handle_t, uint64_t); 509*11767SAnurag.Maskey@Sun.COM 510*11767SAnurag.Maskey@Sun.COM /* Free in-memory representation of a location */ 511*11767SAnurag.Maskey@Sun.COM extern void nwam_loc_free(nwam_loc_handle_t); 512*11767SAnurag.Maskey@Sun.COM 513*11767SAnurag.Maskey@Sun.COM /* read all locs from persistent storage and walk through each at a time */ 514*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_locs(int (*)(nwam_loc_handle_t, void *), void *, 515*11767SAnurag.Maskey@Sun.COM uint64_t, int *); 516*11767SAnurag.Maskey@Sun.COM 517*11767SAnurag.Maskey@Sun.COM /* get/set loc name */ 518*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_name(nwam_loc_handle_t, char **); 519*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_set_name(nwam_loc_handle_t, const char *); 520*11767SAnurag.Maskey@Sun.COM extern boolean_t nwam_loc_can_set_name(nwam_loc_handle_t); 521*11767SAnurag.Maskey@Sun.COM 522*11767SAnurag.Maskey@Sun.COM /* activate/deactivate loc */ 523*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_enable(nwam_loc_handle_t); 524*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_disable(nwam_loc_handle_t); 525*11767SAnurag.Maskey@Sun.COM 526*11767SAnurag.Maskey@Sun.COM /* walk all properties of an in-memory loc */ 527*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_walk_props(nwam_loc_handle_t, 528*11767SAnurag.Maskey@Sun.COM int (*)(const char *, nwam_value_t, void *), 529*11767SAnurag.Maskey@Sun.COM void *, uint64_t, int *); 530*11767SAnurag.Maskey@Sun.COM 531*11767SAnurag.Maskey@Sun.COM /* delete/get/set validate loc property */ 532*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_delete_prop(nwam_loc_handle_t, 533*11767SAnurag.Maskey@Sun.COM const char *); 534*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_prop_value(nwam_loc_handle_t, 535*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t *); 536*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_set_prop_value(nwam_loc_handle_t, 537*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t); 538*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_validate_prop(nwam_loc_handle_t, const char *, 539*11767SAnurag.Maskey@Sun.COM nwam_value_t); 540*11767SAnurag.Maskey@Sun.COM 541*11767SAnurag.Maskey@Sun.COM /* Get the read-only value for a particular loc property */ 542*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_prop_read_only(const char *, boolean_t *); 543*11767SAnurag.Maskey@Sun.COM 544*11767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */ 545*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_prop_multivalued(const char *, boolean_t *); 546*11767SAnurag.Maskey@Sun.COM 547*11767SAnurag.Maskey@Sun.COM /* Retrieve data type */ 548*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_prop_type(const char *, nwam_value_type_t *); 549*11767SAnurag.Maskey@Sun.COM 550*11767SAnurag.Maskey@Sun.COM /* Retrieve description */ 551*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_prop_description(const char *, const char **); 552*11767SAnurag.Maskey@Sun.COM 553*11767SAnurag.Maskey@Sun.COM /* get default loc props */ 554*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_default_proplist(const char ***, uint_t *); 555*11767SAnurag.Maskey@Sun.COM 556*11767SAnurag.Maskey@Sun.COM /* get sstate of loc from nwamd */ 557*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_state(nwam_loc_handle_t, nwam_state_t *, 558*11767SAnurag.Maskey@Sun.COM nwam_aux_state_t *); 559*11767SAnurag.Maskey@Sun.COM 560*11767SAnurag.Maskey@Sun.COM /* Get whether the loc has manual activation-mode or not */ 561*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_is_manual(nwam_loc_handle_t, boolean_t *); 562*11767SAnurag.Maskey@Sun.COM 563*11767SAnurag.Maskey@Sun.COM /* 564*11767SAnurag.Maskey@Sun.COM * NCP/NCU functions 565*11767SAnurag.Maskey@Sun.COM */ 566*11767SAnurag.Maskey@Sun.COM 567*11767SAnurag.Maskey@Sun.COM /* Create an ncp */ 568*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_create(const char *, uint64_t, 569*11767SAnurag.Maskey@Sun.COM nwam_ncp_handle_t *); 570*11767SAnurag.Maskey@Sun.COM 571*11767SAnurag.Maskey@Sun.COM /* Read an ncp from persistent storage */ 572*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_read(const char *, uint64_t, nwam_ncp_handle_t *); 573*11767SAnurag.Maskey@Sun.COM 574*11767SAnurag.Maskey@Sun.COM /* Make a copy of existing ncp */ 575*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_copy(nwam_ncp_handle_t, const char *, 576*11767SAnurag.Maskey@Sun.COM nwam_ncp_handle_t *); 577*11767SAnurag.Maskey@Sun.COM 578*11767SAnurag.Maskey@Sun.COM /* Walk ncps */ 579*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_ncps(int (*)(nwam_ncp_handle_t, void *), 580*11767SAnurag.Maskey@Sun.COM void *, uint64_t, int *); 581*11767SAnurag.Maskey@Sun.COM 582*11767SAnurag.Maskey@Sun.COM /* Get ncp name */ 583*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_name(nwam_ncp_handle_t, char **); 584*11767SAnurag.Maskey@Sun.COM 585*11767SAnurag.Maskey@Sun.COM /* Get the read-only value for this ncp */ 586*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_read_only(nwam_ncp_handle_t, boolean_t *); 587*11767SAnurag.Maskey@Sun.COM 588*11767SAnurag.Maskey@Sun.COM /* Destroy ncp */ 589*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_destroy(nwam_ncp_handle_t, uint64_t); 590*11767SAnurag.Maskey@Sun.COM 591*11767SAnurag.Maskey@Sun.COM /* 592*11767SAnurag.Maskey@Sun.COM * Walk all ncus associated with ncp. Specific types/classes of ncu can 593*11767SAnurag.Maskey@Sun.COM * be selected via flags, or all via NWAM_FLAG_ALL. 594*11767SAnurag.Maskey@Sun.COM */ 595*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_walk_ncus(nwam_ncp_handle_t, 596*11767SAnurag.Maskey@Sun.COM int(*)(nwam_ncu_handle_t, void *), void *, uint64_t, int *); 597*11767SAnurag.Maskey@Sun.COM 598*11767SAnurag.Maskey@Sun.COM /* Activate ncp */ 599*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_enable(nwam_ncp_handle_t); 600*11767SAnurag.Maskey@Sun.COM 601*11767SAnurag.Maskey@Sun.COM /* Free in-memory representation of ncp */ 602*11767SAnurag.Maskey@Sun.COM extern void nwam_ncp_free(nwam_ncp_handle_t); 603*11767SAnurag.Maskey@Sun.COM 604*11767SAnurag.Maskey@Sun.COM /* Get state of NCP from nwamd */ 605*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_state(nwam_ncp_handle_t, nwam_state_t *, 606*11767SAnurag.Maskey@Sun.COM nwam_aux_state_t *); 607*11767SAnurag.Maskey@Sun.COM 608*11767SAnurag.Maskey@Sun.COM /* Get the active priority-group */ 609*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_active_priority_group(int64_t *); 610*11767SAnurag.Maskey@Sun.COM 611*11767SAnurag.Maskey@Sun.COM /* Create an ncu or read it from persistent storage */ 612*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_create(nwam_ncp_handle_t, const char *, 613*11767SAnurag.Maskey@Sun.COM nwam_ncu_type_t, nwam_ncu_class_t, nwam_ncu_handle_t *); 614*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_read(nwam_ncp_handle_t, const char *, 615*11767SAnurag.Maskey@Sun.COM nwam_ncu_type_t, uint64_t, nwam_ncu_handle_t *); 616*11767SAnurag.Maskey@Sun.COM 617*11767SAnurag.Maskey@Sun.COM /* Destroy an ncu in persistent storage or free the in-memory representation */ 618*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_destroy(nwam_ncu_handle_t, uint64_t); 619*11767SAnurag.Maskey@Sun.COM extern void nwam_ncu_free(nwam_ncu_handle_t); 620*11767SAnurag.Maskey@Sun.COM 621*11767SAnurag.Maskey@Sun.COM /* make a copy of existing ncu */ 622*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_copy(nwam_ncu_handle_t, const char *, 623*11767SAnurag.Maskey@Sun.COM nwam_ncu_handle_t *); 624*11767SAnurag.Maskey@Sun.COM 625*11767SAnurag.Maskey@Sun.COM /* Commit ncu changes to persistent storage */ 626*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_commit(nwam_ncu_handle_t, uint64_t); 6277645Sjames.d.carlson@sun.com 628*11767SAnurag.Maskey@Sun.COM /* activate/deactivate an individual NCU (must be part of the active NCP) */ 629*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_enable(nwam_ncu_handle_t); 630*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_disable(nwam_ncu_handle_t); 631*11767SAnurag.Maskey@Sun.COM 632*11767SAnurag.Maskey@Sun.COM /* Get state of NCU from nwamd */ 633*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_state(nwam_ncu_handle_t, nwam_state_t *, 634*11767SAnurag.Maskey@Sun.COM nwam_aux_state_t *); 635*11767SAnurag.Maskey@Sun.COM 636*11767SAnurag.Maskey@Sun.COM /* Get NCU type */ 637*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_ncu_type(nwam_ncu_handle_t, nwam_ncu_type_t *); 638*11767SAnurag.Maskey@Sun.COM 639*11767SAnurag.Maskey@Sun.COM /* Get NCU class */ 640*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_ncu_class(nwam_ncu_handle_t, 641*11767SAnurag.Maskey@Sun.COM nwam_ncu_class_t *); 642*11767SAnurag.Maskey@Sun.COM 643*11767SAnurag.Maskey@Sun.COM /* Validate ncu content */ 644*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_validate(nwam_ncu_handle_t, const char **); 645*11767SAnurag.Maskey@Sun.COM 646*11767SAnurag.Maskey@Sun.COM /* Walk all properties in in-memory representation of ncu */ 647*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_walk_props(nwam_ncu_handle_t, 648*11767SAnurag.Maskey@Sun.COM int (*)(const char *, nwam_value_t, void *), 649*11767SAnurag.Maskey@Sun.COM void *, uint64_t, int *); 650*11767SAnurag.Maskey@Sun.COM 651*11767SAnurag.Maskey@Sun.COM /* Get/set name of ncu, get parent ncp */ 652*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_name(nwam_ncu_handle_t, char **); 653*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_name_to_typed_name(const char *, nwam_ncu_type_t, 654*11767SAnurag.Maskey@Sun.COM char **); 655*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_typed_name_to_name(const char *, nwam_ncu_type_t *, 656*11767SAnurag.Maskey@Sun.COM char **); 657*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_default_proplist(nwam_ncu_type_t, 658*11767SAnurag.Maskey@Sun.COM nwam_ncu_class_t, const char ***, uint_t *); 659*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_ncp(nwam_ncu_handle_t, nwam_ncp_handle_t *); 660*11767SAnurag.Maskey@Sun.COM 661*11767SAnurag.Maskey@Sun.COM /* delete/get/set/validate property from/in in-memory representation of ncu */ 662*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_delete_prop(nwam_ncu_handle_t, 663*11767SAnurag.Maskey@Sun.COM const char *); 664*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_prop_value(nwam_ncu_handle_t, 665*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t *); 666*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_set_prop_value(nwam_ncu_handle_t, 667*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t); 668*11767SAnurag.Maskey@Sun.COM 669*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_validate_prop(nwam_ncu_handle_t, const char *, 670*11767SAnurag.Maskey@Sun.COM nwam_value_t); 671*11767SAnurag.Maskey@Sun.COM 672*11767SAnurag.Maskey@Sun.COM /* Retrieve data type */ 673*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_prop_type(const char *, nwam_value_type_t *); 674*11767SAnurag.Maskey@Sun.COM /* Retrieve prop description */ 675*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_prop_description(const char *, const char **); 676*11767SAnurag.Maskey@Sun.COM 677*11767SAnurag.Maskey@Sun.COM /* Get the read-only value from the handle or parent NCP */ 678*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_read_only(nwam_ncu_handle_t, boolean_t *); 679*11767SAnurag.Maskey@Sun.COM 680*11767SAnurag.Maskey@Sun.COM /* Get the read-only value for a particular NCU property */ 681*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_prop_read_only(const char *, boolean_t *); 682*11767SAnurag.Maskey@Sun.COM 683*11767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */ 684*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_prop_multivalued(const char *, boolean_t *); 685*11767SAnurag.Maskey@Sun.COM 686*11767SAnurag.Maskey@Sun.COM /* Get whether the NCU has manual activation-mode or not */ 687*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_is_manual(nwam_ncu_handle_t, boolean_t *); 688*11767SAnurag.Maskey@Sun.COM 689*11767SAnurag.Maskey@Sun.COM /* Get the flag from the given class for walks */ 690*11767SAnurag.Maskey@Sun.COM extern uint64_t nwam_ncu_class_to_flag(nwam_ncu_class_t); 691*11767SAnurag.Maskey@Sun.COM 692*11767SAnurag.Maskey@Sun.COM /* Get the NCU type from the given class */ 693*11767SAnurag.Maskey@Sun.COM extern nwam_ncu_type_t nwam_ncu_class_to_type(nwam_ncu_class_t); 6947645Sjames.d.carlson@sun.com 695*11767SAnurag.Maskey@Sun.COM /* ENM functions */ 696*11767SAnurag.Maskey@Sun.COM /* 697*11767SAnurag.Maskey@Sun.COM * Obtain a specific enm handle, either be creating a new enm 698*11767SAnurag.Maskey@Sun.COM * or reading an existing one from persistent storage. 699*11767SAnurag.Maskey@Sun.COM */ 700*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_create(const char *, const char *, 701*11767SAnurag.Maskey@Sun.COM nwam_enm_handle_t *); 702*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_read(const char *, uint64_t, nwam_enm_handle_t *); 703*11767SAnurag.Maskey@Sun.COM 704*11767SAnurag.Maskey@Sun.COM /* Make a copy of existing enm */ 705*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_copy(nwam_enm_handle_t, const char *, 706*11767SAnurag.Maskey@Sun.COM nwam_enm_handle_t *); 707*11767SAnurag.Maskey@Sun.COM 708*11767SAnurag.Maskey@Sun.COM /* 709*11767SAnurag.Maskey@Sun.COM * Obtain handles for all existing enms. Caller-specified callback 710*11767SAnurag.Maskey@Sun.COM * function will be called once for each enm, passing the handle and 711*11767SAnurag.Maskey@Sun.COM * the caller-specified arg. 712*11767SAnurag.Maskey@Sun.COM */ 713*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_enms(int (*)(nwam_enm_handle_t, void *), void *, 714*11767SAnurag.Maskey@Sun.COM uint64_t, int *); 715*11767SAnurag.Maskey@Sun.COM 716*11767SAnurag.Maskey@Sun.COM /* 717*11767SAnurag.Maskey@Sun.COM * Commit an enm to persistent storage. Does not free the handle. 718*11767SAnurag.Maskey@Sun.COM */ 719*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_commit(nwam_enm_handle_t, uint64_t); 720*11767SAnurag.Maskey@Sun.COM 721*11767SAnurag.Maskey@Sun.COM /* 722*11767SAnurag.Maskey@Sun.COM * Remove an enm from persistent storage. 723*11767SAnurag.Maskey@Sun.COM */ 724*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_destroy(nwam_enm_handle_t, uint64_t); 725*11767SAnurag.Maskey@Sun.COM 726*11767SAnurag.Maskey@Sun.COM /* 727*11767SAnurag.Maskey@Sun.COM * Free an enm handle 728*11767SAnurag.Maskey@Sun.COM */ 729*11767SAnurag.Maskey@Sun.COM extern void nwam_enm_free(nwam_enm_handle_t); 7307645Sjames.d.carlson@sun.com 731*11767SAnurag.Maskey@Sun.COM /* 732*11767SAnurag.Maskey@Sun.COM * Validate an enm, or a specific enm property. If validating 733*11767SAnurag.Maskey@Sun.COM * an entire enm, the invalid property type is returned. 734*11767SAnurag.Maskey@Sun.COM */ 735*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_validate(nwam_enm_handle_t, const char **); 736*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_validate_prop(nwam_enm_handle_t, const char *, 737*11767SAnurag.Maskey@Sun.COM nwam_value_t); 738*11767SAnurag.Maskey@Sun.COM 739*11767SAnurag.Maskey@Sun.COM /* Retrieve data type */ 740*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_prop_type(const char *, nwam_value_type_t *); 741*11767SAnurag.Maskey@Sun.COM /* Retrieve prop description */ 742*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_prop_description(const char *, const char **); 743*11767SAnurag.Maskey@Sun.COM 744*11767SAnurag.Maskey@Sun.COM /* 745*11767SAnurag.Maskey@Sun.COM * Delete/get/set enm property values. 746*11767SAnurag.Maskey@Sun.COM */ 747*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_delete_prop(nwam_enm_handle_t, 748*11767SAnurag.Maskey@Sun.COM const char *); 749*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_prop_value(nwam_enm_handle_t, 750*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t *); 751*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_set_prop_value(nwam_enm_handle_t, 752*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t); 753*11767SAnurag.Maskey@Sun.COM 754*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_default_proplist(const char ***, uint_t *); 755*11767SAnurag.Maskey@Sun.COM 756*11767SAnurag.Maskey@Sun.COM /* Get the read-only value for a particular ENM property */ 757*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_prop_read_only(const char *, boolean_t *); 758*11767SAnurag.Maskey@Sun.COM 759*11767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */ 760*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_prop_multivalued(const char *, boolean_t *); 761*11767SAnurag.Maskey@Sun.COM 762*11767SAnurag.Maskey@Sun.COM /* 763*11767SAnurag.Maskey@Sun.COM * Walk all properties of a specific enm. For each property, specified 764*11767SAnurag.Maskey@Sun.COM * callback function is called. Caller is responsible for freeing memory 765*11767SAnurag.Maskey@Sun.COM * allocated for each property. 766*11767SAnurag.Maskey@Sun.COM */ 767*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_walk_props(nwam_enm_handle_t, 768*11767SAnurag.Maskey@Sun.COM int (*)(const char *, nwam_value_t, void *), 769*11767SAnurag.Maskey@Sun.COM void *, uint64_t, int *); 7707645Sjames.d.carlson@sun.com 771*11767SAnurag.Maskey@Sun.COM /* 772*11767SAnurag.Maskey@Sun.COM * Get/set the name of an enm. When getting the name, the library will 773*11767SAnurag.Maskey@Sun.COM * allocate a buffer; the caller is responsible for freeing the memory. 774*11767SAnurag.Maskey@Sun.COM */ 775*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_name(nwam_enm_handle_t, char **); 776*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_set_name(nwam_enm_handle_t, const char *); 777*11767SAnurag.Maskey@Sun.COM extern boolean_t nwam_enm_can_set_name(nwam_enm_handle_t); 778*11767SAnurag.Maskey@Sun.COM 779*11767SAnurag.Maskey@Sun.COM /* 780*11767SAnurag.Maskey@Sun.COM * Start/stop an enm. 781*11767SAnurag.Maskey@Sun.COM */ 782*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_enable(nwam_enm_handle_t); 783*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_disable(nwam_enm_handle_t); 784*11767SAnurag.Maskey@Sun.COM 785*11767SAnurag.Maskey@Sun.COM /* 786*11767SAnurag.Maskey@Sun.COM * Get state of ENM from nwamd. 787*11767SAnurag.Maskey@Sun.COM */ 788*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_state(nwam_enm_handle_t, nwam_state_t *, 789*11767SAnurag.Maskey@Sun.COM nwam_aux_state_t *); 790*11767SAnurag.Maskey@Sun.COM 791*11767SAnurag.Maskey@Sun.COM /* 792*11767SAnurag.Maskey@Sun.COM * Get whether the ENM has manual activation-mode or not. 793*11767SAnurag.Maskey@Sun.COM */ 794*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_is_manual(nwam_enm_handle_t, boolean_t *); 795*11767SAnurag.Maskey@Sun.COM 796*11767SAnurag.Maskey@Sun.COM /* 797*11767SAnurag.Maskey@Sun.COM * Known Wireless LAN (WLAN) info. 798*11767SAnurag.Maskey@Sun.COM */ 799*11767SAnurag.Maskey@Sun.COM 800*11767SAnurag.Maskey@Sun.COM /* Create a known WLAN */ 801*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_create(const char *, 802*11767SAnurag.Maskey@Sun.COM nwam_known_wlan_handle_t *); 803*11767SAnurag.Maskey@Sun.COM 804*11767SAnurag.Maskey@Sun.COM /* Read a known WLAN from persistent storage */ 805*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_read(const char *, uint64_t, 806*11767SAnurag.Maskey@Sun.COM nwam_known_wlan_handle_t *); 807*11767SAnurag.Maskey@Sun.COM 808*11767SAnurag.Maskey@Sun.COM /* 809*11767SAnurag.Maskey@Sun.COM * Destroy a known WLAN in persistent storage or free the in-memory 810*11767SAnurag.Maskey@Sun.COM * representation. 811*11767SAnurag.Maskey@Sun.COM */ 812*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_destroy(nwam_known_wlan_handle_t, uint64_t); 813*11767SAnurag.Maskey@Sun.COM extern void nwam_known_wlan_free(nwam_known_wlan_handle_t); 814*11767SAnurag.Maskey@Sun.COM 815*11767SAnurag.Maskey@Sun.COM /* make a copy of existing known WLAN */ 816*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_copy(nwam_known_wlan_handle_t, const char *, 817*11767SAnurag.Maskey@Sun.COM nwam_known_wlan_handle_t *); 818*11767SAnurag.Maskey@Sun.COM 819*11767SAnurag.Maskey@Sun.COM /* Commit known WLAN changes to persistent storage */ 820*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_commit(nwam_known_wlan_handle_t, uint64_t); 821*11767SAnurag.Maskey@Sun.COM 822*11767SAnurag.Maskey@Sun.COM /* Validate known WLAN content */ 823*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_validate(nwam_known_wlan_handle_t, 824*11767SAnurag.Maskey@Sun.COM const char **); 825*11767SAnurag.Maskey@Sun.COM 826*11767SAnurag.Maskey@Sun.COM /* Walk known WLANs */ 827*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_known_wlans 828*11767SAnurag.Maskey@Sun.COM (int(*)(nwam_known_wlan_handle_t, void *), void *, uint64_t, int *); 829*11767SAnurag.Maskey@Sun.COM 830*11767SAnurag.Maskey@Sun.COM /* get/set known WLAN name */ 831*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_name(nwam_known_wlan_handle_t, char **); 832*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_set_name(nwam_known_wlan_handle_t, 833*11767SAnurag.Maskey@Sun.COM const char *); 834*11767SAnurag.Maskey@Sun.COM extern boolean_t nwam_known_wlan_can_set_name(nwam_known_wlan_handle_t); 835*11767SAnurag.Maskey@Sun.COM 836*11767SAnurag.Maskey@Sun.COM /* walk all properties of an in-memory known WLAN */ 837*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_walk_props(nwam_known_wlan_handle_t, 838*11767SAnurag.Maskey@Sun.COM int (*)(const char *, nwam_value_t, void *), 839*11767SAnurag.Maskey@Sun.COM void *, uint64_t, int *); 8407645Sjames.d.carlson@sun.com 841*11767SAnurag.Maskey@Sun.COM /* delete/get/set/validate known WLAN property */ 842*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_delete_prop(nwam_known_wlan_handle_t, 843*11767SAnurag.Maskey@Sun.COM const char *); 844*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_prop_value(nwam_known_wlan_handle_t, 845*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t *); 846*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_set_prop_value(nwam_known_wlan_handle_t, 847*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t); 848*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_validate_prop(nwam_known_wlan_handle_t, 849*11767SAnurag.Maskey@Sun.COM const char *, nwam_value_t); 850*11767SAnurag.Maskey@Sun.COM 851*11767SAnurag.Maskey@Sun.COM /* Retrieve data type */ 852*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_prop_type(const char *, 853*11767SAnurag.Maskey@Sun.COM nwam_value_type_t *); 854*11767SAnurag.Maskey@Sun.COM /* Retrieve prop description */ 855*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_prop_description(const char *, 856*11767SAnurag.Maskey@Sun.COM const char **); 857*11767SAnurag.Maskey@Sun.COM 858*11767SAnurag.Maskey@Sun.COM /* get default known WLAN props */ 859*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_default_proplist(const char ***, 860*11767SAnurag.Maskey@Sun.COM uint_t *); 861*11767SAnurag.Maskey@Sun.COM 862*11767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */ 863*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_prop_multivalued(const char *, boolean_t *); 864*11767SAnurag.Maskey@Sun.COM 865*11767SAnurag.Maskey@Sun.COM /* Add a bssid to the known WLANs */ 866*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_add_to_known_wlans(const char *, 867*11767SAnurag.Maskey@Sun.COM const char *, uint32_t, uint_t, const char *); 868*11767SAnurag.Maskey@Sun.COM 869*11767SAnurag.Maskey@Sun.COM /* Remove a bssid from known WLANs */ 870*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_remove_from_known_wlans(const char *, 871*11767SAnurag.Maskey@Sun.COM const char *, const char *); 8727645Sjames.d.carlson@sun.com 873*11767SAnurag.Maskey@Sun.COM /* 874*11767SAnurag.Maskey@Sun.COM * nwam_wlan_t is used for scan/need choice/need key events and by 875*11767SAnurag.Maskey@Sun.COM * nwam_wlan_get_scan_results(). The following fields are valid: 876*11767SAnurag.Maskey@Sun.COM * 877*11767SAnurag.Maskey@Sun.COM * - for scan and need choice event, ESSID, BSSID, signal strength, security 878*11767SAnurag.Maskey@Sun.COM * mode, speed, channel, bsstype, key index, and if we already have a key 879*11767SAnurag.Maskey@Sun.COM * (have_key), if the WLAN is the current selection (selected) and 880*11767SAnurag.Maskey@Sun.COM * if the current WLAN is connected (connected). 881*11767SAnurag.Maskey@Sun.COM * - for need key events, ESSID, security mode, have_key, selected and connected 882*11767SAnurag.Maskey@Sun.COM * values are set. The rest of the fields are not set since multiple WLANs 883*11767SAnurag.Maskey@Sun.COM * may match the ESSID and have different speeds, channels etc. If an 884*11767SAnurag.Maskey@Sun.COM * ESSID/BSSID selection is specified, the BSSID will be set also. 885*11767SAnurag.Maskey@Sun.COM * 886*11767SAnurag.Maskey@Sun.COM */ 887*11767SAnurag.Maskey@Sun.COM typedef struct { 888*11767SAnurag.Maskey@Sun.COM char nww_essid[NWAM_MAX_NAME_LEN]; 889*11767SAnurag.Maskey@Sun.COM char nww_bssid[NWAM_MAX_NAME_LEN]; 890*11767SAnurag.Maskey@Sun.COM char nww_signal_strength[NWAM_MAX_NAME_LEN]; 891*11767SAnurag.Maskey@Sun.COM uint32_t nww_security_mode; /* a dladm_wlan_secmode_t */ 892*11767SAnurag.Maskey@Sun.COM uint32_t nww_speed; /* a dladm_wlan_speed_t */ 893*11767SAnurag.Maskey@Sun.COM uint32_t nww_channel; /* a dladm_wlan_channel_t */ 894*11767SAnurag.Maskey@Sun.COM uint32_t nww_bsstype; /* a dladm_wlan_bsstype_t */ 895*11767SAnurag.Maskey@Sun.COM uint_t nww_keyindex; 896*11767SAnurag.Maskey@Sun.COM boolean_t nww_have_key; 897*11767SAnurag.Maskey@Sun.COM boolean_t nww_selected; 898*11767SAnurag.Maskey@Sun.COM boolean_t nww_connected; 899*11767SAnurag.Maskey@Sun.COM } nwam_wlan_t; 900*11767SAnurag.Maskey@Sun.COM 901*11767SAnurag.Maskey@Sun.COM /* 902*11767SAnurag.Maskey@Sun.COM * Active WLAN definitions. Used to scan WLANs/choose a WLAN/set a WLAN key. 903*11767SAnurag.Maskey@Sun.COM */ 904*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_scan(const char *); 905*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_get_scan_results(const char *, uint_t *, 906*11767SAnurag.Maskey@Sun.COM nwam_wlan_t **); 907*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_select(const char *, const char *, const char *, 908*11767SAnurag.Maskey@Sun.COM uint32_t, boolean_t); 909*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_set_key(const char *, const char *, const char *, 910*11767SAnurag.Maskey@Sun.COM uint32_t, uint_t, const char *); 9117645Sjames.d.carlson@sun.com 912*11767SAnurag.Maskey@Sun.COM /* 913*11767SAnurag.Maskey@Sun.COM * Event notification definitions 914*11767SAnurag.Maskey@Sun.COM */ 915*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_NOOP 0 916*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_INIT 1 917*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_SHUTDOWN 2 918*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_OBJECT_ACTION 3 919*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_OBJECT_STATE 4 920*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_PRIORITY_GROUP 5 921*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_INFO 6 922*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_WLAN_SCAN_REPORT 7 923*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_WLAN_NEED_CHOICE 8 924*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_WLAN_NEED_KEY 9 925*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_WLAN_CONNECTION_REPORT 10 926*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_IF_ACTION 11 927*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_IF_STATE 12 928*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_LINK_ACTION 13 929*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_TYPE_LINK_STATE 14 930*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_MAX NWAM_EVENT_TYPE_LINK_STATE 931*11767SAnurag.Maskey@Sun.COM 932*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_STATUS_OK 0 933*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_STATUS_NOT_HANDLED 1 934*11767SAnurag.Maskey@Sun.COM 935*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_NETWORK_OBJECT_UNDEFINED 0 936*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_NETWORK_OBJECT_LINK 1 937*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_NETWORK_OBJECT_INTERFACE 2 938*11767SAnurag.Maskey@Sun.COM 939*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_REQUEST_UNDEFINED 0 940*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_REQUEST_WLAN 1 941*11767SAnurag.Maskey@Sun.COM #define NWAM_EVENT_REQUEST_KEY 2 942*11767SAnurag.Maskey@Sun.COM 943*11767SAnurag.Maskey@Sun.COM /* 944*11767SAnurag.Maskey@Sun.COM * Actions for nwamd to perform, used in conjunction with 945*11767SAnurag.Maskey@Sun.COM * nwam_request_type_t in nwam_door_arg_t. 946*11767SAnurag.Maskey@Sun.COM * Add string representations to nwam_action_to_string() in libnwam_util.c. 947*11767SAnurag.Maskey@Sun.COM */ 948*11767SAnurag.Maskey@Sun.COM typedef enum { 949*11767SAnurag.Maskey@Sun.COM NWAM_ACTION_UNKNOWN = -1, 950*11767SAnurag.Maskey@Sun.COM NWAM_ACTION_ADD, 951*11767SAnurag.Maskey@Sun.COM NWAM_ACTION_REMOVE, 952*11767SAnurag.Maskey@Sun.COM NWAM_ACTION_REFRESH, 953*11767SAnurag.Maskey@Sun.COM NWAM_ACTION_ENABLE, 954*11767SAnurag.Maskey@Sun.COM NWAM_ACTION_DISABLE, 955*11767SAnurag.Maskey@Sun.COM NWAM_ACTION_DESTROY 956*11767SAnurag.Maskey@Sun.COM } nwam_action_t; 957*11767SAnurag.Maskey@Sun.COM 958*11767SAnurag.Maskey@Sun.COM typedef enum { 959*11767SAnurag.Maskey@Sun.COM NWAM_OBJECT_TYPE_UNKNOWN = -1, 960*11767SAnurag.Maskey@Sun.COM NWAM_OBJECT_TYPE_NCP = 0, 961*11767SAnurag.Maskey@Sun.COM NWAM_OBJECT_TYPE_NCU = 1, 962*11767SAnurag.Maskey@Sun.COM NWAM_OBJECT_TYPE_LOC = 2, 963*11767SAnurag.Maskey@Sun.COM NWAM_OBJECT_TYPE_ENM = 3, 964*11767SAnurag.Maskey@Sun.COM NWAM_OBJECT_TYPE_KNOWN_WLAN = 4 965*11767SAnurag.Maskey@Sun.COM } nwam_object_type_t; 966*11767SAnurag.Maskey@Sun.COM 967*11767SAnurag.Maskey@Sun.COM typedef struct nwam_event *nwam_event_t; 968*11767SAnurag.Maskey@Sun.COM struct nwam_event { 969*11767SAnurag.Maskey@Sun.COM int nwe_type; 970*11767SAnurag.Maskey@Sun.COM uint32_t nwe_size; 971*11767SAnurag.Maskey@Sun.COM 972*11767SAnurag.Maskey@Sun.COM union { 973*11767SAnurag.Maskey@Sun.COM struct nwam_event_object_action { 974*11767SAnurag.Maskey@Sun.COM nwam_object_type_t nwe_object_type; 975*11767SAnurag.Maskey@Sun.COM char nwe_name[NWAM_MAX_NAME_LEN]; 976*11767SAnurag.Maskey@Sun.COM char nwe_parent[NWAM_MAX_NAME_LEN]; 977*11767SAnurag.Maskey@Sun.COM nwam_action_t nwe_action; 978*11767SAnurag.Maskey@Sun.COM } nwe_object_action; 9797645Sjames.d.carlson@sun.com 980*11767SAnurag.Maskey@Sun.COM struct nwam_event_object_state { 981*11767SAnurag.Maskey@Sun.COM nwam_object_type_t nwe_object_type; 982*11767SAnurag.Maskey@Sun.COM char nwe_name[NWAM_MAX_NAME_LEN]; 983*11767SAnurag.Maskey@Sun.COM char nwe_parent[NWAM_MAX_NAME_LEN]; 984*11767SAnurag.Maskey@Sun.COM nwam_state_t nwe_state; 985*11767SAnurag.Maskey@Sun.COM nwam_aux_state_t nwe_aux_state; 986*11767SAnurag.Maskey@Sun.COM } nwe_object_state; 987*11767SAnurag.Maskey@Sun.COM 988*11767SAnurag.Maskey@Sun.COM struct nwam_event_priority_group_info { 989*11767SAnurag.Maskey@Sun.COM int64_t nwe_priority; 990*11767SAnurag.Maskey@Sun.COM } nwe_priority_group_info; 991*11767SAnurag.Maskey@Sun.COM 992*11767SAnurag.Maskey@Sun.COM struct nwam_event_info { 993*11767SAnurag.Maskey@Sun.COM char nwe_message[NWAM_MAX_VALUE_LEN]; 994*11767SAnurag.Maskey@Sun.COM } nwe_info; 995*11767SAnurag.Maskey@Sun.COM 996*11767SAnurag.Maskey@Sun.COM /* 997*11767SAnurag.Maskey@Sun.COM * wlan_info stores both scan results and the single 998*11767SAnurag.Maskey@Sun.COM * WLAN we require a key for in the case of _WLAN_NEED_KEY 999*11767SAnurag.Maskey@Sun.COM * events. For _WLAN_CONNECTION_REPORT events, it stores 1000*11767SAnurag.Maskey@Sun.COM * the WLAN the connection succeeded/failed for, indicating 1001*11767SAnurag.Maskey@Sun.COM * success/failure using the 'connected' boolean. 1002*11767SAnurag.Maskey@Sun.COM */ 1003*11767SAnurag.Maskey@Sun.COM struct nwam_event_wlan_info { 1004*11767SAnurag.Maskey@Sun.COM char nwe_name[NWAM_MAX_NAME_LEN]; 1005*11767SAnurag.Maskey@Sun.COM boolean_t nwe_connected; 1006*11767SAnurag.Maskey@Sun.COM uint16_t nwe_num_wlans; 1007*11767SAnurag.Maskey@Sun.COM nwam_wlan_t nwe_wlans[1]; 1008*11767SAnurag.Maskey@Sun.COM /* 1009*11767SAnurag.Maskey@Sun.COM * space may be allocated by user here for the 1010*11767SAnurag.Maskey@Sun.COM * number of wlans 1011*11767SAnurag.Maskey@Sun.COM */ 1012*11767SAnurag.Maskey@Sun.COM } nwe_wlan_info; 1013*11767SAnurag.Maskey@Sun.COM 1014*11767SAnurag.Maskey@Sun.COM struct nwam_event_if_action { 1015*11767SAnurag.Maskey@Sun.COM char nwe_name[NWAM_MAX_NAME_LEN]; 1016*11767SAnurag.Maskey@Sun.COM nwam_action_t nwe_action; 1017*11767SAnurag.Maskey@Sun.COM } nwe_if_action; 10187645Sjames.d.carlson@sun.com 1019*11767SAnurag.Maskey@Sun.COM struct nwam_event_if_state { 1020*11767SAnurag.Maskey@Sun.COM char nwe_name[NWAM_MAX_NAME_LEN]; 1021*11767SAnurag.Maskey@Sun.COM uint32_t nwe_flags; 1022*11767SAnurag.Maskey@Sun.COM uint32_t nwe_index; 1023*11767SAnurag.Maskey@Sun.COM uint32_t nwe_addr_valid; /* boolean */ 1024*11767SAnurag.Maskey@Sun.COM uint32_t nwe_addr_added; /* boolean */ 1025*11767SAnurag.Maskey@Sun.COM struct sockaddr_storage nwe_addr; 1026*11767SAnurag.Maskey@Sun.COM /* might be longer then sizeof(if_state) for addr */ 1027*11767SAnurag.Maskey@Sun.COM } nwe_if_state; 1028*11767SAnurag.Maskey@Sun.COM 1029*11767SAnurag.Maskey@Sun.COM struct nwam_event_link_state { 1030*11767SAnurag.Maskey@Sun.COM char nwe_name[NWAM_MAX_NAME_LEN]; 1031*11767SAnurag.Maskey@Sun.COM boolean_t nwe_link_up; 1032*11767SAnurag.Maskey@Sun.COM /* link_state_t from sys/mac.h */ 1033*11767SAnurag.Maskey@Sun.COM } nwe_link_state; 1034*11767SAnurag.Maskey@Sun.COM 1035*11767SAnurag.Maskey@Sun.COM struct nwam_event_link_action { 1036*11767SAnurag.Maskey@Sun.COM char nwe_name[NWAM_MAX_NAME_LEN]; 1037*11767SAnurag.Maskey@Sun.COM nwam_action_t nwe_action; 1038*11767SAnurag.Maskey@Sun.COM } nwe_link_action; 1039*11767SAnurag.Maskey@Sun.COM } nwe_data; 1040*11767SAnurag.Maskey@Sun.COM }; 1041*11767SAnurag.Maskey@Sun.COM 1042*11767SAnurag.Maskey@Sun.COM /* NWAM client functions, used to register/unregister and receive events */ 1043*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_events_init(void); 1044*11767SAnurag.Maskey@Sun.COM extern void nwam_events_fini(void); 1045*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_event_wait(nwam_event_t *); 1046*11767SAnurag.Maskey@Sun.COM extern void nwam_event_free(nwam_event_t); 1047*11767SAnurag.Maskey@Sun.COM 1048*11767SAnurag.Maskey@Sun.COM /* Event-related string conversion functions */ 1049*11767SAnurag.Maskey@Sun.COM extern const char *nwam_action_to_string(nwam_action_t); 1050*11767SAnurag.Maskey@Sun.COM extern const char *nwam_event_type_to_string(int); 1051*11767SAnurag.Maskey@Sun.COM extern const char *nwam_state_to_string(nwam_state_t); 1052*11767SAnurag.Maskey@Sun.COM extern const char *nwam_aux_state_to_string(nwam_aux_state_t); 1053*11767SAnurag.Maskey@Sun.COM 1054*11767SAnurag.Maskey@Sun.COM extern const char *nwam_object_type_to_string(nwam_object_type_t); 1055*11767SAnurag.Maskey@Sun.COM extern nwam_object_type_t nwam_string_to_object_type(const char *); 1056*11767SAnurag.Maskey@Sun.COM 1057*11767SAnurag.Maskey@Sun.COM /* Utility strtok_r-like function */ 1058*11767SAnurag.Maskey@Sun.COM extern char *nwam_tokenize_by_unescaped_delim(char *, char, char **); 1059*11767SAnurag.Maskey@Sun.COM 1060*11767SAnurag.Maskey@Sun.COM #ifdef __cplusplus 10617645Sjames.d.carlson@sun.com } 10627645Sjames.d.carlson@sun.com #endif 10637645Sjames.d.carlson@sun.com 1064*11767SAnurag.Maskey@Sun.COM #endif /* _LIBNWAM_H */ 1065