111767SAnurag.Maskey@Sun.COM /* 211767SAnurag.Maskey@Sun.COM * CDDL HEADER START 311767SAnurag.Maskey@Sun.COM * 411767SAnurag.Maskey@Sun.COM * The contents of this file are subject to the terms of the 511767SAnurag.Maskey@Sun.COM * Common Development and Distribution License (the "License"). 611767SAnurag.Maskey@Sun.COM * You may not use this file except in compliance with the License. 711767SAnurag.Maskey@Sun.COM * 811767SAnurag.Maskey@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 911767SAnurag.Maskey@Sun.COM * or http://www.opensolaris.org/os/licensing. 1011767SAnurag.Maskey@Sun.COM * See the License for the specific language governing permissions 1111767SAnurag.Maskey@Sun.COM * and limitations under the License. 1211767SAnurag.Maskey@Sun.COM * 1311767SAnurag.Maskey@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 1411767SAnurag.Maskey@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1511767SAnurag.Maskey@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 1611767SAnurag.Maskey@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 1711767SAnurag.Maskey@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 1811767SAnurag.Maskey@Sun.COM * 1911767SAnurag.Maskey@Sun.COM * CDDL HEADER END 2011767SAnurag.Maskey@Sun.COM */ 2111767SAnurag.Maskey@Sun.COM 2211767SAnurag.Maskey@Sun.COM /* 2311767SAnurag.Maskey@Sun.COM * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 2411767SAnurag.Maskey@Sun.COM * Use is subject to license terms. 2511767SAnurag.Maskey@Sun.COM */ 2611767SAnurag.Maskey@Sun.COM 2711767SAnurag.Maskey@Sun.COM #ifndef _OBJECTS_H 2811767SAnurag.Maskey@Sun.COM #define _OBJECTS_H 2911767SAnurag.Maskey@Sun.COM 3011767SAnurag.Maskey@Sun.COM #include <door.h> 3111767SAnurag.Maskey@Sun.COM #include <libsysevent.h> 3211767SAnurag.Maskey@Sun.COM #include <libuutil.h> 3311767SAnurag.Maskey@Sun.COM #include <pthread.h> 3411767SAnurag.Maskey@Sun.COM 3511767SAnurag.Maskey@Sun.COM #include <libnwam.h> 3611767SAnurag.Maskey@Sun.COM #include "events.h" 3711767SAnurag.Maskey@Sun.COM #include "ncp.h" 3811767SAnurag.Maskey@Sun.COM #include "ncu.h" 3911767SAnurag.Maskey@Sun.COM 4011767SAnurag.Maskey@Sun.COM /* 4111767SAnurag.Maskey@Sun.COM * Wrapper structure for libnwam object, containing name, type, 4211767SAnurag.Maskey@Sun.COM * associated object handle and optional object data field, and uu_list_node. 4311767SAnurag.Maskey@Sun.COM */ 4411767SAnurag.Maskey@Sun.COM struct nwamd_object { 4511767SAnurag.Maskey@Sun.COM char nwamd_object_name[NWAM_MAX_NAME_LEN]; 4611767SAnurag.Maskey@Sun.COM nwam_object_type_t nwamd_object_type; 4711767SAnurag.Maskey@Sun.COM 4811767SAnurag.Maskey@Sun.COM /* 4911767SAnurag.Maskey@Sun.COM * These two elements provide a reference count for the structure and 5011767SAnurag.Maskey@Sun.COM * a lock for the data including reference count. 5111767SAnurag.Maskey@Sun.COM */ 5211767SAnurag.Maskey@Sun.COM int nwamd_object_refcount; 5311767SAnurag.Maskey@Sun.COM pthread_mutex_t nwamd_object_mutex; 5411767SAnurag.Maskey@Sun.COM 5511767SAnurag.Maskey@Sun.COM void *nwamd_object_handle; /* can point at ENMs, locations, etc. */ 5611767SAnurag.Maskey@Sun.COM nwamd_ncu_t *nwamd_object_data; 57*11994SAnurag.Maskey@Sun.COM struct timeval nwamd_script_time; 5811767SAnurag.Maskey@Sun.COM nwam_state_t nwamd_object_state; 5911767SAnurag.Maskey@Sun.COM nwam_aux_state_t nwamd_object_aux_state; 6011767SAnurag.Maskey@Sun.COM uu_list_node_t nwamd_object_node; 6111767SAnurag.Maskey@Sun.COM }; 6211767SAnurag.Maskey@Sun.COM 6311767SAnurag.Maskey@Sun.COM /* Object init/enqueueing */ 6411767SAnurag.Maskey@Sun.COM extern void nwamd_object_lists_init(void); 6511767SAnurag.Maskey@Sun.COM extern void nwamd_object_lists_fini(void); 6611767SAnurag.Maskey@Sun.COM extern nwamd_object_t nwamd_object_init(nwam_object_type_t, const char *, 6711767SAnurag.Maskey@Sun.COM void *, void *); 6811767SAnurag.Maskey@Sun.COM extern nwamd_object_t nwamd_object_find(nwam_object_type_t, const char *); 6911767SAnurag.Maskey@Sun.COM extern void nwamd_object_release_and_preserve(nwamd_object_t); 7011767SAnurag.Maskey@Sun.COM extern void nwamd_object_release(nwamd_object_t); 7111767SAnurag.Maskey@Sun.COM extern void nwamd_object_release_and_destroy(nwamd_object_t); 7211767SAnurag.Maskey@Sun.COM extern void nwamd_object_release_after_preserve(nwamd_object_t); 7311767SAnurag.Maskey@Sun.COM extern void nwamd_object_release_and_destroy_after_preserve(nwamd_object_t); 7411767SAnurag.Maskey@Sun.COM extern void nwamd_object_set_state(nwam_object_type_t, const char *, 7511767SAnurag.Maskey@Sun.COM nwam_state_t, nwam_aux_state_t); 7611767SAnurag.Maskey@Sun.COM extern void nwamd_object_set_state_timed(nwam_object_type_t, const char *, 7711767SAnurag.Maskey@Sun.COM nwam_state_t, nwam_aux_state_t, uint32_t); 7811767SAnurag.Maskey@Sun.COM extern nwamd_event_method_t *nwamd_object_event_methods(nwam_object_type_t); 7911767SAnurag.Maskey@Sun.COM extern int nwamd_walk_objects(nwam_object_type_t, 8011767SAnurag.Maskey@Sun.COM int (*)(nwamd_object_t, void *), void *); 8111767SAnurag.Maskey@Sun.COM extern int nwamd_object_update(const char *, nwam_object_type_t); 8211767SAnurag.Maskey@Sun.COM 8311767SAnurag.Maskey@Sun.COM /* Known WLAN functions (no wlan objects, so no init/fini functions) */ 8411767SAnurag.Maskey@Sun.COM /* event methods */ 8511767SAnurag.Maskey@Sun.COM extern void nwamd_known_wlan_handle_init_event(nwamd_event_t); 8611767SAnurag.Maskey@Sun.COM 8711767SAnurag.Maskey@Sun.COM /* refresh/destroy a known WLAN */ 8811767SAnurag.Maskey@Sun.COM extern int nwamd_known_wlan_action(const char *, nwam_action_t); 8911767SAnurag.Maskey@Sun.COM 9011767SAnurag.Maskey@Sun.COM /* ENM functions */ 9111767SAnurag.Maskey@Sun.COM /* Init/fini functions for ENMs */ 9211767SAnurag.Maskey@Sun.COM extern void nwamd_init_enms(void); 9311767SAnurag.Maskey@Sun.COM extern void nwamd_fini_enms(void); 9411767SAnurag.Maskey@Sun.COM 9511767SAnurag.Maskey@Sun.COM /* ENM condition check function */ 9611767SAnurag.Maskey@Sun.COM extern void nwamd_enm_check_conditions(void); 9711767SAnurag.Maskey@Sun.COM 9811767SAnurag.Maskey@Sun.COM /* event methods */ 9911767SAnurag.Maskey@Sun.COM extern void nwamd_enm_handle_init_event(nwamd_event_t); 10011767SAnurag.Maskey@Sun.COM extern void nwamd_enm_handle_fini_event(nwamd_event_t); 10111767SAnurag.Maskey@Sun.COM 10211767SAnurag.Maskey@Sun.COM /* enable/disable an enm */ 10311767SAnurag.Maskey@Sun.COM extern int nwamd_enm_action(const char *, nwam_action_t); 10411767SAnurag.Maskey@Sun.COM 10511767SAnurag.Maskey@Sun.COM /* reread an enm from the repository */ 10611767SAnurag.Maskey@Sun.COM extern int nwamd_enm_refresh(const char *); 10711767SAnurag.Maskey@Sun.COM 10811767SAnurag.Maskey@Sun.COM /* loc functions */ 10911767SAnurag.Maskey@Sun.COM /* Init/fini functions for locs */ 11011767SAnurag.Maskey@Sun.COM extern void nwamd_init_locs(void); 11111767SAnurag.Maskey@Sun.COM extern void nwamd_fini_locs(void); 11211767SAnurag.Maskey@Sun.COM 11311767SAnurag.Maskey@Sun.COM /* loc condition check function */ 11411767SAnurag.Maskey@Sun.COM extern void nwamd_loc_check_conditions(void); 11511767SAnurag.Maskey@Sun.COM 11611767SAnurag.Maskey@Sun.COM /* on shutdown, revert to legacy location */ 11711767SAnurag.Maskey@Sun.COM extern void nwamd_loc_revert_to_legacy(void); 11811767SAnurag.Maskey@Sun.COM 11911767SAnurag.Maskey@Sun.COM /* event methods */ 12011767SAnurag.Maskey@Sun.COM extern void nwamd_loc_handle_init_event(nwamd_event_t); 12111767SAnurag.Maskey@Sun.COM extern void nwamd_loc_handle_fini_event(nwamd_event_t); 12211767SAnurag.Maskey@Sun.COM 12311767SAnurag.Maskey@Sun.COM /* enable/disable a loc */ 12411767SAnurag.Maskey@Sun.COM extern int nwamd_loc_action(const char *, nwam_action_t); 12511767SAnurag.Maskey@Sun.COM 12611767SAnurag.Maskey@Sun.COM /* reread a loc from the repository */ 12711767SAnurag.Maskey@Sun.COM extern int nwamd_loc_refresh(const char *); 12811767SAnurag.Maskey@Sun.COM 12911767SAnurag.Maskey@Sun.COM /* NCU functions */ 13011767SAnurag.Maskey@Sun.COM extern void nwamd_init_ncus(void); 13111767SAnurag.Maskey@Sun.COM extern void nwamd_fini_ncus(void); 13211767SAnurag.Maskey@Sun.COM 13311767SAnurag.Maskey@Sun.COM /* enable an ncp/ncu */ 13411767SAnurag.Maskey@Sun.COM extern int nwamd_ncp_action(const char *, nwam_action_t); 13511767SAnurag.Maskey@Sun.COM extern int nwamd_ncu_action(const char *, const char *, nwam_action_t); 13611767SAnurag.Maskey@Sun.COM 13711767SAnurag.Maskey@Sun.COM /* 13811767SAnurag.Maskey@Sun.COM * Event callbacks. 13911767SAnurag.Maskey@Sun.COM */ 14011767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_init_event(nwamd_event_t); 14111767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_fini_event(nwamd_event_t); 14211767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_if_state_event(nwamd_event_t); 14311767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_if_action_event(nwamd_event_t); 14411767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_link_state_event(nwamd_event_t); 14511767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_link_action_event(nwamd_event_t); 14611767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_init_event(nwamd_event_t); 14711767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_fini_event(nwamd_event_t); 14811767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_action_event(nwamd_event_t); 14911767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_state_event(nwamd_event_t); 15011767SAnurag.Maskey@Sun.COM 15111767SAnurag.Maskey@Sun.COM extern void nwamd_ncp_handle_action_event(nwamd_event_t); 15211767SAnurag.Maskey@Sun.COM extern void nwamd_ncp_handle_state_event(nwamd_event_t); 15311767SAnurag.Maskey@Sun.COM extern void nwamd_ncu_handle_periodic_scan_event(nwamd_event_t); 15411767SAnurag.Maskey@Sun.COM extern void nwamd_ncp_handle_enable_event(nwamd_event_t); 15511767SAnurag.Maskey@Sun.COM extern void nwamd_handle_upgrade(nwamd_event_t); 15611767SAnurag.Maskey@Sun.COM 15711767SAnurag.Maskey@Sun.COM extern void nwamd_enm_handle_action_event(nwamd_event_t); 15811767SAnurag.Maskey@Sun.COM extern void nwamd_enm_handle_state_event(nwamd_event_t); 15911767SAnurag.Maskey@Sun.COM 16011767SAnurag.Maskey@Sun.COM extern void nwamd_loc_handle_action_event(nwamd_event_t); 16111767SAnurag.Maskey@Sun.COM extern void nwamd_loc_handle_state_event(nwamd_event_t); 16211767SAnurag.Maskey@Sun.COM 16311767SAnurag.Maskey@Sun.COM extern void nwamd_known_wlan_handle_action_event(nwamd_event_t); 16411767SAnurag.Maskey@Sun.COM 16511767SAnurag.Maskey@Sun.COM extern void nwamd_add_phys_ncu_auto(nwam_ncp_handle_t, const char *); 16611767SAnurag.Maskey@Sun.COM extern void nwamd_rem_phys_ncu_auto(nwam_ncp_handle_t, const char *); 16711767SAnurag.Maskey@Sun.COM extern void add_auto_link(nwam_ncp_handle_t, const char *); 16811767SAnurag.Maskey@Sun.COM extern void add_auto_ip(nwam_ncp_handle_t, const char *); 16911767SAnurag.Maskey@Sun.COM extern void rem_auto_link(nwam_ncp_handle_t, const char *); 17011767SAnurag.Maskey@Sun.COM extern void rem_auto_ip(nwam_ncp_handle_t, const char *); 17111767SAnurag.Maskey@Sun.COM 17211767SAnurag.Maskey@Sun.COM #endif /* _OBJECTS_H */ 173