1998-12-28 04:56:24 +00:00
|
|
|
/*-
|
|
|
|
* Copyright (c) 1997, 1998
|
|
|
|
* Nan Yang Computer Services Limited. All rights reserved.
|
|
|
|
*
|
|
|
|
* This software is distributed under the so-called ``Berkeley
|
|
|
|
* License'':
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
2001-05-22 02:33:32 +00:00
|
|
|
* 3. Neither the name of the Company nor the names of its contributors
|
1998-12-28 04:56:24 +00:00
|
|
|
* may be used to endorse or promote products derived from this software
|
|
|
|
* without specific prior written permission.
|
1999-08-24 02:27:45 +00:00
|
|
|
*
|
1998-12-28 04:56:24 +00:00
|
|
|
* This software is provided ``as is'', and any express or implied
|
|
|
|
* warranties, including, but not limited to, the implied warranties of
|
|
|
|
* merchantability and fitness for a particular purpose are disclaimed.
|
|
|
|
* In no event shall the company or contributors be liable for any
|
|
|
|
* direct, indirect, incidental, special, exemplary, or consequential
|
|
|
|
* damages (including, but not limited to, procurement of substitute
|
|
|
|
* goods or services; loss of use, data, or profits; or business
|
|
|
|
* interruption) however caused and on any theory of liability, whether
|
|
|
|
* in contract, strict liability, or tort (including negligence or
|
|
|
|
* otherwise) arising in any way out of the use of this software, even if
|
|
|
|
* advised of the possibility of such damage.
|
|
|
|
*
|
2003-06-12 05:45:45 +00:00
|
|
|
* $Id: vinumkw.h,v 1.20 2003/05/07 03:32:09 grog Exp grog $
|
1999-08-28 01:08:13 +00:00
|
|
|
* $FreeBSD$
|
1998-12-28 04:56:24 +00:00
|
|
|
*/
|
|
|
|
|
1999-01-29 01:17:54 +00:00
|
|
|
/*
|
|
|
|
* Command keywords that vinum knows. These include both user-level
|
1999-08-24 02:27:45 +00:00
|
|
|
* and kernel-level stuff
|
1999-01-29 01:17:54 +00:00
|
|
|
*/
|
1998-12-28 04:56:24 +00:00
|
|
|
|
1999-01-29 01:17:54 +00:00
|
|
|
/*
|
|
|
|
* Our complete vocabulary. The names of the commands are
|
1998-12-28 04:56:24 +00:00
|
|
|
* the same as the identifier without the kw_ at the beginning
|
|
|
|
* (i.e. kw_create defines the "create" keyword). Preprocessor
|
1999-03-02 06:55:18 +00:00
|
|
|
* magic in parser.c does the rest.
|
|
|
|
*
|
|
|
|
* To add a new word: put it in the table below and one of the
|
|
|
|
* lists in vinumparser.c (probably keywords).
|
1999-01-29 01:17:54 +00:00
|
|
|
*/
|
1998-12-28 04:56:24 +00:00
|
|
|
enum keyword {
|
|
|
|
kw_create,
|
|
|
|
kw_modify,
|
|
|
|
kw_list,
|
|
|
|
kw_l = kw_list,
|
|
|
|
kw_ld, /* list drive */
|
|
|
|
kw_ls, /* list subdisk */
|
|
|
|
kw_lp, /* list plex */
|
|
|
|
kw_lv, /* list volume */
|
|
|
|
kw_set,
|
|
|
|
kw_rm,
|
2000-01-05 06:07:59 +00:00
|
|
|
kw_mv, /* move object */
|
|
|
|
kw_move, /* synonym for mv */
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_start,
|
|
|
|
kw_stop,
|
1999-01-21 00:37:18 +00:00
|
|
|
kw_makedev, /* make /dev/vinum devices */
|
|
|
|
kw_setdaemon, /* set daemon flags */
|
|
|
|
kw_getdaemon, /* set daemon flags */
|
|
|
|
kw_help,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_drive,
|
2000-02-29 06:13:02 +00:00
|
|
|
kw_partition,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_sd,
|
|
|
|
kw_subdisk = kw_sd,
|
|
|
|
kw_plex,
|
|
|
|
kw_volume,
|
|
|
|
kw_vol = kw_volume,
|
|
|
|
kw_read,
|
|
|
|
kw_readpol,
|
|
|
|
kw_org,
|
|
|
|
kw_name,
|
|
|
|
kw_concat,
|
|
|
|
kw_striped,
|
2000-02-29 06:13:02 +00:00
|
|
|
kw_raid4,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_raid5,
|
|
|
|
kw_driveoffset,
|
|
|
|
kw_plexoffset,
|
|
|
|
kw_len,
|
|
|
|
kw_length = kw_len,
|
1999-03-02 06:55:18 +00:00
|
|
|
kw_size = kw_len,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_state,
|
|
|
|
kw_setupstate,
|
|
|
|
kw_d, /* flag names */
|
|
|
|
kw_f,
|
|
|
|
kw_r,
|
|
|
|
kw_s,
|
|
|
|
kw_v,
|
1999-04-10 08:10:55 +00:00
|
|
|
kw_w,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_round, /* round robin */
|
2003-05-05 05:35:28 +00:00
|
|
|
/*
|
|
|
|
* The first of these is a volume attibute ("prefer plex"), and the
|
|
|
|
* second is a plex attribute ("preferred" means that the volume
|
|
|
|
* prefers this plex).
|
|
|
|
*/
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_prefer, /* prefer plex */
|
2003-05-05 05:35:28 +00:00
|
|
|
kw_preferred, /* preferred plex */
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_device,
|
|
|
|
kw_init,
|
|
|
|
kw_resetconfig,
|
|
|
|
kw_writethrough,
|
|
|
|
kw_writeback,
|
1999-08-14 06:27:52 +00:00
|
|
|
kw_replace,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_resetstats,
|
|
|
|
kw_attach,
|
|
|
|
kw_detach,
|
|
|
|
kw_rename,
|
|
|
|
kw_printconfig,
|
1999-03-02 06:55:18 +00:00
|
|
|
kw_saveconfig,
|
1999-08-14 06:27:52 +00:00
|
|
|
kw_hotspare,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_detached,
|
|
|
|
kw_debug, /* go into debugger */
|
1999-07-02 07:58:09 +00:00
|
|
|
kw_stripe,
|
|
|
|
kw_mirror,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_info,
|
1999-01-21 00:37:18 +00:00
|
|
|
kw_quit,
|
1999-03-02 06:55:18 +00:00
|
|
|
kw_max,
|
1999-08-24 02:27:45 +00:00
|
|
|
kw_setstate,
|
|
|
|
kw_checkparity,
|
|
|
|
kw_rebuildparity,
|
2000-06-02 04:04:31 +00:00
|
|
|
kw_dumpconfig,
|
2001-05-22 02:33:32 +00:00
|
|
|
kw_retryerrors,
|
1998-12-28 04:56:24 +00:00
|
|
|
kw_invalid_keyword = -1
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _keywords {
|
|
|
|
char *name;
|
|
|
|
enum keyword keyword;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct keywordset {
|
|
|
|
int size;
|
|
|
|
struct _keywords *k;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern struct _keywords keywords[];
|
|
|
|
extern struct _keywords flag_keywords[];
|
|
|
|
|
|
|
|
extern struct keywordset keyword_set;
|
|
|
|
extern struct keywordset flag_set;
|
2001-05-22 02:33:32 +00:00
|
|
|
|
|
|
|
/* Parser functions */
|
|
|
|
|
|
|
|
enum keyword get_keyword(char *, struct keywordset *);
|
|
|
|
int tokenize(char *, char *[], int);
|