[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