xref: /dragonfly/sys/dev/raid/vinum/vinumkw.h (revision 1b722dce)
1 /*-
2  * Copyright (c) 1997, 1998
3  *	Nan Yang Computer Services Limited.  All rights reserved.
4  *
5  *  This software is distributed under the so-called ``Berkeley
6  *  License'':
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. All advertising materials mentioning features or use of this software
17  *    must display the following acknowledgement:
18  *	This product includes software developed by Nan Yang Computer
19  *      Services Limited.
20  * 4. Neither the name of the Company nor the names of its contributors
21  *    may be used to endorse or promote products derived from this software
22  *    without specific prior written permission.
23  *
24  * This software is provided ``as is'', and any express or implied
25  * warranties, including, but not limited to, the implied warranties of
26  * merchantability and fitness for a particular purpose are disclaimed.
27  * In no event shall the company or contributors be liable for any
28  * direct, indirect, incidental, special, exemplary, or consequential
29  * damages (including, but not limited to, procurement of substitute
30  * goods or services; loss of use, data, or profits; or business
31  * interruption) however caused and on any theory of liability, whether
32  * in contract, strict liability, or tort (including negligence or
33  * otherwise) arising in any way out of the use of this software, even if
34  * advised of the possibility of such damage.
35  */
36 
37 /*
38  * Command keywords that vinum knows.  These include both user-level
39  * and kernel-level stuff
40  */
41 
42 /*
43  * Our complete vocabulary.  The names of the commands are
44  * the same as the identifier without the kw_ at the beginning
45  * (i.e. kw_create defines the "create" keyword).  Preprocessor
46  * magic in parser.c does the rest.
47  *
48  * To add a new word: put it in the table below and one of the
49  * lists in vinumparser.c (probably keywords).
50  */
51 enum keyword {
52 	kw_create,
53 	kw_modify,
54 	kw_list,
55 	kw_l = kw_list,
56 	kw_ld,			/* list drive */
57 	kw_ls,			/* list subdisk */
58 	kw_lp,			/* list plex */
59 	kw_lv,			/* list volume */
60 	kw_set,
61 	kw_rm,
62 	kw_mv,			/* move object */
63 	kw_move,		/* synonym for mv */
64 	kw_start,
65 	kw_stop,
66 	kw_makedev,		/* make /dev/vinum devices */
67 	kw_setdaemon,		/* set daemon flags */
68 	kw_getdaemon,		/* set daemon flags */
69 	kw_help,
70 	kw_drive,
71 	kw_partition,
72 	kw_sd,
73 	kw_subdisk = kw_sd,
74 	kw_plex,
75 	kw_volume,
76 	kw_vol = kw_volume,
77 	kw_read,
78 	kw_readpol,
79 	kw_org,
80 	kw_name,
81 	kw_concat,
82 	kw_striped,
83 	kw_raid4,
84 	kw_raid5,
85 	kw_driveoffset,
86 	kw_plexoffset,
87 	kw_len,
88 	kw_length = kw_len,
89 	kw_size = kw_len,
90 	kw_state,
91 	kw_setupstate,
92 	kw_d,			/* flag names */
93 	kw_f,
94 	kw_r,
95 	kw_s,
96 	kw_v,
97 	kw_w,
98 	kw_round,		/* round robin */
99 	kw_prefer,		/* prefer plex */
100 	kw_device,
101 	kw_init,
102 	kw_label,
103 	kw_resetconfig,
104 	kw_writethrough,
105 	kw_writeback,
106 	kw_raw,
107 	kw_replace,
108 	kw_resetstats,
109 	kw_attach,
110 	kw_detach,
111 	kw_rename,
112 	kw_printconfig,
113 	kw_saveconfig,
114 	kw_hotspare,
115 	kw_detached,
116 #ifdef VINUMDEBUG
117 	kw_debug,		/* go into debugger */
118 #endif
119 	kw_stripe,
120 	kw_mirror,
121 	kw_info,
122 	kw_quit,
123 	kw_max,
124 	kw_setstate,
125 	kw_checkparity,
126 	kw_rebuildparity,
127 	kw_dumpconfig,
128 	kw_retryerrors,
129 	kw_invalid_keyword = -1
130 };
131 
132 struct _keywords {
133 	char *name;
134 	enum keyword keyword;
135 };
136 
137 struct keywordset {
138 	int size;
139 	struct _keywords *k;
140 };
141 
142 extern struct _keywords keywords[];
143 extern struct _keywords flag_keywords[];
144 
145 extern struct keywordset keyword_set;
146 extern struct keywordset flag_set;
147