kernel: bwrite_common's 3rd & 4th args can be bools
[unleashed.git] / include / config_admin.h
blob4d5b71f1266bd0890d9bfca9e2ec7bfb821c579a
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
25 * Copyright 1998-2002 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
29 #ifndef _SYS_CONFIG_ADMIN_H
30 #define _SYS_CONFIG_ADMIN_H
33 * config_admin.h
35 * this file supports usage of the interfaces defined in
36 * config_admin.3x. which are contained in /usr/lib/libcfgadm.so.1
39 #include <sys/param.h>
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
47 * Defined constants
49 #define CFGA_AP_LOG_ID_LEN 20
50 #define CFGA_AP_PHYS_ID_LEN MAXPATHLEN
51 #define CFGA_INFO_LEN 4096
52 #define CFGA_TYPE_LEN 12
54 #define CFGA_CLASS_LEN 12
55 #define CFGA_LOG_EXT_LEN 30
57 #define CFGA_DYN_SEP "::"
58 #define CFGA_PHYS_EXT_LEN (CFGA_AP_PHYS_ID_LEN + CFGA_LOG_EXT_LEN)
62 * Configuration change state commands
64 typedef enum {
65 CFGA_CMD_NONE = 0,
66 CFGA_CMD_LOAD,
67 CFGA_CMD_UNLOAD,
68 CFGA_CMD_CONNECT,
69 CFGA_CMD_DISCONNECT,
70 CFGA_CMD_CONFIGURE,
71 CFGA_CMD_UNCONFIGURE
72 } cfga_cmd_t;
75 * Configuration states
77 typedef enum {
78 CFGA_STAT_NONE = 0,
79 CFGA_STAT_EMPTY,
80 CFGA_STAT_DISCONNECTED,
81 CFGA_STAT_CONNECTED,
82 CFGA_STAT_UNCONFIGURED,
83 CFGA_STAT_CONFIGURED
84 } cfga_stat_t;
87 * Configuration conditions
89 typedef enum {
90 CFGA_COND_UNKNOWN = 0,
91 CFGA_COND_OK,
92 CFGA_COND_FAILING,
93 CFGA_COND_FAILED,
94 CFGA_COND_UNUSABLE
95 } cfga_cond_t;
98 * Flags
100 #define CFGA_FLAG_FORCE 1
101 #define CFGA_FLAG_VERBOSE 2
102 #define CFGA_FLAG_LIST_ALL 4
104 typedef char cfga_ap_log_id_t[CFGA_AP_LOG_ID_LEN];
105 typedef char cfga_ap_phys_id_t[CFGA_AP_PHYS_ID_LEN];
106 typedef char cfga_info_t[CFGA_INFO_LEN];
107 typedef char cfga_type_t[CFGA_TYPE_LEN];
108 typedef int cfga_flags_t;
109 typedef int cfga_busy_t;
112 typedef char cfga_log_ext_t[CFGA_LOG_EXT_LEN];
113 typedef char cfga_phys_ext_t[CFGA_PHYS_EXT_LEN];
114 typedef char cfga_class_t[CFGA_CLASS_LEN];
116 typedef struct cfga_list_data {
117 cfga_log_ext_t ap_log_id; /* Attachment point logical id */
118 cfga_phys_ext_t ap_phys_id; /* Attachment point physical id */
119 cfga_class_t ap_class; /* Attachment point class */
120 cfga_stat_t ap_r_state; /* Receptacle state */
121 cfga_stat_t ap_o_state; /* Occupant state */
122 cfga_cond_t ap_cond; /* Attachment point condition */
123 cfga_busy_t ap_busy; /* Busy indicators */
124 time_t ap_status_time; /* Attachment point last change */
125 cfga_info_t ap_info; /* Miscellaneous information */
126 cfga_type_t ap_type; /* Occupant type */
127 } cfga_list_data_t;
130 * The following structure is retained for backward compatibility
132 typedef struct cfga_stat_data {
133 cfga_ap_log_id_t ap_log_id; /* Attachment point logical id */
134 cfga_ap_phys_id_t ap_phys_id; /* Attachment point physical id */
135 cfga_stat_t ap_r_state; /* Receptacle state */
136 cfga_stat_t ap_o_state; /* Occupant state */
137 cfga_cond_t ap_cond; /* Attachment point condition */
138 cfga_busy_t ap_busy; /* Busy indicators */
139 time_t ap_status_time; /* Attachment point last change */
140 cfga_info_t ap_info; /* Miscellaneous information */
141 cfga_type_t ap_type; /* Occupant type */
142 } cfga_stat_data_t;
145 struct cfga_confirm {
146 int (*confirm)(void *appdata_ptr, const char *message);
147 void *appdata_ptr;
150 struct cfga_msg {
151 int (*message_routine)(void *appdata_ptr, const char *message);
152 void *appdata_ptr;
156 * Library function error codes returned by all functions below
157 * except config_strerror which is used to decode the error
158 * codes.
160 typedef enum {
161 CFGA_OK = 0,
162 CFGA_NACK,
163 CFGA_NOTSUPP,
164 CFGA_OPNOTSUPP,
165 CFGA_PRIV,
166 CFGA_BUSY,
167 CFGA_SYSTEM_BUSY,
168 CFGA_DATA_ERROR,
169 CFGA_LIB_ERROR,
170 CFGA_NO_LIB,
171 CFGA_INSUFFICENT_CONDITION,
172 CFGA_INVAL,
173 CFGA_ERROR,
174 CFGA_APID_NOEXIST,
175 CFGA_ATTR_INVAL
176 } cfga_err_t;
180 * config_admin.3x library interfaces
183 cfga_err_t config_change_state(cfga_cmd_t state_change_cmd, int num_ap_ids,
184 char *const *ap_ids, const char *options, struct cfga_confirm *confp,
185 struct cfga_msg *msgp, char **errstring, cfga_flags_t flags);
187 cfga_err_t config_private_func(const char *function, int num_ap_ids,
188 char *const *ap_ids, const char *options, struct cfga_confirm *confp,
189 struct cfga_msg *msgp, char **errstring, cfga_flags_t flags);
191 cfga_err_t config_test(int num_ap_ids, char *const *ap_ids,
192 const char *options, struct cfga_msg *msgp, char **errstring,
193 cfga_flags_t flags);
195 cfga_err_t config_list_ext(int num_ap_ids, char *const *ap_ids,
196 struct cfga_list_data **ap_id_list, int *nlist, const char *options,
197 const char *listopts, char **errstring, cfga_flags_t flags);
199 cfga_err_t config_help(int num_ap_ids, char *const *ap_ids,
200 struct cfga_msg *msgp, const char *options, cfga_flags_t flags);
202 const char *config_strerror(cfga_err_t cfgerrnum);
204 int config_ap_id_cmp(const cfga_ap_log_id_t ap_id1,
205 const cfga_ap_log_id_t ap_id2);
207 void config_unload_libs();
210 * The following two routines are retained only for backward compatibility
212 cfga_err_t config_stat(int num_ap_ids, char *const *ap_ids,
213 struct cfga_stat_data *buf, const char *options, char **errstring);
215 cfga_err_t config_list(struct cfga_stat_data **ap_di_list, int *nlist,
216 const char *options, char **errstring);
219 #ifdef CFGA_PLUGIN_LIB
221 * Plugin library routine hooks - only to be used by the generic
222 * library and plugin libraries (who must define CFGA_PLUGIN_LIB
223 * prior to the inclusion of this header).
226 cfga_err_t cfga_change_state(cfga_cmd_t, const char *, const char *,
227 struct cfga_confirm *, struct cfga_msg *, char **, cfga_flags_t);
228 cfga_err_t cfga_private_func(const char *, const char *, const char *,
229 struct cfga_confirm *, struct cfga_msg *, char **, cfga_flags_t);
230 cfga_err_t cfga_test(const char *, const char *, struct cfga_msg *,
231 char **, cfga_flags_t);
232 cfga_err_t cfga_list_ext(const char *, struct cfga_list_data **, int *,
233 const char *, const char *, char **, cfga_flags_t);
234 cfga_err_t cfga_help(struct cfga_msg *, const char *, cfga_flags_t);
235 int cfga_ap_id_cmp(const cfga_ap_log_id_t,
236 const cfga_ap_log_id_t);
240 * Plugin version information.
242 #define CFGA_HSL_V1 1
243 #define CFGA_HSL_V2 2
244 #define CFGA_HSL_VERS CFGA_HSL_V2
247 * The following two routines are retained only for backward compatibility.
249 cfga_err_t cfga_stat(const char *, struct cfga_stat_data *,
250 const char *, char **);
251 cfga_err_t cfga_list(const char *, struct cfga_stat_data **, int *,
252 const char *, char **);
255 #endif /* CFGA_PLUGIN_LIB */
257 #ifdef __cplusplus
259 #endif
261 #endif /* _SYS_CONFIG_ADMIN_H */