Merge commit '00f1a4f432b3d8aad1aa270e91c44c57f03ef407'
[unleashed.git] / usr / src / cmd / cfgadm / cfgadm.h
blob0c88a9725886f2ba456ac8e0f1c10eac20138dd7
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 (c) 1998-1999 by Sun Microsystems, Inc.
24 * All rights reserved.
27 #ifndef _CFGADM_H
28 #define _CFGADM_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
37 * Command line options
39 #define OPTIONS "ac:fhlno:s:tx:vy"
42 * Configuration operations
44 typedef enum {
45 CFGA_OP_NONE = 0,
46 CFGA_OP_CHANGE_STATE,
47 CFGA_OP_TEST,
48 CFGA_OP_LIST,
49 CFGA_OP_PRIVATE,
50 CFGA_OP_HELP
51 } cfga_op_t;
54 * Names for -c functions
56 static char *state_opts[] = {
57 "",
58 "insert",
59 "remove",
60 "connect",
61 "disconnect",
62 "configure",
63 "unconfigure",
64 NULL
68 * Attachment point specifier types.
70 typedef enum {
71 UNKNOWN_AP,
72 LOGICAL_AP_ID,
73 PHYSICAL_AP_ID,
74 AP_TYPE
75 } cfga_ap_types_t;
78 * Confirm values.
80 enum confirm { CONFIRM_DEFAULT, CONFIRM_NO, CONFIRM_YES };
82 /* Limit size of sysinfo return */
83 #define SYSINFO_LENGTH 256
84 #define YESNO_STR_MAX 127
86 /* exit codes */
87 #define EXIT_OK 0
88 #define EXIT_OPFAILED 1
89 #define EXIT_NOTSUPP 2
90 #define EXIT_ARGERROR 3
92 /* Macro to figure size of cfga_list_data items */
93 #define SZ_EL(EL) (sizeof ((struct cfga_list_data *)NULL)->EL)
95 /* Maximum number of fields in cfgadm output */
96 #define N_FIELDS (sizeof (all_fields)/sizeof (all_fields[0]))
98 /* printing format controls */
99 #define DEF_SORT_FIELDS "ap_id"
101 #define DEF_COLS "ap_id:type:r_state:o_state:condition"
102 #define DEF_COLS2 NULL
103 #define DEF_COLS_VERBOSE "ap_id:r_state:o_state:condition:info"
104 #define DEF_COLS2_VERBOSE "status_time:type:busy:physid"
105 #define DEF_DELIM " "
107 /* listing field delimiter */
108 #define FDELIM ':'
109 #define ARG_DELIM ' '
111 /* listing lengths for various fields */
112 #define STATE_WIDTH 12 /* longest - "disconnected" */
113 #define COND_WIDTH 10 /* longest is the heading - "condition" */
114 #define TIME_WIDTH 12
115 #define TIME_P_WIDTH 14 /* YYYYMMDDhhmmss */
116 /* Date and time formats */
118 * b --- abbreviated month name
119 * e --- day number
120 * Y --- year in the form ccyy
121 * H --- hour(24-hour version)
122 * M --- minute
124 #define FORMAT1 "%b %e %Y"
125 #define FORMAT2 "%b %e %H:%M"
127 /* listing control data */
128 struct sort_el {
129 int reverse;
130 struct field_info *fld;
133 struct print_col {
134 int width;
135 struct field_info *line1;
136 struct field_info *line2;
140 * The first three types are used for filtering and the last for sorting.
142 typedef enum {
143 CFGA_MATCH_PARTIAL, /* pass if a partial match */
144 CFGA_MATCH_EXACT, /* pass only if an exact match */
145 CFGA_MATCH_NOFILTER, /* pass all. Not valid user input */
146 CFGA_MATCH_ORDER /* compare and return relative order */
147 } match_type_t;
149 struct field_info {
150 char *name;
151 char *heading;
152 int width;
153 int (*compare)(struct cfga_list_data *, struct cfga_list_data *,
154 match_type_t);
155 void (*printfn)(struct cfga_list_data *, int, char *);
156 cfga_err_t (*set_filter)(struct cfga_list_data *, const char *);
159 /* list option strings */
160 static char *list_options[] = {
161 #define LIST_SORT 0
162 "sort",
163 #define LIST_COLS 1
164 "cols",
165 #define LIST_COLS2 2
166 "cols2",
167 #define LIST_DELIM 3
168 "delim",
169 #define LIST_NOHEADINGS 4
170 "noheadings",
171 #define LIST_SELECT 5
172 "select",
173 #define LIST_MATCH 6
174 "match",
175 NULL
178 /* Selection related */
179 typedef struct {
180 char *arg;
181 int resp; /* If set, this cmd arg received a response */
182 } ap_arg_t;
184 typedef struct {
185 cfga_list_data_t *ldatap;
186 int req; /* If set, this list_data was requested by user */
187 } ap_out_t;
189 /* Filtering related */
190 #define CFGA_DEFAULT_MATCH CFGA_MATCH_EXACT
191 #define LEFT_PAREN '('
192 #define RIGHT_PAREN ')'
193 #define CFGA_DEV_DIR "/dev/cfg"
194 #define SLASH "/"
195 #define EQUALS "="
197 typedef enum {
198 CFGA_PSTATE_INIT,
199 CFGA_PSTATE_ATTR_DONE,
200 CFGA_PSTATE_VAL_DONE,
201 CFGA_PSTATE_ERR
202 } parse_state_t;
204 typedef struct match_cvt {
205 char *str;
206 match_type_t type;
207 } match_cvt_t;
209 #ifdef __cplusplus
211 #endif
213 #endif /* _CFGADM_H */