1 /* 2 * CDDL HEADER START 3 * 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. 8 * 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. 13 * 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] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 1998-2002 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #ifndef _SYS_CONFIG_ADMIN_H 28 #define _SYS_CONFIG_ADMIN_H 29 30 #pragma ident "%Z%%M% %I% %E% SMI" 31 32 /* 33 * config_admin.h 34 * 35 * this file supports usage of the interfaces defined in 36 * config_admin.3x. which are contained in /usr/lib/libcfgadm.so.1 37 */ 38 39 #include <sys/param.h> 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 46 /* 47 * Defined constants 48 */ 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 53 54 #define CFGA_CLASS_LEN 12 55 #define CFGA_LOG_EXT_LEN 30 56 57 #define CFGA_DYN_SEP "::" 58 #define CFGA_PHYS_EXT_LEN (CFGA_AP_PHYS_ID_LEN + CFGA_LOG_EXT_LEN) 59 60 61 /* 62 * Configuration change state commands 63 */ 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; 73 74 /* 75 * Configuration states 76 */ 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; 85 86 /* 87 * Configuration conditions 88 */ 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; 96 97 /* 98 * Flags 99 */ 100 #define CFGA_FLAG_FORCE 1 101 #define CFGA_FLAG_VERBOSE 2 102 #define CFGA_FLAG_LIST_ALL 4 103 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; 110 111 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]; 115 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; 128 129 /* 130 * The following structure is retained for backward compatibility 131 */ 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; 143 144 145 struct cfga_confirm { 146 int (*confirm)(void *appdata_ptr, const char *message); 147 void *appdata_ptr; 148 }; 149 150 struct cfga_msg { 151 int (*message_routine)(void *appdata_ptr, const char *message); 152 void *appdata_ptr; 153 }; 154 155 /* 156 * Library function error codes returned by all functions below 157 * except config_strerror which is used to decode the error 158 * codes. 159 */ 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; 177 178 179 #if defined(__STDC__) 180 181 /* 182 * config_admin.3x library interfaces 183 */ 184 185 cfga_err_t config_change_state(cfga_cmd_t state_change_cmd, int num_ap_ids, 186 char *const *ap_ids, const char *options, struct cfga_confirm *confp, 187 struct cfga_msg *msgp, char **errstring, cfga_flags_t flags); 188 189 cfga_err_t config_private_func(const char *function, int num_ap_ids, 190 char *const *ap_ids, const char *options, struct cfga_confirm *confp, 191 struct cfga_msg *msgp, char **errstring, cfga_flags_t flags); 192 193 cfga_err_t config_test(int num_ap_ids, char *const *ap_ids, 194 const char *options, struct cfga_msg *msgp, char **errstring, 195 cfga_flags_t flags); 196 197 cfga_err_t config_list_ext(int num_ap_ids, char *const *ap_ids, 198 struct cfga_list_data **ap_id_list, int *nlist, const char *options, 199 const char *listopts, char **errstring, cfga_flags_t flags); 200 201 cfga_err_t config_help(int num_ap_ids, char *const *ap_ids, 202 struct cfga_msg *msgp, const char *options, cfga_flags_t flags); 203 204 const char *config_strerror(cfga_err_t cfgerrnum); 205 206 int config_ap_id_cmp(const cfga_ap_log_id_t ap_id1, 207 const cfga_ap_log_id_t ap_id2); 208 209 void config_unload_libs(); 210 211 /* 212 * The following two routines are retained only for backward compatibility 213 */ 214 cfga_err_t config_stat(int num_ap_ids, char *const *ap_ids, 215 struct cfga_stat_data *buf, const char *options, char **errstring); 216 217 cfga_err_t config_list(struct cfga_stat_data **ap_di_list, int *nlist, 218 const char *options, char **errstring); 219 220 221 #ifdef CFGA_PLUGIN_LIB 222 /* 223 * Plugin library routine hooks - only to be used by the generic 224 * library and plugin libraries (who must define CFGA_PLUGIN_LIB 225 * prior to the inclusion of this header). 226 */ 227 228 cfga_err_t cfga_change_state(cfga_cmd_t, const char *, const char *, 229 struct cfga_confirm *, struct cfga_msg *, char **, cfga_flags_t); 230 cfga_err_t cfga_private_func(const char *, const char *, const char *, 231 struct cfga_confirm *, struct cfga_msg *, char **, cfga_flags_t); 232 cfga_err_t cfga_test(const char *, const char *, struct cfga_msg *, 233 char **, cfga_flags_t); 234 cfga_err_t cfga_list_ext(const char *, struct cfga_list_data **, int *, 235 const char *, const char *, char **, cfga_flags_t); 236 cfga_err_t cfga_help(struct cfga_msg *, const char *, cfga_flags_t); 237 int cfga_ap_id_cmp(const cfga_ap_log_id_t, 238 const cfga_ap_log_id_t); 239 240 241 /* 242 * Plugin version information. 243 */ 244 #define CFGA_HSL_V1 1 245 #define CFGA_HSL_V2 2 246 #define CFGA_HSL_VERS CFGA_HSL_V2 247 248 /* 249 * The following two routines are retained only for backward compatibility. 250 */ 251 cfga_err_t cfga_stat(const char *, struct cfga_stat_data *, 252 const char *, char **); 253 cfga_err_t cfga_list(const char *, struct cfga_stat_data **, int *, 254 const char *, char **); 255 256 257 #endif /* CFGA_PLUGIN_LIB */ 258 259 #else /* !defined __STDC__ */ 260 261 extern const char *config_strerror(); 262 extern int config_ap_id_cmp(); 263 264 #endif /* __STDC__ */ 265 266 #ifdef __cplusplus 267 } 268 #endif 269 270 #endif /* _SYS_CONFIG_ADMIN_H */