1*11767SAnurag.Maskey@Sun.COM /* 2*11767SAnurag.Maskey@Sun.COM * CDDL HEADER START 3*11767SAnurag.Maskey@Sun.COM * 4*11767SAnurag.Maskey@Sun.COM * The contents of this file are subject to the terms of the 5*11767SAnurag.Maskey@Sun.COM * Common Development and Distribution License (the "License"). 6*11767SAnurag.Maskey@Sun.COM * You may not use this file except in compliance with the License. 7*11767SAnurag.Maskey@Sun.COM * 8*11767SAnurag.Maskey@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*11767SAnurag.Maskey@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*11767SAnurag.Maskey@Sun.COM * See the License for the specific language governing permissions 11*11767SAnurag.Maskey@Sun.COM * and limitations under the License. 12*11767SAnurag.Maskey@Sun.COM * 13*11767SAnurag.Maskey@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*11767SAnurag.Maskey@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*11767SAnurag.Maskey@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*11767SAnurag.Maskey@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*11767SAnurag.Maskey@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*11767SAnurag.Maskey@Sun.COM * 19*11767SAnurag.Maskey@Sun.COM * CDDL HEADER END 20*11767SAnurag.Maskey@Sun.COM */ 21*11767SAnurag.Maskey@Sun.COM /* 22*11767SAnurag.Maskey@Sun.COM * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 23*11767SAnurag.Maskey@Sun.COM * Use is subject to license terms. 24*11767SAnurag.Maskey@Sun.COM */ 25*11767SAnurag.Maskey@Sun.COM 26*11767SAnurag.Maskey@Sun.COM /* 27*11767SAnurag.Maskey@Sun.COM * This file contains private data structures and APIs of libnwam. Currently 28*11767SAnurag.Maskey@Sun.COM * these are used by nwamd (nwam_event_*() and nwam_record_audit_event()) and 29*11767SAnurag.Maskey@Sun.COM * netcfgd (nwam_backend_*()) only, supporting the event messaging, audit 30*11767SAnurag.Maskey@Sun.COM * and backend configuration access that nwamd and netcfgd supply. 31*11767SAnurag.Maskey@Sun.COM * 32*11767SAnurag.Maskey@Sun.COM * Implementation is MT safe. 33*11767SAnurag.Maskey@Sun.COM */ 34*11767SAnurag.Maskey@Sun.COM #ifndef _LIBNWAM_PRIV_H 35*11767SAnurag.Maskey@Sun.COM #define _LIBNWAM_PRIV_H 36*11767SAnurag.Maskey@Sun.COM 37*11767SAnurag.Maskey@Sun.COM #ifdef __cplusplus 38*11767SAnurag.Maskey@Sun.COM extern "C" { 39*11767SAnurag.Maskey@Sun.COM #endif 40*11767SAnurag.Maskey@Sun.COM 41*11767SAnurag.Maskey@Sun.COM #include <libnwam.h> 42*11767SAnurag.Maskey@Sun.COM 43*11767SAnurag.Maskey@Sun.COM /* Name of directory containing the doors */ 44*11767SAnurag.Maskey@Sun.COM #define NWAM_DOOR_DIR "/etc/svc/volatile/nwam" 45*11767SAnurag.Maskey@Sun.COM 46*11767SAnurag.Maskey@Sun.COM /* Name of door used to communicate with libnwam backend (in netcfgd) */ 47*11767SAnurag.Maskey@Sun.COM #define NWAM_BACKEND_DOOR_FILE NWAM_DOOR_DIR "/nwam_backend_door" 48*11767SAnurag.Maskey@Sun.COM 49*11767SAnurag.Maskey@Sun.COM /* Name of door used to communicate with nwamd */ 50*11767SAnurag.Maskey@Sun.COM #define NWAM_DOOR NWAM_DOOR_DIR "/nwam_door" 51*11767SAnurag.Maskey@Sun.COM 52*11767SAnurag.Maskey@Sun.COM /* Requests to nwamd door */ 53*11767SAnurag.Maskey@Sun.COM typedef enum { 54*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_NOOP, 55*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_EVENT_REGISTER, 56*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_EVENT_UNREGISTER, 57*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_ACTION, 58*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_STATE, 59*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_PRIORITY_GROUP, 60*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_WLAN_SCAN, 61*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_WLAN_SCAN_RESULTS, 62*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_WLAN_SELECT, 63*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_TYPE_WLAN_SET_KEY 64*11767SAnurag.Maskey@Sun.COM } nwam_request_type_t; 65*11767SAnurag.Maskey@Sun.COM 66*11767SAnurag.Maskey@Sun.COM /* Status returned by nwamd door */ 67*11767SAnurag.Maskey@Sun.COM typedef enum { 68*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_STATUS_OK, 69*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_STATUS_FAILED, 70*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_STATUS_UNKNOWN, 71*11767SAnurag.Maskey@Sun.COM NWAM_REQUEST_STATUS_ALREADY 72*11767SAnurag.Maskey@Sun.COM } nwam_request_status_t; 73*11767SAnurag.Maskey@Sun.COM 74*11767SAnurag.Maskey@Sun.COM #define NWAMD_MAX_NUM_WLANS 64 75*11767SAnurag.Maskey@Sun.COM 76*11767SAnurag.Maskey@Sun.COM typedef union { 77*11767SAnurag.Maskey@Sun.COM /* Used for EVENT_[UN]REGISTER requests */ 78*11767SAnurag.Maskey@Sun.COM struct { 79*11767SAnurag.Maskey@Sun.COM char nwdad_name[MAXPATHLEN]; 80*11767SAnurag.Maskey@Sun.COM } nwdad_register_info; 81*11767SAnurag.Maskey@Sun.COM 82*11767SAnurag.Maskey@Sun.COM /* Used for ACTION requests */ 83*11767SAnurag.Maskey@Sun.COM struct { 84*11767SAnurag.Maskey@Sun.COM nwam_object_type_t nwdad_object_type; 85*11767SAnurag.Maskey@Sun.COM char nwdad_name[NWAM_MAX_NAME_LEN]; 86*11767SAnurag.Maskey@Sun.COM char nwdad_parent[NWAM_MAX_NAME_LEN]; 87*11767SAnurag.Maskey@Sun.COM nwam_action_t nwdad_action; 88*11767SAnurag.Maskey@Sun.COM } nwdad_object_action; 89*11767SAnurag.Maskey@Sun.COM 90*11767SAnurag.Maskey@Sun.COM /* Used for STATE requests */ 91*11767SAnurag.Maskey@Sun.COM struct { 92*11767SAnurag.Maskey@Sun.COM nwam_object_type_t nwdad_object_type; 93*11767SAnurag.Maskey@Sun.COM char nwdad_name[NWAM_MAX_NAME_LEN]; 94*11767SAnurag.Maskey@Sun.COM char nwdad_parent[NWAM_MAX_NAME_LEN]; 95*11767SAnurag.Maskey@Sun.COM nwam_state_t nwdad_state; 96*11767SAnurag.Maskey@Sun.COM nwam_aux_state_t nwdad_aux_state; 97*11767SAnurag.Maskey@Sun.COM } nwdad_object_state; 98*11767SAnurag.Maskey@Sun.COM 99*11767SAnurag.Maskey@Sun.COM /* Used for PRIORITY_GROUP requests */ 100*11767SAnurag.Maskey@Sun.COM struct { 101*11767SAnurag.Maskey@Sun.COM int64_t nwdad_priority; 102*11767SAnurag.Maskey@Sun.COM } nwdad_priority_group_info; 103*11767SAnurag.Maskey@Sun.COM 104*11767SAnurag.Maskey@Sun.COM /* Used for WLAN request/responses */ 105*11767SAnurag.Maskey@Sun.COM struct { 106*11767SAnurag.Maskey@Sun.COM char nwdad_name[NWAM_MAX_NAME_LEN]; 107*11767SAnurag.Maskey@Sun.COM char nwdad_essid[NWAM_MAX_NAME_LEN]; 108*11767SAnurag.Maskey@Sun.COM char nwdad_bssid[NWAM_MAX_NAME_LEN]; 109*11767SAnurag.Maskey@Sun.COM uint32_t nwdad_security_mode; 110*11767SAnurag.Maskey@Sun.COM char nwdad_key[NWAM_MAX_NAME_LEN]; 111*11767SAnurag.Maskey@Sun.COM uint_t nwdad_keyslot; 112*11767SAnurag.Maskey@Sun.COM boolean_t nwdad_add_to_known_wlans; 113*11767SAnurag.Maskey@Sun.COM uint_t nwdad_num_wlans; 114*11767SAnurag.Maskey@Sun.COM nwam_wlan_t nwdad_wlans[NWAMD_MAX_NUM_WLANS]; 115*11767SAnurag.Maskey@Sun.COM } nwdad_wlan_info; 116*11767SAnurag.Maskey@Sun.COM 117*11767SAnurag.Maskey@Sun.COM } nwamd_door_arg_data_t; 118*11767SAnurag.Maskey@Sun.COM 119*11767SAnurag.Maskey@Sun.COM typedef struct { 120*11767SAnurag.Maskey@Sun.COM nwam_request_type_t nwda_type; 121*11767SAnurag.Maskey@Sun.COM nwam_request_status_t nwda_status; 122*11767SAnurag.Maskey@Sun.COM nwam_error_t nwda_error; 123*11767SAnurag.Maskey@Sun.COM nwamd_door_arg_data_t nwda_data; 124*11767SAnurag.Maskey@Sun.COM } nwamd_door_arg_t; 125*11767SAnurag.Maskey@Sun.COM 126*11767SAnurag.Maskey@Sun.COM typedef enum { 127*11767SAnurag.Maskey@Sun.COM NWAM_BACKEND_DOOR_CMD_READ_REQ, 128*11767SAnurag.Maskey@Sun.COM NWAM_BACKEND_DOOR_CMD_UPDATE_REQ, 129*11767SAnurag.Maskey@Sun.COM NWAM_BACKEND_DOOR_CMD_REMOVE_REQ 130*11767SAnurag.Maskey@Sun.COM } nwam_backend_door_cmd_t; 131*11767SAnurag.Maskey@Sun.COM 132*11767SAnurag.Maskey@Sun.COM typedef struct nwam_backend_door_arg { 133*11767SAnurag.Maskey@Sun.COM nwam_backend_door_cmd_t nwbda_cmd; 134*11767SAnurag.Maskey@Sun.COM char nwbda_dbname[MAXPATHLEN]; /* config filename */ 135*11767SAnurag.Maskey@Sun.COM char nwbda_object[NWAM_MAX_NAME_LEN]; /* config object */ 136*11767SAnurag.Maskey@Sun.COM size_t nwbda_datalen; /* data follows arg */ 137*11767SAnurag.Maskey@Sun.COM nwam_error_t nwbda_result; /* return code */ 138*11767SAnurag.Maskey@Sun.COM uint64_t nwbda_flags; 139*11767SAnurag.Maskey@Sun.COM } nwam_backend_door_arg_t; 140*11767SAnurag.Maskey@Sun.COM 141*11767SAnurag.Maskey@Sun.COM /* 142*11767SAnurag.Maskey@Sun.COM * Functions needed to initialize/stop processing of libnwam backend data 143*11767SAnurag.Maskey@Sun.COM * (used in netcfgd). 144*11767SAnurag.Maskey@Sun.COM */ 145*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_backend_init(void); 146*11767SAnurag.Maskey@Sun.COM extern void nwam_backend_fini(void); 147*11767SAnurag.Maskey@Sun.COM 148*11767SAnurag.Maskey@Sun.COM /* 149*11767SAnurag.Maskey@Sun.COM * create audit session, report event, end session. Used by nwamd. 150*11767SAnurag.Maskey@Sun.COM */ 151*11767SAnurag.Maskey@Sun.COM extern void nwam_record_audit_event(const ucred_t *, au_event_t, char *, char *, 152*11767SAnurag.Maskey@Sun.COM int, int); 153*11767SAnurag.Maskey@Sun.COM 154*11767SAnurag.Maskey@Sun.COM /* 155*11767SAnurag.Maskey@Sun.COM * NWAM daemon functions, used to send, stop sending, initialize or finish 156*11767SAnurag.Maskey@Sun.COM * event IPC. Used by nwamd. 157*11767SAnurag.Maskey@Sun.COM */ 158*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_event_send(nwam_event_t); 159*11767SAnurag.Maskey@Sun.COM extern void nwam_event_send_fini(void); 160*11767SAnurag.Maskey@Sun.COM extern nwam_error_t nwam_event_queue_init(const char *); 161*11767SAnurag.Maskey@Sun.COM extern void nwam_event_queue_fini(const char *); 162*11767SAnurag.Maskey@Sun.COM 163*11767SAnurag.Maskey@Sun.COM #ifdef __cplusplus 164*11767SAnurag.Maskey@Sun.COM } 165*11767SAnurag.Maskey@Sun.COM #endif 166*11767SAnurag.Maskey@Sun.COM 167*11767SAnurag.Maskey@Sun.COM #endif /* _LIBNWAM_PRIV_H */ 168