xref: /onnv-gate/usr/src/lib/libnwam/common/libnwam_impl.h (revision 12036:aa269fb9cf77)
111767SAnurag.Maskey@Sun.COM /*
211767SAnurag.Maskey@Sun.COM  * CDDL HEADER START
311767SAnurag.Maskey@Sun.COM  *
411767SAnurag.Maskey@Sun.COM  * The contents of this file are subject to the terms of the
511767SAnurag.Maskey@Sun.COM  * Common Development and Distribution License (the "License").
611767SAnurag.Maskey@Sun.COM  * You may not use this file except in compliance with the License.
711767SAnurag.Maskey@Sun.COM  *
811767SAnurag.Maskey@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
911767SAnurag.Maskey@Sun.COM  * or http://www.opensolaris.org/os/licensing.
1011767SAnurag.Maskey@Sun.COM  * See the License for the specific language governing permissions
1111767SAnurag.Maskey@Sun.COM  * and limitations under the License.
1211767SAnurag.Maskey@Sun.COM  *
1311767SAnurag.Maskey@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
1411767SAnurag.Maskey@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1511767SAnurag.Maskey@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
1611767SAnurag.Maskey@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
1711767SAnurag.Maskey@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
1811767SAnurag.Maskey@Sun.COM  *
1911767SAnurag.Maskey@Sun.COM  * CDDL HEADER END
2011767SAnurag.Maskey@Sun.COM  */
2111767SAnurag.Maskey@Sun.COM /*
2211767SAnurag.Maskey@Sun.COM  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
2311767SAnurag.Maskey@Sun.COM  * Use is subject to license terms.
2411767SAnurag.Maskey@Sun.COM  */
2511767SAnurag.Maskey@Sun.COM 
2611767SAnurag.Maskey@Sun.COM /*
2711767SAnurag.Maskey@Sun.COM  * This file contains hidden implementation structures and APIs of libnwam,
2811767SAnurag.Maskey@Sun.COM  * and is not installed in the proto area.  Implementation is MT safe.
2911767SAnurag.Maskey@Sun.COM  */
3011767SAnurag.Maskey@Sun.COM 
3111767SAnurag.Maskey@Sun.COM 
3211767SAnurag.Maskey@Sun.COM #ifndef _LIBNWAM_IMPL_H
3311767SAnurag.Maskey@Sun.COM #define	_LIBNWAM_IMPL_H
3411767SAnurag.Maskey@Sun.COM 
3511767SAnurag.Maskey@Sun.COM #ifdef	__cplusplus
3611767SAnurag.Maskey@Sun.COM extern "C" {
3711767SAnurag.Maskey@Sun.COM #endif
3811767SAnurag.Maskey@Sun.COM 
3911767SAnurag.Maskey@Sun.COM #include <libnwam_priv.h>
4011767SAnurag.Maskey@Sun.COM #include <libnwam.h>
4111767SAnurag.Maskey@Sun.COM 
4211767SAnurag.Maskey@Sun.COM /*
4311767SAnurag.Maskey@Sun.COM  * We separate global flags (which are applicable to all object types) from
4411767SAnurag.Maskey@Sun.COM  * local flags (which only apply to specific object types).  These definitions
4511767SAnurag.Maskey@Sun.COM  * mask off the global vs. local portions of the flags value, with the former
4611767SAnurag.Maskey@Sun.COM  * being the low-order 32 bits and the latter the high-order 32 bits.
4711767SAnurag.Maskey@Sun.COM  */
4811767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_GLOBAL_MASK		0xFFFFFFFF
4911767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_LOCAL_MASK		0xFFFFFFFFULL << 32
5011767SAnurag.Maskey@Sun.COM #define	NWAM_WALK_FILTER_MASK		NWAM_FLAG_LOCAL_MASK
5111767SAnurag.Maskey@Sun.COM 
5211767SAnurag.Maskey@Sun.COM /*
5311767SAnurag.Maskey@Sun.COM  * Maximum object size is the size of a maximally-sized name/values property
5411767SAnurag.Maskey@Sun.COM  * multiplied by the maximum number of properties.  The maximum object size
5511767SAnurag.Maskey@Sun.COM  * and the maximum number of objects are used to determine how much space
5611767SAnurag.Maskey@Sun.COM  * needs to be allocated for door calls to retrieve objects from the
5711767SAnurag.Maskey@Sun.COM  * backend.
5811767SAnurag.Maskey@Sun.COM  */
5911767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_OBJECT_LEN 		\
6011767SAnurag.Maskey@Sun.COM 	((NWAM_MAX_NAME_LEN +		\
6111767SAnurag.Maskey@Sun.COM 	(NWAM_MAX_VALUE_LEN * NWAM_MAX_NUM_VALUES)) * \
6211767SAnurag.Maskey@Sun.COM 	NWAM_MAX_NUM_PROPERTIES)
6311767SAnurag.Maskey@Sun.COM 
6411767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_NUM_OBJECTS		4192
6511767SAnurag.Maskey@Sun.COM 
6611767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_OBJECT_LIST_LEN	\
6711767SAnurag.Maskey@Sun.COM 	(NWAM_MAX_NUM_OBJECTS * NWAM_MAX_NAME_LEN)
6811767SAnurag.Maskey@Sun.COM 
6911767SAnurag.Maskey@Sun.COM #define	NWAM_BACKEND_DOOR_ARG_SIZE      \
7011767SAnurag.Maskey@Sun.COM 	(sizeof (nwam_backend_door_arg_t) + \
7111767SAnurag.Maskey@Sun.COM 	(NWAM_MAX_OBJECT_LEN > NWAM_MAX_OBJECT_LIST_LEN ? \
7211767SAnurag.Maskey@Sun.COM 	NWAM_MAX_OBJECT_LEN : NWAM_MAX_OBJECT_LIST_LEN))
7311767SAnurag.Maskey@Sun.COM 
7411767SAnurag.Maskey@Sun.COM 
7511767SAnurag.Maskey@Sun.COM #define	NWAMD_DOOR_ARG_SIZE		\
7611767SAnurag.Maskey@Sun.COM 	(sizeof (nwamd_door_arg_t) + \
7711767SAnurag.Maskey@Sun.COM 	(NWAMD_MAX_NUM_WLANS * sizeof (nwam_wlan_t));
7811767SAnurag.Maskey@Sun.COM 
7911767SAnurag.Maskey@Sun.COM #define	NWAM_CONF_DIR			"/etc/nwam/"
8011767SAnurag.Maskey@Sun.COM 
8111767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_OBJECT_STRING	"loc"
8211767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_CONF_FILE	NWAM_CONF_DIR "loc.conf"
8311767SAnurag.Maskey@Sun.COM 
8411767SAnurag.Maskey@Sun.COM struct nwam_handle {
8511767SAnurag.Maskey@Sun.COM 	nwam_object_type_t nwh_object_type;
8611767SAnurag.Maskey@Sun.COM 	char nwh_name[NWAM_MAX_NAME_LEN];
8711767SAnurag.Maskey@Sun.COM 	boolean_t nwh_committed;
8811767SAnurag.Maskey@Sun.COM 	void *nwh_data;
8911767SAnurag.Maskey@Sun.COM };
9011767SAnurag.Maskey@Sun.COM 
9111767SAnurag.Maskey@Sun.COM #define	NWAM_OBJECT_NAMES_STRING	"object-names"
9211767SAnurag.Maskey@Sun.COM #define	NWAM_NCP_OBJECT_STRING		"ncp"
9311767SAnurag.Maskey@Sun.COM #define	NWAM_NCP_CONF_FILE_PRE		"ncp-"
9411767SAnurag.Maskey@Sun.COM #define	NWAM_NCP_CONF_FILE_SUF		".conf"
9511767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_LINK_NAME_PRE		"link:"
9611767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_INTERFACE_NAME_PRE	"interface:"
9711767SAnurag.Maskey@Sun.COM 
9811767SAnurag.Maskey@Sun.COM struct nwam_value {
9911767SAnurag.Maskey@Sun.COM 	nwam_value_type_t nwv_value_type;
10011767SAnurag.Maskey@Sun.COM 	uint_t nwv_value_numvalues;
10111767SAnurag.Maskey@Sun.COM 	union {
10211767SAnurag.Maskey@Sun.COM 		boolean_t *nwv_boolean;
10311767SAnurag.Maskey@Sun.COM 		int64_t *nwv_int64;
10411767SAnurag.Maskey@Sun.COM 		uint64_t *nwv_uint64;
10511767SAnurag.Maskey@Sun.COM 		char **nwv_string;
10611767SAnurag.Maskey@Sun.COM 	} nwv_values;
10711767SAnurag.Maskey@Sun.COM };
10811767SAnurag.Maskey@Sun.COM 
10911767SAnurag.Maskey@Sun.COM /* Used in property table retrieval of property attributes */
11011767SAnurag.Maskey@Sun.COM #define	NWAM_TYPE_ANY		1
11111767SAnurag.Maskey@Sun.COM #define	NWAM_CLASS_ANY		1
11211767SAnurag.Maskey@Sun.COM 
11311767SAnurag.Maskey@Sun.COM typedef nwam_error_t (*nwam_prop_validate_func_t)(nwam_value_t);
11411767SAnurag.Maskey@Sun.COM 
11511767SAnurag.Maskey@Sun.COM /* Used to hold validation/description data for properties */
11611767SAnurag.Maskey@Sun.COM struct nwam_prop_table_entry {
11711767SAnurag.Maskey@Sun.COM 	const char *prop_name;
11811767SAnurag.Maskey@Sun.COM 	nwam_value_type_t prop_type;
11911767SAnurag.Maskey@Sun.COM 	boolean_t prop_is_readonly;
12011767SAnurag.Maskey@Sun.COM 	uint_t prop_min_numvalues;
12111767SAnurag.Maskey@Sun.COM 	uint_t prop_max_numvalues;
12211767SAnurag.Maskey@Sun.COM 	nwam_prop_validate_func_t prop_validate;
12311767SAnurag.Maskey@Sun.COM 	const char *prop_description;
12411767SAnurag.Maskey@Sun.COM 	uint64_t prop_type_membership;
12511767SAnurag.Maskey@Sun.COM 	uint64_t prop_class_membership;
12611767SAnurag.Maskey@Sun.COM };
12711767SAnurag.Maskey@Sun.COM 
12811767SAnurag.Maskey@Sun.COM struct nwam_prop_table {
12911767SAnurag.Maskey@Sun.COM 	uint_t num_entries;
13011767SAnurag.Maskey@Sun.COM 	struct nwam_prop_table_entry *entries;
13111767SAnurag.Maskey@Sun.COM };
13211767SAnurag.Maskey@Sun.COM 
13311767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_OBJECT_STRING	"enm"
13411767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_CONF_FILE	NWAM_CONF_DIR "enm.conf"
13511767SAnurag.Maskey@Sun.COM 
13611767SAnurag.Maskey@Sun.COM #define	NWAM_KNOWN_WLAN_OBJECT_STRING	"known-wlan"
13711767SAnurag.Maskey@Sun.COM #define	NWAM_KNOWN_WLAN_CONF_FILE	NWAM_CONF_DIR "known-wlan.conf"
13811767SAnurag.Maskey@Sun.COM 
13911767SAnurag.Maskey@Sun.COM /* Definitions that are used to map uint64 property values to strings */
14011767SAnurag.Maskey@Sun.COM #define	NWAM_ACTIVATION_MODE_MANUAL_STRING		"manual"
14111767SAnurag.Maskey@Sun.COM #define	NWAM_ACTIVATION_MODE_SYSTEM_STRING		"system"
14211767SAnurag.Maskey@Sun.COM #define	NWAM_ACTIVATION_MODE_PRIORITIZED_STRING		"prioritized"
14311767SAnurag.Maskey@Sun.COM #define	NWAM_ACTIVATION_MODE_CONDITIONAL_ANY_STRING	"conditional-any"
14411767SAnurag.Maskey@Sun.COM #define	NWAM_ACTIVATION_MODE_CONDITIONAL_ALL_STRING	"conditional-all"
14511767SAnurag.Maskey@Sun.COM 
14611767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_IS_STRING			"is"
14711767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_IS_NOT_STRING			"is-not"
14811767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_IS_IN_RANGE_STRING		"is-in-range"
14911767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_IS_NOT_IN_RANGE_STRING		"is-not-in-range"
15011767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_CONTAINS_STRING			"contains"
15111767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_DOES_NOT_CONTAIN_STRING		"does-not-contain"
15211767SAnurag.Maskey@Sun.COM 
15311767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_NCP_STRING		"ncp"
15411767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_NCU_STRING		"ncu"
15511767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_ENM_STRING		"enm"
15611767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_LOC_STRING		"loc"
15711767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS_STRING	"ip-address"
15811767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN_STRING	"advertised-domain"
15911767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN_STRING	"system-domain"
16011767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_ESSID_STRING		"essid"
16111767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_OBJECT_TYPE_BSSID_STRING		"bssid"
16211767SAnurag.Maskey@Sun.COM 
16311767SAnurag.Maskey@Sun.COM #define	NWAM_CONDITION_ACTIVE_STRING			"active"
16411767SAnurag.Maskey@Sun.COM 
16511767SAnurag.Maskey@Sun.COM #define	NWAM_NAMESERVICES_DNS_STRING			"dns"
16611767SAnurag.Maskey@Sun.COM #define	NWAM_NAMESERVICES_FILES_STRING			"files"
16711767SAnurag.Maskey@Sun.COM #define	NWAM_NAMESERVICES_NIS_STRING			"nis"
16811767SAnurag.Maskey@Sun.COM #define	NWAM_NAMESERVICES_LDAP_STRING			"ldap"
16911767SAnurag.Maskey@Sun.COM 
17011767SAnurag.Maskey@Sun.COM #define	NWAM_CONFIGSRC_MANUAL_STRING		"manual"
17111767SAnurag.Maskey@Sun.COM #define	NWAM_CONFIGSRC_DHCP_STRING		"dhcp"
17211767SAnurag.Maskey@Sun.COM 
17311767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_TYPE_LINK_STRING			"link"
17411767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_TYPE_INTERFACE_STRING			"interface"
17511767SAnurag.Maskey@Sun.COM 
17611767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_CLASS_PHYS_STRING			"phys"
17711767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_CLASS_IP_STRING			"ip"
17811767SAnurag.Maskey@Sun.COM 
17911767SAnurag.Maskey@Sun.COM #define	NWAM_IP_VERSION_IPV4_STRING			"ipv4"
18011767SAnurag.Maskey@Sun.COM #define	NWAM_IP_VERSION_IPV6_STRING			"ipv6"
18111767SAnurag.Maskey@Sun.COM 
18211767SAnurag.Maskey@Sun.COM #define	NWAM_ADDRSRC_DHCP_STRING			"dhcp"
18311767SAnurag.Maskey@Sun.COM #define	NWAM_ADDRSRC_AUTOCONF_STRING			"autoconf"
18411767SAnurag.Maskey@Sun.COM #define	NWAM_ADDRSRC_STATIC_STRING			"static"
18511767SAnurag.Maskey@Sun.COM 
18611767SAnurag.Maskey@Sun.COM #define	NWAM_PRIORITY_MODE_EXCLUSIVE_STRING		"exclusive"
18711767SAnurag.Maskey@Sun.COM #define	NWAM_PRIORITY_MODE_SHARED_STRING		"shared"
18811767SAnurag.Maskey@Sun.COM #define	NWAM_PRIORITY_MODE_ALL_STRING			"all"
18911767SAnurag.Maskey@Sun.COM 
19011767SAnurag.Maskey@Sun.COM /*
19111767SAnurag.Maskey@Sun.COM  * Functions that interact with nwamd's door server to request
19211767SAnurag.Maskey@Sun.COM  * object actions, states or to register for receipt of events from nwamd.
19311767SAnurag.Maskey@Sun.COM  * See libnwam_door.c.
19411767SAnurag.Maskey@Sun.COM  */
19511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_request_register_unregister(nwam_request_type_t,
19611767SAnurag.Maskey@Sun.COM 	const char *);
19711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_request_action(nwam_object_type_t, const char *,
19811767SAnurag.Maskey@Sun.COM 	const char *, nwam_action_t);
19911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_request_state(nwam_object_type_t, const char *,
20011767SAnurag.Maskey@Sun.COM 	const char *, nwam_state_t *, nwam_aux_state_t *);
20111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_request_wlan(nwam_request_type_t, const char *,
20211767SAnurag.Maskey@Sun.COM 	const char *, const char *, uint32_t, uint_t, const char *, boolean_t);
20311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_request_wlan_scan_results(const char *name,
20411767SAnurag.Maskey@Sun.COM 	uint_t *, nwam_wlan_t **);
20511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_request_active_priority_group(int64_t *);
20611767SAnurag.Maskey@Sun.COM 
20711767SAnurag.Maskey@Sun.COM /*
20811767SAnurag.Maskey@Sun.COM  * Functions that access and manipulate backend representation of data -
20911767SAnurag.Maskey@Sun.COM  * see libnwam_backend.c.
21011767SAnurag.Maskey@Sun.COM  */
21111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_read_object_from_backend(char *, char *,
21211767SAnurag.Maskey@Sun.COM 	uint64_t, void *);
21311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_update_object_in_backend(char *, char *,
21411767SAnurag.Maskey@Sun.COM 	uint64_t, void *);
21511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_remove_object_from_backend(char *, char *,
21611767SAnurag.Maskey@Sun.COM 	uint64_t);
21711767SAnurag.Maskey@Sun.COM 
21811767SAnurag.Maskey@Sun.COM /*
21911767SAnurag.Maskey@Sun.COM  * Functions that handle files-specific backend persistent representation
22011767SAnurag.Maskey@Sun.COM  * of data - see libnwam_files.c.
22111767SAnurag.Maskey@Sun.COM  */
22211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_read_object_from_files_backend(char *,
22311767SAnurag.Maskey@Sun.COM 	char *, uint64_t, void *);
22411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_update_object_in_files_backend(char *,
22511767SAnurag.Maskey@Sun.COM 	char *, uint64_t, void *);
22611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_remove_object_from_files_backend(char *,
22711767SAnurag.Maskey@Sun.COM 	char *, uint64_t);
22811767SAnurag.Maskey@Sun.COM 
22911767SAnurag.Maskey@Sun.COM /*
23011767SAnurag.Maskey@Sun.COM  * Utility functions for nwam data (values and lists of values) associated
23111767SAnurag.Maskey@Sun.COM  * with objects - see libnwam_values.c.
23211767SAnurag.Maskey@Sun.COM  */
23311767SAnurag.Maskey@Sun.COM nwam_error_t nwam_alloc_object_list(void *);
23411767SAnurag.Maskey@Sun.COM void nwam_free_object_list(void *);
23511767SAnurag.Maskey@Sun.COM nwam_error_t nwam_object_list_add_object_list(void *, char *, void *);
23611767SAnurag.Maskey@Sun.COM nwam_error_t nwam_object_list_remove_object_list(void *, char *);
23711767SAnurag.Maskey@Sun.COM nwam_error_t nwam_dup_object_list(void *, void *);
23811767SAnurag.Maskey@Sun.COM nwam_error_t nwam_next_object_list(void *, char *, char **, void *);
23911767SAnurag.Maskey@Sun.COM nwam_error_t nwam_next_object_prop(void *, char *, char **, nwam_value_t *);
24011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_pack_object_list(void *, char **, size_t *);
24111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_unpack_object_list(char *, size_t, void *);
24211767SAnurag.Maskey@Sun.COM 
24311767SAnurag.Maskey@Sun.COM extern const char *nwam_value_type_to_string(nwam_value_type_t);
24411767SAnurag.Maskey@Sun.COM extern nwam_value_type_t nwam_string_to_value_type(const char *);
24511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_delete_prop(void *, const char *);
24611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_set_prop_value(void *, const char *, nwam_value_t);
24711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_get_prop_value(void *, const char *, nwam_value_t *);
24811767SAnurag.Maskey@Sun.COM 
24911767SAnurag.Maskey@Sun.COM /*
25011767SAnurag.Maskey@Sun.COM  * Utility functions for nwam objects (NCUs, ENMs, locations and known WLANs).
25111767SAnurag.Maskey@Sun.COM  * See libnwam_object.c.
25211767SAnurag.Maskey@Sun.COM  */
25311767SAnurag.Maskey@Sun.COM nwam_error_t nwam_handle_create(nwam_object_type_t, const char *,
25411767SAnurag.Maskey@Sun.COM 	struct nwam_handle **);
25511767SAnurag.Maskey@Sun.COM nwam_error_t nwam_read(nwam_object_type_t, const char *, const char *,
25611767SAnurag.Maskey@Sun.COM 	uint64_t, struct nwam_handle **);
25711767SAnurag.Maskey@Sun.COM nwam_error_t nwam_create(nwam_object_type_t, const char *, const char *,
25811767SAnurag.Maskey@Sun.COM 	struct nwam_handle **);
25911767SAnurag.Maskey@Sun.COM nwam_error_t nwam_get_name(struct nwam_handle *, char **);
26011767SAnurag.Maskey@Sun.COM nwam_error_t nwam_set_name(struct nwam_handle *, const char *);
26111767SAnurag.Maskey@Sun.COM nwam_error_t nwam_walk(nwam_object_type_t, const char *,
26211767SAnurag.Maskey@Sun.COM 	int(*)(struct nwam_handle *, void *), void *, uint64_t, int *,
26311767SAnurag.Maskey@Sun.COM 	int(*)(struct nwam_handle *, uint64_t, void *));
26411767SAnurag.Maskey@Sun.COM void nwam_free(struct nwam_handle *);
26511767SAnurag.Maskey@Sun.COM nwam_error_t nwam_copy(const char *, struct nwam_handle *, const char *,
26611767SAnurag.Maskey@Sun.COM 	struct nwam_handle **);
26711767SAnurag.Maskey@Sun.COM nwam_error_t nwam_walk_props(struct nwam_handle *,
26811767SAnurag.Maskey@Sun.COM 	int(*)(const char *, nwam_value_t, void *), void *, uint64_t, int *);
26911767SAnurag.Maskey@Sun.COM nwam_error_t nwam_commit(const char *, struct nwam_handle *, uint64_t);
27011767SAnurag.Maskey@Sun.COM nwam_error_t nwam_destroy(const char *, struct nwam_handle *, uint64_t);
27111767SAnurag.Maskey@Sun.COM nwam_error_t nwam_enable(const char *, struct nwam_handle *);
27211767SAnurag.Maskey@Sun.COM nwam_error_t nwam_disable(const char *, struct nwam_handle *);
27311767SAnurag.Maskey@Sun.COM struct nwam_prop_table_entry *nwam_get_prop_table_entry(struct nwam_prop_table,
27411767SAnurag.Maskey@Sun.COM 	const char *);
27511767SAnurag.Maskey@Sun.COM nwam_error_t nwam_get_prop_description(struct nwam_prop_table, const char *,
27611767SAnurag.Maskey@Sun.COM 	const char **);
27711767SAnurag.Maskey@Sun.COM nwam_error_t nwam_get_prop_type(struct nwam_prop_table, const char *,
27811767SAnurag.Maskey@Sun.COM 	nwam_value_type_t *);
27911767SAnurag.Maskey@Sun.COM nwam_error_t nwam_prop_multivalued(struct nwam_prop_table, const char *,
28011767SAnurag.Maskey@Sun.COM 	boolean_t *);
28111767SAnurag.Maskey@Sun.COM nwam_error_t nwam_prop_read_only(struct nwam_prop_table, const char *,
28211767SAnurag.Maskey@Sun.COM 	boolean_t *);
28311767SAnurag.Maskey@Sun.COM nwam_error_t nwam_validate_prop(struct nwam_prop_table, struct nwam_handle *,
28411767SAnurag.Maskey@Sun.COM 	const char *, nwam_value_t);
28511767SAnurag.Maskey@Sun.COM nwam_error_t nwam_validate(struct nwam_prop_table, struct nwam_handle *,
28611767SAnurag.Maskey@Sun.COM 	const char **);
28711767SAnurag.Maskey@Sun.COM nwam_error_t nwam_get_default_proplist(struct nwam_prop_table, uint64_t,
28811767SAnurag.Maskey@Sun.COM 	uint64_t, const char ***, uint_t *);
28911767SAnurag.Maskey@Sun.COM nwam_error_t nwam_get_state(const char *, struct nwam_handle *, nwam_state_t *,
29011767SAnurag.Maskey@Sun.COM 	nwam_aux_state_t *);
29111767SAnurag.Maskey@Sun.COM 
29211767SAnurag.Maskey@Sun.COM /*
29311767SAnurag.Maskey@Sun.COM  * Generic validation functions - see libnwam_util.c.
29411767SAnurag.Maskey@Sun.COM  */
29511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_flags(uint64_t, uint64_t);
29611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_condition(nwam_value_t);
29711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_boolean(nwam_value_t);
29811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_uint64(nwam_value_t);
29911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_domain(nwam_value_t);
30011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_host_any(nwam_value_t);
30111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_host_v4(nwam_value_t);
30211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_route_v4(nwam_value_t);
30311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_host_v6(nwam_value_t);
30411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_route_v6(nwam_value_t);
30511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_host_or_domain(nwam_value_t);
30611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_file(nwam_value_t);
30711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_fmri(nwam_value_t);
30811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_valid_mac_addr(nwam_value_t);
30911767SAnurag.Maskey@Sun.COM 
31011767SAnurag.Maskey@Sun.COM /* Misc. util functions */
311*12036SMichael.Hunter@Sun.COM extern boolean_t nwam_uid_is_special(void);
31211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_set_smf_string_property(const char *, const char *,
31311767SAnurag.Maskey@Sun.COM 	const char *, const char *);
31411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_get_smf_string_property(const char *, const char *,
31511767SAnurag.Maskey@Sun.COM 	const char *, char **);
31611767SAnurag.Maskey@Sun.COM extern int nwam_make_door_call(const char *, int *, void *, size_t);
31711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_errno_to_nwam_error(int);
31811767SAnurag.Maskey@Sun.COM 
31911767SAnurag.Maskey@Sun.COM /* Needed in libnwam_files.c to check if NCP filename is valid */
32011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_file_to_name(const char *path, char **name);
32111767SAnurag.Maskey@Sun.COM 
32211767SAnurag.Maskey@Sun.COM #ifdef	__cplusplus
32311767SAnurag.Maskey@Sun.COM }
32411767SAnurag.Maskey@Sun.COM #endif
32511767SAnurag.Maskey@Sun.COM 
32611767SAnurag.Maskey@Sun.COM #endif	/* _LIBNWAM_IMPL_H */
327