6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * CDDL HEADER START
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * The contents of this file are subject to the terms of the
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Common Development and Distribution License (the "License").
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * You may not use this file except in compliance with the License.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * or http://www.opensolaris.org/os/licensing.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * See the License for the specific language governing permissions
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * and limitations under the License.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * When distributing Covered Code, include this CDDL HEADER in each
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * If applicable, add the following below this CDDL HEADER, with the
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * fields enclosed by brackets "[]" replaced with your own identifying
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * information: Portions Copyright [yyyy] [name of copyright owner]
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * CDDL HEADER END
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Use is subject to license terms.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * This file contains private data structures and APIs of libnwam. Currently
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * these are used by nwamd (nwam_event_*() and nwam_record_audit_event()) and
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * netcfgd (nwam_backend_*()) only, supporting the event messaging, audit
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * and backend configuration access that nwamd and netcfgd supply.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey *
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Implementation is MT safe.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifndef _LIBNWAM_PRIV_H
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define _LIBNWAM_PRIV_H
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifdef __cplusplus
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern "C" {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <libnwam.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Name of directory containing the doors */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_DOOR_DIR "/etc/svc/volatile/nwam"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Name of door used to communicate with libnwam backend (in netcfgd) */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_BACKEND_DOOR_FILE NWAM_DOOR_DIR "/nwam_backend_door"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Name of door used to communicate with nwamd */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAM_DOOR NWAM_DOOR_DIR "/nwam_door"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Requests to nwamd door */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_NOOP,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_EVENT_REGISTER,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_EVENT_UNREGISTER,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_ACTION,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_STATE,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_PRIORITY_GROUP,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_WLAN_SCAN,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_WLAN_SCAN_RESULTS,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_WLAN_SELECT,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_TYPE_WLAN_SET_KEY
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_request_type_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Status returned by nwamd door */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_STATUS_OK,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_STATUS_FAILED,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_STATUS_UNKNOWN,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_REQUEST_STATUS_ALREADY
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_request_status_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define NWAMD_MAX_NUM_WLANS 64
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef union {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* Used for EVENT_[UN]REGISTER requests */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_name[MAXPATHLEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwdad_register_info;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* Used for ACTION requests */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_object_type_t nwdad_object_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_parent[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_action_t nwdad_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwdad_object_action;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* Used for STATE requests */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_object_type_t nwdad_object_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_parent[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_state_t nwdad_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t nwdad_aux_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwdad_object_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* Used for PRIORITY_GROUP requests */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int64_t nwdad_priority;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwdad_priority_group_info;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /* Used for WLAN request/responses */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey struct {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_essid[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_bssid[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint32_t nwdad_security_mode;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwdad_key[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t nwdad_keyslot;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey boolean_t nwdad_add_to_known_wlans;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint_t nwdad_num_wlans;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_wlan_t nwdad_wlans[NWAMD_MAX_NUM_WLANS];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey } nwdad_wlan_info;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwamd_door_arg_data_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_request_type_t nwda_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_request_status_t nwda_status;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_error_t nwda_error;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwamd_door_arg_data_t nwda_data;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwamd_door_arg_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef enum {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_BACKEND_DOOR_CMD_READ_REQ,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_BACKEND_DOOR_CMD_UPDATE_REQ,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey NWAM_BACKEND_DOOR_CMD_REMOVE_REQ
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_backend_door_cmd_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeytypedef struct nwam_backend_door_arg {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_backend_door_cmd_t nwbda_cmd;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwbda_dbname[MAXPATHLEN]; /* config filename */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwbda_object[NWAM_MAX_NAME_LEN]; /* config object */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey size_t nwbda_datalen; /* data follows arg */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_error_t nwbda_result; /* return code */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uint64_t nwbda_flags;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey} nwam_backend_door_arg_t;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Functions needed to initialize/stop processing of libnwam backend data
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * (used in netcfgd).
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_backend_init(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_backend_fini(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * create audit session, report event, end session. Used by nwamd.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_record_audit_event(const ucred_t *, au_event_t, char *, char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int, int);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * NWAM daemon functions, used to send, stop sending, initialize or finish
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * event IPC. Used by nwamd.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_event_send(nwam_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_event_send_fini(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwam_error_t nwam_event_queue_init(const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwam_event_queue_fini(const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#ifdef __cplusplus
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey}
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif /* _LIBNWAM_PRIV_H */