Home | History | Annotate | Download | only in head
      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 */
    271