xref: /onnv-gate/usr/src/lib/libnwam/common/libnwam_priv.h (revision 11767:8f30d0e611c6)
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