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/*
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#ifndef _OBJECTS_H
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#define _OBJECTS_H
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <door.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <libsysevent.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <libuutil.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <pthread.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include <libnwam.h>
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include "events.h"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include "ncp.h"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#include "ncu.h"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Wrapper structure for libnwam object, containing name, type,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * associated object handle and optional object data field, and uu_list_node.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeystruct nwamd_object {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey char nwamd_object_name[NWAM_MAX_NAME_LEN];
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_object_type_t nwamd_object_type;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey /*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * These two elements provide a reference count for the structure and
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * a lock for the data including reference count.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int nwamd_object_refcount;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey pthread_mutex_t nwamd_object_mutex;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *nwamd_object_handle; /* can point at ENMs, locations, etc. */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwamd_ncu_t *nwamd_object_data;
874067a014d3e133de4f0636e5a615038cbca9b8Anurag S. Maskey struct timeval nwamd_script_time;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_state_t nwamd_object_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_aux_state_t nwamd_object_aux_state;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey uu_list_node_t nwamd_object_node;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey};
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Object init/enqueueing */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_lists_init(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_lists_fini(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwamd_object_t nwamd_object_init(nwam_object_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey void *, void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwamd_object_t nwamd_object_find(nwam_object_type_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_release_and_preserve(nwamd_object_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_release(nwamd_object_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_release_and_destroy(nwamd_object_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_release_after_preserve(nwamd_object_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_release_and_destroy_after_preserve(nwamd_object_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_set_state(nwam_object_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_state_t, nwam_aux_state_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_object_set_state_timed(nwam_object_type_t, const char *,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey nwam_state_t, nwam_aux_state_t, uint32_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern nwamd_event_method_t *nwamd_object_event_methods(nwam_object_type_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_walk_objects(nwam_object_type_t,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey int (*)(nwamd_object_t, void *), void *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_object_update(const char *, nwam_object_type_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Known WLAN functions (no wlan objects, so no init/fini functions) */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* event methods */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_known_wlan_handle_init_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* refresh/destroy a known WLAN */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_known_wlan_action(const char *, nwam_action_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* ENM functions */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Init/fini functions for ENMs */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_init_enms(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_fini_enms(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* ENM condition check function */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_enm_check_conditions(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* event methods */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_enm_handle_init_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_enm_handle_fini_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* enable/disable an enm */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_enm_action(const char *, nwam_action_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* reread an enm from the repository */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_enm_refresh(const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* loc functions */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* Init/fini functions for locs */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_init_locs(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_fini_locs(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* loc condition check function */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_loc_check_conditions(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* on shutdown, revert to legacy location */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_loc_revert_to_legacy(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* event methods */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_loc_handle_init_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_loc_handle_fini_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* enable/disable a loc */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_loc_action(const char *, nwam_action_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* reread a loc from the repository */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_loc_refresh(const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* NCU functions */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_init_ncus(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_fini_ncus(void);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/* enable an ncp/ncu */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_ncp_action(const char *, nwam_action_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern int nwamd_ncu_action(const char *, const char *, nwam_action_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey/*
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey * Event callbacks.
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey */
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_init_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_fini_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_if_state_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_if_action_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_link_state_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_link_action_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_init_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_fini_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_action_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_state_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncp_handle_action_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncp_handle_state_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncu_handle_periodic_scan_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_ncp_handle_enable_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_handle_upgrade(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_enm_handle_action_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_enm_handle_state_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_loc_handle_action_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_loc_handle_state_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_known_wlan_handle_action_event(nwamd_event_t);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_add_phys_ncu_auto(nwam_ncp_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void nwamd_rem_phys_ncu_auto(nwam_ncp_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void add_auto_link(nwam_ncp_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void add_auto_ip(nwam_ncp_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void rem_auto_link(nwam_ncp_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyextern void rem_auto_ip(nwam_ncp_handle_t, const char *);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey#endif /* _OBJECTS_H */