text: /*-
   * 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.
   * 3. All advertising materials mentioning features or use of this software
   *    must display the following acknowledgement:
   *	This product includes software developed by Nan Yang Computer
   *      Services Limited.
   * 4. Neither the name of the Company nor the names of its contributors
   *    may be used to endorse or promote products derived from this software
   *    without specific prior written permission.
   *
   * 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.
   *
   * $Id: vinumkw.h,v 1.16 2000/02/19 06:52:46 grog Exp grog $
   * $FreeBSD: src/sys/dev/vinum/vinumkw.h,v 1.18 2000/03/01 07:23:40 grog Exp $
   */
  
  /*
   * Command keywords that vinum knows.  These include both user-level
   * and kernel-level stuff
   */
  
  /*
   * Our complete vocabulary.  The names of the commands are
   * the same as the identifier without the kw_ at the beginning
   * (i.e. kw_create defines the "create" keyword).  Preprocessor
   * 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).
   */
  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,
      kw_mv,						    /* move object */
      kw_move,						    /* synonym for mv */
      kw_start,
      kw_stop,
      kw_makedev,						    /* make /dev/vinum devices */
      kw_setdaemon,					    /* set daemon flags */
      kw_getdaemon,					    /* set daemon flags */
      kw_help,
      kw_drive,
      kw_partition,
      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,
      kw_raid4,
      kw_raid5,
      kw_driveoffset,
      kw_plexoffset,
      kw_len,
      kw_length = kw_len,
      kw_size = kw_len,
      kw_state,
      kw_setupstate,
      kw_d,						    /* flag names */
      kw_f,
      kw_r,
      kw_s,
      kw_v,
      kw_w,
      kw_round,						    /* round robin */
      kw_prefer,						    /* prefer plex */
      kw_device,
      kw_init,
      kw_label,
      kw_resetconfig,
      kw_writethrough,
      kw_writeback,
      kw_raw,
      kw_replace,
      kw_resetstats,
      kw_attach,
      kw_detach,
      kw_rename,
      kw_printconfig,
      kw_saveconfig,
      kw_hotspare,
      kw_detached,
  #ifdef VINUMDEBUG
      kw_debug,						    /* go into debugger */
  #endif
      kw_stripe,
      kw_mirror,
      kw_info,
      kw_quit,
      kw_max,
      kw_setstate,
      kw_checkparity,
      kw_rebuildparity,
      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;
  