blob: da5f63a207ad0b2afc7f79892b379a489505c5fb [file] [log] [blame]
/*
drbdadm_parser.h a hand crafted parser
This file is part of DRBD by Philipp Reisner and Lars Ellenberg.
Copyright (C) 2006-2008, LINBIT Information Technologies GmbH
Copyright (C) 2006-2008, Philipp Reisner <philipp.reisner@linbit.com>
Copyright (C) 2006-2008, Lars Ellenberg <lars.ellenberg@linbit.com>
drbd is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
drbd is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with drbd; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
enum range_checks
{
R_NO_CHECK,
R_MINOR_COUNT,
R_DIALOG_REFRESH,
R_DISK_SIZE,
R_TIMEOUT,
R_CONNECT_INT,
R_PING_INT,
R_MAX_BUFFERS,
R_MAX_EPOCH_SIZE,
R_SNDBUF_SIZE,
R_RCVBUF_SIZE,
R_KO_COUNT,
R_RATE,
R_GROUP,
R_AL_EXTENTS,
R_PORT,
R_META_IDX,
R_WFC_TIMEOUT,
R_DEGR_WFC_TIMEOUT,
R_OUTDATED_WFC_TIMEOUT,
R_C_PLAN_AHEAD,
R_C_DELAY_TARGET,
R_C_FILL_TARGET,
R_C_MAX_RATE,
R_C_MIN_RATE,
R_CONG_FILL,
R_CONG_EXTENTS,
R_PROTOCOL,
};
enum yytokentype {
TK_GLOBAL = 258,
TK_RESOURCE,
TK_ON,
TK_STACKED,
TK_IGNORE,
TK_NET,
TK_DISK,
TK_SKIP,
TK_SYNCER, /* depricated after 8.3 */
TK_STARTUP,
TK_DISABLE_IP_VERIFICATION,
TK_DIALOG_REFRESH,
TK_PROTOCOL,
TK_HANDLER,
TK_COMMON,
TK_ADDRESS,
TK_ALT_ADDRESS,
TK_DEVICE,
TK_MINOR,
TK_META_DISK,
TK_FLEX_META_DISK,
TK_MINOR_COUNT,
TK_IPADDR,
TK_INTEGER,
TK_STRING,
TK_ELSE,
TK_DISK_FLAG,
TK_DISK_NO_FLAG,
TK_DISK_OPTION,
TK_NET_FLAG,
TK_NET_NO_FLAG,
TK_NET_OPTION,
TK_SYNCER_FLAG,
TK_SYNCER_OPTION,
TK_STARTUP_FLAG,
TK_STARTUP_OPTION,
TK_STARTUP_DELEGATE,
TK_HANDLER_OPTION,
TK_USAGE_COUNT,
TK_ASK,
TK_YES,
TK_NO,
TK__THIS_HOST,
TK__REMOTE_HOST,
TK_PROXY,
TK_INSIDE,
TK_OUTSIDE,
TK_MEMLIMIT,
TK_PROXY_OPTION,
TK_PROXY_DELEGATE,
TK_ERR_STRING_TOO_LONG,
TK_ERR_DQSTRING_TOO_LONG,
TK_ERR_DQSTRING,
TK_SCI,
TK_SDP,
TK_SSOCKS,
TK_IPV4,
TK_IPV6,
TK_IPADDR6,
TK_NET_DELEGATE,
TK_INCLUDE,
TK_BWLIMIT,
TK_FLOATING,
TK_DEPRECATED_OPTION,
TK_VOLUME,
TK_CMD_TIMEOUT_SHORT,
TK_CMD_TIMEOUT_MEDIUM,
TK_CMD_TIMEOUT_LONG,
TK_RES_OPTION,
TK_OPTIONS,
TK_UDEV_ALWAYS_USE_VNR,
TK__GROUPING_BASE = 0x1000,
TK_SYNCER_OLD_OPT = 0x2000, /* Might be or'ed to TK_[NET|DISK]_[OPTION|SWITCH] */
TK_PROXY_GROUP = 0x3000, /* Gets or'ed to some options */
};
/* The higher bits define one or more token groups. */
#define GET_TOKEN_GROUP(__x) ((__x) & ~(TK__GROUPING_BASE - 1))
#define REMOVE_GROUP_FROM_TOKEN(__x) ((__x) & (TK__GROUPING_BASE - 1))
typedef struct YYSTYPE {
char* txt;
enum range_checks rc;
} YYSTYPE;
#define yystype YYSTYPE /* obsolescent; will be withdrawn */
#define YYSTYPE_IS_DECLARED 1
#define YYSTYPE_IS_TRIVIAL 1
extern yystype yylval;
extern char* yytext;
extern FILE* yyin;
/* avoid compiler warnings about implicit declaration */
int yylex(void);
void my_yypush_buffer_state(FILE *f);
void yypop_buffer_state (void );
void yyrestart(FILE *input_file);