Annotation of embedaddon/strongswan/src/swanctl/command.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2009 Martin Willi
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup command command
                     18:  * @{ @ingroup swanctl
                     19:  */
                     20: 
                     21: #ifndef COMMAND_H_
                     22: #define COMMAND_H_
                     23: 
                     24: #include <libvici.h>
                     25: #include <library.h>
                     26: 
                     27: /**
                     28:  * Maximum number of commands (+1).
                     29:  */
                     30: #define MAX_COMMANDS 26
                     31: 
                     32: /**
                     33:  * Maximum number of options in a command (+3)
                     34:  */
                     35: #define MAX_OPTIONS 34
                     36: 
                     37: /**
                     38:  * Maximum number of usage summary lines (+1)
                     39:  */
                     40: #define MAX_LINES 10
                     41: 
                     42: typedef struct command_t command_t;
                     43: typedef struct command_option_t command_option_t;
                     44: typedef enum command_format_options_t command_format_options_t;
                     45: 
                     46: /**
                     47:  * Option specification
                     48:  */
                     49: struct command_option_t {
                     50:        /** long option string of the option */
                     51:        char *name;
                     52:        /** short option character of the option */
                     53:        char op;
                     54:        /** expected argument to option, no/req/opt_argument */
                     55:        int arg;
                     56:        /** description of the option */
                     57:        char *desc;
                     58: };
                     59: 
                     60: /**
                     61:  * Command specification.
                     62:  */
                     63: struct command_t {
                     64:        /** Function implementing the command */
                     65:        int (*call)(vici_conn_t *conn);
                     66:        /** short option character */
                     67:        char op;
                     68:        /** long option string */
                     69:        char *cmd;
                     70:        /** description of the command */
                     71:        char *description;
                     72:        /** usage summary of the command */
                     73:        char *line[MAX_LINES];
                     74:        /** list of options the command accepts */
                     75:        command_option_t options[MAX_OPTIONS];
                     76: };
                     77: 
                     78: /**
                     79:  * Command format options
                     80: */
                     81: enum command_format_options_t {
                     82:        COMMAND_FORMAT_NONE   = 0,
                     83:        COMMAND_FORMAT_RAW    = (1<<0),
                     84:        COMMAND_FORMAT_PRETTY = (1<<1),
                     85:        COMMAND_FORMAT_PEM    = (1<<2),
                     86: };
                     87: 
                     88: /**
                     89:  * Get the next option, as with getopt.
                     90:  */
                     91: int command_getopt(char **arg);
                     92: 
                     93: /**
                     94:  * Register a command.
                     95:  */
                     96: void command_register(command_t command);
                     97: 
                     98: /**
                     99:  * Dispatch commands.
                    100:  */
                    101: int command_dispatch(int argc, char *argv[]);
                    102: 
                    103: /**
                    104:  * Show usage information of active command.
                    105:  */
                    106: int command_usage(char *error, ...);
                    107: 
                    108: #endif /** COMMAND_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>