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