xref: /onnv-gate/usr/src/lib/libnwam/common/libnwam.h (revision 12576:ab8aacaead3f)
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*12576SAnurag.Maskey@Oracle.COM  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
237645Sjames.d.carlson@sun.com  */
247645Sjames.d.carlson@sun.com 
2511767SAnurag.Maskey@Sun.COM /*
2611767SAnurag.Maskey@Sun.COM  * This file contains data structures and APIs of libnwam.
2711767SAnurag.Maskey@Sun.COM  * Implementation is MT safe.
2811767SAnurag.Maskey@Sun.COM  */
297645Sjames.d.carlson@sun.com #ifndef _LIBNWAM_H
307645Sjames.d.carlson@sun.com #define	_LIBNWAM_H
317645Sjames.d.carlson@sun.com 
3211767SAnurag.Maskey@Sun.COM #ifdef	__cplusplus
337645Sjames.d.carlson@sun.com extern "C" {
347645Sjames.d.carlson@sun.com #endif
357645Sjames.d.carlson@sun.com 
3611767SAnurag.Maskey@Sun.COM #include <bsm/adt.h>
3711767SAnurag.Maskey@Sun.COM #include <net/if.h>
3811767SAnurag.Maskey@Sun.COM #include <inet/ip.h>
3911767SAnurag.Maskey@Sun.COM #include <inet/ip6.h>
4011767SAnurag.Maskey@Sun.COM #include <sys/types.h>
4111767SAnurag.Maskey@Sun.COM #include <sys/socket.h>
4211767SAnurag.Maskey@Sun.COM 
4311767SAnurag.Maskey@Sun.COM /*
4411767SAnurag.Maskey@Sun.COM  * Note - several interface functions below are not utilized in ON, but are
4511767SAnurag.Maskey@Sun.COM  * used by the GNOME nwam-manager.  One example is nwam_enm_get_name().
4611767SAnurag.Maskey@Sun.COM  */
4711767SAnurag.Maskey@Sun.COM 
4811767SAnurag.Maskey@Sun.COM /*
4911767SAnurag.Maskey@Sun.COM  * Common definitions
5011767SAnurag.Maskey@Sun.COM  */
5111767SAnurag.Maskey@Sun.COM 
5211767SAnurag.Maskey@Sun.COM /* nwam FMRI and properties */
5311767SAnurag.Maskey@Sun.COM #define	NWAM_FMRI		"svc:/network/physical:nwam"
5411767SAnurag.Maskey@Sun.COM #define	NWAM_PG			"nwamd"
5511767SAnurag.Maskey@Sun.COM #define	NWAM_PROP_ACTIVE_NCP	"active_ncp"
5611767SAnurag.Maskey@Sun.COM 
5711767SAnurag.Maskey@Sun.COM /* nwam flags used for read/commit */
5811767SAnurag.Maskey@Sun.COM /* Block waiting for commit if necessary */
5911767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_BLOCKING		0x00000001
6011767SAnurag.Maskey@Sun.COM /* Committed object must be new */
6111767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_CREATE		0x00000002
6211767SAnurag.Maskey@Sun.COM /* Tell destroy functions not to free handle */
6311767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_DO_NOT_FREE		0x00000004
6411767SAnurag.Maskey@Sun.COM /* Object is being enabled/disabled */
6511767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ENTITY_ENABLE		0x00000008
6611767SAnurag.Maskey@Sun.COM /* Known WLAN being read, committed or destroyed */
6711767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ENTITY_KNOWN_WLAN	0x00000010
6811767SAnurag.Maskey@Sun.COM 
6911767SAnurag.Maskey@Sun.COM /* nwam flags used for selecting ncu type for walk */
7011767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_TYPE_LINK		0x00000001ULL << 32
7111767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_TYPE_INTERFACE	0x00000002ULL << 32
7211767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_TYPE_ALL		(NWAM_FLAG_NCU_TYPE_LINK | \
7311767SAnurag.Maskey@Sun.COM 					NWAM_FLAG_NCU_TYPE_INTERFACE)
7411767SAnurag.Maskey@Sun.COM 
7511767SAnurag.Maskey@Sun.COM /* nwam flags used for selecting ncu class for walk */
7611767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_CLASS_PHYS		0x00000100ULL << 32
7711767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_CLASS_IP			0x00010000ULL << 32
7811767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_CLASS_ALL_LINK		NWAM_FLAG_NCU_CLASS_PHYS
7911767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_CLASS_ALL_INTERFACE	NWAM_FLAG_NCU_CLASS_IP
8011767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_CLASS_ALL		(NWAM_FLAG_NCU_CLASS_ALL_INTERFACE | \
8111767SAnurag.Maskey@Sun.COM 					NWAM_FLAG_NCU_CLASS_ALL_LINK)
8211767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_NCU_TYPE_CLASS_ALL		(NWAM_FLAG_NCU_CLASS_ALL | \
8311767SAnurag.Maskey@Sun.COM 						NWAM_FLAG_NCU_TYPE_ALL)
8411767SAnurag.Maskey@Sun.COM 
8511767SAnurag.Maskey@Sun.COM /* flags used for selecting activation for walk */
8611767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ACTIVATION_MODE_MANUAL		0x000000001ULL << 32
8711767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ACTIVATION_MODE_SYSTEM		0x000000002ULL << 32
8811767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED		0x000000004ULL << 32
8911767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY	0x000000008ULL << 32
9011767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL	0x000000010ULL << 32
9111767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_ACTIVATION_MODE_ALL	(NWAM_FLAG_ACTIVATION_MODE_MANUAL |\
9211767SAnurag.Maskey@Sun.COM 					NWAM_FLAG_ACTIVATION_MODE_SYSTEM |\
9311767SAnurag.Maskey@Sun.COM 					NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED |\
9411767SAnurag.Maskey@Sun.COM 				NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY |\
9511767SAnurag.Maskey@Sun.COM 				NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL)
9611767SAnurag.Maskey@Sun.COM 
9711767SAnurag.Maskey@Sun.COM /* Walk known WLANs in order of priority (lowest first) */
9811767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_KNOWN_WLAN_WALK_PRIORITY_ORDER	0x000010000ULL << 32
9911767SAnurag.Maskey@Sun.COM /* Do not perform priority collision checking for known WLANs */
10011767SAnurag.Maskey@Sun.COM #define	NWAM_FLAG_KNOWN_WLAN_NO_COLLISION_CHECK		0x000020000ULL << 32
10111767SAnurag.Maskey@Sun.COM 
10211767SAnurag.Maskey@Sun.COM /* nwam return codes */
10311767SAnurag.Maskey@Sun.COM typedef enum {
10411767SAnurag.Maskey@Sun.COM 	NWAM_SUCCESS,			/* No error occured */
10511767SAnurag.Maskey@Sun.COM 	NWAM_LIST_END,			/* End of list reached */
10611767SAnurag.Maskey@Sun.COM 	NWAM_INVALID_HANDLE,		/* Entity handle is invalid */
10711767SAnurag.Maskey@Sun.COM 	NWAM_HANDLE_UNBOUND,		/* Handle not bound to entity */
10811767SAnurag.Maskey@Sun.COM 	NWAM_INVALID_ARG,		/* Argument is invalid */
10911767SAnurag.Maskey@Sun.COM 	NWAM_PERMISSION_DENIED,		/* Insufficient privileges for action */
11011767SAnurag.Maskey@Sun.COM 	NWAM_NO_MEMORY,			/* Out of memory */
11111767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_EXISTS,		/* Entity already exists */
11211767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_IN_USE,		/* Entity in use */
11311767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_COMMITTED,		/* Entity already committed */
11411767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_NOT_FOUND,		/* Entity not found */
11511767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_TYPE_MISMATCH,	/* Entity type mismatch */
11611767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_INVALID,		/* Validation of entity failed */
11711767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_INVALID_MEMBER,	/* Entity member invalid */
11811767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_INVALID_STATE,	/* Entity is not in appropriate state */
11911767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_INVALID_VALUE,	/* Validation of entity value failed */
12011767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_MISSING_MEMBER,	/* Required member is missing */
12111767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_NO_VALUE,		/* No value associated with entity */
12211767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_MULTIPLE_VALUES,	/* Multiple values for entity */
12311767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_READ_ONLY,		/* Entity is marked read only */
12411767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_NOT_DESTROYABLE,	/* Entity cannot be destroyed */
12511767SAnurag.Maskey@Sun.COM 	NWAM_ENTITY_NOT_MANUAL,	/* Entity cannot be manually enabled/disabled */
12611767SAnurag.Maskey@Sun.COM 	NWAM_WALK_HALTED,		/* Callback function returned nonzero */
12711767SAnurag.Maskey@Sun.COM 	NWAM_ERROR_BIND,		/* Could not bind to backend */
12811767SAnurag.Maskey@Sun.COM 	NWAM_ERROR_BACKEND_INIT,	/* Could not initialize backend */
12911767SAnurag.Maskey@Sun.COM 	NWAM_ERROR_INTERNAL		/* Internal error */
13011767SAnurag.Maskey@Sun.COM } nwam_error_t;
13111767SAnurag.Maskey@Sun.COM 
13211767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_NAME_LEN		128
13311767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_VALUE_LEN		256
13411767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_FMRI_LEN		NWAM_MAX_VALUE_LEN
13511767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_NUM_VALUES		32
13611767SAnurag.Maskey@Sun.COM #define	NWAM_MAX_NUM_PROPERTIES		32
13711767SAnurag.Maskey@Sun.COM 
13811767SAnurag.Maskey@Sun.COM /* used for getting and setting of properties */
13911767SAnurag.Maskey@Sun.COM typedef enum {
14011767SAnurag.Maskey@Sun.COM 	NWAM_VALUE_TYPE_BOOLEAN,
14111767SAnurag.Maskey@Sun.COM 	NWAM_VALUE_TYPE_INT64,
14211767SAnurag.Maskey@Sun.COM 	NWAM_VALUE_TYPE_UINT64,
14311767SAnurag.Maskey@Sun.COM 	NWAM_VALUE_TYPE_STRING,
14411767SAnurag.Maskey@Sun.COM 	NWAM_VALUE_TYPE_UNKNOWN
14511767SAnurag.Maskey@Sun.COM } nwam_value_type_t;
14611767SAnurag.Maskey@Sun.COM 
14711767SAnurag.Maskey@Sun.COM /* Holds values of various types for getting and setting of properties */
14811767SAnurag.Maskey@Sun.COM /* Forward definition */
14911767SAnurag.Maskey@Sun.COM struct nwam_value;
15011767SAnurag.Maskey@Sun.COM typedef struct nwam_value *nwam_value_t;
15111767SAnurag.Maskey@Sun.COM 
15211767SAnurag.Maskey@Sun.COM /* Value-related functions. */
15311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_boolean(boolean_t, nwam_value_t *);
15411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_boolean_array(boolean_t *, uint_t,
15511767SAnurag.Maskey@Sun.COM     nwam_value_t *);
15611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_int64(int64_t, nwam_value_t *);
15711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_int64_array(int64_t *, uint_t,
15811767SAnurag.Maskey@Sun.COM     nwam_value_t *);
15911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_uint64(uint64_t, nwam_value_t *);
16011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_uint64_array(uint64_t *, uint_t,
16111767SAnurag.Maskey@Sun.COM     nwam_value_t *);
16211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_string(char *, nwam_value_t *);
16311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_create_string_array(char **, uint_t,
16411767SAnurag.Maskey@Sun.COM     nwam_value_t *);
16511767SAnurag.Maskey@Sun.COM 
16611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_boolean(nwam_value_t, boolean_t *);
16711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_boolean_array(nwam_value_t, boolean_t **,
16811767SAnurag.Maskey@Sun.COM     uint_t *);
16911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_int64(nwam_value_t, int64_t *);
17011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_int64_array(nwam_value_t, int64_t **,
17111767SAnurag.Maskey@Sun.COM     uint_t *);
17211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_uint64(nwam_value_t, uint64_t *);
17311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_uint64_array(nwam_value_t, uint64_t **,
17411767SAnurag.Maskey@Sun.COM     uint_t *);
17511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_string(nwam_value_t, char **);
17611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_string_array(nwam_value_t, char ***,
17711767SAnurag.Maskey@Sun.COM     uint_t *);
17811767SAnurag.Maskey@Sun.COM 
17911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_type(nwam_value_t, nwam_value_type_t *);
18011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_get_numvalues(nwam_value_t, uint_t *);
18111767SAnurag.Maskey@Sun.COM 
18211767SAnurag.Maskey@Sun.COM extern void nwam_value_free(nwam_value_t);
18311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_copy(nwam_value_t, nwam_value_t *);
18411767SAnurag.Maskey@Sun.COM 
18511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_uint64_get_value_string(const char *, uint64_t,
18611767SAnurag.Maskey@Sun.COM     const char **);
18711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_value_string_get_uint64(const char *, const char *,
18811767SAnurag.Maskey@Sun.COM     uint64_t *);
18911767SAnurag.Maskey@Sun.COM 
19011767SAnurag.Maskey@Sun.COM /*
19111767SAnurag.Maskey@Sun.COM  * To retrieve a localized error string
19211767SAnurag.Maskey@Sun.COM  */
19311767SAnurag.Maskey@Sun.COM extern const char *nwam_strerror(nwam_error_t);
19411767SAnurag.Maskey@Sun.COM 
19511767SAnurag.Maskey@Sun.COM /*
19611767SAnurag.Maskey@Sun.COM  * State and auxiliary state describe the state of ENMs, NCUs and locations.
19711767SAnurag.Maskey@Sun.COM  */
19811767SAnurag.Maskey@Sun.COM typedef enum {
19911767SAnurag.Maskey@Sun.COM 	NWAM_STATE_UNINITIALIZED = 0x0,
20011767SAnurag.Maskey@Sun.COM 	NWAM_STATE_INITIALIZED = 0x1,
20111767SAnurag.Maskey@Sun.COM 	NWAM_STATE_OFFLINE = 0x2,
20211767SAnurag.Maskey@Sun.COM 	NWAM_STATE_OFFLINE_TO_ONLINE = 0x4,
20311767SAnurag.Maskey@Sun.COM 	NWAM_STATE_ONLINE_TO_OFFLINE = 0x8,
20411767SAnurag.Maskey@Sun.COM 	NWAM_STATE_ONLINE = 0x10,
20511767SAnurag.Maskey@Sun.COM 	NWAM_STATE_MAINTENANCE = 0x20,
20611767SAnurag.Maskey@Sun.COM 	NWAM_STATE_DEGRADED = 0x40,
20711767SAnurag.Maskey@Sun.COM 	NWAM_STATE_DISABLED = 0x80
20811767SAnurag.Maskey@Sun.COM } nwam_state_t;
20911767SAnurag.Maskey@Sun.COM 
21011767SAnurag.Maskey@Sun.COM #define	NWAM_STATE_ANY	(NWAM_STATE_UNINITIALIZED | \
21111767SAnurag.Maskey@Sun.COM 			NWAM_STATE_INITIALIZED | \
21211767SAnurag.Maskey@Sun.COM 			NWAM_STATE_OFFLINE | \
21311767SAnurag.Maskey@Sun.COM 			NWAM_STATE_OFFLINE_TO_ONLINE | \
21411767SAnurag.Maskey@Sun.COM 			NWAM_STATE_ONLINE_TO_OFFLINE | \
21511767SAnurag.Maskey@Sun.COM 			NWAM_STATE_ONLINE | \
21611767SAnurag.Maskey@Sun.COM 			NWAM_STATE_MAINTENANCE | \
21711767SAnurag.Maskey@Sun.COM 			NWAM_STATE_DEGRADED | \
21811767SAnurag.Maskey@Sun.COM 			NWAM_STATE_DISABLED)
21911767SAnurag.Maskey@Sun.COM 
22011767SAnurag.Maskey@Sun.COM /*
22111767SAnurag.Maskey@Sun.COM  * The auxiliary state denotes specific reasons why an object is in a particular
22211767SAnurag.Maskey@Sun.COM  * state (e.g. "script failed", "disabled by administrator", "waiting for DHCP
22311767SAnurag.Maskey@Sun.COM  * response").
22411767SAnurag.Maskey@Sun.COM  */
22511767SAnurag.Maskey@Sun.COM typedef enum {
22611767SAnurag.Maskey@Sun.COM 	/* General auxiliary states */
22711767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_UNINITIALIZED,
22811767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_INITIALIZED,
22911767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_CONDITIONS_NOT_MET,
23011767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_MANUAL_DISABLE,
23111767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_METHOD_FAILED,
23211767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_METHOD_MISSING,
23311767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_METHOD_RUNNING,
23411767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_INVALID_CONFIG,
23511767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_ACTIVE,
23611767SAnurag.Maskey@Sun.COM 	/* Link-specific auxiliary states */
23711767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_LINK_WIFI_SCANNING,
23811767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_LINK_WIFI_NEED_SELECTION,
23911767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_LINK_WIFI_NEED_KEY,
24011767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_LINK_WIFI_CONNECTING,
24111767SAnurag.Maskey@Sun.COM 	/* IP interface-specific auxiliary states */
24211767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_IF_WAITING_FOR_ADDR,
24311767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_IF_DHCP_TIMED_OUT,
24411767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_IF_DUPLICATE_ADDR,
24511767SAnurag.Maskey@Sun.COM 	/* Common link/interface auxiliary states */
24611767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_UP,
24711767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_DOWN,
24811767SAnurag.Maskey@Sun.COM 	NWAM_AUX_STATE_NOT_FOUND
24911767SAnurag.Maskey@Sun.COM } nwam_aux_state_t;
25011767SAnurag.Maskey@Sun.COM 
25111767SAnurag.Maskey@Sun.COM /* Activation modes */
25211767SAnurag.Maskey@Sun.COM typedef enum {
25311767SAnurag.Maskey@Sun.COM 	NWAM_ACTIVATION_MODE_MANUAL,
25411767SAnurag.Maskey@Sun.COM 	NWAM_ACTIVATION_MODE_SYSTEM,
25511767SAnurag.Maskey@Sun.COM 	NWAM_ACTIVATION_MODE_CONDITIONAL_ANY,
25611767SAnurag.Maskey@Sun.COM 	NWAM_ACTIVATION_MODE_CONDITIONAL_ALL,
25711767SAnurag.Maskey@Sun.COM 	NWAM_ACTIVATION_MODE_PRIORITIZED
25811767SAnurag.Maskey@Sun.COM } nwam_activation_mode_t;
2597645Sjames.d.carlson@sun.com 
26011767SAnurag.Maskey@Sun.COM /*
26111767SAnurag.Maskey@Sun.COM  * Conditions are of the form
26211767SAnurag.Maskey@Sun.COM  *
26311767SAnurag.Maskey@Sun.COM  * ncu|enm|loc name is|is-not active
26411767SAnurag.Maskey@Sun.COM  * ip-address is|is-not|is-in-range|is-not-in-range ipaddr[/prefixlen]
26511767SAnurag.Maskey@Sun.COM  * advertised-domain is|is-not|contains|does-not-contain string
26611767SAnurag.Maskey@Sun.COM  * system-domain is|is-not|contains|does-not-contain string
26711767SAnurag.Maskey@Sun.COM  * essid is|is-not|contains|does-not-contain string
26811767SAnurag.Maskey@Sun.COM  * bssid is|is-not <string>
26911767SAnurag.Maskey@Sun.COM  */
27011767SAnurag.Maskey@Sun.COM 
27111767SAnurag.Maskey@Sun.COM typedef enum {
27211767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_IS,
27311767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_IS_NOT,
27411767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_IS_IN_RANGE,
27511767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_IS_NOT_IN_RANGE,
27611767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_CONTAINS,
27711767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_DOES_NOT_CONTAIN
27811767SAnurag.Maskey@Sun.COM } nwam_condition_t;
27911767SAnurag.Maskey@Sun.COM 
28011767SAnurag.Maskey@Sun.COM typedef enum {
28111767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_NCP,
28211767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_NCU,
28311767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_ENM,
28411767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_LOC,
28511767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS,
28611767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN,
28711767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN,
28811767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_ESSID,
28911767SAnurag.Maskey@Sun.COM 	NWAM_CONDITION_OBJECT_TYPE_BSSID
29011767SAnurag.Maskey@Sun.COM } nwam_condition_object_type_t;
29111767SAnurag.Maskey@Sun.COM 
29211767SAnurag.Maskey@Sun.COM /*
29311767SAnurag.Maskey@Sun.COM  * Activation condition-related functions that convert activation
29411767SAnurag.Maskey@Sun.COM  * values to an appropriate string and back.
29511767SAnurag.Maskey@Sun.COM  */
29611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_condition_to_condition_string(
29711767SAnurag.Maskey@Sun.COM     nwam_condition_object_type_t, nwam_condition_t, const char *, char **);
29811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_condition_string_to_condition(const char *,
29911767SAnurag.Maskey@Sun.COM     nwam_condition_object_type_t *, nwam_condition_t *, char **);
30011767SAnurag.Maskey@Sun.COM 
30111767SAnurag.Maskey@Sun.COM /*
30211767SAnurag.Maskey@Sun.COM  * Only one location can be active at one time. As a
30311767SAnurag.Maskey@Sun.COM  * consequence, if the activation conditions of multiple
30411767SAnurag.Maskey@Sun.COM  * locations are satisfied, we need to compare activation
30511767SAnurag.Maskey@Sun.COM  * conditions to see if one is more specific than another.
30611767SAnurag.Maskey@Sun.COM  *
30711767SAnurag.Maskey@Sun.COM  * The following heuristics are applied to rate an
30811767SAnurag.Maskey@Sun.COM  * activation condition:
30911767SAnurag.Maskey@Sun.COM  * - "is" is the most specific condition
31011767SAnurag.Maskey@Sun.COM  * - it is followed by "is-in-range" and "contains"
31111767SAnurag.Maskey@Sun.COM  * - "is-not-in-range" and "does-not-contain" are next
31211767SAnurag.Maskey@Sun.COM  * - finally "is-not" is least specific
31311767SAnurag.Maskey@Sun.COM  *
31411767SAnurag.Maskey@Sun.COM  * Regarding the objects these conditions apply to:
31511767SAnurag.Maskey@Sun.COM  * - NCU, ENM and locations are most specific
31611767SAnurag.Maskey@Sun.COM  * - system-domain is next
31711767SAnurag.Maskey@Sun.COM  * - advertised-domain is next
31811767SAnurag.Maskey@Sun.COM  * - IP address is next
31911767SAnurag.Maskey@Sun.COM  * - wireless BSSID is next
32011767SAnurag.Maskey@Sun.COM  * - wireless ESSID is least specific
32111767SAnurag.Maskey@Sun.COM  *
32211767SAnurag.Maskey@Sun.COM  */
32311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_condition_rate(nwam_condition_object_type_t,
32411767SAnurag.Maskey@Sun.COM     nwam_condition_t, uint64_t *);
32511767SAnurag.Maskey@Sun.COM 
32611767SAnurag.Maskey@Sun.COM /*
32711767SAnurag.Maskey@Sun.COM  * Location definitions.
32811767SAnurag.Maskey@Sun.COM  */
32911767SAnurag.Maskey@Sun.COM 
33011767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_NAME_AUTOMATIC		"Automatic"
33111767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_NAME_NO_NET		"NoNet"
33211767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_NAME_LEGACY		"Legacy"
33311767SAnurag.Maskey@Sun.COM 
33411767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_NAME_PRE_DEFINED(name)	\
33511767SAnurag.Maskey@Sun.COM 			(strcasecmp(name, NWAM_LOC_NAME_AUTOMATIC) == 0 || \
33611767SAnurag.Maskey@Sun.COM 			strcasecmp(name, NWAM_LOC_NAME_NO_NET) == 0 || \
33711767SAnurag.Maskey@Sun.COM 			strcasecmp(name, NWAM_LOC_NAME_LEGACY) == 0)
33811767SAnurag.Maskey@Sun.COM 
33911767SAnurag.Maskey@Sun.COM /* Forward definition */
34011767SAnurag.Maskey@Sun.COM struct nwam_handle;
34111767SAnurag.Maskey@Sun.COM 
34211767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_loc_handle_t;
34311767SAnurag.Maskey@Sun.COM 
34411767SAnurag.Maskey@Sun.COM /* Location properties */
34511767SAnurag.Maskey@Sun.COM 
34611767SAnurag.Maskey@Sun.COM typedef enum {
34711767SAnurag.Maskey@Sun.COM 	NWAM_NAMESERVICES_DNS,
34811767SAnurag.Maskey@Sun.COM 	NWAM_NAMESERVICES_FILES,
34911767SAnurag.Maskey@Sun.COM 	NWAM_NAMESERVICES_NIS,
35011767SAnurag.Maskey@Sun.COM 	NWAM_NAMESERVICES_LDAP
35111767SAnurag.Maskey@Sun.COM } nwam_nameservices_t;
35211767SAnurag.Maskey@Sun.COM 
35311767SAnurag.Maskey@Sun.COM typedef enum {
35411767SAnurag.Maskey@Sun.COM 	NWAM_CONFIGSRC_MANUAL,
35511767SAnurag.Maskey@Sun.COM 	NWAM_CONFIGSRC_DHCP
35611767SAnurag.Maskey@Sun.COM } nwam_configsrc_t;
35711767SAnurag.Maskey@Sun.COM 
35811767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_ACTIVATION_MODE		"activation-mode"
35911767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_CONDITIONS		"conditions"
36011767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_ENABLED			"enabled"
36111767SAnurag.Maskey@Sun.COM 
36211767SAnurag.Maskey@Sun.COM /* Nameservice location properties */
36311767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_NAMESERVICES		"nameservices"
36411767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_NAMESERVICES_CONFIG_FILE	"nameservices-config-file"
36511767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC	"dns-nameservice-configsrc"
36611767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN	"dns-nameservice-domain"
36711767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS	"dns-nameservice-servers"
36811767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH	"dns-nameservice-search"
36911767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC	"nis-nameservice-configsrc"
37011767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS	"nis-nameservice-servers"
37111767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC "ldap-nameservice-configsrc"
37211767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS	"ldap-nameservice-servers"
37311767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_DEFAULT_DOMAIN		"default-domain"
37411767SAnurag.Maskey@Sun.COM 
37511767SAnurag.Maskey@Sun.COM /* NFSv4 domain */
37611767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_NFSV4_DOMAIN		"nfsv4-domain"
37711767SAnurag.Maskey@Sun.COM 
37811767SAnurag.Maskey@Sun.COM /* IPfilter configuration */
37911767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_IPFILTER_CONFIG_FILE	"ipfilter-config-file"
38011767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE	"ipfilter-v6-config-file"
38111767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_IPNAT_CONFIG_FILE		"ipnat-config-file"
38211767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_IPPOOL_CONFIG_FILE	"ippool-config-file"
38311767SAnurag.Maskey@Sun.COM 
38411767SAnurag.Maskey@Sun.COM /* IPsec configuration */
38511767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_IKE_CONFIG_FILE		"ike-config-file"
38611767SAnurag.Maskey@Sun.COM #define	NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE	"ipsecpolicy-config-file"
38711767SAnurag.Maskey@Sun.COM 
38811767SAnurag.Maskey@Sun.COM /*
38911767SAnurag.Maskey@Sun.COM  * NCP/NCU definitions.
39011767SAnurag.Maskey@Sun.COM  */
39111767SAnurag.Maskey@Sun.COM 
39211767SAnurag.Maskey@Sun.COM #define	NWAM_NCP_NAME_AUTOMATIC		"Automatic"
39311767SAnurag.Maskey@Sun.COM #define	NWAM_NCP_NAME_USER		"User"
39411767SAnurag.Maskey@Sun.COM 
39511767SAnurag.Maskey@Sun.COM #define	NWAM_NCP_AUTOMATIC(name)	\
39611767SAnurag.Maskey@Sun.COM 			(strcasecmp(name, NWAM_NCP_NAME_AUTOMATIC) == 0)
39711767SAnurag.Maskey@Sun.COM 
39811767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_ncp_handle_t;
39911767SAnurag.Maskey@Sun.COM 
40011767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_ncu_handle_t;
40111767SAnurag.Maskey@Sun.COM 
40211767SAnurag.Maskey@Sun.COM typedef enum {
40311767SAnurag.Maskey@Sun.COM 	NWAM_NCU_TYPE_UNKNOWN = -1,
40411767SAnurag.Maskey@Sun.COM 	NWAM_NCU_TYPE_LINK,
40511767SAnurag.Maskey@Sun.COM 	NWAM_NCU_TYPE_INTERFACE,
40611767SAnurag.Maskey@Sun.COM 	NWAM_NCU_TYPE_ANY
40711767SAnurag.Maskey@Sun.COM } nwam_ncu_type_t;
40811767SAnurag.Maskey@Sun.COM 
40911767SAnurag.Maskey@Sun.COM typedef enum {
41011767SAnurag.Maskey@Sun.COM 	NWAM_NCU_CLASS_UNKNOWN = -1,
41111767SAnurag.Maskey@Sun.COM 	NWAM_NCU_CLASS_PHYS,
41211767SAnurag.Maskey@Sun.COM 	NWAM_NCU_CLASS_IP,
41311767SAnurag.Maskey@Sun.COM 	NWAM_NCU_CLASS_ANY
41411767SAnurag.Maskey@Sun.COM } nwam_ncu_class_t;
41511767SAnurag.Maskey@Sun.COM 
41611767SAnurag.Maskey@Sun.COM typedef enum {
41711767SAnurag.Maskey@Sun.COM 	NWAM_ADDRSRC_DHCP,
41811767SAnurag.Maskey@Sun.COM 	NWAM_ADDRSRC_AUTOCONF,
41911767SAnurag.Maskey@Sun.COM 	NWAM_ADDRSRC_STATIC
42011767SAnurag.Maskey@Sun.COM } nwam_addrsrc_t;
42111767SAnurag.Maskey@Sun.COM 
42211767SAnurag.Maskey@Sun.COM typedef enum {
42311767SAnurag.Maskey@Sun.COM 	NWAM_PRIORITY_MODE_EXCLUSIVE,
42411767SAnurag.Maskey@Sun.COM 	NWAM_PRIORITY_MODE_SHARED,
42511767SAnurag.Maskey@Sun.COM 	NWAM_PRIORITY_MODE_ALL
42611767SAnurag.Maskey@Sun.COM } nwam_priority_mode_t;
42711767SAnurag.Maskey@Sun.COM 
42811767SAnurag.Maskey@Sun.COM /* NCU properties common to all type/classes */
42911767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_TYPE			"type"
43011767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_CLASS			"class"
43111767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_PARENT_NCP		"parent"
43211767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_ACTIVATION_MODE		"activation-mode"
43311767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_ENABLED			"enabled"
43411767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_PRIORITY_GROUP		"priority-group"
43511767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_PRIORITY_MODE		"priority-mode"
43611767SAnurag.Maskey@Sun.COM 
43711767SAnurag.Maskey@Sun.COM /* Link NCU properties */
43811767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_LINK_MAC_ADDR		"link-mac-addr"
43911767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_LINK_AUTOPUSH		"link-autopush"
44011767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_LINK_MTU			"link-mtu"
44111767SAnurag.Maskey@Sun.COM 
44211767SAnurag.Maskey@Sun.COM /* IP NCU properties */
44311767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_IP_VERSION		"ip-version"
44411767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_IPV4_ADDRSRC		"ipv4-addrsrc"
44511767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_IPV4_ADDR			"ipv4-addr"
44611767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE	"ipv4-default-route"
44711767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_IPV6_ADDRSRC		"ipv6-addrsrc"
44811767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_IPV6_ADDR			"ipv6-addr"
44911767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE	"ipv6-default-route"
45011767SAnurag.Maskey@Sun.COM 
45111767SAnurag.Maskey@Sun.COM /* Some properties should only be set on creation */
45211767SAnurag.Maskey@Sun.COM #define	NWAM_NCU_PROP_SETONCE(prop)	\
45311767SAnurag.Maskey@Sun.COM 				(strcmp(prop, NWAM_NCU_PROP_TYPE) == 0 || \
45411767SAnurag.Maskey@Sun.COM 				strcmp(prop, NWAM_NCU_PROP_CLASS) == 0 || \
45511767SAnurag.Maskey@Sun.COM 				strcmp(prop, NWAM_NCU_PROP_PARENT_NCP) == 0)
45611767SAnurag.Maskey@Sun.COM /*
45711767SAnurag.Maskey@Sun.COM  * ENM definitions
45811767SAnurag.Maskey@Sun.COM  */
45911767SAnurag.Maskey@Sun.COM 
46011767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_enm_handle_t;
46111767SAnurag.Maskey@Sun.COM 
46211767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_PROP_ACTIVATION_MODE	"activation-mode"
46311767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_PROP_CONDITIONS	"conditions"
46411767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_PROP_ENABLED		"enabled"
46511767SAnurag.Maskey@Sun.COM 
46611767SAnurag.Maskey@Sun.COM /* FMRI associated with ENM */
46711767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_PROP_FMRI		"fmri"
46811767SAnurag.Maskey@Sun.COM 
46911767SAnurag.Maskey@Sun.COM /* Start/stop scripts associated with ENM */
47011767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_PROP_START		"start"
47111767SAnurag.Maskey@Sun.COM #define	NWAM_ENM_PROP_STOP		"stop"
47211767SAnurag.Maskey@Sun.COM 
47311767SAnurag.Maskey@Sun.COM /*
47411767SAnurag.Maskey@Sun.COM  * Known Wireless LAN info (known WLAN) definitions.
47511767SAnurag.Maskey@Sun.COM  */
47611767SAnurag.Maskey@Sun.COM 
47711767SAnurag.Maskey@Sun.COM typedef struct nwam_handle *nwam_known_wlan_handle_t;
47811767SAnurag.Maskey@Sun.COM 
47911767SAnurag.Maskey@Sun.COM #define	NWAM_KNOWN_WLAN_PROP_BSSIDS		"bssids"
48011767SAnurag.Maskey@Sun.COM #define	NWAM_KNOWN_WLAN_PROP_PRIORITY		"priority"
48111767SAnurag.Maskey@Sun.COM #define	NWAM_KNOWN_WLAN_PROP_KEYNAME		"keyname"
48211767SAnurag.Maskey@Sun.COM #define	NWAM_KNOWN_WLAN_PROP_KEYSLOT		"keyslot"
48311767SAnurag.Maskey@Sun.COM #define	NWAM_KNOWN_WLAN_PROP_SECURITY_MODE	"security-mode"
4847645Sjames.d.carlson@sun.com 
4857645Sjames.d.carlson@sun.com /*
48611767SAnurag.Maskey@Sun.COM  * Location Functions
4877645Sjames.d.carlson@sun.com  */
48811767SAnurag.Maskey@Sun.COM 
48911767SAnurag.Maskey@Sun.COM /* Create a location */
49011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_create(const char *, nwam_loc_handle_t *);
49111767SAnurag.Maskey@Sun.COM 
49211767SAnurag.Maskey@Sun.COM /* Copy a location */
49311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_copy(nwam_loc_handle_t, const char *,
49411767SAnurag.Maskey@Sun.COM     nwam_loc_handle_t *);
49511767SAnurag.Maskey@Sun.COM 
49611767SAnurag.Maskey@Sun.COM /* Read a location from persistent storage */
49711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_read(const char *, uint64_t,
49811767SAnurag.Maskey@Sun.COM     nwam_loc_handle_t *);
49911767SAnurag.Maskey@Sun.COM 
50011767SAnurag.Maskey@Sun.COM /* Validate in-memory representation of a location */
50111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_validate(nwam_loc_handle_t, const char **);
50211767SAnurag.Maskey@Sun.COM 
50311767SAnurag.Maskey@Sun.COM /* Commit in-memory representation of a location to persistent storage */
50411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_commit(nwam_loc_handle_t, uint64_t);
50511767SAnurag.Maskey@Sun.COM 
50611767SAnurag.Maskey@Sun.COM /* Destroy a location in persistent storage */
50711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_destroy(nwam_loc_handle_t, uint64_t);
50811767SAnurag.Maskey@Sun.COM 
50911767SAnurag.Maskey@Sun.COM /* Free in-memory representation of a location */
51011767SAnurag.Maskey@Sun.COM extern void nwam_loc_free(nwam_loc_handle_t);
51111767SAnurag.Maskey@Sun.COM 
51211767SAnurag.Maskey@Sun.COM /* read all locs from persistent storage and walk through each at a time */
51311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_locs(int (*)(nwam_loc_handle_t, void *), void *,
51411767SAnurag.Maskey@Sun.COM     uint64_t, int *);
51511767SAnurag.Maskey@Sun.COM 
51611767SAnurag.Maskey@Sun.COM /* get/set loc name */
51711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_name(nwam_loc_handle_t, char **);
51811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_set_name(nwam_loc_handle_t, const char *);
51911767SAnurag.Maskey@Sun.COM extern boolean_t nwam_loc_can_set_name(nwam_loc_handle_t);
52011767SAnurag.Maskey@Sun.COM 
52111767SAnurag.Maskey@Sun.COM /* activate/deactivate loc */
52211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_enable(nwam_loc_handle_t);
52311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_disable(nwam_loc_handle_t);
52411767SAnurag.Maskey@Sun.COM 
52511767SAnurag.Maskey@Sun.COM /* walk all properties of an in-memory loc */
52611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_walk_props(nwam_loc_handle_t,
52711767SAnurag.Maskey@Sun.COM 	int (*)(const char *, nwam_value_t, void *),
52811767SAnurag.Maskey@Sun.COM 	void *, uint64_t, int *);
52911767SAnurag.Maskey@Sun.COM 
53011767SAnurag.Maskey@Sun.COM /* delete/get/set validate loc property */
53111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_delete_prop(nwam_loc_handle_t,
53211767SAnurag.Maskey@Sun.COM     const char *);
53311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_prop_value(nwam_loc_handle_t,
53411767SAnurag.Maskey@Sun.COM     const char *, nwam_value_t *);
53511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_set_prop_value(nwam_loc_handle_t,
53611767SAnurag.Maskey@Sun.COM     const char *, nwam_value_t);
53711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_validate_prop(nwam_loc_handle_t, const char *,
53811767SAnurag.Maskey@Sun.COM     nwam_value_t);
53911767SAnurag.Maskey@Sun.COM 
54011767SAnurag.Maskey@Sun.COM /* Get the read-only value for a particular loc property */
54111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_prop_read_only(const char *, boolean_t *);
54211767SAnurag.Maskey@Sun.COM 
54311767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */
54411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_prop_multivalued(const char *, boolean_t *);
54511767SAnurag.Maskey@Sun.COM 
54611767SAnurag.Maskey@Sun.COM /* Retrieve data type */
54711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_prop_type(const char *, nwam_value_type_t *);
54811767SAnurag.Maskey@Sun.COM 
54911767SAnurag.Maskey@Sun.COM /* Retrieve description */
55011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_prop_description(const char *, const char **);
55111767SAnurag.Maskey@Sun.COM 
55211767SAnurag.Maskey@Sun.COM /* get default loc props */
55311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_default_proplist(const char ***, uint_t *);
55411767SAnurag.Maskey@Sun.COM 
55511767SAnurag.Maskey@Sun.COM /* get sstate of loc from nwamd */
55611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_get_state(nwam_loc_handle_t, nwam_state_t *,
55711767SAnurag.Maskey@Sun.COM 	nwam_aux_state_t *);
55811767SAnurag.Maskey@Sun.COM 
55911767SAnurag.Maskey@Sun.COM /* Get whether the loc has manual activation-mode or not */
56011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_loc_is_manual(nwam_loc_handle_t, boolean_t *);
56111767SAnurag.Maskey@Sun.COM 
56211767SAnurag.Maskey@Sun.COM /*
56311767SAnurag.Maskey@Sun.COM  * NCP/NCU functions
56411767SAnurag.Maskey@Sun.COM  */
56511767SAnurag.Maskey@Sun.COM 
56611767SAnurag.Maskey@Sun.COM /* Create an ncp */
56711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_create(const char *, uint64_t,
56811767SAnurag.Maskey@Sun.COM 	nwam_ncp_handle_t *);
56911767SAnurag.Maskey@Sun.COM 
57011767SAnurag.Maskey@Sun.COM /* Read an ncp from persistent storage */
57111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_read(const char *, uint64_t, nwam_ncp_handle_t *);
57211767SAnurag.Maskey@Sun.COM 
57311767SAnurag.Maskey@Sun.COM /* Make a copy of existing ncp */
57411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_copy(nwam_ncp_handle_t, const char *,
57511767SAnurag.Maskey@Sun.COM 	nwam_ncp_handle_t *);
57611767SAnurag.Maskey@Sun.COM 
57711767SAnurag.Maskey@Sun.COM /* Walk ncps */
57811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_ncps(int (*)(nwam_ncp_handle_t, void *),
57911767SAnurag.Maskey@Sun.COM 	void *, uint64_t, int *);
58011767SAnurag.Maskey@Sun.COM 
58111767SAnurag.Maskey@Sun.COM /* Get ncp name */
58211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_name(nwam_ncp_handle_t, char **);
58311767SAnurag.Maskey@Sun.COM 
58411767SAnurag.Maskey@Sun.COM /* Get the read-only value for this ncp */
58511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_read_only(nwam_ncp_handle_t, boolean_t *);
58611767SAnurag.Maskey@Sun.COM 
58711767SAnurag.Maskey@Sun.COM /* Destroy ncp */
58811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_destroy(nwam_ncp_handle_t, uint64_t);
58911767SAnurag.Maskey@Sun.COM 
59011767SAnurag.Maskey@Sun.COM /*
59111767SAnurag.Maskey@Sun.COM  * Walk all ncus associated with ncp.  Specific types/classes of ncu can
59211767SAnurag.Maskey@Sun.COM  * be selected via flags, or all via NWAM_FLAG_ALL.
59311767SAnurag.Maskey@Sun.COM  */
59411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_walk_ncus(nwam_ncp_handle_t,
59511767SAnurag.Maskey@Sun.COM     int(*)(nwam_ncu_handle_t, void *), void *, uint64_t, int *);
59611767SAnurag.Maskey@Sun.COM 
59711767SAnurag.Maskey@Sun.COM /* Activate ncp */
59811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_enable(nwam_ncp_handle_t);
59911767SAnurag.Maskey@Sun.COM 
60011767SAnurag.Maskey@Sun.COM /* Free in-memory representation of ncp */
60111767SAnurag.Maskey@Sun.COM extern void nwam_ncp_free(nwam_ncp_handle_t);
60211767SAnurag.Maskey@Sun.COM 
60311767SAnurag.Maskey@Sun.COM /* Get state of NCP from nwamd */
60411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_state(nwam_ncp_handle_t, nwam_state_t *,
60511767SAnurag.Maskey@Sun.COM 	nwam_aux_state_t *);
60611767SAnurag.Maskey@Sun.COM 
60711767SAnurag.Maskey@Sun.COM /* Get the active priority-group */
60811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncp_get_active_priority_group(int64_t *);
60911767SAnurag.Maskey@Sun.COM 
61011767SAnurag.Maskey@Sun.COM /* Create an ncu or read it from persistent storage */
61111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_create(nwam_ncp_handle_t, const char *,
61211767SAnurag.Maskey@Sun.COM 	nwam_ncu_type_t, nwam_ncu_class_t, nwam_ncu_handle_t *);
61311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_read(nwam_ncp_handle_t, const char *,
61411767SAnurag.Maskey@Sun.COM 	nwam_ncu_type_t, uint64_t, nwam_ncu_handle_t *);
61511767SAnurag.Maskey@Sun.COM 
61611767SAnurag.Maskey@Sun.COM /* Destroy an ncu in persistent storage or free the in-memory representation */
61711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_destroy(nwam_ncu_handle_t, uint64_t);
61811767SAnurag.Maskey@Sun.COM extern void nwam_ncu_free(nwam_ncu_handle_t);
61911767SAnurag.Maskey@Sun.COM 
62011767SAnurag.Maskey@Sun.COM /* make a copy of existing ncu */
62111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_copy(nwam_ncu_handle_t, const char *,
62211767SAnurag.Maskey@Sun.COM 	nwam_ncu_handle_t *);
62311767SAnurag.Maskey@Sun.COM 
62411767SAnurag.Maskey@Sun.COM /* Commit ncu changes to persistent storage */
62511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_commit(nwam_ncu_handle_t, uint64_t);
6267645Sjames.d.carlson@sun.com 
62711767SAnurag.Maskey@Sun.COM /* activate/deactivate an individual NCU (must be part of the active NCP) */
62811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_enable(nwam_ncu_handle_t);
62911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_disable(nwam_ncu_handle_t);
63011767SAnurag.Maskey@Sun.COM 
63111767SAnurag.Maskey@Sun.COM /* Get state of NCU from nwamd */
63211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_state(nwam_ncu_handle_t, nwam_state_t *,
63311767SAnurag.Maskey@Sun.COM 	nwam_aux_state_t *);
63411767SAnurag.Maskey@Sun.COM 
63511767SAnurag.Maskey@Sun.COM /* Get NCU type */
63611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_ncu_type(nwam_ncu_handle_t, nwam_ncu_type_t *);
63711767SAnurag.Maskey@Sun.COM 
63811767SAnurag.Maskey@Sun.COM /* Get NCU class */
63911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_ncu_class(nwam_ncu_handle_t,
64011767SAnurag.Maskey@Sun.COM 	nwam_ncu_class_t *);
64111767SAnurag.Maskey@Sun.COM 
64211767SAnurag.Maskey@Sun.COM /* Validate ncu content */
64311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_validate(nwam_ncu_handle_t, const char **);
64411767SAnurag.Maskey@Sun.COM 
64511767SAnurag.Maskey@Sun.COM /* Walk all properties in in-memory representation of ncu */
64611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_walk_props(nwam_ncu_handle_t,
64711767SAnurag.Maskey@Sun.COM 	int (*)(const char *, nwam_value_t, void *),
64811767SAnurag.Maskey@Sun.COM 	void *, uint64_t, int *);
64911767SAnurag.Maskey@Sun.COM 
65011767SAnurag.Maskey@Sun.COM /* Get/set name of ncu, get parent ncp */
65111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_name(nwam_ncu_handle_t, char **);
65211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_name_to_typed_name(const char *, nwam_ncu_type_t,
65311767SAnurag.Maskey@Sun.COM     char **);
65411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_typed_name_to_name(const char *, nwam_ncu_type_t *,
65511767SAnurag.Maskey@Sun.COM     char **);
65611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_default_proplist(nwam_ncu_type_t,
65711767SAnurag.Maskey@Sun.COM     nwam_ncu_class_t, const char ***, uint_t *);
65811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_ncp(nwam_ncu_handle_t, nwam_ncp_handle_t *);
65911767SAnurag.Maskey@Sun.COM 
66011767SAnurag.Maskey@Sun.COM /* delete/get/set/validate property from/in in-memory representation of ncu */
66111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_delete_prop(nwam_ncu_handle_t,
66211767SAnurag.Maskey@Sun.COM 	const char *);
66311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_prop_value(nwam_ncu_handle_t,
66411767SAnurag.Maskey@Sun.COM 	const char *, nwam_value_t *);
66511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_set_prop_value(nwam_ncu_handle_t,
66611767SAnurag.Maskey@Sun.COM 	const char *, nwam_value_t);
66711767SAnurag.Maskey@Sun.COM 
66811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_validate_prop(nwam_ncu_handle_t, const char *,
66911767SAnurag.Maskey@Sun.COM 	nwam_value_t);
67011767SAnurag.Maskey@Sun.COM 
67111767SAnurag.Maskey@Sun.COM /* Retrieve data type */
67211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_prop_type(const char *, nwam_value_type_t *);
67311767SAnurag.Maskey@Sun.COM /* Retrieve prop description */
67411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_prop_description(const char *, const char **);
67511767SAnurag.Maskey@Sun.COM 
67611767SAnurag.Maskey@Sun.COM /* Get the read-only value from the handle or parent NCP */
67711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_get_read_only(nwam_ncu_handle_t, boolean_t *);
67811767SAnurag.Maskey@Sun.COM 
67911767SAnurag.Maskey@Sun.COM /* Get the read-only value for a particular NCU property */
68011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_prop_read_only(const char *, boolean_t *);
68111767SAnurag.Maskey@Sun.COM 
68211767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */
68311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_prop_multivalued(const char *, boolean_t *);
68411767SAnurag.Maskey@Sun.COM 
68511767SAnurag.Maskey@Sun.COM /* Get whether the NCU has manual activation-mode or not */
68611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_ncu_is_manual(nwam_ncu_handle_t, boolean_t *);
68711767SAnurag.Maskey@Sun.COM 
68811767SAnurag.Maskey@Sun.COM /* Get the flag from the given class for walks */
68911767SAnurag.Maskey@Sun.COM extern uint64_t nwam_ncu_class_to_flag(nwam_ncu_class_t);
69011767SAnurag.Maskey@Sun.COM 
69111767SAnurag.Maskey@Sun.COM /* Get the NCU type from the given class */
69211767SAnurag.Maskey@Sun.COM extern nwam_ncu_type_t nwam_ncu_class_to_type(nwam_ncu_class_t);
6937645Sjames.d.carlson@sun.com 
69411767SAnurag.Maskey@Sun.COM /* ENM functions */
69511767SAnurag.Maskey@Sun.COM /*
69611767SAnurag.Maskey@Sun.COM  * Obtain a specific enm handle, either be creating a new enm
69711767SAnurag.Maskey@Sun.COM  * or reading an existing one from persistent storage.
69811767SAnurag.Maskey@Sun.COM  */
69911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_create(const char *, const char *,
70011767SAnurag.Maskey@Sun.COM 	nwam_enm_handle_t *);
70111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_read(const char *, uint64_t, nwam_enm_handle_t *);
70211767SAnurag.Maskey@Sun.COM 
70311767SAnurag.Maskey@Sun.COM /* Make a copy of existing enm */
70411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_copy(nwam_enm_handle_t, const char *,
70511767SAnurag.Maskey@Sun.COM 	nwam_enm_handle_t *);
70611767SAnurag.Maskey@Sun.COM 
70711767SAnurag.Maskey@Sun.COM /*
70811767SAnurag.Maskey@Sun.COM  * Obtain handles for all existing enms.  Caller-specified callback
70911767SAnurag.Maskey@Sun.COM  * function will be called once for each enm, passing the handle and
71011767SAnurag.Maskey@Sun.COM  * the caller-specified arg.
71111767SAnurag.Maskey@Sun.COM  */
71211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_enms(int (*)(nwam_enm_handle_t, void *), void *,
71311767SAnurag.Maskey@Sun.COM 	uint64_t, int *);
71411767SAnurag.Maskey@Sun.COM 
71511767SAnurag.Maskey@Sun.COM /*
71611767SAnurag.Maskey@Sun.COM  * Commit an enm to persistent storage.  Does not free the handle.
71711767SAnurag.Maskey@Sun.COM  */
71811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_commit(nwam_enm_handle_t, uint64_t);
71911767SAnurag.Maskey@Sun.COM 
72011767SAnurag.Maskey@Sun.COM /*
72111767SAnurag.Maskey@Sun.COM  * Remove an enm from persistent storage.
72211767SAnurag.Maskey@Sun.COM  */
72311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_destroy(nwam_enm_handle_t, uint64_t);
72411767SAnurag.Maskey@Sun.COM 
72511767SAnurag.Maskey@Sun.COM /*
72611767SAnurag.Maskey@Sun.COM  * Free an enm handle
72711767SAnurag.Maskey@Sun.COM  */
72811767SAnurag.Maskey@Sun.COM extern void nwam_enm_free(nwam_enm_handle_t);
7297645Sjames.d.carlson@sun.com 
73011767SAnurag.Maskey@Sun.COM /*
73111767SAnurag.Maskey@Sun.COM  * Validate an enm, or a specific enm property.  If validating
73211767SAnurag.Maskey@Sun.COM  * an entire enm, the invalid property type is returned.
73311767SAnurag.Maskey@Sun.COM  */
73411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_validate(nwam_enm_handle_t, const char **);
73511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_validate_prop(nwam_enm_handle_t, const char *,
73611767SAnurag.Maskey@Sun.COM 	nwam_value_t);
73711767SAnurag.Maskey@Sun.COM 
73811767SAnurag.Maskey@Sun.COM /* Retrieve data type */
73911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_prop_type(const char *, nwam_value_type_t *);
74011767SAnurag.Maskey@Sun.COM /* Retrieve prop description */
74111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_prop_description(const char *, const char **);
74211767SAnurag.Maskey@Sun.COM 
74311767SAnurag.Maskey@Sun.COM /*
74411767SAnurag.Maskey@Sun.COM  * Delete/get/set enm property values.
74511767SAnurag.Maskey@Sun.COM  */
74611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_delete_prop(nwam_enm_handle_t,
74711767SAnurag.Maskey@Sun.COM 	const char *);
74811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_prop_value(nwam_enm_handle_t,
74911767SAnurag.Maskey@Sun.COM 	const char *, nwam_value_t *);
75011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_set_prop_value(nwam_enm_handle_t,
75111767SAnurag.Maskey@Sun.COM 	const char *, nwam_value_t);
75211767SAnurag.Maskey@Sun.COM 
75311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_default_proplist(const char ***, uint_t *);
75411767SAnurag.Maskey@Sun.COM 
75511767SAnurag.Maskey@Sun.COM /* Get the read-only value for a particular ENM property */
75611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_prop_read_only(const char *, boolean_t *);
75711767SAnurag.Maskey@Sun.COM 
75811767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */
75911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_prop_multivalued(const char *, boolean_t *);
76011767SAnurag.Maskey@Sun.COM 
76111767SAnurag.Maskey@Sun.COM /*
76211767SAnurag.Maskey@Sun.COM  * Walk all properties of a specific enm.  For each property, specified
76311767SAnurag.Maskey@Sun.COM  * callback function is called.  Caller is responsible for freeing memory
76411767SAnurag.Maskey@Sun.COM  * allocated for each property.
76511767SAnurag.Maskey@Sun.COM  */
76611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_walk_props(nwam_enm_handle_t,
76711767SAnurag.Maskey@Sun.COM     int (*)(const char *, nwam_value_t, void *),
76811767SAnurag.Maskey@Sun.COM     void *, uint64_t, int *);
7697645Sjames.d.carlson@sun.com 
77011767SAnurag.Maskey@Sun.COM /*
77111767SAnurag.Maskey@Sun.COM  * Get/set the name of an enm.  When getting the name, the library will
77211767SAnurag.Maskey@Sun.COM  * allocate a buffer; the caller is responsible for freeing the memory.
77311767SAnurag.Maskey@Sun.COM  */
77411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_name(nwam_enm_handle_t, char **);
77511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_set_name(nwam_enm_handle_t, const char *);
77611767SAnurag.Maskey@Sun.COM extern boolean_t nwam_enm_can_set_name(nwam_enm_handle_t);
77711767SAnurag.Maskey@Sun.COM 
77811767SAnurag.Maskey@Sun.COM /*
77911767SAnurag.Maskey@Sun.COM  * Start/stop an enm.
78011767SAnurag.Maskey@Sun.COM  */
78111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_enable(nwam_enm_handle_t);
78211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_disable(nwam_enm_handle_t);
78311767SAnurag.Maskey@Sun.COM 
78411767SAnurag.Maskey@Sun.COM /*
78511767SAnurag.Maskey@Sun.COM  * Get state of ENM from nwamd.
78611767SAnurag.Maskey@Sun.COM  */
78711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_get_state(nwam_enm_handle_t, nwam_state_t *,
78811767SAnurag.Maskey@Sun.COM 	nwam_aux_state_t *);
78911767SAnurag.Maskey@Sun.COM 
79011767SAnurag.Maskey@Sun.COM /*
79111767SAnurag.Maskey@Sun.COM  * Get whether the ENM has manual activation-mode or not.
79211767SAnurag.Maskey@Sun.COM  */
79311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_enm_is_manual(nwam_enm_handle_t, boolean_t *);
79411767SAnurag.Maskey@Sun.COM 
79511767SAnurag.Maskey@Sun.COM /*
79611767SAnurag.Maskey@Sun.COM  * Known Wireless LAN (WLAN) info.
79711767SAnurag.Maskey@Sun.COM  */
79811767SAnurag.Maskey@Sun.COM 
79911767SAnurag.Maskey@Sun.COM /* Create a known WLAN */
80011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_create(const char *,
80111767SAnurag.Maskey@Sun.COM     nwam_known_wlan_handle_t *);
80211767SAnurag.Maskey@Sun.COM 
80311767SAnurag.Maskey@Sun.COM /* Read a known WLAN from persistent storage */
80411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_read(const char *, uint64_t,
80511767SAnurag.Maskey@Sun.COM     nwam_known_wlan_handle_t *);
80611767SAnurag.Maskey@Sun.COM 
80711767SAnurag.Maskey@Sun.COM /*
80811767SAnurag.Maskey@Sun.COM  * Destroy a known WLAN in persistent storage or free the in-memory
80911767SAnurag.Maskey@Sun.COM  * representation.
81011767SAnurag.Maskey@Sun.COM  */
81111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_destroy(nwam_known_wlan_handle_t, uint64_t);
81211767SAnurag.Maskey@Sun.COM extern void nwam_known_wlan_free(nwam_known_wlan_handle_t);
81311767SAnurag.Maskey@Sun.COM 
81411767SAnurag.Maskey@Sun.COM /* make a copy of existing known WLAN */
81511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_copy(nwam_known_wlan_handle_t, const char *,
81611767SAnurag.Maskey@Sun.COM     nwam_known_wlan_handle_t *);
81711767SAnurag.Maskey@Sun.COM 
81811767SAnurag.Maskey@Sun.COM /* Commit known WLAN changes to persistent storage */
81911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_commit(nwam_known_wlan_handle_t, uint64_t);
82011767SAnurag.Maskey@Sun.COM 
82111767SAnurag.Maskey@Sun.COM /* Validate known WLAN content */
82211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_validate(nwam_known_wlan_handle_t,
82311767SAnurag.Maskey@Sun.COM     const char **);
82411767SAnurag.Maskey@Sun.COM 
82511767SAnurag.Maskey@Sun.COM /* Walk known WLANs */
82611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_walk_known_wlans
82711767SAnurag.Maskey@Sun.COM 	(int(*)(nwam_known_wlan_handle_t, void *), void *, uint64_t, int *);
82811767SAnurag.Maskey@Sun.COM 
82911767SAnurag.Maskey@Sun.COM /* get/set known WLAN name */
83011767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_name(nwam_known_wlan_handle_t, char **);
83111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_set_name(nwam_known_wlan_handle_t,
83211767SAnurag.Maskey@Sun.COM     const char *);
83311767SAnurag.Maskey@Sun.COM extern boolean_t nwam_known_wlan_can_set_name(nwam_known_wlan_handle_t);
83411767SAnurag.Maskey@Sun.COM 
83511767SAnurag.Maskey@Sun.COM /* walk all properties of an in-memory known WLAN */
83611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_walk_props(nwam_known_wlan_handle_t,
83711767SAnurag.Maskey@Sun.COM     int (*)(const char *, nwam_value_t, void *),
83811767SAnurag.Maskey@Sun.COM     void *, uint64_t, int *);
8397645Sjames.d.carlson@sun.com 
84011767SAnurag.Maskey@Sun.COM /* delete/get/set/validate known WLAN property */
84111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_delete_prop(nwam_known_wlan_handle_t,
84211767SAnurag.Maskey@Sun.COM     const char *);
84311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_prop_value(nwam_known_wlan_handle_t,
84411767SAnurag.Maskey@Sun.COM     const char *, nwam_value_t *);
84511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_set_prop_value(nwam_known_wlan_handle_t,
84611767SAnurag.Maskey@Sun.COM     const char *, nwam_value_t);
84711767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_validate_prop(nwam_known_wlan_handle_t,
84811767SAnurag.Maskey@Sun.COM     const char *, nwam_value_t);
84911767SAnurag.Maskey@Sun.COM 
85011767SAnurag.Maskey@Sun.COM /* Retrieve data type */
85111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_prop_type(const char *,
85211767SAnurag.Maskey@Sun.COM     nwam_value_type_t *);
85311767SAnurag.Maskey@Sun.COM /* Retrieve prop description */
85411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_prop_description(const char *,
85511767SAnurag.Maskey@Sun.COM     const char **);
85611767SAnurag.Maskey@Sun.COM 
85711767SAnurag.Maskey@Sun.COM /* get default known WLAN props */
85811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_get_default_proplist(const char ***,
85911767SAnurag.Maskey@Sun.COM     uint_t *);
86011767SAnurag.Maskey@Sun.COM 
86111767SAnurag.Maskey@Sun.COM /* Whether the property is multi-valued or not */
86211767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_prop_multivalued(const char *, boolean_t *);
86311767SAnurag.Maskey@Sun.COM 
86411767SAnurag.Maskey@Sun.COM /* Add a bssid to the known WLANs */
86511767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_add_to_known_wlans(const char *,
86611767SAnurag.Maskey@Sun.COM     const char *, uint32_t, uint_t, const char *);
86711767SAnurag.Maskey@Sun.COM 
86811767SAnurag.Maskey@Sun.COM /* Remove a bssid from known WLANs */
86911767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_known_wlan_remove_from_known_wlans(const char *,
87011767SAnurag.Maskey@Sun.COM     const char *, const char *);
8717645Sjames.d.carlson@sun.com 
87211767SAnurag.Maskey@Sun.COM /*
87311767SAnurag.Maskey@Sun.COM  * nwam_wlan_t is used for scan/need choice/need key events and by
87411767SAnurag.Maskey@Sun.COM  * nwam_wlan_get_scan_results().  The following fields are valid:
87511767SAnurag.Maskey@Sun.COM  *
87611767SAnurag.Maskey@Sun.COM  * - for scan and need choice event, ESSID, BSSID, signal strength, security
87711767SAnurag.Maskey@Sun.COM  * mode, speed, channel, bsstype, key index, and if we already have a key
87811767SAnurag.Maskey@Sun.COM  * (have_key), if the WLAN is the current selection (selected) and
87911767SAnurag.Maskey@Sun.COM  * if the current WLAN is connected (connected).
88011767SAnurag.Maskey@Sun.COM  * - for need key events, ESSID, security mode, have_key, selected and connected
88111767SAnurag.Maskey@Sun.COM  * values are set.  The rest of the fields are not set since multiple WLANs
88211767SAnurag.Maskey@Sun.COM  * may match the ESSID and have different speeds, channels etc.  If an
88311767SAnurag.Maskey@Sun.COM  * ESSID/BSSID selection is specified, the BSSID will be set also.
88411767SAnurag.Maskey@Sun.COM  *
88511767SAnurag.Maskey@Sun.COM  */
88611767SAnurag.Maskey@Sun.COM typedef struct {
88711767SAnurag.Maskey@Sun.COM 	char nww_essid[NWAM_MAX_NAME_LEN];
88811767SAnurag.Maskey@Sun.COM 	char nww_bssid[NWAM_MAX_NAME_LEN];
88911767SAnurag.Maskey@Sun.COM 	char nww_signal_strength[NWAM_MAX_NAME_LEN];
89011767SAnurag.Maskey@Sun.COM 	uint32_t nww_security_mode; /* a dladm_wlan_secmode_t */
89111767SAnurag.Maskey@Sun.COM 	uint32_t nww_speed; /* a dladm_wlan_speed_t */
89211767SAnurag.Maskey@Sun.COM 	uint32_t nww_channel; /* a dladm_wlan_channel_t */
89311767SAnurag.Maskey@Sun.COM 	uint32_t nww_bsstype; /* a dladm_wlan_bsstype_t */
89411767SAnurag.Maskey@Sun.COM 	uint_t nww_keyindex;
89511767SAnurag.Maskey@Sun.COM 	boolean_t nww_have_key;
89611767SAnurag.Maskey@Sun.COM 	boolean_t nww_selected;
89711767SAnurag.Maskey@Sun.COM 	boolean_t nww_connected;
89811767SAnurag.Maskey@Sun.COM } nwam_wlan_t;
89911767SAnurag.Maskey@Sun.COM 
90011767SAnurag.Maskey@Sun.COM /*
90111767SAnurag.Maskey@Sun.COM  * Active WLAN definitions. Used to scan WLANs/choose a WLAN/set a WLAN key.
90211767SAnurag.Maskey@Sun.COM  */
90311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_scan(const char *);
90411767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_get_scan_results(const char *, uint_t *,
90511767SAnurag.Maskey@Sun.COM     nwam_wlan_t **);
90611767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_select(const char *, const char *, const char *,
90711767SAnurag.Maskey@Sun.COM     uint32_t, boolean_t);
90811767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_wlan_set_key(const char *, const char *, const char *,
90911767SAnurag.Maskey@Sun.COM     uint32_t, uint_t, const char *);
9107645Sjames.d.carlson@sun.com 
91111767SAnurag.Maskey@Sun.COM /*
91211767SAnurag.Maskey@Sun.COM  * Event notification definitions
91311767SAnurag.Maskey@Sun.COM  */
91411767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_NOOP			0
91511767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_INIT			1
91611767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_SHUTDOWN		2
91711767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_OBJECT_ACTION		3
91811767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_OBJECT_STATE		4
91911767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_PRIORITY_GROUP		5
92011767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_INFO			6
92111767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_WLAN_SCAN_REPORT	7
92211767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_WLAN_NEED_CHOICE	8
92311767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_WLAN_NEED_KEY		9
92411767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_WLAN_CONNECTION_REPORT	10
92511767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_IF_ACTION		11
92611767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_IF_STATE		12
92711767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_LINK_ACTION		13
92811767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_TYPE_LINK_STATE		14
92911767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_MAX				NWAM_EVENT_TYPE_LINK_STATE
93011767SAnurag.Maskey@Sun.COM 
93111767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_STATUS_OK			0
93211767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_STATUS_NOT_HANDLED		1
93311767SAnurag.Maskey@Sun.COM 
93411767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_NETWORK_OBJECT_UNDEFINED	0
93511767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_NETWORK_OBJECT_LINK		1
93611767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_NETWORK_OBJECT_INTERFACE	2
93711767SAnurag.Maskey@Sun.COM 
93811767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_REQUEST_UNDEFINED		0
93911767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_REQUEST_WLAN			1
94011767SAnurag.Maskey@Sun.COM #define	NWAM_EVENT_REQUEST_KEY			2
94111767SAnurag.Maskey@Sun.COM 
94211767SAnurag.Maskey@Sun.COM /*
94311767SAnurag.Maskey@Sun.COM  * Actions for nwamd to perform, used in conjunction with
94411767SAnurag.Maskey@Sun.COM  * nwam_request_type_t in nwam_door_arg_t.
94511767SAnurag.Maskey@Sun.COM  * Add string representations to nwam_action_to_string() in libnwam_util.c.
94611767SAnurag.Maskey@Sun.COM  */
94711767SAnurag.Maskey@Sun.COM typedef enum {
94811767SAnurag.Maskey@Sun.COM 	NWAM_ACTION_UNKNOWN = -1,
94911767SAnurag.Maskey@Sun.COM 	NWAM_ACTION_ADD,
95011767SAnurag.Maskey@Sun.COM 	NWAM_ACTION_REMOVE,
95111767SAnurag.Maskey@Sun.COM 	NWAM_ACTION_REFRESH,
95211767SAnurag.Maskey@Sun.COM 	NWAM_ACTION_ENABLE,
95311767SAnurag.Maskey@Sun.COM 	NWAM_ACTION_DISABLE,
95411767SAnurag.Maskey@Sun.COM 	NWAM_ACTION_DESTROY
95511767SAnurag.Maskey@Sun.COM } nwam_action_t;
95611767SAnurag.Maskey@Sun.COM 
95711767SAnurag.Maskey@Sun.COM typedef enum {
95811767SAnurag.Maskey@Sun.COM 	NWAM_OBJECT_TYPE_UNKNOWN = -1,
95911767SAnurag.Maskey@Sun.COM 	NWAM_OBJECT_TYPE_NCP = 0,
96011767SAnurag.Maskey@Sun.COM 	NWAM_OBJECT_TYPE_NCU = 1,
96111767SAnurag.Maskey@Sun.COM 	NWAM_OBJECT_TYPE_LOC = 2,
96211767SAnurag.Maskey@Sun.COM 	NWAM_OBJECT_TYPE_ENM = 3,
96311767SAnurag.Maskey@Sun.COM 	NWAM_OBJECT_TYPE_KNOWN_WLAN = 4
96411767SAnurag.Maskey@Sun.COM } nwam_object_type_t;
96511767SAnurag.Maskey@Sun.COM 
96611767SAnurag.Maskey@Sun.COM typedef struct nwam_event *nwam_event_t;
96711767SAnurag.Maskey@Sun.COM struct nwam_event {
96811767SAnurag.Maskey@Sun.COM 	int nwe_type;
96911767SAnurag.Maskey@Sun.COM 	uint32_t nwe_size;
97011767SAnurag.Maskey@Sun.COM 
97111767SAnurag.Maskey@Sun.COM 	union {
97211767SAnurag.Maskey@Sun.COM 		struct nwam_event_object_action {
97311767SAnurag.Maskey@Sun.COM 			nwam_object_type_t nwe_object_type;
97411767SAnurag.Maskey@Sun.COM 			char nwe_name[NWAM_MAX_NAME_LEN];
97511767SAnurag.Maskey@Sun.COM 			char nwe_parent[NWAM_MAX_NAME_LEN];
97611767SAnurag.Maskey@Sun.COM 			nwam_action_t nwe_action;
97711767SAnurag.Maskey@Sun.COM 		} nwe_object_action;
9787645Sjames.d.carlson@sun.com 
97911767SAnurag.Maskey@Sun.COM 		struct nwam_event_object_state {
98011767SAnurag.Maskey@Sun.COM 			nwam_object_type_t nwe_object_type;
98111767SAnurag.Maskey@Sun.COM 			char nwe_name[NWAM_MAX_NAME_LEN];
98211767SAnurag.Maskey@Sun.COM 			char nwe_parent[NWAM_MAX_NAME_LEN];
98311767SAnurag.Maskey@Sun.COM 			nwam_state_t nwe_state;
98411767SAnurag.Maskey@Sun.COM 			nwam_aux_state_t nwe_aux_state;
98511767SAnurag.Maskey@Sun.COM 		} nwe_object_state;
98611767SAnurag.Maskey@Sun.COM 
98711767SAnurag.Maskey@Sun.COM 		struct nwam_event_priority_group_info {
98811767SAnurag.Maskey@Sun.COM 			int64_t nwe_priority;
98911767SAnurag.Maskey@Sun.COM 		} nwe_priority_group_info;
99011767SAnurag.Maskey@Sun.COM 
99111767SAnurag.Maskey@Sun.COM 		struct nwam_event_info {
99211767SAnurag.Maskey@Sun.COM 			char nwe_message[NWAM_MAX_VALUE_LEN];
99311767SAnurag.Maskey@Sun.COM 		} nwe_info;
99411767SAnurag.Maskey@Sun.COM 
99511767SAnurag.Maskey@Sun.COM 		/*
99611767SAnurag.Maskey@Sun.COM 		 * wlan_info stores both scan results and the single
99711767SAnurag.Maskey@Sun.COM 		 * WLAN we require a key for in the case of _WLAN_NEED_KEY
99811767SAnurag.Maskey@Sun.COM 		 * events.  For _WLAN_CONNECTION_REPORT events, it stores
99911767SAnurag.Maskey@Sun.COM 		 * the WLAN the connection succeeded/failed for, indicating
100011767SAnurag.Maskey@Sun.COM 		 * success/failure using the 'connected' boolean.
100111767SAnurag.Maskey@Sun.COM 		 */
100211767SAnurag.Maskey@Sun.COM 		struct nwam_event_wlan_info {
100311767SAnurag.Maskey@Sun.COM 			char nwe_name[NWAM_MAX_NAME_LEN];
100411767SAnurag.Maskey@Sun.COM 			boolean_t nwe_connected;
100511767SAnurag.Maskey@Sun.COM 			uint16_t nwe_num_wlans;
100611767SAnurag.Maskey@Sun.COM 			nwam_wlan_t nwe_wlans[1];
100711767SAnurag.Maskey@Sun.COM 			/*
100811767SAnurag.Maskey@Sun.COM 			 * space may be allocated by user here for the
100911767SAnurag.Maskey@Sun.COM 			 * number of wlans
101011767SAnurag.Maskey@Sun.COM 			 */
101111767SAnurag.Maskey@Sun.COM 		} nwe_wlan_info;
101211767SAnurag.Maskey@Sun.COM 
101311767SAnurag.Maskey@Sun.COM 		struct nwam_event_if_action {
101411767SAnurag.Maskey@Sun.COM 			char nwe_name[NWAM_MAX_NAME_LEN];
101511767SAnurag.Maskey@Sun.COM 			nwam_action_t nwe_action;
101611767SAnurag.Maskey@Sun.COM 		} nwe_if_action;
10177645Sjames.d.carlson@sun.com 
101811767SAnurag.Maskey@Sun.COM 		struct nwam_event_if_state {
101911767SAnurag.Maskey@Sun.COM 			char nwe_name[NWAM_MAX_NAME_LEN];
102011767SAnurag.Maskey@Sun.COM 			uint32_t nwe_flags;
102111767SAnurag.Maskey@Sun.COM 			uint32_t nwe_addr_valid; /* boolean */
102211767SAnurag.Maskey@Sun.COM 			uint32_t nwe_addr_added; /* boolean */
102311767SAnurag.Maskey@Sun.COM 			struct sockaddr_storage nwe_addr;
1024*12576SAnurag.Maskey@Oracle.COM 			struct sockaddr_storage nwe_netmask;
102511767SAnurag.Maskey@Sun.COM 		} nwe_if_state;
102611767SAnurag.Maskey@Sun.COM 
102711767SAnurag.Maskey@Sun.COM 		struct nwam_event_link_state {
102811767SAnurag.Maskey@Sun.COM 			char nwe_name[NWAM_MAX_NAME_LEN];
102911767SAnurag.Maskey@Sun.COM 			boolean_t nwe_link_up;
103011767SAnurag.Maskey@Sun.COM 			/* link_state_t from sys/mac.h */
103111767SAnurag.Maskey@Sun.COM 		} nwe_link_state;
103211767SAnurag.Maskey@Sun.COM 
103311767SAnurag.Maskey@Sun.COM 		struct nwam_event_link_action {
103411767SAnurag.Maskey@Sun.COM 			char nwe_name[NWAM_MAX_NAME_LEN];
103511767SAnurag.Maskey@Sun.COM 			nwam_action_t nwe_action;
103611767SAnurag.Maskey@Sun.COM 		} nwe_link_action;
103711767SAnurag.Maskey@Sun.COM 	} nwe_data;
103811767SAnurag.Maskey@Sun.COM };
103911767SAnurag.Maskey@Sun.COM 
104011767SAnurag.Maskey@Sun.COM /* NWAM client functions, used to register/unregister and receive events */
104111767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_events_init(void);
104211767SAnurag.Maskey@Sun.COM extern void nwam_events_fini(void);
104311767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_event_wait(nwam_event_t *);
104411767SAnurag.Maskey@Sun.COM extern void nwam_event_free(nwam_event_t);
104511767SAnurag.Maskey@Sun.COM 
104611767SAnurag.Maskey@Sun.COM /* Event-related string conversion functions */
104711767SAnurag.Maskey@Sun.COM extern const char *nwam_action_to_string(nwam_action_t);
104811767SAnurag.Maskey@Sun.COM extern const char *nwam_event_type_to_string(int);
104911767SAnurag.Maskey@Sun.COM extern const char *nwam_state_to_string(nwam_state_t);
105011767SAnurag.Maskey@Sun.COM extern const char *nwam_aux_state_to_string(nwam_aux_state_t);
105111767SAnurag.Maskey@Sun.COM 
105211767SAnurag.Maskey@Sun.COM extern const char *nwam_object_type_to_string(nwam_object_type_t);
105311767SAnurag.Maskey@Sun.COM extern nwam_object_type_t nwam_string_to_object_type(const char *);
105411767SAnurag.Maskey@Sun.COM 
105511767SAnurag.Maskey@Sun.COM /* Utility strtok_r-like function */
105611767SAnurag.Maskey@Sun.COM extern char *nwam_tokenize_by_unescaped_delim(char *, char, char **);
105711767SAnurag.Maskey@Sun.COM 
105811767SAnurag.Maskey@Sun.COM #ifdef	__cplusplus
10597645Sjames.d.carlson@sun.com }
10607645Sjames.d.carlson@sun.com #endif
10617645Sjames.d.carlson@sun.com 
106211767SAnurag.Maskey@Sun.COM #endif	/* _LIBNWAM_H */
1063