2N/A/*
2N/A * CDDL HEADER START
2N/A *
2N/A * The contents of this file are subject to the terms of the
2N/A * Common Development and Distribution License (the "License").
2N/A * You may not use this file except in compliance with the License.
2N/A *
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * or http://www.opensolaris.org/os/licensing.
2N/A * See the License for the specific language governing permissions
2N/A * and limitations under the License.
2N/A *
2N/A * When distributing Covered Code, include this CDDL HEADER in each
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A * If applicable, add the following below this CDDL HEADER, with the
2N/A * fields enclosed by brackets "[]" replaced with your own identifying
2N/A * information: Portions Copyright [yyyy] [name of copyright owner]
2N/A *
2N/A * CDDL HEADER END
2N/A */
2N/A/*
2N/A * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
2N/A */
2N/A
2N/A/*
2N/A * This file contains private data structures and APIs of libnwam.
2N/A * Current consumers include:
2N/A * - nwamd (nwam_event_*() and nwam_record_audit_event()), supporting the
2N/A * event messaging and audit that nwamd supply.
2N/A *
2N/A * - libipadm, libdladm use nwam db-related definitions for profile access
2N/A *
2N/A * Implementation is MT safe.
2N/A */
2N/A#ifndef _LIBNWAM_PRIV_H
2N/A#define _LIBNWAM_PRIV_H
2N/A
2N/A#ifdef __cplusplus
2N/Aextern "C" {
2N/A#endif
2N/A
2N/A#include <libnetcfg.h>
2N/A#include <libnvpair.h>
2N/A#include <libnwam.h>
2N/A
2N/A/*
2N/A * Flag used by nwamd to override read-only restrictions. This flag belongs
2N/A * to the set of bit-flags defined in libnwam.h. It is defined here so that
2N/A * only nwamd can use it.
2N/A */
2N/A#define NWAM_FLAG_OVERRIDE_READ_ONLY 0x00000008
2N/A
2N/A/* Name of door used to communicate with nwamd */
2N/A#define NWAM_DOOR NETCFG_DOOR_DIR "/nwam_door"
2N/A
2N/A/* Requests to nwamd door */
2N/Atypedef enum {
2N/A NWAM_REQUEST_TYPE_NOOP,
2N/A NWAM_REQUEST_TYPE_EVENT_REGISTER,
2N/A NWAM_REQUEST_TYPE_EVENT_UNREGISTER,
2N/A NWAM_REQUEST_TYPE_ACTION,
2N/A NWAM_REQUEST_TYPE_STATE,
2N/A NWAM_REQUEST_TYPE_PRIORITY_GROUP,
2N/A NWAM_REQUEST_TYPE_WLAN_SCAN,
2N/A NWAM_REQUEST_TYPE_WLAN_SCAN_RESULTS,
2N/A NWAM_REQUEST_TYPE_WLAN_SELECT,
2N/A NWAM_REQUEST_TYPE_WLAN_SET_KEY
2N/A} nwam_request_type_t;
2N/A
2N/A/* Status returned by nwamd door */
2N/Atypedef enum {
2N/A NWAM_REQUEST_STATUS_OK,
2N/A NWAM_REQUEST_STATUS_FAILED,
2N/A NWAM_REQUEST_STATUS_UNKNOWN,
2N/A NWAM_REQUEST_STATUS_ALREADY
2N/A} nwam_request_status_t;
2N/A
2N/A#define NWAMD_MAX_NUM_WLANS 64
2N/A
2N/Atypedef union {
2N/A /* Used for EVENT_[UN]REGISTER requests */
2N/A struct {
2N/A char nwdad_name[MAXPATHLEN];
2N/A } nwdad_register_info;
2N/A
2N/A /* Used for ACTION requests */
2N/A struct {
2N/A nwam_object_type_t nwdad_object_type;
2N/A char nwdad_name[NWAM_MAX_NAME_LEN];
2N/A char nwdad_parent[NWAM_MAX_NAME_LEN];
2N/A nwam_action_t nwdad_action;
2N/A } nwdad_object_action;
2N/A
2N/A /* Used for STATE requests */
2N/A struct {
2N/A nwam_object_type_t nwdad_object_type;
2N/A char nwdad_name[NWAM_MAX_NAME_LEN];
2N/A char nwdad_parent[NWAM_MAX_NAME_LEN];
2N/A nwam_state_t nwdad_state;
2N/A nwam_aux_state_t nwdad_aux_state;
2N/A } nwdad_object_state;
2N/A
2N/A /* Used for PRIORITY_GROUP requests */
2N/A struct {
2N/A int64_t nwdad_priority;
2N/A } nwdad_priority_group_info;
2N/A
2N/A /* Used for WLAN request/responses */
2N/A struct {
2N/A char nwdad_name[NWAM_MAX_NAME_LEN];
2N/A char nwdad_essid[NWAM_MAX_NAME_LEN];
2N/A char nwdad_bssid[NWAM_MAX_NAME_LEN];
2N/A uint32_t nwdad_security_mode;
2N/A char nwdad_key[NWAM_MAX_NAME_LEN];
2N/A uint_t nwdad_keyslot;
2N/A boolean_t nwdad_add_to_known_wlans;
2N/A uint_t nwdad_num_wlans;
2N/A nwam_wlan_t nwdad_wlans[NWAMD_MAX_NUM_WLANS];
2N/A } nwdad_wlan_info;
2N/A
2N/A} nwamd_door_arg_data_t;
2N/A
2N/Atypedef struct {
2N/A nwam_request_type_t nwda_type;
2N/A nwam_request_status_t nwda_status;
2N/A nwam_error_t nwda_error;
2N/A nwamd_door_arg_data_t nwda_data;
2N/A} nwamd_door_arg_t;
2N/A
2N/A/*
2N/A * create audit session, report event, end session. Used by nwamd.
2N/A */
2N/Aextern void nwam_record_audit_event(const ucred_t *, au_event_t, char *, char *,
2N/A int, int);
2N/A
2N/A/*
2N/A * NWAM daemon functions, used to send, stop sending, initialize or finish
2N/A * event IPC. Used by nwamd.
2N/A */
2N/Aextern nwam_error_t nwam_event_send(nwam_event_t);
2N/Aextern void nwam_event_send_fini(void);
2N/Aextern nwam_error_t nwam_event_queue_init(const char *);
2N/Aextern void nwam_event_queue_fini(const char *);
2N/A
2N/A/*
2N/A * NWAM DB-related definitions
2N/A */
2N/A#define NWAM_CONF_DIR "/etc/nwam/"
2N/A#define NWAM_LOC_CONF_FILE NWAM_CONF_DIR "loc.conf"
2N/A#define NWAM_ENM_CONF_FILE NWAM_CONF_DIR "enm.conf"
2N/A#define NWAM_KNOWN_WLAN_CONF_FILE NWAM_CONF_DIR "known-wlan.conf"
2N/A
2N/A/* new filename for NCPs is ncp.conf, old was ncp-<profile>.conf */
2N/A#define NWAM_NCP_CONF_FILE NWAM_CONF_DIR "ncp.conf"
2N/A/* link NCUs are stored in /etc/dladm/datalink-<profile>.conf */
2N/A#define NWAM_DATALINK_CONF_FILE_PRE "/etc/dladm/datalink-"
2N/A/* interface NCUs are stored in /etc/ipadm/ipadm-<profile>.conf */
2N/A#define NWAM_IPADM_CONF_FILE_PRE "/etc/ipadm/ipadm-"
2N/A#define NWAM_CONF_FILE_SUF ".conf"
2N/A
2N/A/*
2N/A * Add a property list formatted as an nvlist to an object handle.
2N/A * The passed-in list will be merged with any existing properties;
2N/A * if duplicates exist, the passed-in value will take precedence.
2N/A */
2N/Aextern nwam_error_t nwam_ncu_add_data(nwam_ncu_handle_t, nvlist_t *);
2N/Aextern nwam_error_t nwam_ncu_get_data(nwam_ncu_handle_t, nvlist_t **);
2N/Aextern nwam_error_t nwam_enm_add_data(nwam_enm_handle_t, nvlist_t *);
2N/Aextern nwam_error_t nwam_known_wlan_add_data(nwam_known_wlan_handle_t,
2N/A nvlist_t *);
2N/A
2N/A#ifdef __cplusplus
2N/A}
2N/A#endif
2N/A
2N/A#endif /* _LIBNWAM_PRIV_H */