[DRBD-cvs] svn commit by phil - r2054 - trunk/user - The range
checks on most of the options was missing. Ad
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Mon Jan 23 10:58:19 CET 2006
Author: phil
Date: 2006-01-23 10:58:17 +0100 (Mon, 23 Jan 2006)
New Revision: 2054
Modified:
trunk/user/drbdadm_parser.c
trunk/user/drbdadm_parser.h
trunk/user/drbdadm_scanner.fl
Log:
The range checks on most of the options was missing. Added that.
Modified: trunk/user/drbdadm_parser.c
===================================================================
--- trunk/user/drbdadm_parser.c 2006-01-21 23:09:35 UTC (rev 2053)
+++ trunk/user/drbdadm_parser.c 2006-01-23 09:58:17 UTC (rev 2054)
@@ -73,32 +73,14 @@
}
}
-enum range_checks
-{
- 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_KO_COUNT,
- R_RATE,
- R_GROUP,
- R_AL_EXTENTS,
- R_PORT,
- R_META_IDX,
- R_WFC_TIMEOUT,
- R_DEGR_WFC_TIMEOUT,
-};
void
range_check(const enum range_checks what, const char *name, const char *value)
{
switch (what)
{
+ case R_NO_CHECK:
+ break;
default:
fprintf(stderr, "%s:%d: unknown range for %s => %s\n",
config_file, fline, name, value);
@@ -277,6 +259,7 @@
{
char *opt_name;
int token;
+ enum range_checks rc;
struct d_option* options = NULL;
@@ -286,8 +269,10 @@
if( token == token_switch) {
options = APPEND(options,new_opt(yylval.txt,NULL));
} else if ( token == token_option) {
- opt_name=yylval.txt;
+ opt_name = yylval.txt;
+ rc = yylval.rc;
EXP2(TK_STRING,TK_INTEGER);
+ range_check(rc,opt_name,yylval.txt);
options = APPEND(options,new_opt(opt_name,yylval.txt));
} else if ( token == '}' ) {
return options;
Modified: trunk/user/drbdadm_parser.h
===================================================================
--- trunk/user/drbdadm_parser.h 2006-01-21 23:09:35 UTC (rev 2053)
+++ trunk/user/drbdadm_parser.h 2006-01-23 09:58:17 UTC (rev 2054)
@@ -22,55 +22,76 @@
*/
-typedef union YYSTYPE {
- char* txt;
- struct d_option* d_option;
- struct d_resource* d_resource;
+
+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_KO_COUNT,
+ R_RATE,
+ R_GROUP,
+ R_AL_EXTENTS,
+ R_PORT,
+ R_META_IDX,
+ R_WFC_TIMEOUT,
+ R_DEGR_WFC_TIMEOUT,
+};
+
+enum yytokentype {
+ TK_GLOBAL = 258,
+ TK_RESOURCE,
+ TK_ON,
+ TK_NET,
+ TK_DISK,
+ TK_SKIP,
+ TK_SYNCER,
+ TK_STARTUP,
+ TK_DISABLE_IO_HINTS,
+ TK_DISABLE_IP_VERIFICATION,
+ TK_DIALOG_REFRESH,
+ TK_PROTOCOL,
+ TK_HANDLER, // 270
+ TK_COMMON,
+ TK_ADDRESS,
+ TK_DEVICE,
+ TK_META_DISK,
+ TK_FLEX_META_DISK,
+ TK_MINOR_COUNT,
+
+ TK_IPADDR,
+ TK_INTEGER,
+ TK_STRING,
+ TK_ELSE, // 280
+
+ TK_DISK_SWITCH,
+ TK_DISK_OPTION,
+ TK_NET_SWITCH,
+ TK_NET_OPTION,
+ TK_SYNCER_SWITCH,
+ TK_SYNCER_OPTION,
+ TK_STARTUP_SWITCH,
+ TK_STARTUP_OPTION,
+ TK_HANDLER_OPTION
+};
+
+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 yystype yylval;
-
-enum yytokentype {
- TK_GLOBAL = 258,
- TK_RESOURCE,
- TK_ON,
- TK_NET,
- TK_DISK,
- TK_SKIP,
- TK_SYNCER,
- TK_STARTUP,
- TK_DISABLE_IO_HINTS,
- TK_DISABLE_IP_VERIFICATION,
- TK_DIALOG_REFRESH,
- TK_PROTOCOL,
- TK_HANDLER, // 270
- TK_COMMON,
- TK_ADDRESS,
- TK_DEVICE,
- TK_META_DISK,
- TK_FLEX_META_DISK,
- TK_MINOR_COUNT,
-
- TK_IPADDR,
- TK_INTEGER,
- TK_STRING,
- TK_ELSE, // 280
-
- TK_DISK_SWITCH,
- TK_DISK_OPTION,
- TK_NET_SWITCH,
- TK_NET_OPTION,
- TK_SYNCER_SWITCH,
- TK_SYNCER_OPTION,
- TK_STARTUP_SWITCH,
- TK_STARTUP_OPTION,
- TK_HANDLER_OPTION
-};
-
/* avoid compiler warnings about implicit declaration */
int yylex(void);
Modified: trunk/user/drbdadm_scanner.fl
===================================================================
--- trunk/user/drbdadm_scanner.fl 2006-01-21 23:09:35 UTC (rev 2053)
+++ trunk/user/drbdadm_scanner.fl 2006-01-23 09:58:17 UTC (rev 2054)
@@ -14,7 +14,8 @@
#define DP
#endif
-#define CP yylval.txt = strdup(yytext)
+#define CP yylval.txt = strdup(yytext); yylval.rc = R_NO_CHECK
+#define RC(N) yylval.rc = R_ ## N
#define YY_NO_UNPUT 1
static void yyunput (int c, register char * yy_bp ) __attribute((unused));
@@ -61,24 +62,25 @@
resource { DP; return TK_RESOURCE; }
meta-disk { DP; return TK_META_DISK; }
flexible-meta-disk { DP; return TK_FLEX_META_DISK; }
-size { DP; CP; return TK_DISK_OPTION; }
+size { DP; CP; RC(DISK_SIZE); return TK_DISK_OPTION; }
on-io-error { DP; CP; return TK_DISK_OPTION; }
split-brain-fix { DP; CP; return TK_DISK_SWITCH; }
-timeout { DP; CP; return TK_NET_OPTION; }
-ping-int { DP; CP; return TK_NET_OPTION; }
-max-buffers { DP; CP; return TK_NET_OPTION; }
-sndbuf-size { DP; CP; return TK_NET_OPTION; }
-connect-int { DP; CP; return TK_NET_OPTION; }
-max-epoch-size { DP; CP; return TK_NET_OPTION; }
+timeout { DP; CP; RC(TIMEOUT); return TK_NET_OPTION; }
+ko-count { DP; CP; RC(KO_COUNT); return TK_NET_OPTION; }
+ping-int { DP; CP; RC(PING_INT); return TK_NET_OPTION; }
+max-buffers { DP; CP; RC(MAX_BUFFERS); return TK_NET_OPTION;}
+sndbuf-size { DP; CP; RC(SNDBUF_SIZE); return TK_NET_OPTION;}
+connect-int { DP; CP; RC(CONNECT_INT); return TK_NET_OPTION;}
+max-epoch-size { DP; CP; RC(MAX_EPOCH_SIZE); return TK_NET_OPTION;}
after-sb-[012]pri { DP; CP; return TK_NET_OPTION; }
allow-two-primaries { DP; CP; return TK_NET_SWITCH; }
-rate { DP; CP; return TK_SYNCER_OPTION; }
+rate { DP; CP; RC(RATE); return TK_SYNCER_OPTION; }
after { DP; CP; return TK_SYNCER_OPTION; }
use-csums { DP; CP; return TK_SYNCER_SWITCH; }
skip-sync { DP; CP; return TK_SYNCER_SWITCH; }
-al-extents { DP; CP; return TK_SYNCER_OPTION; }
-wfc-timeout { DP; CP; return TK_STARTUP_OPTION; }
-degr-wfc-timeout { DP; CP; return TK_STARTUP_OPTION; }
+al-extents { DP; CP; RC(AL_EXTENTS); return TK_SYNCER_OPTION;}
+wfc-timeout { DP; CP; RC(WFC_TIMEOUT); return TK_STARTUP_OPTION;}
+degr-wfc-timeout { DP; CP; RC(DEGR_WFC_TIMEOUT); return TK_STARTUP_OPTION;}
pri-on-incon-degr { DP; CP; return TK_HANDLER_OPTION; }
pri-lost-after-sb { DP; CP; return TK_HANDLER_OPTION; }
outdate-peer { DP; CP; return TK_HANDLER_OPTION; }
More information about the drbd-cvs
mailing list