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