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