#ifndef _LIBNWAM_H
#define _LIBNWAM_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bsm/adt.h>
#include <net/if.h>
#include <inet/ip.h>
#include <inet/ip6.h>
#include <sys/types.h>
#include <sys/socket.h>
#define NWAM_FMRI "svc:/network/physical:nwam"
#define NWAM_PG "nwamd"
#define NWAM_PROP_ACTIVE_NCP "active_ncp"
#define NWAM_FLAG_BLOCKING 0x00000001
#define NWAM_FLAG_CREATE 0x00000002
#define NWAM_FLAG_DO_NOT_FREE 0x00000004
#define NWAM_FLAG_ENTITY_ENABLE 0x00000008
#define NWAM_FLAG_ENTITY_KNOWN_WLAN 0x00000010
#define NWAM_FLAG_NCU_TYPE_LINK 0x00000001ULL << 32
#define NWAM_FLAG_NCU_TYPE_INTERFACE 0x00000002ULL << 32
#define NWAM_FLAG_NCU_TYPE_ALL (NWAM_FLAG_NCU_TYPE_LINK | \
NWAM_FLAG_NCU_TYPE_INTERFACE)
#define NWAM_FLAG_NCU_CLASS_PHYS 0x00000100ULL << 32
#define NWAM_FLAG_NCU_CLASS_IP 0x00010000ULL << 32
#define NWAM_FLAG_NCU_CLASS_ALL_LINK NWAM_FLAG_NCU_CLASS_PHYS
#define NWAM_FLAG_NCU_CLASS_ALL_INTERFACE NWAM_FLAG_NCU_CLASS_IP
#define NWAM_FLAG_NCU_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL_INTERFACE | \
NWAM_FLAG_NCU_CLASS_ALL_LINK)
#define NWAM_FLAG_NCU_TYPE_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL | \
NWAM_FLAG_NCU_TYPE_ALL)
#define NWAM_FLAG_ACTIVATION_MODE_MANUAL 0x000000001ULL << 32
#define NWAM_FLAG_ACTIVATION_MODE_SYSTEM 0x000000002ULL << 32
#define NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED 0x000000004ULL << 32
#define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY 0x000000008ULL << 32
#define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL 0x000000010ULL << 32
#define NWAM_FLAG_ACTIVATION_MODE_ALL (NWAM_FLAG_ACTIVATION_MODE_MANUAL |\
NWAM_FLAG_ACTIVATION_MODE_SYSTEM |\
NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED |\
NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY |\
NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL)
#define NWAM_FLAG_KNOWN_WLAN_WALK_PRIORITY_ORDER 0x000010000ULL << 32
#define NWAM_FLAG_KNOWN_WLAN_NO_COLLISION_CHECK 0x000020000ULL << 32
typedef enum {
NWAM_SUCCESS,
NWAM_LIST_END,
NWAM_INVALID_HANDLE,
NWAM_HANDLE_UNBOUND,
NWAM_INVALID_ARG,
NWAM_PERMISSION_DENIED,
NWAM_NO_MEMORY,
NWAM_ENTITY_EXISTS,
NWAM_ENTITY_IN_USE,
NWAM_ENTITY_COMMITTED,
NWAM_ENTITY_NOT_FOUND,
NWAM_ENTITY_TYPE_MISMATCH,
NWAM_ENTITY_INVALID,
NWAM_ENTITY_INVALID_MEMBER,
NWAM_ENTITY_INVALID_STATE,
NWAM_ENTITY_INVALID_VALUE,
NWAM_ENTITY_MISSING_MEMBER,
NWAM_ENTITY_NO_VALUE,
NWAM_ENTITY_MULTIPLE_VALUES,
NWAM_ENTITY_READ_ONLY,
NWAM_ENTITY_NOT_DESTROYABLE,
NWAM_ENTITY_NOT_MANUAL,
NWAM_WALK_HALTED,
NWAM_ERROR_BIND,
NWAM_ERROR_BACKEND_INIT,
NWAM_ERROR_INTERNAL
} nwam_error_t;
#define NWAM_MAX_NAME_LEN 128
#define NWAM_MAX_VALUE_LEN 256
#define NWAM_MAX_FMRI_LEN NWAM_MAX_VALUE_LEN
#define NWAM_MAX_NUM_VALUES 32
#define NWAM_MAX_NUM_PROPERTIES 32
typedef enum {
NWAM_VALUE_TYPE_BOOLEAN,
NWAM_VALUE_TYPE_INT64,
NWAM_VALUE_TYPE_UINT64,
NWAM_VALUE_TYPE_STRING,
NWAM_VALUE_TYPE_UNKNOWN
} nwam_value_type_t;
struct nwam_value;
typedef struct nwam_value *nwam_value_t;
extern nwam_error_t nwam_value_create_boolean(boolean_t, nwam_value_t *);
extern nwam_error_t nwam_value_create_boolean_array(boolean_t *, uint_t,
nwam_value_t *);
extern nwam_error_t nwam_value_create_int64(int64_t, nwam_value_t *);
extern nwam_error_t nwam_value_create_int64_array(int64_t *, uint_t,
nwam_value_t *);
extern nwam_error_t nwam_value_create_uint64(uint64_t, nwam_value_t *);
extern nwam_error_t nwam_value_create_uint64_array(uint64_t *, uint_t,
nwam_value_t *);
extern nwam_error_t nwam_value_create_string(char *, nwam_value_t *);
extern nwam_error_t nwam_value_create_string_array(char **, uint_t,
nwam_value_t *);
extern nwam_error_t nwam_value_get_boolean(nwam_value_t, boolean_t *);
extern nwam_error_t nwam_value_get_boolean_array(nwam_value_t, boolean_t **,
uint_t *);
extern nwam_error_t nwam_value_get_int64(nwam_value_t, int64_t *);
extern nwam_error_t nwam_value_get_int64_array(nwam_value_t, int64_t **,
uint_t *);
extern nwam_error_t nwam_value_get_uint64(nwam_value_t, uint64_t *);
extern nwam_error_t nwam_value_get_uint64_array(nwam_value_t, uint64_t **,
uint_t *);
extern nwam_error_t nwam_value_get_string(nwam_value_t, char **);
extern nwam_error_t nwam_value_get_string_array(nwam_value_t, char ***,
uint_t *);
extern nwam_error_t nwam_value_get_type(nwam_value_t, nwam_value_type_t *);
extern nwam_error_t nwam_value_get_numvalues(nwam_value_t, uint_t *);
extern void nwam_value_free(nwam_value_t);
extern nwam_error_t nwam_value_copy(nwam_value_t, nwam_value_t *);
extern nwam_error_t nwam_uint64_get_value_string(const char *, uint64_t,
const char **);
extern nwam_error_t nwam_value_string_get_uint64(const char *, const char *,
uint64_t *);
extern const char *nwam_strerror(nwam_error_t);
typedef enum {
NWAM_STATE_UNINITIALIZED = 0x0,
NWAM_STATE_INITIALIZED = 0x1,
NWAM_STATE_OFFLINE = 0x2,
NWAM_STATE_OFFLINE_TO_ONLINE = 0x4,
NWAM_STATE_ONLINE_TO_OFFLINE = 0x8,
NWAM_STATE_ONLINE = 0x10,
NWAM_STATE_MAINTENANCE = 0x20,
NWAM_STATE_DEGRADED = 0x40,
NWAM_STATE_DISABLED = 0x80
} nwam_state_t;
#define NWAM_STATE_ANY (NWAM_STATE_UNINITIALIZED | \
NWAM_STATE_INITIALIZED | \
NWAM_STATE_OFFLINE | \
NWAM_STATE_OFFLINE_TO_ONLINE | \
NWAM_STATE_ONLINE_TO_OFFLINE | \
NWAM_STATE_ONLINE | \
NWAM_STATE_MAINTENANCE | \
NWAM_STATE_DEGRADED | \
NWAM_STATE_DISABLED)
typedef enum {
NWAM_AUX_STATE_UNINITIALIZED,
NWAM_AUX_STATE_INITIALIZED,
NWAM_AUX_STATE_CONDITIONS_NOT_MET,
NWAM_AUX_STATE_MANUAL_DISABLE,
NWAM_AUX_STATE_METHOD_FAILED,
NWAM_AUX_STATE_METHOD_MISSING,
NWAM_AUX_STATE_METHOD_RUNNING,
NWAM_AUX_STATE_INVALID_CONFIG,
NWAM_AUX_STATE_ACTIVE,
NWAM_AUX_STATE_LINK_WIFI_SCANNING,
NWAM_AUX_STATE_LINK_WIFI_NEED_SELECTION,
NWAM_AUX_STATE_LINK_WIFI_NEED_KEY,
NWAM_AUX_STATE_LINK_WIFI_CONNECTING,
NWAM_AUX_STATE_IF_WAITING_FOR_ADDR,
NWAM_AUX_STATE_IF_DHCP_TIMED_OUT,
NWAM_AUX_STATE_IF_DUPLICATE_ADDR,
NWAM_AUX_STATE_UP,
NWAM_AUX_STATE_DOWN,
NWAM_AUX_STATE_NOT_FOUND
} nwam_aux_state_t;
typedef enum {
NWAM_ACTIVATION_MODE_MANUAL,
NWAM_ACTIVATION_MODE_SYSTEM,
NWAM_ACTIVATION_MODE_CONDITIONAL_ANY,
NWAM_ACTIVATION_MODE_CONDITIONAL_ALL,
NWAM_ACTIVATION_MODE_PRIORITIZED
} nwam_activation_mode_t;
typedef enum {
NWAM_CONDITION_IS,
NWAM_CONDITION_IS_NOT,
NWAM_CONDITION_IS_IN_RANGE,
NWAM_CONDITION_IS_NOT_IN_RANGE,
NWAM_CONDITION_CONTAINS,
NWAM_CONDITION_DOES_NOT_CONTAIN
} nwam_condition_t;
typedef enum {
NWAM_CONDITION_OBJECT_TYPE_NCP,
NWAM_CONDITION_OBJECT_TYPE_NCU,
NWAM_CONDITION_OBJECT_TYPE_ENM,
NWAM_CONDITION_OBJECT_TYPE_LOC,
NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS,
NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN,
NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN,
NWAM_CONDITION_OBJECT_TYPE_ESSID,
NWAM_CONDITION_OBJECT_TYPE_BSSID
} nwam_condition_object_type_t;
extern nwam_error_t nwam_condition_to_condition_string(
nwam_condition_object_type_t, nwam_condition_t, const char *, char **);
extern nwam_error_t nwam_condition_string_to_condition(const char *,
nwam_condition_object_type_t *, nwam_condition_t *, char **);
extern nwam_error_t nwam_condition_rate(nwam_condition_object_type_t,
nwam_condition_t, uint64_t *);
#define NWAM_LOC_NAME_AUTOMATIC "Automatic"
#define NWAM_LOC_NAME_NO_NET "NoNet"
#define NWAM_LOC_NAME_LEGACY "Legacy"
#define NWAM_LOC_NAME_PRE_DEFINED(name) \
(strcasecmp(name, NWAM_LOC_NAME_AUTOMATIC) == 0 || \
strcasecmp(name, NWAM_LOC_NAME_NO_NET) == 0 || \
strcasecmp(name, NWAM_LOC_NAME_LEGACY) == 0)
struct nwam_handle;
typedef struct nwam_handle *nwam_loc_handle_t;
typedef enum {
NWAM_NAMESERVICES_DNS,
NWAM_NAMESERVICES_FILES,
NWAM_NAMESERVICES_NIS,
NWAM_NAMESERVICES_LDAP
} nwam_nameservices_t;
typedef enum {
NWAM_CONFIGSRC_MANUAL,
NWAM_CONFIGSRC_DHCP
} nwam_configsrc_t;
#define NWAM_LOC_PROP_ACTIVATION_MODE "activation-mode"
#define NWAM_LOC_PROP_CONDITIONS "conditions"
#define NWAM_LOC_PROP_ENABLED "enabled"
#define NWAM_LOC_PROP_NAMESERVICES "nameservices"
#define NWAM_LOC_PROP_NAMESERVICES_CONFIG_FILE "nameservices-config-file"
#define NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC "dns-nameservice-configsrc"
#define NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN "dns-nameservice-domain"
#define NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS "dns-nameservice-servers"
#define NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH "dns-nameservice-search"
#define NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC "nis-nameservice-configsrc"
#define NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS "nis-nameservice-servers"
#define NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC "ldap-nameservice-configsrc"
#define NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS "ldap-nameservice-servers"
#define NWAM_LOC_PROP_DEFAULT_DOMAIN "default-domain"
#define NWAM_LOC_PROP_NFSV4_DOMAIN "nfsv4-domain"
#define NWAM_LOC_PROP_IPFILTER_CONFIG_FILE "ipfilter-config-file"
#define NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE "ipfilter-v6-config-file"
#define NWAM_LOC_PROP_IPNAT_CONFIG_FILE "ipnat-config-file"
#define NWAM_LOC_PROP_IPPOOL_CONFIG_FILE "ippool-config-file"
#define NWAM_LOC_PROP_IKE_CONFIG_FILE "ike-config-file"
#define NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE "ipsecpolicy-config-file"
#define NWAM_NCP_NAME_AUTOMATIC "Automatic"
#define NWAM_NCP_NAME_USER "User"
#define NWAM_NCP_AUTOMATIC(name) \
(strcasecmp(name, NWAM_NCP_NAME_AUTOMATIC) == 0)
typedef struct nwam_handle *nwam_ncp_handle_t;
typedef struct nwam_handle *nwam_ncu_handle_t;
typedef enum {
NWAM_NCU_TYPE_UNKNOWN = -1,
NWAM_NCU_TYPE_LINK,
NWAM_NCU_TYPE_INTERFACE,
NWAM_NCU_TYPE_ANY
} nwam_ncu_type_t;
typedef enum {
NWAM_NCU_CLASS_UNKNOWN = -1,
NWAM_NCU_CLASS_PHYS,
NWAM_NCU_CLASS_IP,
NWAM_NCU_CLASS_ANY
} nwam_ncu_class_t;
typedef enum {
NWAM_ADDRSRC_DHCP,
NWAM_ADDRSRC_AUTOCONF,
NWAM_ADDRSRC_STATIC
} nwam_addrsrc_t;
typedef enum {
NWAM_PRIORITY_MODE_EXCLUSIVE,
NWAM_PRIORITY_MODE_SHARED,
NWAM_PRIORITY_MODE_ALL
} nwam_priority_mode_t;
#define NWAM_NCU_PROP_TYPE "type"
#define NWAM_NCU_PROP_CLASS "class"
#define NWAM_NCU_PROP_PARENT_NCP "parent"
#define NWAM_NCU_PROP_ACTIVATION_MODE "activation-mode"
#define NWAM_NCU_PROP_ENABLED "enabled"
#define NWAM_NCU_PROP_PRIORITY_GROUP "priority-group"
#define NWAM_NCU_PROP_PRIORITY_MODE "priority-mode"
#define NWAM_NCU_PROP_LINK_MAC_ADDR "link-mac-addr"
#define NWAM_NCU_PROP_LINK_AUTOPUSH "link-autopush"
#define NWAM_NCU_PROP_LINK_MTU "link-mtu"
#define NWAM_NCU_PROP_IP_VERSION "ip-version"
#define NWAM_NCU_PROP_IPV4_ADDRSRC "ipv4-addrsrc"
#define NWAM_NCU_PROP_IPV4_ADDR "ipv4-addr"
#define NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE "ipv4-default-route"
#define NWAM_NCU_PROP_IPV6_ADDRSRC "ipv6-addrsrc"
#define NWAM_NCU_PROP_IPV6_ADDR "ipv6-addr"
#define NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE "ipv6-default-route"
#define NWAM_NCU_PROP_IP_PRIMARY "ip-primary"
#define NWAM_NCU_PROP_IP_REQHOST "ip-reqhost"
#define NWAM_NCU_PROP_SETONCE(prop) \
(strcmp(prop, NWAM_NCU_PROP_TYPE) == 0 || \
strcmp(prop, NWAM_NCU_PROP_CLASS) == 0 || \
strcmp(prop, NWAM_NCU_PROP_PARENT_NCP) == 0)
typedef struct nwam_handle *nwam_enm_handle_t;
#define NWAM_ENM_PROP_ACTIVATION_MODE "activation-mode"
#define NWAM_ENM_PROP_CONDITIONS "conditions"
#define NWAM_ENM_PROP_ENABLED "enabled"
#define NWAM_ENM_PROP_FMRI "fmri"
#define NWAM_ENM_PROP_START "start"
#define NWAM_ENM_PROP_STOP "stop"
typedef struct nwam_handle *nwam_known_wlan_handle_t;
#define NWAM_KNOWN_WLAN_PROP_BSSIDS "bssids"
#define NWAM_KNOWN_WLAN_PROP_PRIORITY "priority"
#define NWAM_KNOWN_WLAN_PROP_KEYNAME "keyname"
#define NWAM_KNOWN_WLAN_PROP_KEYSLOT "keyslot"
#define NWAM_KNOWN_WLAN_PROP_SECURITY_MODE "security-mode"
extern nwam_error_t nwam_loc_create(const char *, nwam_loc_handle_t *);
extern nwam_error_t nwam_loc_copy(nwam_loc_handle_t, const char *,
nwam_loc_handle_t *);
extern nwam_error_t nwam_loc_read(const char *, uint64_t,
nwam_loc_handle_t *);
extern nwam_error_t nwam_loc_validate(nwam_loc_handle_t, const char **);
extern nwam_error_t nwam_loc_commit(nwam_loc_handle_t, uint64_t);
extern nwam_error_t nwam_loc_destroy(nwam_loc_handle_t, uint64_t);
extern void nwam_loc_free(nwam_loc_handle_t);
extern nwam_error_t nwam_walk_locs(int (*)(nwam_loc_handle_t, void *), void *,
uint64_t, int *);
extern nwam_error_t nwam_loc_get_name(nwam_loc_handle_t, char **);
extern nwam_error_t nwam_loc_set_name(nwam_loc_handle_t, const char *);
extern boolean_t nwam_loc_can_set_name(nwam_loc_handle_t);
extern nwam_error_t nwam_loc_enable(nwam_loc_handle_t);
extern nwam_error_t nwam_loc_disable(nwam_loc_handle_t);
extern nwam_error_t nwam_loc_walk_props(nwam_loc_handle_t,
int (*)(const char *, nwam_value_t, void *),
void *, uint64_t, int *);
extern nwam_error_t nwam_loc_delete_prop(nwam_loc_handle_t,
const char *);
extern nwam_error_t nwam_loc_get_prop_value(nwam_loc_handle_t,
const char *, nwam_value_t *);
extern nwam_error_t nwam_loc_set_prop_value(nwam_loc_handle_t,
const char *, nwam_value_t);
extern nwam_error_t nwam_loc_validate_prop(nwam_loc_handle_t, const char *,
nwam_value_t);
extern nwam_error_t nwam_loc_prop_read_only(const char *, boolean_t *);
extern nwam_error_t nwam_loc_prop_multivalued(const char *, boolean_t *);
extern nwam_error_t nwam_loc_get_prop_type(const char *, nwam_value_type_t *);
extern nwam_error_t nwam_loc_get_prop_description(const char *, const char **);
extern nwam_error_t nwam_loc_get_default_proplist(const char ***, uint_t *);
extern nwam_error_t nwam_loc_get_state(nwam_loc_handle_t, nwam_state_t *,
nwam_aux_state_t *);
extern nwam_error_t nwam_loc_is_manual(nwam_loc_handle_t, boolean_t *);
extern nwam_error_t nwam_ncp_create(const char *, uint64_t,
nwam_ncp_handle_t *);
extern nwam_error_t nwam_ncp_read(const char *, uint64_t, nwam_ncp_handle_t *);
extern nwam_error_t nwam_ncp_copy(nwam_ncp_handle_t, const char *,
nwam_ncp_handle_t *);
extern nwam_error_t nwam_walk_ncps(int (*)(nwam_ncp_handle_t, void *),
void *, uint64_t, int *);
extern nwam_error_t nwam_ncp_get_name(nwam_ncp_handle_t, char **);
extern nwam_error_t nwam_ncp_get_read_only(nwam_ncp_handle_t, boolean_t *);
extern nwam_error_t nwam_ncp_destroy(nwam_ncp_handle_t, uint64_t);
extern nwam_error_t nwam_ncp_walk_ncus(nwam_ncp_handle_t,
int(*)(nwam_ncu_handle_t, void *), void *, uint64_t, int *);
extern nwam_error_t nwam_ncp_enable(nwam_ncp_handle_t);
extern void nwam_ncp_free(nwam_ncp_handle_t);
extern nwam_error_t nwam_ncp_get_state(nwam_ncp_handle_t, nwam_state_t *,
nwam_aux_state_t *);
extern nwam_error_t nwam_ncp_get_active_priority_group(int64_t *);
extern nwam_error_t nwam_ncu_create(nwam_ncp_handle_t, const char *,
nwam_ncu_type_t, nwam_ncu_class_t, nwam_ncu_handle_t *);
extern nwam_error_t nwam_ncu_read(nwam_ncp_handle_t, const char *,
nwam_ncu_type_t, uint64_t, nwam_ncu_handle_t *);
extern nwam_error_t nwam_ncu_destroy(nwam_ncu_handle_t, uint64_t);
extern void nwam_ncu_free(nwam_ncu_handle_t);
extern nwam_error_t nwam_ncu_copy(nwam_ncu_handle_t, const char *,
nwam_ncu_handle_t *);
extern nwam_error_t nwam_ncu_commit(nwam_ncu_handle_t, uint64_t);
extern nwam_error_t nwam_ncu_enable(nwam_ncu_handle_t);
extern nwam_error_t nwam_ncu_disable(nwam_ncu_handle_t);
extern nwam_error_t nwam_ncu_get_state(nwam_ncu_handle_t, nwam_state_t *,
nwam_aux_state_t *);
extern nwam_error_t nwam_ncu_get_ncu_type(nwam_ncu_handle_t, nwam_ncu_type_t *);
extern nwam_error_t nwam_ncu_get_ncu_class(nwam_ncu_handle_t,
nwam_ncu_class_t *);
extern nwam_error_t nwam_ncu_validate(nwam_ncu_handle_t, const char **);
extern nwam_error_t nwam_ncu_walk_props(nwam_ncu_handle_t,
int (*)(const char *, nwam_value_t, void *),
void *, uint64_t, int *);
extern nwam_error_t nwam_ncu_get_name(nwam_ncu_handle_t, char **);
extern nwam_error_t nwam_ncu_name_to_typed_name(const char *, nwam_ncu_type_t,
char **);
extern nwam_error_t nwam_ncu_typed_name_to_name(const char *, nwam_ncu_type_t *,
char **);
extern nwam_error_t nwam_ncu_get_default_proplist(nwam_ncu_type_t,
nwam_ncu_class_t, const char ***, uint_t *);
extern nwam_error_t nwam_ncu_get_ncp(nwam_ncu_handle_t, nwam_ncp_handle_t *);
extern nwam_error_t nwam_ncu_delete_prop(nwam_ncu_handle_t,
const char *);
extern nwam_error_t nwam_ncu_get_prop_value(nwam_ncu_handle_t,
const char *, nwam_value_t *);
extern nwam_error_t nwam_ncu_set_prop_value(nwam_ncu_handle_t,
const char *, nwam_value_t);
extern nwam_error_t nwam_ncu_validate_prop(nwam_ncu_handle_t, const char *,
nwam_value_t);
extern nwam_error_t nwam_ncu_get_prop_type(const char *, nwam_value_type_t *);
extern nwam_error_t nwam_ncu_get_prop_description(const char *, const char **);
extern nwam_error_t nwam_ncu_get_read_only(nwam_ncu_handle_t, boolean_t *);
extern nwam_error_t nwam_ncu_prop_read_only(const char *, boolean_t *);
extern nwam_error_t nwam_ncu_prop_multivalued(const char *, boolean_t *);
extern nwam_error_t nwam_ncu_is_manual(nwam_ncu_handle_t, boolean_t *);
extern uint64_t nwam_ncu_class_to_flag(nwam_ncu_class_t);
extern nwam_ncu_type_t nwam_ncu_class_to_type(nwam_ncu_class_t);
extern nwam_error_t nwam_enm_create(const char *, const char *,
nwam_enm_handle_t *);
extern nwam_error_t nwam_enm_read(const char *, uint64_t, nwam_enm_handle_t *);
extern nwam_error_t nwam_enm_copy(nwam_enm_handle_t, const char *,
nwam_enm_handle_t *);
extern nwam_error_t nwam_walk_enms(int (*)(nwam_enm_handle_t, void *), void *,
uint64_t, int *);
extern nwam_error_t nwam_enm_commit(nwam_enm_handle_t, uint64_t);
extern nwam_error_t nwam_enm_destroy(nwam_enm_handle_t, uint64_t);
extern void nwam_enm_free(nwam_enm_handle_t);
extern nwam_error_t nwam_enm_validate(nwam_enm_handle_t, const char **);
extern nwam_error_t nwam_enm_validate_prop(nwam_enm_handle_t, const char *,
nwam_value_t);
extern nwam_error_t nwam_enm_get_prop_type(const char *, nwam_value_type_t *);
extern nwam_error_t nwam_enm_get_prop_description(const char *, const char **);
extern nwam_error_t nwam_enm_delete_prop(nwam_enm_handle_t,
const char *);
extern nwam_error_t nwam_enm_get_prop_value(nwam_enm_handle_t,
const char *, nwam_value_t *);
extern nwam_error_t nwam_enm_set_prop_value(nwam_enm_handle_t,
const char *, nwam_value_t);
extern nwam_error_t nwam_enm_get_default_proplist(const char ***, uint_t *);
extern nwam_error_t nwam_enm_prop_read_only(const char *, boolean_t *);
extern nwam_error_t nwam_enm_prop_multivalued(const char *, boolean_t *);
extern nwam_error_t nwam_enm_walk_props(nwam_enm_handle_t,
int (*)(const char *, nwam_value_t, void *),
void *, uint64_t, int *);
extern nwam_error_t nwam_enm_get_name(nwam_enm_handle_t, char **);
extern nwam_error_t nwam_enm_set_name(nwam_enm_handle_t, const char *);
extern boolean_t nwam_enm_can_set_name(nwam_enm_handle_t);
extern nwam_error_t nwam_enm_enable(nwam_enm_handle_t);
extern nwam_error_t nwam_enm_disable(nwam_enm_handle_t);
extern nwam_error_t nwam_enm_get_state(nwam_enm_handle_t, nwam_state_t *,
nwam_aux_state_t *);
extern nwam_error_t nwam_enm_is_manual(nwam_enm_handle_t, boolean_t *);
extern nwam_error_t nwam_known_wlan_create(const char *,
nwam_known_wlan_handle_t *);
extern nwam_error_t nwam_known_wlan_read(const char *, uint64_t,
nwam_known_wlan_handle_t *);
extern nwam_error_t nwam_known_wlan_destroy(nwam_known_wlan_handle_t, uint64_t);
extern void nwam_known_wlan_free(nwam_known_wlan_handle_t);
extern nwam_error_t nwam_known_wlan_copy(nwam_known_wlan_handle_t, const char *,
nwam_known_wlan_handle_t *);
extern nwam_error_t nwam_known_wlan_commit(nwam_known_wlan_handle_t, uint64_t);
extern nwam_error_t nwam_known_wlan_validate(nwam_known_wlan_handle_t,
const char **);
extern nwam_error_t nwam_walk_known_wlans
(int(*)(nwam_known_wlan_handle_t, void *), void *, uint64_t, int *);
extern nwam_error_t nwam_known_wlan_get_name(nwam_known_wlan_handle_t, char **);
extern nwam_error_t nwam_known_wlan_set_name(nwam_known_wlan_handle_t,
const char *);
extern boolean_t nwam_known_wlan_can_set_name(nwam_known_wlan_handle_t);
extern nwam_error_t nwam_known_wlan_walk_props(nwam_known_wlan_handle_t,
int (*)(const char *, nwam_value_t, void *),
void *, uint64_t, int *);
extern nwam_error_t nwam_known_wlan_delete_prop(nwam_known_wlan_handle_t,
const char *);
extern nwam_error_t nwam_known_wlan_get_prop_value(nwam_known_wlan_handle_t,
const char *, nwam_value_t *);
extern nwam_error_t nwam_known_wlan_set_prop_value(nwam_known_wlan_handle_t,
const char *, nwam_value_t);
extern nwam_error_t nwam_known_wlan_validate_prop(nwam_known_wlan_handle_t,
const char *, nwam_value_t);
extern nwam_error_t nwam_known_wlan_get_prop_type(const char *,
nwam_value_type_t *);
extern nwam_error_t nwam_known_wlan_get_prop_description(const char *,
const char **);
extern nwam_error_t nwam_known_wlan_get_default_proplist(const char ***,
uint_t *);
extern nwam_error_t nwam_known_wlan_prop_multivalued(const char *, boolean_t *);
extern nwam_error_t nwam_known_wlan_add_to_known_wlans(const char *,
const char *, uint32_t, uint_t, const char *);
extern nwam_error_t nwam_known_wlan_remove_from_known_wlans(const char *,
const char *, const char *);
typedef struct {
char nww_essid[NWAM_MAX_NAME_LEN];
char nww_bssid[NWAM_MAX_NAME_LEN];
char nww_signal_strength[NWAM_MAX_NAME_LEN];
uint32_t nww_security_mode;
uint32_t nww_speed;
uint32_t nww_channel;
uint32_t nww_bsstype;
uint_t nww_keyindex;
boolean_t nww_have_key;
boolean_t nww_selected;
boolean_t nww_connected;
} nwam_wlan_t;
extern nwam_error_t nwam_wlan_scan(const char *);
extern nwam_error_t nwam_wlan_get_scan_results(const char *, uint_t *,
nwam_wlan_t **);
extern nwam_error_t nwam_wlan_select(const char *, const char *, const char *,
uint32_t, boolean_t);
extern nwam_error_t nwam_wlan_set_key(const char *, const char *, const char *,
uint32_t, uint_t, const char *);
#define NWAM_EVENT_TYPE_NOOP 0
#define NWAM_EVENT_TYPE_INIT 1
#define NWAM_EVENT_TYPE_SHUTDOWN 2
#define NWAM_EVENT_TYPE_OBJECT_ACTION 3
#define NWAM_EVENT_TYPE_OBJECT_STATE 4
#define NWAM_EVENT_TYPE_PRIORITY_GROUP 5
#define NWAM_EVENT_TYPE_INFO 6
#define NWAM_EVENT_TYPE_WLAN_SCAN_REPORT 7
#define NWAM_EVENT_TYPE_WLAN_NEED_CHOICE 8
#define NWAM_EVENT_TYPE_WLAN_NEED_KEY 9
#define NWAM_EVENT_TYPE_WLAN_CONNECTION_REPORT 10
#define NWAM_EVENT_TYPE_IF_ACTION 11
#define NWAM_EVENT_TYPE_IF_STATE 12
#define NWAM_EVENT_TYPE_LINK_ACTION 13
#define NWAM_EVENT_TYPE_LINK_STATE 14
#define NWAM_EVENT_MAX NWAM_EVENT_TYPE_LINK_STATE
#define NWAM_EVENT_STATUS_OK 0
#define NWAM_EVENT_STATUS_NOT_HANDLED 1
#define NWAM_EVENT_NETWORK_OBJECT_UNDEFINED 0
#define NWAM_EVENT_NETWORK_OBJECT_LINK 1
#define NWAM_EVENT_NETWORK_OBJECT_INTERFACE 2
#define NWAM_EVENT_REQUEST_UNDEFINED 0
#define NWAM_EVENT_REQUEST_WLAN 1
#define NWAM_EVENT_REQUEST_KEY 2
typedef enum {
NWAM_ACTION_UNKNOWN = -1,
NWAM_ACTION_ADD,
NWAM_ACTION_REMOVE,
NWAM_ACTION_REFRESH,
NWAM_ACTION_ENABLE,
NWAM_ACTION_DISABLE,
NWAM_ACTION_DESTROY
} nwam_action_t;
typedef enum {
NWAM_OBJECT_TYPE_UNKNOWN = -1,
NWAM_OBJECT_TYPE_NCP = 0,
NWAM_OBJECT_TYPE_NCU = 1,
NWAM_OBJECT_TYPE_LOC = 2,
NWAM_OBJECT_TYPE_ENM = 3,
NWAM_OBJECT_TYPE_KNOWN_WLAN = 4
} nwam_object_type_t;
typedef struct nwam_event *nwam_event_t;
struct nwam_event {
long nwe_type;
uint32_t nwe_size;
uint32_t nwe_pad1;
union {
struct nwam_event_object_action {
nwam_object_type_t nwe_object_type;
char nwe_name[NWAM_MAX_NAME_LEN];
char nwe_parent[NWAM_MAX_NAME_LEN];
nwam_action_t nwe_action;
} nwe_object_action;
struct nwam_event_object_state {
nwam_object_type_t nwe_object_type;
char nwe_name[NWAM_MAX_NAME_LEN];
char nwe_parent[NWAM_MAX_NAME_LEN];
nwam_state_t nwe_state;
nwam_aux_state_t nwe_aux_state;
} nwe_object_state;
struct nwam_event_priority_group_info {
int64_t nwe_priority;
} nwe_priority_group_info;
struct nwam_event_info {
char nwe_message[NWAM_MAX_VALUE_LEN];
} nwe_info;
struct nwam_event_wlan_info {
char nwe_name[NWAM_MAX_NAME_LEN];
boolean_t nwe_connected;
uint16_t nwe_num_wlans;
nwam_wlan_t nwe_wlans[1];
} nwe_wlan_info;
struct nwam_event_if_action {
char nwe_name[NWAM_MAX_NAME_LEN];
nwam_action_t nwe_action;
} nwe_if_action;
struct nwam_event_if_state {
char nwe_name[NWAM_MAX_NAME_LEN];
uint32_t nwe_flags;
uint32_t nwe_addr_valid;
uint32_t nwe_addr_added;
struct sockaddr_storage nwe_addr;
struct sockaddr_storage nwe_netmask;
} nwe_if_state;
struct nwam_event_link_state {
char nwe_name[NWAM_MAX_NAME_LEN];
boolean_t nwe_link_up;
} nwe_link_state;
struct nwam_event_link_action {
char nwe_name[NWAM_MAX_NAME_LEN];
nwam_action_t nwe_action;
} nwe_link_action;
} nwe_data;
};
extern nwam_error_t nwam_events_init(void);
extern void nwam_events_fini(void);
extern nwam_error_t nwam_event_wait(nwam_event_t *);
extern void nwam_event_free(nwam_event_t);
extern const char *nwam_action_to_string(nwam_action_t);
extern const char *nwam_event_type_to_string(int);
extern const char *nwam_state_to_string(nwam_state_t);
extern const char *nwam_aux_state_to_string(nwam_aux_state_t);
extern const char *nwam_object_type_to_string(nwam_object_type_t);
extern nwam_object_type_t nwam_string_to_object_type(const char *);
extern char *nwam_tokenize_by_unescaped_delim(char *, char, char **);
#ifdef __cplusplus
}
#endif
#endif