xref: /titanic_44/usr/src/cmd/dcs/sparc/sun4u/remote_cfg.h (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  * Copyright (c) 2000 by Sun Microsystems, Inc.
24*7c478bd9Sstevel@tonic-gate  * All rights reserved.
25*7c478bd9Sstevel@tonic-gate  */
26*7c478bd9Sstevel@tonic-gate 
27*7c478bd9Sstevel@tonic-gate #ifndef _REMOTE_CFG_H
28*7c478bd9Sstevel@tonic-gate #define	_REMOTE_CFG_H
29*7c478bd9Sstevel@tonic-gate 
30*7c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*7c478bd9Sstevel@tonic-gate 
32*7c478bd9Sstevel@tonic-gate /*
33*7c478bd9Sstevel@tonic-gate  * WARNING: The contents of this file are shared by all projects
34*7c478bd9Sstevel@tonic-gate  * that  wish to  perform  remote  Dynamic Reconfiguration  (DR)
35*7c478bd9Sstevel@tonic-gate  * operations. Copies of this file can be found in the following
36*7c478bd9Sstevel@tonic-gate  * locations:
37*7c478bd9Sstevel@tonic-gate  *
38*7c478bd9Sstevel@tonic-gate  *	Project	    Location
39*7c478bd9Sstevel@tonic-gate  *	-------	    --------
40*7c478bd9Sstevel@tonic-gate  *	Solaris	    usr/src/cmd/dcs/sparc/sun4u/%M%
41*7c478bd9Sstevel@tonic-gate  *	SMS	    src/sms/lib/librdr/%M%
42*7c478bd9Sstevel@tonic-gate  *
43*7c478bd9Sstevel@tonic-gate  * In order for proper communication to occur,  the files in the
44*7c478bd9Sstevel@tonic-gate  * above locations must match exactly. Any changes that are made
45*7c478bd9Sstevel@tonic-gate  * to this file should  be made to all of the files in the list.
46*7c478bd9Sstevel@tonic-gate  */
47*7c478bd9Sstevel@tonic-gate 
48*7c478bd9Sstevel@tonic-gate /*
49*7c478bd9Sstevel@tonic-gate  * This file contains definitions for a transport layer interface socket
50*7c478bd9Sstevel@tonic-gate  * interface between a domain configuration server (DCS) and a domain
51*7c478bd9Sstevel@tonic-gate  * configuration agent (DCA). The domain configuration server resides
52*7c478bd9Sstevel@tonic-gate  * within Solaris on a domain. The domain configuration agent resides on
53*7c478bd9Sstevel@tonic-gate  * the system controller.
54*7c478bd9Sstevel@tonic-gate  */
55*7c478bd9Sstevel@tonic-gate 
56*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
57*7c478bd9Sstevel@tonic-gate extern "C" {
58*7c478bd9Sstevel@tonic-gate #endif
59*7c478bd9Sstevel@tonic-gate 
60*7c478bd9Sstevel@tonic-gate 
61*7c478bd9Sstevel@tonic-gate /*
62*7c478bd9Sstevel@tonic-gate  * The data_type field indicates whether the message is REQUEST
63*7c478bd9Sstevel@tonic-gate  * or REPLY.
64*7c478bd9Sstevel@tonic-gate  */
65*7c478bd9Sstevel@tonic-gate typedef enum {
66*7c478bd9Sstevel@tonic-gate 	RDR_REQUEST = 1,
67*7c478bd9Sstevel@tonic-gate 	RDR_REPLY
68*7c478bd9Sstevel@tonic-gate } rdr_msg_data_type_t;
69*7c478bd9Sstevel@tonic-gate 
70*7c478bd9Sstevel@tonic-gate 
71*7c478bd9Sstevel@tonic-gate /*
72*7c478bd9Sstevel@tonic-gate  * The error_msg_ctl field indicates whether error messages
73*7c478bd9Sstevel@tonic-gate  * should be generated or not. See the errstring argument in
74*7c478bd9Sstevel@tonic-gate  * the config_admin(3CFGADM) man page.
75*7c478bd9Sstevel@tonic-gate  */
76*7c478bd9Sstevel@tonic-gate typedef enum {
77*7c478bd9Sstevel@tonic-gate 	RDR_GENERATE_ERR_MSGS = 1,
78*7c478bd9Sstevel@tonic-gate 	RDR_DONT_GENERATE_ERR_MSGS
79*7c478bd9Sstevel@tonic-gate } rdr_error_msg_ctl_t;
80*7c478bd9Sstevel@tonic-gate 
81*7c478bd9Sstevel@tonic-gate 
82*7c478bd9Sstevel@tonic-gate /*
83*7c478bd9Sstevel@tonic-gate  * The list_msg_ctl field indicates whether a list should
84*7c478bd9Sstevel@tonic-gate  * be generated for all attachment points in the device tree or
85*7c478bd9Sstevel@tonic-gate  * only those attachment points specified in the message. See
86*7c478bd9Sstevel@tonic-gate  * the comment on the first two arguments for config_list_ext
87*7c478bd9Sstevel@tonic-gate  * in the config_admin(3CFGADM) man page.
88*7c478bd9Sstevel@tonic-gate  */
89*7c478bd9Sstevel@tonic-gate typedef enum {
90*7c478bd9Sstevel@tonic-gate 	RDR_LIST_ONLY_PARAM_APS = 1,
91*7c478bd9Sstevel@tonic-gate 	RDR_LIST_ALL_APS
92*7c478bd9Sstevel@tonic-gate } rdr_list_msg_control_t;
93*7c478bd9Sstevel@tonic-gate 
94*7c478bd9Sstevel@tonic-gate 
95*7c478bd9Sstevel@tonic-gate /*
96*7c478bd9Sstevel@tonic-gate  * The permissions field indicates if the list_ext command should
97*7c478bd9Sstevel@tonic-gate  * filter out attachment points that the remote user doesn't have
98*7c478bd9Sstevel@tonic-gate  * sufficient access permissions to view.
99*7c478bd9Sstevel@tonic-gate  */
100*7c478bd9Sstevel@tonic-gate typedef enum {
101*7c478bd9Sstevel@tonic-gate 	RDR_NOT_PRIVILEGED = 0,
102*7c478bd9Sstevel@tonic-gate 	RDR_PRIVILEGED
103*7c478bd9Sstevel@tonic-gate } rdr_list_permission_control_t;
104*7c478bd9Sstevel@tonic-gate 
105*7c478bd9Sstevel@tonic-gate 
106*7c478bd9Sstevel@tonic-gate /*
107*7c478bd9Sstevel@tonic-gate  * The message_opcode value of the message indicates the purpose
108*7c478bd9Sstevel@tonic-gate  * of the request. The defined values for message_opcode are:
109*7c478bd9Sstevel@tonic-gate  */
110*7c478bd9Sstevel@tonic-gate typedef enum {
111*7c478bd9Sstevel@tonic-gate 	RDR_SES_REQ = 1,	   /* Session open.			   */
112*7c478bd9Sstevel@tonic-gate 	RDR_SES_ESTBL,		   /* Session Establishment.		   */
113*7c478bd9Sstevel@tonic-gate 	RDR_SES_END,		   /* Session end.			   */
114*7c478bd9Sstevel@tonic-gate 	RDR_CONF_CHANGE_STATE,	   /* Change state of an attachment point. */
115*7c478bd9Sstevel@tonic-gate 	RDR_CONF_PRIVATE_FUNC,	   /* Invoke h/w specific func.		   */
116*7c478bd9Sstevel@tonic-gate 	RDR_CONF_TEST,		   /* Test the system board.		   */
117*7c478bd9Sstevel@tonic-gate 	RDR_CONF_LIST_EXT,	   /* Listing interface.		   */
118*7c478bd9Sstevel@tonic-gate 	RDR_CONF_HELP,		   /* Request output of localized help msg */
119*7c478bd9Sstevel@tonic-gate 	RDR_CONF_AP_ID_CMP,	   /* Compare two attachment point ids.	   */
120*7c478bd9Sstevel@tonic-gate 	RDR_CONF_ABORT_CMD,	   /* Abort the current config command.	   */
121*7c478bd9Sstevel@tonic-gate 	RDR_CONF_CONFIRM_CALLBACK, /* Confirm call-back.		   */
122*7c478bd9Sstevel@tonic-gate 	RDR_CONF_MSG_CALLBACK,	   /* Message call-back.		   */
123*7c478bd9Sstevel@tonic-gate 	RDR_RSRC_INFO,		   /* System board resource info.	   */
124*7c478bd9Sstevel@tonic-gate 	RDR_NUM_OPS
125*7c478bd9Sstevel@tonic-gate } rdr_msg_opcode_t;
126*7c478bd9Sstevel@tonic-gate 
127*7c478bd9Sstevel@tonic-gate 
128*7c478bd9Sstevel@tonic-gate /*
129*7c478bd9Sstevel@tonic-gate  * The status is valid only if the data_type is REPLY. The possible
130*7c478bd9Sstevel@tonic-gate  * values for status are, FAILED or SUCCESS.
131*7c478bd9Sstevel@tonic-gate  */
132*7c478bd9Sstevel@tonic-gate typedef enum {
133*7c478bd9Sstevel@tonic-gate 	RDR_SUCCESS = 0,
134*7c478bd9Sstevel@tonic-gate 	RDR_FAILED
135*7c478bd9Sstevel@tonic-gate } dr_msg_status_t;
136*7c478bd9Sstevel@tonic-gate 
137*7c478bd9Sstevel@tonic-gate 
138*7c478bd9Sstevel@tonic-gate /*
139*7c478bd9Sstevel@tonic-gate  * The following typedefs define message formats for use in the
140*7c478bd9Sstevel@tonic-gate  * rdr_msg_type_t union. The rdr_msg_type_t union contains the
141*7c478bd9Sstevel@tonic-gate  * majority of the information in the messages sent between the
142*7c478bd9Sstevel@tonic-gate  * DCS and DCA.
143*7c478bd9Sstevel@tonic-gate  *
144*7c478bd9Sstevel@tonic-gate  * Some types require variable length data to follow the fixed
145*7c478bd9Sstevel@tonic-gate  * length information in the struct. If this is required, a
146*7c478bd9Sstevel@tonic-gate  * comment is placed at the end of the struct that shows the
147*7c478bd9Sstevel@tonic-gate  * contents of that information along with the required number
148*7c478bd9Sstevel@tonic-gate  * of bytes.
149*7c478bd9Sstevel@tonic-gate  *
150*7c478bd9Sstevel@tonic-gate  * All *_size fields are the length of the string + 1 to account
151*7c478bd9Sstevel@tonic-gate  * for NULL termination.
152*7c478bd9Sstevel@tonic-gate  */
153*7c478bd9Sstevel@tonic-gate 
154*7c478bd9Sstevel@tonic-gate 
155*7c478bd9Sstevel@tonic-gate typedef struct {
156*7c478bd9Sstevel@tonic-gate 	unsigned int		locale_size;
157*7c478bd9Sstevel@tonic-gate 	/* locale string (locale_size bytes)	 */
158*7c478bd9Sstevel@tonic-gate } rdr_ses_req_t;
159*7c478bd9Sstevel@tonic-gate 
160*7c478bd9Sstevel@tonic-gate 
161*7c478bd9Sstevel@tonic-gate typedef struct {
162*7c478bd9Sstevel@tonic-gate 	unsigned long		session_id;
163*7c478bd9Sstevel@tonic-gate } rdr_ses_req_reply_t;
164*7c478bd9Sstevel@tonic-gate 
165*7c478bd9Sstevel@tonic-gate 
166*7c478bd9Sstevel@tonic-gate typedef struct {
167*7c478bd9Sstevel@tonic-gate 	unsigned int		num_ap_ids;
168*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id_char_size;
169*7c478bd9Sstevel@tonic-gate 	unsigned int		options_size;
170*7c478bd9Sstevel@tonic-gate 	unsigned long		confirm_callback_id;
171*7c478bd9Sstevel@tonic-gate 	unsigned long		confirm_appdata_ptr;
172*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_callback_id;
173*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_appdata_ptr;
174*7c478bd9Sstevel@tonic-gate 	unsigned long		flags;
175*7c478bd9Sstevel@tonic-gate 	unsigned long		timeval;
176*7c478bd9Sstevel@tonic-gate 	unsigned short 		state_change_cmd;
177*7c478bd9Sstevel@tonic-gate 	unsigned short		error_msg_ctl;
178*7c478bd9Sstevel@tonic-gate 	char			retries;
179*7c478bd9Sstevel@tonic-gate 	char			pad_byte1;
180*7c478bd9Sstevel@tonic-gate 	/* ap id strings (ap_id_char_size bytes) */
181*7c478bd9Sstevel@tonic-gate 	/* option string (options_size bytes)	 */
182*7c478bd9Sstevel@tonic-gate } rdr_change_state_t;
183*7c478bd9Sstevel@tonic-gate 
184*7c478bd9Sstevel@tonic-gate 
185*7c478bd9Sstevel@tonic-gate typedef struct {
186*7c478bd9Sstevel@tonic-gate 	unsigned int		errstring_size;
187*7c478bd9Sstevel@tonic-gate 	/* error string (errstring_size bytes)	 */
188*7c478bd9Sstevel@tonic-gate } rdr_change_state_reply_t;
189*7c478bd9Sstevel@tonic-gate 
190*7c478bd9Sstevel@tonic-gate 
191*7c478bd9Sstevel@tonic-gate typedef struct {
192*7c478bd9Sstevel@tonic-gate 	unsigned int		num_ap_ids;
193*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id_char_size;
194*7c478bd9Sstevel@tonic-gate 	unsigned int		options_size;
195*7c478bd9Sstevel@tonic-gate 	unsigned int		function_size;
196*7c478bd9Sstevel@tonic-gate 	unsigned long		confirm_callback_id;
197*7c478bd9Sstevel@tonic-gate 	unsigned long		confirm_appdata_ptr;
198*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_callback_id;
199*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_appdata_ptr;
200*7c478bd9Sstevel@tonic-gate 	unsigned long		flags;
201*7c478bd9Sstevel@tonic-gate 	unsigned short		error_msg_ctl;
202*7c478bd9Sstevel@tonic-gate 	char			pad_byte1;
203*7c478bd9Sstevel@tonic-gate 	char			pad_byte2;
204*7c478bd9Sstevel@tonic-gate 	/* ap id strings (ap_id_char_size bytes) */
205*7c478bd9Sstevel@tonic-gate 	/* option string (options_size bytes)	 */
206*7c478bd9Sstevel@tonic-gate 	/* function string (function_size bytes) */
207*7c478bd9Sstevel@tonic-gate } rdr_private_func_t;
208*7c478bd9Sstevel@tonic-gate 
209*7c478bd9Sstevel@tonic-gate 
210*7c478bd9Sstevel@tonic-gate typedef struct {
211*7c478bd9Sstevel@tonic-gate 	unsigned int		errstring_size;
212*7c478bd9Sstevel@tonic-gate 	/* error string (errstring_size bytes)	 */
213*7c478bd9Sstevel@tonic-gate } rdr_private_func_reply_t;
214*7c478bd9Sstevel@tonic-gate 
215*7c478bd9Sstevel@tonic-gate 
216*7c478bd9Sstevel@tonic-gate typedef struct {
217*7c478bd9Sstevel@tonic-gate 	unsigned int		num_ap_ids;
218*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id_char_size;
219*7c478bd9Sstevel@tonic-gate 	unsigned int		options_size;
220*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_callback_id;
221*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_appdata_ptr;
222*7c478bd9Sstevel@tonic-gate 	unsigned long		flags;
223*7c478bd9Sstevel@tonic-gate 	unsigned short		error_msg_ctl;
224*7c478bd9Sstevel@tonic-gate 	char			pad_byte1;
225*7c478bd9Sstevel@tonic-gate 	char			pad_byte2;
226*7c478bd9Sstevel@tonic-gate 	/* ap id strings (ap_id_char_size bytes) */
227*7c478bd9Sstevel@tonic-gate 	/* option string (options_size bytes)	 */
228*7c478bd9Sstevel@tonic-gate } rdr_test_t;
229*7c478bd9Sstevel@tonic-gate 
230*7c478bd9Sstevel@tonic-gate 
231*7c478bd9Sstevel@tonic-gate typedef struct {
232*7c478bd9Sstevel@tonic-gate 	unsigned int		errstring_size;
233*7c478bd9Sstevel@tonic-gate 	/* error string (errstring_size bytes)	 */
234*7c478bd9Sstevel@tonic-gate } rdr_test_reply_t;
235*7c478bd9Sstevel@tonic-gate 
236*7c478bd9Sstevel@tonic-gate 
237*7c478bd9Sstevel@tonic-gate typedef struct {
238*7c478bd9Sstevel@tonic-gate 	unsigned int		num_ap_ids;
239*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id_char_size;
240*7c478bd9Sstevel@tonic-gate 	unsigned int		options_size;
241*7c478bd9Sstevel@tonic-gate 	unsigned int		listopts_size;
242*7c478bd9Sstevel@tonic-gate 	unsigned short		error_msg_ctl;
243*7c478bd9Sstevel@tonic-gate 	unsigned short		list_msg_ctl;
244*7c478bd9Sstevel@tonic-gate 	unsigned long		flags;
245*7c478bd9Sstevel@tonic-gate 	unsigned int		permissions;
246*7c478bd9Sstevel@tonic-gate 	/* ap id strings (ap_id_char_size bytes) */
247*7c478bd9Sstevel@tonic-gate 	/* option string (options_size bytes)	 */
248*7c478bd9Sstevel@tonic-gate 	/* list opt string (listopts_size bytes) */
249*7c478bd9Sstevel@tonic-gate } rdr_list_ext_t;
250*7c478bd9Sstevel@tonic-gate 
251*7c478bd9Sstevel@tonic-gate 
252*7c478bd9Sstevel@tonic-gate /*
253*7c478bd9Sstevel@tonic-gate  * The num_ap_ids is the total number of ap_ids in the sequence of
254*7c478bd9Sstevel@tonic-gate  * messages for the list_ext reply. The list data array is an
255*7c478bd9Sstevel@tonic-gate  * array of cfga_list_data_t (see config_admin (3CFGA)) structs
256*7c478bd9Sstevel@tonic-gate  * that has num_ap_ids elements.
257*7c478bd9Sstevel@tonic-gate  */
258*7c478bd9Sstevel@tonic-gate typedef struct {
259*7c478bd9Sstevel@tonic-gate 	unsigned int		num_ap_ids;
260*7c478bd9Sstevel@tonic-gate 	unsigned int		errstring_size;
261*7c478bd9Sstevel@tonic-gate 	/* list data array (num_ap_ids elements) */
262*7c478bd9Sstevel@tonic-gate 	/* error string (errstring_size bytes)	 */
263*7c478bd9Sstevel@tonic-gate } rdr_list_ext_reply_t;
264*7c478bd9Sstevel@tonic-gate 
265*7c478bd9Sstevel@tonic-gate 
266*7c478bd9Sstevel@tonic-gate typedef struct {
267*7c478bd9Sstevel@tonic-gate 	unsigned int		num_ap_ids;
268*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id_char_size;
269*7c478bd9Sstevel@tonic-gate 	unsigned long 		msg_callback_id;
270*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_appdata_ptr;
271*7c478bd9Sstevel@tonic-gate 	unsigned int		options_size;
272*7c478bd9Sstevel@tonic-gate 	unsigned long 		flags;
273*7c478bd9Sstevel@tonic-gate 	/* ap id strings (ap_id_char_size bytes) */
274*7c478bd9Sstevel@tonic-gate 	/* option string (options_size bytes)	 */
275*7c478bd9Sstevel@tonic-gate } rdr_help_t;
276*7c478bd9Sstevel@tonic-gate 
277*7c478bd9Sstevel@tonic-gate 
278*7c478bd9Sstevel@tonic-gate typedef struct {
279*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id1_size;
280*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id2_size;
281*7c478bd9Sstevel@tonic-gate 	/* ap id 1 string (ap_id1_size bytes)	 */
282*7c478bd9Sstevel@tonic-gate 	/* ap id 2 string (ap_id1_size bytes)	 */
283*7c478bd9Sstevel@tonic-gate } rdr_ap_id_cmp_t;
284*7c478bd9Sstevel@tonic-gate 
285*7c478bd9Sstevel@tonic-gate 
286*7c478bd9Sstevel@tonic-gate typedef struct {
287*7c478bd9Sstevel@tonic-gate 	unsigned long		session_id;
288*7c478bd9Sstevel@tonic-gate } rdr_abort_cmd_t;
289*7c478bd9Sstevel@tonic-gate 
290*7c478bd9Sstevel@tonic-gate 
291*7c478bd9Sstevel@tonic-gate typedef struct {
292*7c478bd9Sstevel@tonic-gate 	unsigned long		confirm_callback_id;
293*7c478bd9Sstevel@tonic-gate 	unsigned long		appdata_ptr;
294*7c478bd9Sstevel@tonic-gate 	unsigned int		message_size;
295*7c478bd9Sstevel@tonic-gate 	/* prompt message (message_size bytes)	 */
296*7c478bd9Sstevel@tonic-gate } rdr_confirm_callback_t;
297*7c478bd9Sstevel@tonic-gate 
298*7c478bd9Sstevel@tonic-gate 
299*7c478bd9Sstevel@tonic-gate typedef struct {
300*7c478bd9Sstevel@tonic-gate 	unsigned long		confirm_callback_id;
301*7c478bd9Sstevel@tonic-gate 	unsigned long		appdata_ptr;
302*7c478bd9Sstevel@tonic-gate 	int			response;
303*7c478bd9Sstevel@tonic-gate } rdr_confirm_callback_reply_t;
304*7c478bd9Sstevel@tonic-gate 
305*7c478bd9Sstevel@tonic-gate 
306*7c478bd9Sstevel@tonic-gate typedef struct {
307*7c478bd9Sstevel@tonic-gate 	unsigned long		msg_callback_id;
308*7c478bd9Sstevel@tonic-gate 	unsigned long		appdata_ptr;
309*7c478bd9Sstevel@tonic-gate 	unsigned int		message_size;
310*7c478bd9Sstevel@tonic-gate 	/* user message (message_size bytes)	 */
311*7c478bd9Sstevel@tonic-gate } rdr_msg_callback_t;
312*7c478bd9Sstevel@tonic-gate 
313*7c478bd9Sstevel@tonic-gate 
314*7c478bd9Sstevel@tonic-gate typedef struct {
315*7c478bd9Sstevel@tonic-gate 	unsigned int		num_ap_ids;
316*7c478bd9Sstevel@tonic-gate 	unsigned int		ap_id_char_size;
317*7c478bd9Sstevel@tonic-gate 	int			flags;
318*7c478bd9Sstevel@tonic-gate 	/* ap id strings (ap_id_char_size bytes) */
319*7c478bd9Sstevel@tonic-gate } rdr_rsrc_info_t;
320*7c478bd9Sstevel@tonic-gate 
321*7c478bd9Sstevel@tonic-gate 
322*7c478bd9Sstevel@tonic-gate typedef struct {
323*7c478bd9Sstevel@tonic-gate 	unsigned long		packed_hdl_size;
324*7c478bd9Sstevel@tonic-gate 	/* rsrc info buf (packed_hdl_size bytes) */
325*7c478bd9Sstevel@tonic-gate } rdr_rsrc_info_reply_t;
326*7c478bd9Sstevel@tonic-gate 
327*7c478bd9Sstevel@tonic-gate 
328*7c478bd9Sstevel@tonic-gate typedef union {
329*7c478bd9Sstevel@tonic-gate 	rdr_ses_req_t			ses_req;
330*7c478bd9Sstevel@tonic-gate 	rdr_ses_req_reply_t		ses_req_reply;
331*7c478bd9Sstevel@tonic-gate 	rdr_change_state_t 		change_state;
332*7c478bd9Sstevel@tonic-gate 	rdr_change_state_reply_t 	change_state_reply;
333*7c478bd9Sstevel@tonic-gate 	rdr_private_func_t 		private_func;
334*7c478bd9Sstevel@tonic-gate 	rdr_private_func_reply_t	private_func_reply;
335*7c478bd9Sstevel@tonic-gate 	rdr_test_t			test;
336*7c478bd9Sstevel@tonic-gate 	rdr_test_reply_t		test_reply;
337*7c478bd9Sstevel@tonic-gate 	rdr_list_ext_t			list_ext;
338*7c478bd9Sstevel@tonic-gate 	rdr_list_ext_reply_t		list_ext_reply;
339*7c478bd9Sstevel@tonic-gate 	rdr_help_t			help;
340*7c478bd9Sstevel@tonic-gate 	rdr_ap_id_cmp_t			ap_id_cmp;
341*7c478bd9Sstevel@tonic-gate 	rdr_abort_cmd_t			abort;
342*7c478bd9Sstevel@tonic-gate 	rdr_confirm_callback_t		confirm_callback;
343*7c478bd9Sstevel@tonic-gate 	rdr_confirm_callback_reply_t	confirm_callback_reply;
344*7c478bd9Sstevel@tonic-gate 	rdr_msg_callback_t		msg_callback;
345*7c478bd9Sstevel@tonic-gate 	rdr_rsrc_info_t			rsrc_info;
346*7c478bd9Sstevel@tonic-gate 	rdr_rsrc_info_reply_t		rsrc_info_reply;
347*7c478bd9Sstevel@tonic-gate } rdr_msg_type_t;
348*7c478bd9Sstevel@tonic-gate 
349*7c478bd9Sstevel@tonic-gate 
350*7c478bd9Sstevel@tonic-gate /*
351*7c478bd9Sstevel@tonic-gate  * The RDR message will contain the following members:
352*7c478bd9Sstevel@tonic-gate  */
353*7c478bd9Sstevel@tonic-gate typedef struct {
354*7c478bd9Sstevel@tonic-gate 	unsigned long	data_length;
355*7c478bd9Sstevel@tonic-gate 
356*7c478bd9Sstevel@tonic-gate 	/* Message Op, Type, and Status */
357*7c478bd9Sstevel@tonic-gate 	unsigned char	message_opcode;		/* rdr_msg_opcode_t 	*/
358*7c478bd9Sstevel@tonic-gate 	unsigned char	data_type;		/* rdr_msg_data_type_t	*/
359*7c478bd9Sstevel@tonic-gate 	char		pad_byte1;
360*7c478bd9Sstevel@tonic-gate 	char		pad_byte2;
361*7c478bd9Sstevel@tonic-gate 	unsigned long	status;			/* rdr_msg_status_t	*/
362*7c478bd9Sstevel@tonic-gate 
363*7c478bd9Sstevel@tonic-gate 	/* These are for security and version */
364*7c478bd9Sstevel@tonic-gate 	unsigned long	random_req;
365*7c478bd9Sstevel@tonic-gate 	unsigned long	random_resp;
366*7c478bd9Sstevel@tonic-gate 
367*7c478bd9Sstevel@tonic-gate 	unsigned short	major_version;
368*7c478bd9Sstevel@tonic-gate 	unsigned short	minor_version;
369*7c478bd9Sstevel@tonic-gate } rdr_msg_hdr_t;
370*7c478bd9Sstevel@tonic-gate 
371*7c478bd9Sstevel@tonic-gate 
372*7c478bd9Sstevel@tonic-gate /*
373*7c478bd9Sstevel@tonic-gate  * The RDR message body:
374*7c478bd9Sstevel@tonic-gate  */
375*7c478bd9Sstevel@tonic-gate typedef struct {
376*7c478bd9Sstevel@tonic-gate 	rdr_msg_hdr_t 	app;
377*7c478bd9Sstevel@tonic-gate 	rdr_msg_type_t	conf;
378*7c478bd9Sstevel@tonic-gate } rdr_msg_t;
379*7c478bd9Sstevel@tonic-gate 
380*7c478bd9Sstevel@tonic-gate 
381*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
382*7c478bd9Sstevel@tonic-gate }
383*7c478bd9Sstevel@tonic-gate #endif
384*7c478bd9Sstevel@tonic-gate 
385*7c478bd9Sstevel@tonic-gate #endif /* _REMOTE_CFG_H */
386