b00044a2eb43864b8718585d21949611a2ee59efJames Carlson/*
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * CDDL HEADER START
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson *
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * The contents of this file are subject to the terms of the
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * Common Development and Distribution License (the "License").
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * You may not use this file except in compliance with the License.
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson *
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * or http://www.opensolaris.org/os/licensing.
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * See the License for the specific language governing permissions
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * and limitations under the License.
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson *
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * When distributing Covered Code, include this CDDL HEADER in each
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * If applicable, add the following below this CDDL HEADER, with the
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * fields enclosed by brackets "[]" replaced with your own identifying
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * information: Portions Copyright [yyyy] [name of copyright owner]
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson *
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson * CDDL HEADER END
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson */
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson/*
f6da83d4178694e7113b71d1e452f15b296f73d8Anurag S. Maskey * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson */
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * This file contains data structures and APIs of libnwam.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Implementation is MT safe.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson#ifndef _LIBNWAM_H
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson#define _LIBNWAM_H
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifdef __cplusplus
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern "C" {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <bsm/adt.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <net/if.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <inet/ip.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <inet/ip6.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <sys/types.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <sys/socket.h>
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Note - several interface functions below are not utilized in ON, but are
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * used by the GNOME nwam-manager. One example is nwam_enm_get_name().
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson */
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Common definitions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* nwam FMRI and properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FMRI "svc:/network/physical:nwam"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_PG "nwamd"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_PROP_ACTIVE_NCP "active_ncp"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* nwam flags used for read/commit */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Block waiting for commit if necessary */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_BLOCKING 0x00000001
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Committed object must be new */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_CREATE 0x00000002
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Tell destroy functions not to free handle */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_DO_NOT_FREE 0x00000004
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Object is being enabled/disabled */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ENTITY_ENABLE 0x00000008
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Known WLAN being read, committed or destroyed */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ENTITY_KNOWN_WLAN 0x00000010
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* nwam flags used for selecting ncu type for walk */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_TYPE_LINK 0x00000001ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_TYPE_INTERFACE 0x00000002ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_TYPE_ALL (NWAM_FLAG_NCU_TYPE_LINK | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_FLAG_NCU_TYPE_INTERFACE)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* nwam flags used for selecting ncu class for walk */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_CLASS_PHYS 0x00000100ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_CLASS_IP 0x00010000ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_CLASS_ALL_LINK NWAM_FLAG_NCU_CLASS_PHYS
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_CLASS_ALL_INTERFACE NWAM_FLAG_NCU_CLASS_IP
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL_INTERFACE | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_FLAG_NCU_CLASS_ALL_LINK)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_NCU_TYPE_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_FLAG_NCU_TYPE_ALL)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* flags used for selecting activation for walk */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ACTIVATION_MODE_MANUAL 0x000000001ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ACTIVATION_MODE_SYSTEM 0x000000002ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED 0x000000004ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY 0x000000008ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL 0x000000010ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_ACTIVATION_MODE_ALL (NWAM_FLAG_ACTIVATION_MODE_MANUAL |\
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_SYSTEM |\
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED |\
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY |\
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Walk known WLANs in order of priority (lowest first) */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_KNOWN_WLAN_WALK_PRIORITY_ORDER 0x000010000ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Do not perform priority collision checking for known WLANs */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_FLAG_KNOWN_WLAN_NO_COLLISION_CHECK 0x000020000ULL << 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* nwam return codes */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_SUCCESS, /* No error occured */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_LIST_END, /* End of list reached */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_INVALID_HANDLE, /* Entity handle is invalid */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_HANDLE_UNBOUND, /* Handle not bound to entity */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_INVALID_ARG, /* Argument is invalid */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_PERMISSION_DENIED, /* Insufficient privileges for action */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NO_MEMORY, /* Out of memory */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_EXISTS, /* Entity already exists */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_IN_USE, /* Entity in use */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_COMMITTED, /* Entity already committed */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_NOT_FOUND, /* Entity not found */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_TYPE_MISMATCH, /* Entity type mismatch */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_INVALID, /* Validation of entity failed */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_INVALID_MEMBER, /* Entity member invalid */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_INVALID_STATE, /* Entity is not in appropriate state */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_INVALID_VALUE, /* Validation of entity value failed */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_MISSING_MEMBER, /* Required member is missing */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_NO_VALUE, /* No value associated with entity */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_MULTIPLE_VALUES, /* Multiple values for entity */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_READ_ONLY, /* Entity is marked read only */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_NOT_DESTROYABLE, /* Entity cannot be destroyed */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ENTITY_NOT_MANUAL, /* Entity cannot be manually enabled/disabled */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_WALK_HALTED, /* Callback function returned nonzero */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ERROR_BIND, /* Could not bind to backend */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ERROR_BACKEND_INIT, /* Could not initialize backend */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ERROR_INTERNAL /* Internal error */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_error_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_NAME_LEN 128
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_VALUE_LEN 256
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_FMRI_LEN NWAM_MAX_VALUE_LEN
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_NUM_VALUES 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_MAX_NUM_PROPERTIES 32
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* used for getting and setting of properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_VALUE_TYPE_BOOLEAN,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_VALUE_TYPE_INT64,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_VALUE_TYPE_UINT64,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_VALUE_TYPE_STRING,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_VALUE_TYPE_UNKNOWN
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_value_type_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Holds values of various types for getting and setting of properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Forward definition */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_value;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_value *nwam_value_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Value-related functions. */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_boolean(boolean_t, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_boolean_array(boolean_t *, uint_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_int64(int64_t, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_int64_array(int64_t *, uint_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_uint64(uint64_t, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_uint64_array(uint64_t *, uint_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_string(char *, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_create_string_array(char **, uint_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_boolean(nwam_value_t, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_boolean_array(nwam_value_t, boolean_t **,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_int64(nwam_value_t, int64_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_int64_array(nwam_value_t, int64_t **,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_uint64(nwam_value_t, uint64_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_uint64_array(nwam_value_t, uint64_t **,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_string(nwam_value_t, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_string_array(nwam_value_t, char ***,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_type(nwam_value_t, nwam_value_type_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_get_numvalues(nwam_value_t, uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_value_free(nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_copy(nwam_value_t, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_uint64_get_value_string(const char *, uint64_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_value_string_get_uint64(const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * To retrieve a localized error string
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern const char *nwam_strerror(nwam_error_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * State and auxiliary state describe the state of ENMs, NCUs and locations.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_UNINITIALIZED = 0x0,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_INITIALIZED = 0x1,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_OFFLINE = 0x2,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_OFFLINE_TO_ONLINE = 0x4,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_ONLINE_TO_OFFLINE = 0x8,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_ONLINE = 0x10,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_MAINTENANCE = 0x20,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_DEGRADED = 0x40,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_DISABLED = 0x80
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_state_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_STATE_ANY (NWAM_STATE_UNINITIALIZED | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_INITIALIZED | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_OFFLINE | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_OFFLINE_TO_ONLINE | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_ONLINE_TO_OFFLINE | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_ONLINE | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_MAINTENANCE | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_DEGRADED | \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_STATE_DISABLED)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * The auxiliary state denotes specific reasons why an object is in a particular
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * state (e.g. "script failed", "disabled by administrator", "waiting for DHCP
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * response").
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* General auxiliary states */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_UNINITIALIZED,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_INITIALIZED,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_CONDITIONS_NOT_MET,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_MANUAL_DISABLE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_METHOD_FAILED,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_METHOD_MISSING,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_METHOD_RUNNING,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_INVALID_CONFIG,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_ACTIVE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* Link-specific auxiliary states */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_SCANNING,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_NEED_SELECTION,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_NEED_KEY,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_CONNECTING,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* IP interface-specific auxiliary states */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_IF_WAITING_FOR_ADDR,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_IF_DHCP_TIMED_OUT,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_IF_DUPLICATE_ADDR,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* Common link/interface auxiliary states */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_UP,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_DOWN,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_AUX_STATE_NOT_FOUND
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_aux_state_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Activation modes */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTIVATION_MODE_MANUAL,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTIVATION_MODE_SYSTEM,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTIVATION_MODE_CONDITIONAL_ANY,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTIVATION_MODE_CONDITIONAL_ALL,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTIVATION_MODE_PRIORITIZED
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_activation_mode_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Conditions are of the form
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * ncu|enm|loc name is|is-not active
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * ip-address is|is-not|is-in-range|is-not-in-range ipaddr[/prefixlen]
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * advertised-domain is|is-not|contains|does-not-contain string
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * system-domain is|is-not|contains|does-not-contain string
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * essid is|is-not|contains|does-not-contain string
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * bssid is|is-not <string>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_IS,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_IS_NOT,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_IS_IN_RANGE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_IS_NOT_IN_RANGE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_CONTAINS,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_DOES_NOT_CONTAIN
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_condition_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_NCP,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_NCU,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_ENM,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_LOC,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_ESSID,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_BSSID
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_condition_object_type_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Activation condition-related functions that convert activation
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * values to an appropriate string and back.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_condition_to_condition_string(
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_condition_object_type_t, nwam_condition_t, const char *, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_condition_string_to_condition(const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_condition_object_type_t *, nwam_condition_t *, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Only one location can be active at one time. As a
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * consequence, if the activation conditions of multiple
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * locations are satisfied, we need to compare activation
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * conditions to see if one is more specific than another.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * The following heuristics are applied to rate an
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * activation condition:
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - "is" is the most specific condition
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - it is followed by "is-in-range" and "contains"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - "is-not-in-range" and "does-not-contain" are next
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - finally "is-not" is least specific
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Regarding the objects these conditions apply to:
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - NCU, ENM and locations are most specific
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - system-domain is next
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - advertised-domain is next
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - IP address is next
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - wireless BSSID is next
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - wireless ESSID is least specific
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_condition_rate(nwam_condition_object_type_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_condition_t, uint64_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Location definitions.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_NAME_AUTOMATIC "Automatic"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_NAME_NO_NET "NoNet"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_NAME_LEGACY "Legacy"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_NAME_PRE_DEFINED(name) \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (strcasecmp(name, NWAM_LOC_NAME_AUTOMATIC) == 0 || \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey strcasecmp(name, NWAM_LOC_NAME_NO_NET) == 0 || \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey strcasecmp(name, NWAM_LOC_NAME_LEGACY) == 0)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Forward definition */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_handle;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_handle *nwam_loc_handle_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Location properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NAMESERVICES_DNS,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NAMESERVICES_FILES,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NAMESERVICES_NIS,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NAMESERVICES_LDAP
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_nameservices_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONFIGSRC_MANUAL,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_CONFIGSRC_DHCP
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_configsrc_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_ACTIVATION_MODE "activation-mode"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_CONDITIONS "conditions"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_ENABLED "enabled"
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Nameservice location properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_NAMESERVICES "nameservices"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_NAMESERVICES_CONFIG_FILE "nameservices-config-file"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC "dns-nameservice-configsrc"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN "dns-nameservice-domain"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS "dns-nameservice-servers"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH "dns-nameservice-search"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC "nis-nameservice-configsrc"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS "nis-nameservice-servers"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC "ldap-nameservice-configsrc"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS "ldap-nameservice-servers"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_DEFAULT_DOMAIN "default-domain"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* NFSv4 domain */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_NFSV4_DOMAIN "nfsv4-domain"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* IPfilter configuration */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_IPFILTER_CONFIG_FILE "ipfilter-config-file"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE "ipfilter-v6-config-file"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_IPNAT_CONFIG_FILE "ipnat-config-file"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_IPPOOL_CONFIG_FILE "ippool-config-file"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* IPsec configuration */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_IKE_CONFIG_FILE "ike-config-file"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE "ipsecpolicy-config-file"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * NCP/NCU definitions.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCP_NAME_AUTOMATIC "Automatic"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCP_NAME_USER "User"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCP_AUTOMATIC(name) \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (strcasecmp(name, NWAM_NCP_NAME_AUTOMATIC) == 0)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_handle *nwam_ncp_handle_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_handle *nwam_ncu_handle_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_TYPE_UNKNOWN = -1,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_TYPE_LINK,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_TYPE_INTERFACE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_TYPE_ANY
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_ncu_type_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_CLASS_UNKNOWN = -1,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_CLASS_PHYS,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_CLASS_IP,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_NCU_CLASS_ANY
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_ncu_class_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ADDRSRC_DHCP,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ADDRSRC_AUTOCONF,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ADDRSRC_STATIC
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_addrsrc_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_PRIORITY_MODE_EXCLUSIVE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_PRIORITY_MODE_SHARED,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_PRIORITY_MODE_ALL
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_priority_mode_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* NCU properties common to all type/classes */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_TYPE "type"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_CLASS "class"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_PARENT_NCP "parent"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_ACTIVATION_MODE "activation-mode"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_ENABLED "enabled"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_PRIORITY_GROUP "priority-group"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_PRIORITY_MODE "priority-mode"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Link NCU properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_LINK_MAC_ADDR "link-mac-addr"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_LINK_AUTOPUSH "link-autopush"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_LINK_MTU "link-mtu"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* IP NCU properties */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_IP_VERSION "ip-version"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_IPV4_ADDRSRC "ipv4-addrsrc"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_IPV4_ADDR "ipv4-addr"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE "ipv4-default-route"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_IPV6_ADDRSRC "ipv6-addrsrc"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_IPV6_ADDR "ipv6-addr"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE "ipv6-default-route"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Some properties should only be set on creation */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_NCU_PROP_SETONCE(prop) \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (strcmp(prop, NWAM_NCU_PROP_TYPE) == 0 || \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey strcmp(prop, NWAM_NCU_PROP_CLASS) == 0 || \
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey strcmp(prop, NWAM_NCU_PROP_PARENT_NCP) == 0)
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * ENM definitions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_handle *nwam_enm_handle_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_PROP_ACTIVATION_MODE "activation-mode"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_PROP_CONDITIONS "conditions"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_PROP_ENABLED "enabled"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* FMRI associated with ENM */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_PROP_FMRI "fmri"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Start/stop scripts associated with ENM */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_PROP_START "start"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_ENM_PROP_STOP "stop"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Known Wireless LAN info (known WLAN) definitions.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_handle *nwam_known_wlan_handle_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_KNOWN_WLAN_PROP_BSSIDS "bssids"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_KNOWN_WLAN_PROP_PRIORITY "priority"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_KNOWN_WLAN_PROP_KEYNAME "keyname"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_KNOWN_WLAN_PROP_KEYSLOT "keyslot"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_KNOWN_WLAN_PROP_SECURITY_MODE "security-mode"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Location Functions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Create a location */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_create(const char *, nwam_loc_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Copy a location */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_copy(nwam_loc_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_loc_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Read a location from persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_read(const char *, uint64_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_loc_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Validate in-memory representation of a location */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_validate(nwam_loc_handle_t, const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Commit in-memory representation of a location to persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_commit(nwam_loc_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Destroy a location in persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_destroy(nwam_loc_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Free in-memory representation of a location */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_loc_free(nwam_loc_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* read all locs from persistent storage and walk through each at a time */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_walk_locs(int (*)(nwam_loc_handle_t, void *), void *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* get/set loc name */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_get_name(nwam_loc_handle_t, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_set_name(nwam_loc_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern boolean_t nwam_loc_can_set_name(nwam_loc_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* activate/deactivate loc */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_enable(nwam_loc_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_disable(nwam_loc_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* walk all properties of an in-memory loc */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_walk_props(nwam_loc_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int (*)(const char *, nwam_value_t, void *),
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* delete/get/set validate loc property */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_delete_prop(nwam_loc_handle_t,
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_get_prop_value(nwam_loc_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_set_prop_value(nwam_loc_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_validate_prop(nwam_loc_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the read-only value for a particular loc property */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_prop_read_only(const char *, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Whether the property is multi-valued or not */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_prop_multivalued(const char *, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve data type */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_get_prop_type(const char *, nwam_value_type_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve description */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_get_prop_description(const char *, const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* get default loc props */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_get_default_proplist(const char ***, uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* get sstate of loc from nwamd */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_get_state(nwam_loc_handle_t, nwam_state_t *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get whether the loc has manual activation-mode or not */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_loc_is_manual(nwam_loc_handle_t, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * NCP/NCU functions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Create an ncp */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_create(const char *, uint64_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_ncp_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Read an ncp from persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_read(const char *, uint64_t, nwam_ncp_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Make a copy of existing ncp */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_copy(nwam_ncp_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_ncp_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Walk ncps */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_walk_ncps(int (*)(nwam_ncp_handle_t, void *),
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get ncp name */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_get_name(nwam_ncp_handle_t, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the read-only value for this ncp */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_get_read_only(nwam_ncp_handle_t, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Destroy ncp */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_destroy(nwam_ncp_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Walk all ncus associated with ncp. Specific types/classes of ncu can
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * be selected via flags, or all via NWAM_FLAG_ALL.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_walk_ncus(nwam_ncp_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int(*)(nwam_ncu_handle_t, void *), void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Activate ncp */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_enable(nwam_ncp_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Free in-memory representation of ncp */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_ncp_free(nwam_ncp_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get state of NCP from nwamd */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_get_state(nwam_ncp_handle_t, nwam_state_t *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the active priority-group */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncp_get_active_priority_group(int64_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Create an ncu or read it from persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_create(nwam_ncp_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_ncu_type_t, nwam_ncu_class_t, nwam_ncu_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_read(nwam_ncp_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_ncu_type_t, uint64_t, nwam_ncu_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Destroy an ncu in persistent storage or free the in-memory representation */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_destroy(nwam_ncu_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_ncu_free(nwam_ncu_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* make a copy of existing ncu */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_copy(nwam_ncu_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_ncu_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Commit ncu changes to persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_commit(nwam_ncu_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* activate/deactivate an individual NCU (must be part of the active NCP) */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_enable(nwam_ncu_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_disable(nwam_ncu_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get state of NCU from nwamd */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_state(nwam_ncu_handle_t, nwam_state_t *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get NCU type */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_ncu_type(nwam_ncu_handle_t, nwam_ncu_type_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get NCU class */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_ncu_class(nwam_ncu_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_ncu_class_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Validate ncu content */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_validate(nwam_ncu_handle_t, const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Walk all properties in in-memory representation of ncu */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_walk_props(nwam_ncu_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int (*)(const char *, nwam_value_t, void *),
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get/set name of ncu, get parent ncp */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_name(nwam_ncu_handle_t, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_name_to_typed_name(const char *, nwam_ncu_type_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_typed_name_to_name(const char *, nwam_ncu_type_t *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_default_proplist(nwam_ncu_type_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_ncu_class_t, const char ***, uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_ncp(nwam_ncu_handle_t, nwam_ncp_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* delete/get/set/validate property from/in in-memory representation of ncu */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_delete_prop(nwam_ncu_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_prop_value(nwam_ncu_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_set_prop_value(nwam_ncu_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_validate_prop(nwam_ncu_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve data type */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_prop_type(const char *, nwam_value_type_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve prop description */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_prop_description(const char *, const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the read-only value from the handle or parent NCP */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_get_read_only(nwam_ncu_handle_t, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the read-only value for a particular NCU property */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_prop_read_only(const char *, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Whether the property is multi-valued or not */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_prop_multivalued(const char *, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get whether the NCU has manual activation-mode or not */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_ncu_is_manual(nwam_ncu_handle_t, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the flag from the given class for walks */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern uint64_t nwam_ncu_class_to_flag(nwam_ncu_class_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the NCU type from the given class */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_ncu_type_t nwam_ncu_class_to_type(nwam_ncu_class_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* ENM functions */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Obtain a specific enm handle, either be creating a new enm
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * or reading an existing one from persistent storage.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_create(const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_enm_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_read(const char *, uint64_t, nwam_enm_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Make a copy of existing enm */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_copy(nwam_enm_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_enm_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Obtain handles for all existing enms. Caller-specified callback
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * function will be called once for each enm, passing the handle and
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * the caller-specified arg.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_walk_enms(int (*)(nwam_enm_handle_t, void *), void *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Commit an enm to persistent storage. Does not free the handle.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_commit(nwam_enm_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Remove an enm from persistent storage.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_destroy(nwam_enm_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Free an enm handle
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_enm_free(nwam_enm_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Validate an enm, or a specific enm property. If validating
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * an entire enm, the invalid property type is returned.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_validate(nwam_enm_handle_t, const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_validate_prop(nwam_enm_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve data type */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_get_prop_type(const char *, nwam_value_type_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve prop description */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_get_prop_description(const char *, const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Delete/get/set enm property values.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_delete_prop(nwam_enm_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_get_prop_value(nwam_enm_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_set_prop_value(nwam_enm_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_get_default_proplist(const char ***, uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Get the read-only value for a particular ENM property */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_prop_read_only(const char *, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Whether the property is multi-valued or not */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_prop_multivalued(const char *, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Walk all properties of a specific enm. For each property, specified
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * callback function is called. Caller is responsible for freeing memory
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * allocated for each property.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_walk_props(nwam_enm_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int (*)(const char *, nwam_value_t, void *),
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Get/set the name of an enm. When getting the name, the library will
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * allocate a buffer; the caller is responsible for freeing the memory.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_get_name(nwam_enm_handle_t, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_set_name(nwam_enm_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern boolean_t nwam_enm_can_set_name(nwam_enm_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Start/stop an enm.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_enable(nwam_enm_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_disable(nwam_enm_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Get state of ENM from nwamd.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_get_state(nwam_enm_handle_t, nwam_state_t *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Get whether the ENM has manual activation-mode or not.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_enm_is_manual(nwam_enm_handle_t, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Known Wireless LAN (WLAN) info.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Create a known WLAN */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_create(const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_known_wlan_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Read a known WLAN from persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_read(const char *, uint64_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_known_wlan_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Destroy a known WLAN in persistent storage or free the in-memory
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * representation.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_destroy(nwam_known_wlan_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_known_wlan_free(nwam_known_wlan_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* make a copy of existing known WLAN */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_copy(nwam_known_wlan_handle_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_known_wlan_handle_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Commit known WLAN changes to persistent storage */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_commit(nwam_known_wlan_handle_t, uint64_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Validate known WLAN content */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_validate(nwam_known_wlan_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Walk known WLANs */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_walk_known_wlans
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey (int(*)(nwam_known_wlan_handle_t, void *), void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* get/set known WLAN name */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_get_name(nwam_known_wlan_handle_t, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_set_name(nwam_known_wlan_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern boolean_t nwam_known_wlan_can_set_name(nwam_known_wlan_handle_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* walk all properties of an in-memory known WLAN */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_walk_props(nwam_known_wlan_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int (*)(const char *, nwam_value_t, void *),
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *, uint64_t, int *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* delete/get/set/validate known WLAN property */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_delete_prop(nwam_known_wlan_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_get_prop_value(nwam_known_wlan_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_set_prop_value(nwam_known_wlan_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_validate_prop(nwam_known_wlan_handle_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, nwam_value_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve data type */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_get_prop_type(const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_value_type_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Retrieve prop description */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_get_prop_description(const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* get default known WLAN props */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_get_default_proplist(const char ***,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Whether the property is multi-valued or not */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_prop_multivalued(const char *, boolean_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Add a bssid to the known WLANs */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_add_to_known_wlans(const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey const char *, uint32_t, uint_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Remove a bssid from known WLANs */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_known_wlan_remove_from_known_wlans(const char *,
ab32bdf2f746488f918233b2d8cabd5835efe9f3James Carlson const char *, const char *);
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * nwam_wlan_t is used for scan/need choice/need key events and by
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * nwam_wlan_get_scan_results(). The following fields are valid:
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - for scan and need choice event, ESSID, BSSID, signal strength, security
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * mode, speed, channel, bsstype, key index, and if we already have a key
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * (have_key), if the WLAN is the current selection (selected) and
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * if the current WLAN is connected (connected).
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * - for need key events, ESSID, security mode, have_key, selected and connected
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * values are set. The rest of the fields are not set since multiple WLANs
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * may match the ESSID and have different speeds, channels etc. If an
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * ESSID/BSSID selection is specified, the BSSID will be set also.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nww_essid[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nww_bssid[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nww_signal_strength[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nww_security_mode; /* a dladm_wlan_secmode_t */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nww_speed; /* a dladm_wlan_speed_t */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nww_channel; /* a dladm_wlan_channel_t */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nww_bsstype; /* a dladm_wlan_bsstype_t */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t nww_keyindex;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t nww_have_key;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t nww_selected;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t nww_connected;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_wlan_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Active WLAN definitions. Used to scan WLANs/choose a WLAN/set a WLAN key.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_wlan_scan(const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_wlan_get_scan_results(const char *, uint_t *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_wlan_t **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_wlan_select(const char *, const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t, boolean_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_wlan_set_key(const char *, const char *, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t, uint_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Event notification definitions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_NOOP 0
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_INIT 1
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_SHUTDOWN 2
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_OBJECT_ACTION 3
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_OBJECT_STATE 4
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_PRIORITY_GROUP 5
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_INFO 6
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_WLAN_SCAN_REPORT 7
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_WLAN_NEED_CHOICE 8
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_WLAN_NEED_KEY 9
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_WLAN_CONNECTION_REPORT 10
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_IF_ACTION 11
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_IF_STATE 12
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_LINK_ACTION 13
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_TYPE_LINK_STATE 14
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_MAX NWAM_EVENT_TYPE_LINK_STATE
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_STATUS_OK 0
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_STATUS_NOT_HANDLED 1
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_NETWORK_OBJECT_UNDEFINED 0
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_NETWORK_OBJECT_LINK 1
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_NETWORK_OBJECT_INTERFACE 2
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_REQUEST_UNDEFINED 0
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_REQUEST_WLAN 1
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_EVENT_REQUEST_KEY 2
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Actions for nwamd to perform, used in conjunction with
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * nwam_request_type_t in nwam_door_arg_t.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Add string representations to nwam_action_to_string() in libnwam_util.c.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTION_UNKNOWN = -1,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTION_ADD,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTION_REMOVE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTION_REFRESH,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTION_ENABLE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTION_DISABLE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_ACTION_DESTROY
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_action_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_OBJECT_TYPE_UNKNOWN = -1,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_OBJECT_TYPE_NCP = 0,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_OBJECT_TYPE_NCU = 1,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_OBJECT_TYPE_LOC = 2,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_OBJECT_TYPE_ENM = 3,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_OBJECT_TYPE_KNOWN_WLAN = 4
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_object_type_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_event *nwam_event_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwam_event {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int nwe_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nwe_size;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey union {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_object_action {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_object_type_t nwe_object_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_parent[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_action_t nwe_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_object_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_object_state {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_object_type_t nwe_object_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_parent[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_state_t nwe_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t nwe_aux_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_object_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_priority_group_info {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int64_t nwe_priority;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_priority_group_info;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_info {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_message[NWAM_MAX_VALUE_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_info;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * wlan_info stores both scan results and the single
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * WLAN we require a key for in the case of _WLAN_NEED_KEY
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * events. For _WLAN_CONNECTION_REPORT events, it stores
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * the WLAN the connection succeeded/failed for, indicating
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * success/failure using the 'connected' boolean.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_wlan_info {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t nwe_connected;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint16_t nwe_num_wlans;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_wlan_t nwe_wlans[1];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * space may be allocated by user here for the
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * number of wlans
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_wlan_info;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_if_action {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_action_t nwe_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_if_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_if_state {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nwe_flags;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nwe_addr_valid; /* boolean */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nwe_addr_added; /* boolean */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct sockaddr_storage nwe_addr;
f6da83d4178694e7113b71d1e452f15b296f73d8Anurag S. Maskey struct sockaddr_storage nwe_netmask;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_if_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_link_state {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t nwe_link_up;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* link_state_t from sys/mac.h */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_link_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct nwam_event_link_action {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_action_t nwe_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_link_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwe_data;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey};
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* NWAM client functions, used to register/unregister and receive events */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_events_init(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_events_fini(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_event_wait(nwam_event_t *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_event_free(nwam_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Event-related string conversion functions */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern const char *nwam_action_to_string(nwam_action_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern const char *nwam_event_type_to_string(int);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern const char *nwam_state_to_string(nwam_state_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern const char *nwam_aux_state_to_string(nwam_aux_state_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern const char *nwam_object_type_to_string(nwam_object_type_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_object_type_t nwam_string_to_object_type(const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Utility strtok_r-like function */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern char *nwam_tokenize_by_unescaped_delim(char *, char, char **);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifdef __cplusplus
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson}
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson#endif
b00044a2eb43864b8718585d21949611a2ee59efJames Carlson
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif /* _LIBNWAM_H */