6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * CDDL HEADER START
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * The contents of this file are subject to the terms of the
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Common Development and Distribution License (the "License").
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * You may not use this file except in compliance with the License.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * or http://www.opensolaris.org/os/licensing.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * See the License for the specific language governing permissions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * and limitations under the License.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * When distributing Covered Code, include this CDDL HEADER in each
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * If applicable, add the following below this CDDL HEADER, with the
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * fields enclosed by brackets "[]" replaced with your own identifying
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * information: Portions Copyright [yyyy] [name of copyright owner]
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * CDDL HEADER END
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Use is subject to license terms.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * This file contains hidden implementation structures and APIs of libnwam,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * and is not installed in the proto area. Implementation is MT safe.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifndef _LIBNWAM_IMPL_H
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define _LIBNWAM_IMPL_H
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifdef __cplusplus
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern "C" {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <libnwam_priv.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <libnwam.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * We separate global flags (which are applicable to all object types) from
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * local flags (which only apply to specific object types). These definitions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * mask off the global vs. local portions of the flags value, with the former
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * being the low-order 32 bits and the latter the high-order 32 bits.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_GLOBAL_MASK 0xFFFFFFFF
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_LOCAL_MASK 0xFFFFFFFFULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_WALK_FILTER_MASK NWAM_FLAG_LOCAL_MASK
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Maximum object size is the size of a maximally-sized name/values property
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * multiplied by the maximum number of properties. The maximum object size
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * and the maximum number of objects are used to determine how much space
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * needs to be allocated for door calls to retrieve objects from the
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * backend.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_OBJECT_LEN \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey ((NWAM_MAX_NAME_LEN + \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (NWAM_MAX_VALUE_LEN * NWAM_MAX_NUM_VALUES)) * \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_MAX_NUM_PROPERTIES)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_NUM_OBJECTS 4192
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_OBJECT_LIST_LEN \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (NWAM_MAX_NUM_OBJECTS * NWAM_MAX_NAME_LEN)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_BACKEND_DOOR_ARG_SIZE \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (sizeof (nwam_backend_door_arg_t) + \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (NWAM_MAX_OBJECT_LEN > NWAM_MAX_OBJECT_LIST_LEN ? \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_MAX_OBJECT_LEN : NWAM_MAX_OBJECT_LIST_LEN))
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAMD_DOOR_ARG_SIZE \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (sizeof (nwamd_door_arg_t) + \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (NWAMD_MAX_NUM_WLANS * sizeof (nwam_wlan_t));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONF_DIR "/etc/nwam/"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_OBJECT_STRING "loc"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_CONF_FILE NWAM_CONF_DIR "loc.conf"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_handle {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_object_type_t nwh_object_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwh_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t nwh_committed;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *nwh_data;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey};
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_OBJECT_NAMES_STRING "object-names"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCP_OBJECT_STRING "ncp"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCP_CONF_FILE_PRE "ncp-"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCP_CONF_FILE_SUF ".conf"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_LINK_NAME_PRE "link:"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_INTERFACE_NAME_PRE "interface:"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_value {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_type_t nwv_value_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t nwv_value_numvalues;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey union {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t *nwv_boolean;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int64_t *nwv_int64;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t *nwv_uint64;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char **nwv_string;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwv_values;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey};
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Used in property table retrieval of property attributes */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_TYPE_ANY 1
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CLASS_ANY 1
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef nwam_error_t (*nwam_prop_validate_func_t)(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Used to hold validation/description data for properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_prop_table_entry {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *prop_name;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_type_t prop_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t prop_is_readonly;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t prop_min_numvalues;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t prop_max_numvalues;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_prop_validate_func_t prop_validate;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *prop_description;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t prop_type_membership;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t prop_class_membership;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey};
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_prop_table {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t num_entries;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_prop_table_entry *entries;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey};
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_OBJECT_STRING "enm"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_CONF_FILE NWAM_CONF_DIR "enm.conf"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_KNOWN_WLAN_OBJECT_STRING "known-wlan"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_KNOWN_WLAN_CONF_FILE NWAM_CONF_DIR "known-wlan.conf"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Definitions that are used to map uint64 property values to strings */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ACTIVATION_MODE_MANUAL_STRING "manual"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ACTIVATION_MODE_SYSTEM_STRING "system"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ACTIVATION_MODE_PRIORITIZED_STRING "prioritized"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ACTIVATION_MODE_CONDITIONAL_ANY_STRING "conditional-any"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ACTIVATION_MODE_CONDITIONAL_ALL_STRING "conditional-all"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_IS_STRING "is"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_IS_NOT_STRING "is-not"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_IS_IN_RANGE_STRING "is-in-range"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_IS_NOT_IN_RANGE_STRING "is-not-in-range"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_CONTAINS_STRING "contains"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_DOES_NOT_CONTAIN_STRING "does-not-contain"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_NCP_STRING "ncp"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_NCU_STRING "ncu"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_ENM_STRING "enm"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_LOC_STRING "loc"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS_STRING "ip-address"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN_STRING "advertised-domain"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN_STRING "system-domain"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_ESSID_STRING "essid"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_OBJECT_TYPE_BSSID_STRING "bssid"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONDITION_ACTIVE_STRING "active"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NAMESERVICES_DNS_STRING "dns"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NAMESERVICES_FILES_STRING "files"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NAMESERVICES_NIS_STRING "nis"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NAMESERVICES_LDAP_STRING "ldap"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONFIGSRC_MANUAL_STRING "manual"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_CONFIGSRC_DHCP_STRING "dhcp"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_TYPE_LINK_STRING "link"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_TYPE_INTERFACE_STRING "interface"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_CLASS_PHYS_STRING "phys"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_CLASS_IP_STRING "ip"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_IP_VERSION_IPV4_STRING "ipv4"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_IP_VERSION_IPV6_STRING "ipv6"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ADDRSRC_DHCP_STRING "dhcp"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ADDRSRC_AUTOCONF_STRING "autoconf"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ADDRSRC_STATIC_STRING "static"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_PRIORITY_MODE_EXCLUSIVE_STRING "exclusive"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_PRIORITY_MODE_SHARED_STRING "shared"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_PRIORITY_MODE_ALL_STRING "all"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Functions that interact with nwamd's door server to request
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * object actions, states or to register for receipt of events from nwamd.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * See libnwam_door.c.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_request_register_unregister(nwam_request_type_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_request_action(nwam_object_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_action_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_request_state(nwam_object_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_state_t *, nwam_aux_state_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_request_wlan(nwam_request_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, const char *, uint32_t, uint_t, const char *, boolean_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_request_wlan_scan_results(const char *name,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t *, nwam_wlan_t **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_request_active_priority_group(int64_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Functions that access and manipulate backend representation of data -
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * see libnwam_backend.c.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_read_object_from_backend(char *, char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_update_object_in_backend(char *, char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_remove_object_from_backend(char *, char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Functions that handle files-specific backend persistent representation
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * of data - see libnwam_files.c.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_read_object_from_files_backend(char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char *, uint64_t, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_update_object_in_files_backend(char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char *, uint64_t, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_remove_object_from_files_backend(char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char *, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Utility functions for nwam data (values and lists of values) associated
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * with objects - see libnwam_values.c.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_alloc_object_list(void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyvoid nwam_free_object_list(void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_object_list_add_object_list(void *, char *, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_object_list_remove_object_list(void *, char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_dup_object_list(void *, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_next_object_list(void *, char *, char **, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_next_object_prop(void *, char *, char **, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_pack_object_list(void *, char **, size_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_unpack_object_list(char *, size_t, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern const char *nwam_value_type_to_string(nwam_value_type_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_value_type_t nwam_string_to_value_type(const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_delete_prop(void *, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_set_prop_value(void *, const char *, nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_get_prop_value(void *, const char *, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Utility functions for nwam objects (NCUs, ENMs, locations and known WLANs).
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * See libnwam_object.c.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_handle_create(nwam_object_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_handle **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_read(nwam_object_type_t, const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t, struct nwam_handle **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_create(nwam_object_type_t, const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_handle **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_get_name(struct nwam_handle *, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_set_name(struct nwam_handle *, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_walk(nwam_object_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int(*)(struct nwam_handle *, void *), void *, uint64_t, int *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int(*)(struct nwam_handle *, uint64_t, void *));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyvoid nwam_free(struct nwam_handle *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_copy(const char *, struct nwam_handle *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_handle **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_walk_props(struct nwam_handle *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int(*)(const char *, nwam_value_t, void *), void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_commit(const char *, struct nwam_handle *, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_destroy(const char *, struct nwam_handle *, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_enable(const char *, struct nwam_handle *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_disable(const char *, struct nwam_handle *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_prop_table_entry *nwam_get_prop_table_entry(struct nwam_prop_table,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_get_prop_description(struct nwam_prop_table, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_get_prop_type(struct nwam_prop_table, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_type_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_prop_multivalued(struct nwam_prop_table, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_prop_read_only(struct nwam_prop_table, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_validate_prop(struct nwam_prop_table, struct nwam_handle *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_validate(struct nwam_prop_table, struct nwam_handle *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_get_default_proplist(struct nwam_prop_table, uint64_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t, const char ***, uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeynwam_error_t nwam_get_state(const char *, struct nwam_handle *, nwam_state_t *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Generic validation functions - see libnwam_util.c.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_flags(uint64_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_condition(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_boolean(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_uint64(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_domain(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_host_any(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_host_v4(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_route_v4(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_host_v6(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_route_v6(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_host_or_domain(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_file(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_fmri(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_valid_mac_addr(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Misc. util functions */
69b43529e65fb6eb0c88e6b7b42025e9bf025b8aMichael Hunterextern boolean_t nwam_uid_is_special(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_set_smf_string_property(const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_get_smf_string_property(const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwam_make_door_call(const char *, int *, void *, size_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_errno_to_nwam_error(int);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Needed in libnwam_files.c to check if NCP filename is valid */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_file_to_name(const char *path, char **name);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifdef __cplusplus
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey}
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif /* _LIBNWAM_IMPL_H */