1*6ba597c5SAnurag S. Maskey /* 2*6ba597c5SAnurag S. Maskey * CDDL HEADER START 3*6ba597c5SAnurag S. Maskey * 4*6ba597c5SAnurag S. Maskey * The contents of this file are subject to the terms of the 5*6ba597c5SAnurag S. Maskey * Common Development and Distribution License (the "License"). 6*6ba597c5SAnurag S. Maskey * You may not use this file except in compliance with the License. 7*6ba597c5SAnurag S. Maskey * 8*6ba597c5SAnurag S. Maskey * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*6ba597c5SAnurag S. Maskey * or http://www.opensolaris.org/os/licensing. 10*6ba597c5SAnurag S. Maskey * See the License for the specific language governing permissions 11*6ba597c5SAnurag S. Maskey * and limitations under the License. 12*6ba597c5SAnurag S. Maskey * 13*6ba597c5SAnurag S. Maskey * When distributing Covered Code, include this CDDL HEADER in each 14*6ba597c5SAnurag S. Maskey * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*6ba597c5SAnurag S. Maskey * If applicable, add the following below this CDDL HEADER, with the 16*6ba597c5SAnurag S. Maskey * fields enclosed by brackets "[]" replaced with your own identifying 17*6ba597c5SAnurag S. Maskey * information: Portions Copyright [yyyy] [name of copyright owner] 18*6ba597c5SAnurag S. Maskey * 19*6ba597c5SAnurag S. Maskey * CDDL HEADER END 20*6ba597c5SAnurag S. Maskey */ 21*6ba597c5SAnurag S. Maskey /* 22*6ba597c5SAnurag S. Maskey * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 23*6ba597c5SAnurag S. Maskey * Use is subject to license terms. 24*6ba597c5SAnurag S. Maskey */ 25*6ba597c5SAnurag S. Maskey 26*6ba597c5SAnurag S. Maskey /* 27*6ba597c5SAnurag S. Maskey * This file contains hidden implementation structures and APIs of libnwam, 28*6ba597c5SAnurag S. Maskey * and is not installed in the proto area. Implementation is MT safe. 29*6ba597c5SAnurag S. Maskey */ 30*6ba597c5SAnurag S. Maskey 31*6ba597c5SAnurag S. Maskey 32*6ba597c5SAnurag S. Maskey #ifndef _LIBNWAM_IMPL_H 33*6ba597c5SAnurag S. Maskey #define _LIBNWAM_IMPL_H 34*6ba597c5SAnurag S. Maskey 35*6ba597c5SAnurag S. Maskey #ifdef __cplusplus 36*6ba597c5SAnurag S. Maskey extern "C" { 37*6ba597c5SAnurag S. Maskey #endif 38*6ba597c5SAnurag S. Maskey 39*6ba597c5SAnurag S. Maskey #include <libnwam_priv.h> 40*6ba597c5SAnurag S. Maskey #include <libnwam.h> 41*6ba597c5SAnurag S. Maskey 42*6ba597c5SAnurag S. Maskey /* 43*6ba597c5SAnurag S. Maskey * We separate global flags (which are applicable to all object types) from 44*6ba597c5SAnurag S. Maskey * local flags (which only apply to specific object types). These definitions 45*6ba597c5SAnurag S. Maskey * mask off the global vs. local portions of the flags value, with the former 46*6ba597c5SAnurag S. Maskey * being the low-order 32 bits and the latter the high-order 32 bits. 47*6ba597c5SAnurag S. Maskey */ 48*6ba597c5SAnurag S. Maskey #define NWAM_FLAG_GLOBAL_MASK 0xFFFFFFFF 49*6ba597c5SAnurag S. Maskey #define NWAM_FLAG_LOCAL_MASK 0xFFFFFFFFULL << 32 50*6ba597c5SAnurag S. Maskey #define NWAM_WALK_FILTER_MASK NWAM_FLAG_LOCAL_MASK 51*6ba597c5SAnurag S. Maskey 52*6ba597c5SAnurag S. Maskey /* 53*6ba597c5SAnurag S. Maskey * Maximum object size is the size of a maximally-sized name/values property 54*6ba597c5SAnurag S. Maskey * multiplied by the maximum number of properties. The maximum object size 55*6ba597c5SAnurag S. Maskey * and the maximum number of objects are used to determine how much space 56*6ba597c5SAnurag S. Maskey * needs to be allocated for door calls to retrieve objects from the 57*6ba597c5SAnurag S. Maskey * backend. 58*6ba597c5SAnurag S. Maskey */ 59*6ba597c5SAnurag S. Maskey #define NWAM_MAX_OBJECT_LEN \ 60*6ba597c5SAnurag S. Maskey ((NWAM_MAX_NAME_LEN + \ 61*6ba597c5SAnurag S. Maskey (NWAM_MAX_VALUE_LEN * NWAM_MAX_NUM_VALUES)) * \ 62*6ba597c5SAnurag S. Maskey NWAM_MAX_NUM_PROPERTIES) 63*6ba597c5SAnurag S. Maskey 64*6ba597c5SAnurag S. Maskey #define NWAM_MAX_NUM_OBJECTS 4192 65*6ba597c5SAnurag S. Maskey 66*6ba597c5SAnurag S. Maskey #define NWAM_MAX_OBJECT_LIST_LEN \ 67*6ba597c5SAnurag S. Maskey (NWAM_MAX_NUM_OBJECTS * NWAM_MAX_NAME_LEN) 68*6ba597c5SAnurag S. Maskey 69*6ba597c5SAnurag S. Maskey #define NWAM_BACKEND_DOOR_ARG_SIZE \ 70*6ba597c5SAnurag S. Maskey (sizeof (nwam_backend_door_arg_t) + \ 71*6ba597c5SAnurag S. Maskey (NWAM_MAX_OBJECT_LEN > NWAM_MAX_OBJECT_LIST_LEN ? \ 72*6ba597c5SAnurag S. Maskey NWAM_MAX_OBJECT_LEN : NWAM_MAX_OBJECT_LIST_LEN)) 73*6ba597c5SAnurag S. Maskey 74*6ba597c5SAnurag S. Maskey 75*6ba597c5SAnurag S. Maskey #define NWAMD_DOOR_ARG_SIZE \ 76*6ba597c5SAnurag S. Maskey (sizeof (nwamd_door_arg_t) + \ 77*6ba597c5SAnurag S. Maskey (NWAMD_MAX_NUM_WLANS * sizeof (nwam_wlan_t)); 78*6ba597c5SAnurag S. Maskey 79*6ba597c5SAnurag S. Maskey #define NWAM_CONF_DIR "/etc/nwam/" 80*6ba597c5SAnurag S. Maskey 81*6ba597c5SAnurag S. Maskey #define NWAM_LOC_OBJECT_STRING "loc" 82*6ba597c5SAnurag S. Maskey #define NWAM_LOC_CONF_FILE NWAM_CONF_DIR "loc.conf" 83*6ba597c5SAnurag S. Maskey 84*6ba597c5SAnurag S. Maskey struct nwam_handle { 85*6ba597c5SAnurag S. Maskey nwam_object_type_t nwh_object_type; 86*6ba597c5SAnurag S. Maskey char nwh_name[NWAM_MAX_NAME_LEN]; 87*6ba597c5SAnurag S. Maskey boolean_t nwh_committed; 88*6ba597c5SAnurag S. Maskey void *nwh_data; 89*6ba597c5SAnurag S. Maskey }; 90*6ba597c5SAnurag S. Maskey 91*6ba597c5SAnurag S. Maskey #define NWAM_OBJECT_NAMES_STRING "object-names" 92*6ba597c5SAnurag S. Maskey #define NWAM_NCP_OBJECT_STRING "ncp" 93*6ba597c5SAnurag S. Maskey #define NWAM_NCP_CONF_FILE_PRE "ncp-" 94*6ba597c5SAnurag S. Maskey #define NWAM_NCP_CONF_FILE_SUF ".conf" 95*6ba597c5SAnurag S. Maskey #define NWAM_NCU_LINK_NAME_PRE "link:" 96*6ba597c5SAnurag S. Maskey #define NWAM_NCU_INTERFACE_NAME_PRE "interface:" 97*6ba597c5SAnurag S. Maskey 98*6ba597c5SAnurag S. Maskey struct nwam_value { 99*6ba597c5SAnurag S. Maskey nwam_value_type_t nwv_value_type; 100*6ba597c5SAnurag S. Maskey uint_t nwv_value_numvalues; 101*6ba597c5SAnurag S. Maskey union { 102*6ba597c5SAnurag S. Maskey boolean_t *nwv_boolean; 103*6ba597c5SAnurag S. Maskey int64_t *nwv_int64; 104*6ba597c5SAnurag S. Maskey uint64_t *nwv_uint64; 105*6ba597c5SAnurag S. Maskey char **nwv_string; 106*6ba597c5SAnurag S. Maskey } nwv_values; 107*6ba597c5SAnurag S. Maskey }; 108*6ba597c5SAnurag S. Maskey 109*6ba597c5SAnurag S. Maskey /* Used in property table retrieval of property attributes */ 110*6ba597c5SAnurag S. Maskey #define NWAM_TYPE_ANY 1 111*6ba597c5SAnurag S. Maskey #define NWAM_CLASS_ANY 1 112*6ba597c5SAnurag S. Maskey 113*6ba597c5SAnurag S. Maskey typedef nwam_error_t (*nwam_prop_validate_func_t)(nwam_value_t); 114*6ba597c5SAnurag S. Maskey 115*6ba597c5SAnurag S. Maskey /* Used to hold validation/description data for properties */ 116*6ba597c5SAnurag S. Maskey struct nwam_prop_table_entry { 117*6ba597c5SAnurag S. Maskey const char *prop_name; 118*6ba597c5SAnurag S. Maskey nwam_value_type_t prop_type; 119*6ba597c5SAnurag S. Maskey boolean_t prop_is_readonly; 120*6ba597c5SAnurag S. Maskey uint_t prop_min_numvalues; 121*6ba597c5SAnurag S. Maskey uint_t prop_max_numvalues; 122*6ba597c5SAnurag S. Maskey nwam_prop_validate_func_t prop_validate; 123*6ba597c5SAnurag S. Maskey const char *prop_description; 124*6ba597c5SAnurag S. Maskey uint64_t prop_type_membership; 125*6ba597c5SAnurag S. Maskey uint64_t prop_class_membership; 126*6ba597c5SAnurag S. Maskey }; 127*6ba597c5SAnurag S. Maskey 128*6ba597c5SAnurag S. Maskey struct nwam_prop_table { 129*6ba597c5SAnurag S. Maskey uint_t num_entries; 130*6ba597c5SAnurag S. Maskey struct nwam_prop_table_entry *entries; 131*6ba597c5SAnurag S. Maskey }; 132*6ba597c5SAnurag S. Maskey 133*6ba597c5SAnurag S. Maskey #define NWAM_ENM_OBJECT_STRING "enm" 134*6ba597c5SAnurag S. Maskey #define NWAM_ENM_CONF_FILE NWAM_CONF_DIR "enm.conf" 135*6ba597c5SAnurag S. Maskey 136*6ba597c5SAnurag S. Maskey #define NWAM_KNOWN_WLAN_OBJECT_STRING "known-wlan" 137*6ba597c5SAnurag S. Maskey #define NWAM_KNOWN_WLAN_CONF_FILE NWAM_CONF_DIR "known-wlan.conf" 138*6ba597c5SAnurag S. Maskey 139*6ba597c5SAnurag S. Maskey /* Definitions that are used to map uint64 property values to strings */ 140*6ba597c5SAnurag S. Maskey #define NWAM_ACTIVATION_MODE_MANUAL_STRING "manual" 141*6ba597c5SAnurag S. Maskey #define NWAM_ACTIVATION_MODE_SYSTEM_STRING "system" 142*6ba597c5SAnurag S. Maskey #define NWAM_ACTIVATION_MODE_PRIORITIZED_STRING "prioritized" 143*6ba597c5SAnurag S. Maskey #define NWAM_ACTIVATION_MODE_CONDITIONAL_ANY_STRING "conditional-any" 144*6ba597c5SAnurag S. Maskey #define NWAM_ACTIVATION_MODE_CONDITIONAL_ALL_STRING "conditional-all" 145*6ba597c5SAnurag S. Maskey 146*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_IS_STRING "is" 147*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_IS_NOT_STRING "is-not" 148*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_IS_IN_RANGE_STRING "is-in-range" 149*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_IS_NOT_IN_RANGE_STRING "is-not-in-range" 150*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_CONTAINS_STRING "contains" 151*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_DOES_NOT_CONTAIN_STRING "does-not-contain" 152*6ba597c5SAnurag S. Maskey 153*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_NCP_STRING "ncp" 154*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_NCU_STRING "ncu" 155*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_ENM_STRING "enm" 156*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_LOC_STRING "loc" 157*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS_STRING "ip-address" 158*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN_STRING "advertised-domain" 159*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN_STRING "system-domain" 160*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_ESSID_STRING "essid" 161*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_OBJECT_TYPE_BSSID_STRING "bssid" 162*6ba597c5SAnurag S. Maskey 163*6ba597c5SAnurag S. Maskey #define NWAM_CONDITION_ACTIVE_STRING "active" 164*6ba597c5SAnurag S. Maskey 165*6ba597c5SAnurag S. Maskey #define NWAM_NAMESERVICES_DNS_STRING "dns" 166*6ba597c5SAnurag S. Maskey #define NWAM_NAMESERVICES_FILES_STRING "files" 167*6ba597c5SAnurag S. Maskey #define NWAM_NAMESERVICES_NIS_STRING "nis" 168*6ba597c5SAnurag S. Maskey #define NWAM_NAMESERVICES_LDAP_STRING "ldap" 169*6ba597c5SAnurag S. Maskey 170*6ba597c5SAnurag S. Maskey #define NWAM_CONFIGSRC_MANUAL_STRING "manual" 171*6ba597c5SAnurag S. Maskey #define NWAM_CONFIGSRC_DHCP_STRING "dhcp" 172*6ba597c5SAnurag S. Maskey 173*6ba597c5SAnurag S. Maskey #define NWAM_NCU_TYPE_LINK_STRING "link" 174*6ba597c5SAnurag S. Maskey #define NWAM_NCU_TYPE_INTERFACE_STRING "interface" 175*6ba597c5SAnurag S. Maskey 176*6ba597c5SAnurag S. Maskey #define NWAM_NCU_CLASS_PHYS_STRING "phys" 177*6ba597c5SAnurag S. Maskey #define NWAM_NCU_CLASS_IP_STRING "ip" 178*6ba597c5SAnurag S. Maskey 179*6ba597c5SAnurag S. Maskey #define NWAM_IP_VERSION_IPV4_STRING "ipv4" 180*6ba597c5SAnurag S. Maskey #define NWAM_IP_VERSION_IPV6_STRING "ipv6" 181*6ba597c5SAnurag S. Maskey 182*6ba597c5SAnurag S. Maskey #define NWAM_ADDRSRC_DHCP_STRING "dhcp" 183*6ba597c5SAnurag S. Maskey #define NWAM_ADDRSRC_AUTOCONF_STRING "autoconf" 184*6ba597c5SAnurag S. Maskey #define NWAM_ADDRSRC_STATIC_STRING "static" 185*6ba597c5SAnurag S. Maskey 186*6ba597c5SAnurag S. Maskey #define NWAM_PRIORITY_MODE_EXCLUSIVE_STRING "exclusive" 187*6ba597c5SAnurag S. Maskey #define NWAM_PRIORITY_MODE_SHARED_STRING "shared" 188*6ba597c5SAnurag S. Maskey #define NWAM_PRIORITY_MODE_ALL_STRING "all" 189*6ba597c5SAnurag S. Maskey 190*6ba597c5SAnurag S. Maskey /* 191*6ba597c5SAnurag S. Maskey * Functions that interact with nwamd's door server to request 192*6ba597c5SAnurag S. Maskey * object actions, states or to register for receipt of events from nwamd. 193*6ba597c5SAnurag S. Maskey * See libnwam_door.c. 194*6ba597c5SAnurag S. Maskey */ 195*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_request_register_unregister(nwam_request_type_t, 196*6ba597c5SAnurag S. Maskey const char *); 197*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_request_action(nwam_object_type_t, const char *, 198*6ba597c5SAnurag S. Maskey const char *, nwam_action_t); 199*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_request_state(nwam_object_type_t, const char *, 200*6ba597c5SAnurag S. Maskey const char *, nwam_state_t *, nwam_aux_state_t *); 201*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_request_wlan(nwam_request_type_t, const char *, 202*6ba597c5SAnurag S. Maskey const char *, const char *, uint32_t, uint_t, const char *, boolean_t); 203*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_request_wlan_scan_results(const char *name, 204*6ba597c5SAnurag S. Maskey uint_t *, nwam_wlan_t **); 205*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_request_active_priority_group(int64_t *); 206*6ba597c5SAnurag S. Maskey 207*6ba597c5SAnurag S. Maskey /* 208*6ba597c5SAnurag S. Maskey * Functions that access and manipulate backend representation of data - 209*6ba597c5SAnurag S. Maskey * see libnwam_backend.c. 210*6ba597c5SAnurag S. Maskey */ 211*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_read_object_from_backend(char *, char *, 212*6ba597c5SAnurag S. Maskey uint64_t, void *); 213*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_update_object_in_backend(char *, char *, 214*6ba597c5SAnurag S. Maskey uint64_t, void *); 215*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_remove_object_from_backend(char *, char *, 216*6ba597c5SAnurag S. Maskey uint64_t); 217*6ba597c5SAnurag S. Maskey 218*6ba597c5SAnurag S. Maskey /* 219*6ba597c5SAnurag S. Maskey * Functions that handle files-specific backend persistent representation 220*6ba597c5SAnurag S. Maskey * of data - see libnwam_files.c. 221*6ba597c5SAnurag S. Maskey */ 222*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_read_object_from_files_backend(char *, 223*6ba597c5SAnurag S. Maskey char *, uint64_t, void *); 224*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_update_object_in_files_backend(char *, 225*6ba597c5SAnurag S. Maskey char *, uint64_t, void *); 226*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_remove_object_from_files_backend(char *, 227*6ba597c5SAnurag S. Maskey char *, uint64_t); 228*6ba597c5SAnurag S. Maskey 229*6ba597c5SAnurag S. Maskey /* 230*6ba597c5SAnurag S. Maskey * Utility functions for nwam data (values and lists of values) associated 231*6ba597c5SAnurag S. Maskey * with objects - see libnwam_values.c. 232*6ba597c5SAnurag S. Maskey */ 233*6ba597c5SAnurag S. Maskey nwam_error_t nwam_alloc_object_list(void *); 234*6ba597c5SAnurag S. Maskey void nwam_free_object_list(void *); 235*6ba597c5SAnurag S. Maskey nwam_error_t nwam_object_list_add_object_list(void *, char *, void *); 236*6ba597c5SAnurag S. Maskey nwam_error_t nwam_object_list_remove_object_list(void *, char *); 237*6ba597c5SAnurag S. Maskey nwam_error_t nwam_dup_object_list(void *, void *); 238*6ba597c5SAnurag S. Maskey nwam_error_t nwam_next_object_list(void *, char *, char **, void *); 239*6ba597c5SAnurag S. Maskey nwam_error_t nwam_next_object_prop(void *, char *, char **, nwam_value_t *); 240*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_pack_object_list(void *, char **, size_t *); 241*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_unpack_object_list(char *, size_t, void *); 242*6ba597c5SAnurag S. Maskey 243*6ba597c5SAnurag S. Maskey extern const char *nwam_value_type_to_string(nwam_value_type_t); 244*6ba597c5SAnurag S. Maskey extern nwam_value_type_t nwam_string_to_value_type(const char *); 245*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_delete_prop(void *, const char *); 246*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_set_prop_value(void *, const char *, nwam_value_t); 247*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_get_prop_value(void *, const char *, nwam_value_t *); 248*6ba597c5SAnurag S. Maskey 249*6ba597c5SAnurag S. Maskey /* 250*6ba597c5SAnurag S. Maskey * Utility functions for nwam objects (NCUs, ENMs, locations and known WLANs). 251*6ba597c5SAnurag S. Maskey * See libnwam_object.c. 252*6ba597c5SAnurag S. Maskey */ 253*6ba597c5SAnurag S. Maskey nwam_error_t nwam_handle_create(nwam_object_type_t, const char *, 254*6ba597c5SAnurag S. Maskey struct nwam_handle **); 255*6ba597c5SAnurag S. Maskey nwam_error_t nwam_read(nwam_object_type_t, const char *, const char *, 256*6ba597c5SAnurag S. Maskey uint64_t, struct nwam_handle **); 257*6ba597c5SAnurag S. Maskey nwam_error_t nwam_create(nwam_object_type_t, const char *, const char *, 258*6ba597c5SAnurag S. Maskey struct nwam_handle **); 259*6ba597c5SAnurag S. Maskey nwam_error_t nwam_get_name(struct nwam_handle *, char **); 260*6ba597c5SAnurag S. Maskey nwam_error_t nwam_set_name(struct nwam_handle *, const char *); 261*6ba597c5SAnurag S. Maskey nwam_error_t nwam_walk(nwam_object_type_t, const char *, 262*6ba597c5SAnurag S. Maskey int(*)(struct nwam_handle *, void *), void *, uint64_t, int *, 263*6ba597c5SAnurag S. Maskey int(*)(struct nwam_handle *, uint64_t, void *)); 264*6ba597c5SAnurag S. Maskey void nwam_free(struct nwam_handle *); 265*6ba597c5SAnurag S. Maskey nwam_error_t nwam_copy(const char *, struct nwam_handle *, const char *, 266*6ba597c5SAnurag S. Maskey struct nwam_handle **); 267*6ba597c5SAnurag S. Maskey nwam_error_t nwam_walk_props(struct nwam_handle *, 268*6ba597c5SAnurag S. Maskey int(*)(const char *, nwam_value_t, void *), void *, uint64_t, int *); 269*6ba597c5SAnurag S. Maskey nwam_error_t nwam_commit(const char *, struct nwam_handle *, uint64_t); 270*6ba597c5SAnurag S. Maskey nwam_error_t nwam_destroy(const char *, struct nwam_handle *, uint64_t); 271*6ba597c5SAnurag S. Maskey nwam_error_t nwam_enable(const char *, struct nwam_handle *); 272*6ba597c5SAnurag S. Maskey nwam_error_t nwam_disable(const char *, struct nwam_handle *); 273*6ba597c5SAnurag S. Maskey struct nwam_prop_table_entry *nwam_get_prop_table_entry(struct nwam_prop_table, 274*6ba597c5SAnurag S. Maskey const char *); 275*6ba597c5SAnurag S. Maskey nwam_error_t nwam_get_prop_description(struct nwam_prop_table, const char *, 276*6ba597c5SAnurag S. Maskey const char **); 277*6ba597c5SAnurag S. Maskey nwam_error_t nwam_get_prop_type(struct nwam_prop_table, const char *, 278*6ba597c5SAnurag S. Maskey nwam_value_type_t *); 279*6ba597c5SAnurag S. Maskey nwam_error_t nwam_prop_multivalued(struct nwam_prop_table, const char *, 280*6ba597c5SAnurag S. Maskey boolean_t *); 281*6ba597c5SAnurag S. Maskey nwam_error_t nwam_prop_read_only(struct nwam_prop_table, const char *, 282*6ba597c5SAnurag S. Maskey boolean_t *); 283*6ba597c5SAnurag S. Maskey nwam_error_t nwam_validate_prop(struct nwam_prop_table, struct nwam_handle *, 284*6ba597c5SAnurag S. Maskey const char *, nwam_value_t); 285*6ba597c5SAnurag S. Maskey nwam_error_t nwam_validate(struct nwam_prop_table, struct nwam_handle *, 286*6ba597c5SAnurag S. Maskey const char **); 287*6ba597c5SAnurag S. Maskey nwam_error_t nwam_get_default_proplist(struct nwam_prop_table, uint64_t, 288*6ba597c5SAnurag S. Maskey uint64_t, const char ***, uint_t *); 289*6ba597c5SAnurag S. Maskey nwam_error_t nwam_get_state(const char *, struct nwam_handle *, nwam_state_t *, 290*6ba597c5SAnurag S. Maskey nwam_aux_state_t *); 291*6ba597c5SAnurag S. Maskey 292*6ba597c5SAnurag S. Maskey /* 293*6ba597c5SAnurag S. Maskey * Generic validation functions - see libnwam_util.c. 294*6ba597c5SAnurag S. Maskey */ 295*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_flags(uint64_t, uint64_t); 296*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_condition(nwam_value_t); 297*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_boolean(nwam_value_t); 298*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_uint64(nwam_value_t); 299*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_domain(nwam_value_t); 300*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_host_any(nwam_value_t); 301*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_host_v4(nwam_value_t); 302*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_route_v4(nwam_value_t); 303*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_host_v6(nwam_value_t); 304*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_route_v6(nwam_value_t); 305*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_host_or_domain(nwam_value_t); 306*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_file(nwam_value_t); 307*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_fmri(nwam_value_t); 308*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_valid_mac_addr(nwam_value_t); 309*6ba597c5SAnurag S. Maskey 310*6ba597c5SAnurag S. Maskey /* Misc. util functions */ 311*6ba597c5SAnurag S. Maskey extern boolean_t nwam_uid_is_netadm(void); 312*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_set_smf_string_property(const char *, const char *, 313*6ba597c5SAnurag S. Maskey const char *, const char *); 314*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_get_smf_string_property(const char *, const char *, 315*6ba597c5SAnurag S. Maskey const char *, char **); 316*6ba597c5SAnurag S. Maskey extern int nwam_make_door_call(const char *, int *, void *, size_t); 317*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_errno_to_nwam_error(int); 318*6ba597c5SAnurag S. Maskey 319*6ba597c5SAnurag S. Maskey /* Needed in libnwam_files.c to check if NCP filename is valid */ 320*6ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_file_to_name(const char *path, char **name); 321*6ba597c5SAnurag S. Maskey 322*6ba597c5SAnurag S. Maskey #ifdef __cplusplus 323*6ba597c5SAnurag S. Maskey } 324*6ba597c5SAnurag S. Maskey #endif 325*6ba597c5SAnurag S. Maskey 326*6ba597c5SAnurag S. Maskey #endif /* _LIBNWAM_IMPL_H */ 327