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