]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- update to bison output of 3.4.1 in code repository.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Mon, 18 Nov 2019 09:50:54 +0000 (10:50 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Mon, 18 Nov 2019 09:50:54 +0000 (10:50 +0100)
doc/Changelog
util/configparser.c
util/configparser.h

index eb51ec447a31ef782b10a88d628ab89ac3d23b9a..cd396f832425bd0131b52434a6813ba476974cfb 100644 (file)
@@ -1,6 +1,7 @@
 18 November 2019: Wouter
        - In unbound-host use separate variable for get_option to please
          code checkers.
+       - update to bison output of 3.4.1 in code repository.
 
 13 November 2019: Wouter
        - iana portlist updated.
index f85f3b3b42473e26539ce8e8cfe29cf7e7d1b1b6..29d86e4728733753de7b4fdc512fafdf0c08ce3d 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5.  */
+/* A Bison parser, made by GNU Bison 3.4.1.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.5"
+#define YYBISON_VERSION "3.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -61,8 +65,8 @@
 
 
 
-/* Copy the first part of user declarations.  */
-#line 38 "./util/configparser.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 38 "./util/configparser.y"
 
 #include "config.h"
 
@@ -91,13 +95,17 @@ extern struct config_parser_state* cfg_parser;
 #endif
 
 
-#line 95 "util/configparser.c" /* yacc.c:339  */
+#line 99 "util/configparser.c"
 
 # ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -109,8 +117,8 @@ extern struct config_parser_state* cfg_parser;
 # define YYERROR_VERBOSE 0
 #endif
 
-/* In a future release of Bison, this section will be replaced
-   by #include "configparser.h".  */
+/* Use api.header.include to #include this header
+   instead of duplicating it here.  */
 #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
 # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
 /* Debug traces.  */
@@ -666,16 +674,15 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 66 "./util/configparser.y" /* yacc.c:355  */
+#line 66 "./util/configparser.y"
 
        char*   str;
 
-#line 677 "util/configparser.c" /* yacc.c:355  */
-};
+#line 684 "util/configparser.c"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -688,9 +695,7 @@ int yyparse (void);
 
 #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
 
-/* Copy the second part of user declarations.  */
 
-#line 694 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -711,13 +716,13 @@ typedef signed char yytype_int8;
 #ifdef YYTYPE_UINT16
 typedef YYTYPE_UINT16 yytype_uint16;
 #else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
 #endif
 
 #ifdef YYTYPE_INT16
 typedef YYTYPE_INT16 yytype_int16;
 #else
-typedef short int yytype_int16;
+typedef short yytype_int16;
 #endif
 
 #ifndef YYSIZE_T
@@ -729,7 +734,7 @@ typedef short int yytype_int16;
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
@@ -765,15 +770,6 @@ typedef short int yytype_int16;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -781,7 +777,7 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -801,6 +797,8 @@ typedef short int yytype_int16;
 #endif
 
 
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
@@ -943,16 +941,16 @@ union yyalloc
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  833
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   524
 
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
+   as returned by yylex.  */
 static const yytype_uint16 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1941,22 +1939,22 @@ static const yytype_uint8 yyr2[] =
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
 
 /* Error token number */
 #define YYTERROR        1
@@ -1996,37 +1994,37 @@ do {                                                                      \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
   YYUSE (yytype);
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -2060,7 +2058,7 @@ do {                                                            \
 static void
 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  unsigned long yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -2071,7 +2069,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
                        yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                       &yyvsp[(yyi + 1) - (yynrhs)]
                                               );
       YYFPRINTF (stderr, "\n");
     }
@@ -2175,7 +2173,10 @@ yytnamerr (char *yyres, const char *yystr)
           case '\\':
             if (*++yyp != '\\')
               goto do_not_strip_quotes;
-            /* Fall through.  */
+            else
+              goto append;
+
+          append:
           default:
             if (yyres)
               yyres[yyn] = *yyp;
@@ -2193,7 +2194,7 @@ yytnamerr (char *yyres, const char *yystr)
   if (! yyres)
     return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
+  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
 }
 # endif
 
@@ -2271,10 +2272,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yyarg[yycount++] = yytname[yyx];
                 {
                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+                    yysize = yysize1;
+                  else
                     return 2;
-                  yysize = yysize1;
                 }
               }
         }
@@ -2298,9 +2299,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 
   {
     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+      yysize = yysize1;
+    else
       return 2;
-    yysize = yysize1;
   }
 
   if (*yymsg_alloc < yysize)
@@ -2426,23 +2428,33 @@ yyparse (void)
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yynewstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  *yyssp = (yytype_int16) yystate;
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
@@ -2458,14 +2470,10 @@ yyparse (void)
                     &yyss1, yysize * sizeof (*yyssp),
                     &yyvs1, yysize * sizeof (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
         goto yyexhaustedlab;
@@ -2481,35 +2489,33 @@ yyparse (void)
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+                  (unsigned long) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
@@ -2567,7 +2573,6 @@ yybackup:
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
   YY_IGNORE_MAYBE_UNINITIALIZED_END
-
   goto yynewstate;
 
 
@@ -2582,7 +2587,7 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
@@ -2602,16 +2607,16 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 15:
-#line 183 "./util/configparser.y" /* yacc.c:1648  */
+  case 15:
+#line 183 "./util/configparser.y"
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2611 "util/configparser.c" /* yacc.c:1648  */
+#line 2616 "util/configparser.c"
     break;
 
   case 207:
-#line 274 "./util/configparser.y" /* yacc.c:1648  */
+#line 274 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2622,11 +2627,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2626 "util/configparser.c" /* yacc.c:1648  */
+#line 2631 "util/configparser.c"
     break;
 
   case 217:
-#line 291 "./util/configparser.y" /* yacc.c:1648  */
+#line 291 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2637,11 +2642,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2641 "util/configparser.c" /* yacc.c:1648  */
+#line 2646 "util/configparser.c"
     break;
 
   case 226:
-#line 308 "./util/configparser.y" /* yacc.c:1648  */
+#line 308 "./util/configparser.y"
     {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
@@ -2654,11 +2659,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2658 "util/configparser.c" /* yacc.c:1648  */
+#line 2663 "util/configparser.c"
     break;
 
   case 236:
-#line 327 "./util/configparser.y" /* yacc.c:1648  */
+#line 327 "./util/configparser.y"
     {
                struct config_auth* s;
                OUTYY(("\nP(auth_zone:)\n")); 
@@ -2673,11 +2678,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2677 "util/configparser.c" /* yacc.c:1648  */
+#line 2682 "util/configparser.c"
     break;
 
   case 247:
-#line 349 "./util/configparser.y" /* yacc.c:1648  */
+#line 349 "./util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2685,11 +2690,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2689 "util/configparser.c" /* yacc.c:1648  */
+#line 2694 "util/configparser.c"
     break;
 
   case 248:
-#line 358 "./util/configparser.y" /* yacc.c:1648  */
+#line 358 "./util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2697,11 +2702,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2701 "util/configparser.c" /* yacc.c:1648  */
+#line 2706 "util/configparser.c"
     break;
 
   case 249:
-#line 367 "./util/configparser.y" /* yacc.c:1648  */
+#line 367 "./util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2711,11 +2716,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2715 "util/configparser.c" /* yacc.c:1648  */
+#line 2720 "util/configparser.c"
     break;
 
   case 250:
-#line 378 "./util/configparser.y" /* yacc.c:1648  */
+#line 378 "./util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2723,11 +2728,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2727 "util/configparser.c" /* yacc.c:1648  */
+#line 2732 "util/configparser.c"
     break;
 
   case 251:
-#line 387 "./util/configparser.y" /* yacc.c:1648  */
+#line 387 "./util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2735,11 +2740,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2739 "util/configparser.c" /* yacc.c:1648  */
+#line 2744 "util/configparser.c"
     break;
 
   case 252:
-#line 396 "./util/configparser.y" /* yacc.c:1648  */
+#line 396 "./util/configparser.y"
     {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2747,11 +2752,11 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2751 "util/configparser.c" /* yacc.c:1648  */
+#line 2756 "util/configparser.c"
     break;
 
   case 253:
-#line 405 "./util/configparser.y" /* yacc.c:1648  */
+#line 405 "./util/configparser.y"
     { 
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2761,11 +2766,11 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2765 "util/configparser.c" /* yacc.c:1648  */
+#line 2770 "util/configparser.c"
     break;
 
   case 254:
-#line 416 "./util/configparser.y" /* yacc.c:1648  */
+#line 416 "./util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2773,11 +2778,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2777 "util/configparser.c" /* yacc.c:1648  */
+#line 2782 "util/configparser.c"
     break;
 
   case 255:
-#line 425 "./util/configparser.y" /* yacc.c:1648  */
+#line 425 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
@@ -2787,11 +2792,11 @@ yyreduce:
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
        }
-#line 2791 "util/configparser.c" /* yacc.c:1648  */
+#line 2796 "util/configparser.c"
     break;
 
   case 256:
-#line 436 "./util/configparser.y" /* yacc.c:1648  */
+#line 436 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
@@ -2802,11 +2807,11 @@ yyreduce:
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
        }
-#line 2806 "util/configparser.c" /* yacc.c:1648  */
+#line 2811 "util/configparser.c"
     break;
 
   case 257:
-#line 449 "./util/configparser.y" /* yacc.c:1648  */
+#line 449 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
@@ -2820,11 +2825,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2824 "util/configparser.c" /* yacc.c:1648  */
+#line 2829 "util/configparser.c"
     break;
 
   case 258:
-#line 464 "./util/configparser.y" /* yacc.c:1648  */
+#line 464 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
@@ -2834,11 +2839,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2838 "util/configparser.c" /* yacc.c:1648  */
+#line 2843 "util/configparser.c"
     break;
 
   case 259:
-#line 475 "./util/configparser.y" /* yacc.c:1648  */
+#line 475 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -2854,11 +2859,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2858 "util/configparser.c" /* yacc.c:1648  */
+#line 2863 "util/configparser.c"
     break;
 
   case 260:
-#line 492 "./util/configparser.y" /* yacc.c:1648  */
+#line 492 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -2874,11 +2879,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2878 "util/configparser.c" /* yacc.c:1648  */
+#line 2883 "util/configparser.c"
     break;
 
   case 261:
-#line 509 "./util/configparser.y" /* yacc.c:1648  */
+#line 509 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -2894,11 +2899,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2898 "util/configparser.c" /* yacc.c:1648  */
+#line 2903 "util/configparser.c"
     break;
 
   case 262:
-#line 526 "./util/configparser.y" /* yacc.c:1648  */
+#line 526 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -2914,11 +2919,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2918 "util/configparser.c" /* yacc.c:1648  */
+#line 2923 "util/configparser.c"
     break;
 
   case 263:
-#line 543 "./util/configparser.y" /* yacc.c:1648  */
+#line 543 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
@@ -2932,11 +2937,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2936 "util/configparser.c" /* yacc.c:1648  */
+#line 2941 "util/configparser.c"
     break;
 
   case 264:
-#line 558 "./util/configparser.y" /* yacc.c:1648  */
+#line 558 "./util/configparser.y"
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
@@ -2950,11 +2955,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2954 "util/configparser.c" /* yacc.c:1648  */
+#line 2959 "util/configparser.c"
     break;
 
   case 265:
-#line 573 "./util/configparser.y" /* yacc.c:1648  */
+#line 573 "./util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2966,11 +2971,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2970 "util/configparser.c" /* yacc.c:1648  */
+#line 2975 "util/configparser.c"
     break;
 
   case 266:
-#line 586 "./util/configparser.y" /* yacc.c:1648  */
+#line 586 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2984,11 +2989,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2988 "util/configparser.c" /* yacc.c:1648  */
+#line 2993 "util/configparser.c"
     break;
 
   case 267:
-#line 601 "./util/configparser.y" /* yacc.c:1648  */
+#line 601 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2996,11 +3001,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3000 "util/configparser.c" /* yacc.c:1648  */
+#line 3005 "util/configparser.c"
     break;
 
   case 268:
-#line 610 "./util/configparser.y" /* yacc.c:1648  */
+#line 610 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -3008,11 +3013,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3012 "util/configparser.c" /* yacc.c:1648  */
+#line 3017 "util/configparser.c"
     break;
 
   case 269:
-#line 619 "./util/configparser.y" /* yacc.c:1648  */
+#line 619 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -3020,11 +3025,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3024 "util/configparser.c" /* yacc.c:1648  */
+#line 3029 "util/configparser.c"
     break;
 
   case 270:
-#line 628 "./util/configparser.y" /* yacc.c:1648  */
+#line 628 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3032,11 +3037,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3036 "util/configparser.c" /* yacc.c:1648  */
+#line 3041 "util/configparser.c"
     break;
 
   case 271:
-#line 637 "./util/configparser.y" /* yacc.c:1648  */
+#line 637 "./util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3044,11 +3049,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3048 "util/configparser.c" /* yacc.c:1648  */
+#line 3053 "util/configparser.c"
     break;
 
   case 272:
-#line 646 "./util/configparser.y" /* yacc.c:1648  */
+#line 646 "./util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3056,11 +3061,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3060 "util/configparser.c" /* yacc.c:1648  */
+#line 3065 "util/configparser.c"
     break;
 
   case 273:
-#line 655 "./util/configparser.y" /* yacc.c:1648  */
+#line 655 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3068,11 +3073,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3072 "util/configparser.c" /* yacc.c:1648  */
+#line 3077 "util/configparser.c"
     break;
 
   case 274:
-#line 664 "./util/configparser.y" /* yacc.c:1648  */
+#line 664 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3080,11 +3085,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3084 "util/configparser.c" /* yacc.c:1648  */
+#line 3089 "util/configparser.c"
     break;
 
   case 275:
-#line 673 "./util/configparser.y" /* yacc.c:1648  */
+#line 673 "./util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3092,11 +3097,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3096 "util/configparser.c" /* yacc.c:1648  */
+#line 3101 "util/configparser.c"
     break;
 
   case 276:
-#line 682 "./util/configparser.y" /* yacc.c:1648  */
+#line 682 "./util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3104,11 +3109,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3108 "util/configparser.c" /* yacc.c:1648  */
+#line 3113 "util/configparser.c"
     break;
 
   case 277:
-#line 691 "./util/configparser.y" /* yacc.c:1648  */
+#line 691 "./util/configparser.y"
     {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3116,11 +3121,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3120 "util/configparser.c" /* yacc.c:1648  */
+#line 3125 "util/configparser.c"
     break;
 
   case 278:
-#line 700 "./util/configparser.y" /* yacc.c:1648  */
+#line 700 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3128,11 +3133,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 3132 "util/configparser.c" /* yacc.c:1648  */
+#line 3137 "util/configparser.c"
     break;
 
   case 279:
-#line 709 "./util/configparser.y" /* yacc.c:1648  */
+#line 709 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3140,11 +3145,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3144 "util/configparser.c" /* yacc.c:1648  */
+#line 3149 "util/configparser.c"
     break;
 
   case 280:
-#line 718 "./util/configparser.y" /* yacc.c:1648  */
+#line 718 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3156,11 +3161,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3160 "util/configparser.c" /* yacc.c:1648  */
+#line 3165 "util/configparser.c"
     break;
 
   case 281:
-#line 731 "./util/configparser.y" /* yacc.c:1648  */
+#line 731 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3168,11 +3173,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3172 "util/configparser.c" /* yacc.c:1648  */
+#line 3177 "util/configparser.c"
     break;
 
   case 282:
-#line 740 "./util/configparser.y" /* yacc.c:1648  */
+#line 740 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3184,11 +3189,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3188 "util/configparser.c" /* yacc.c:1648  */
+#line 3193 "util/configparser.c"
     break;
 
   case 283:
-#line 753 "./util/configparser.y" /* yacc.c:1648  */
+#line 753 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3196,11 +3201,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3200 "util/configparser.c" /* yacc.c:1648  */
+#line 3205 "util/configparser.c"
     break;
 
   case 284:
-#line 762 "./util/configparser.y" /* yacc.c:1648  */
+#line 762 "./util/configparser.y"
     {
                OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3208,11 +3213,11 @@ yyreduce:
                else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3212 "util/configparser.c" /* yacc.c:1648  */
+#line 3217 "util/configparser.c"
     break;
 
   case 285:
-#line 771 "./util/configparser.y" /* yacc.c:1648  */
+#line 771 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3220,31 +3225,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3224 "util/configparser.c" /* yacc.c:1648  */
+#line 3229 "util/configparser.c"
     break;
 
   case 286:
-#line 780 "./util/configparser.y" /* yacc.c:1648  */
+#line 780 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 3234 "util/configparser.c" /* yacc.c:1648  */
+#line 3239 "util/configparser.c"
     break;
 
   case 287:
-#line 787 "./util/configparser.y" /* yacc.c:1648  */
+#line 787 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 3244 "util/configparser.c" /* yacc.c:1648  */
+#line 3249 "util/configparser.c"
     break;
 
   case 288:
-#line 794 "./util/configparser.y" /* yacc.c:1648  */
+#line 794 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3252,21 +3257,21 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3256 "util/configparser.c" /* yacc.c:1648  */
+#line 3261 "util/configparser.c"
     break;
 
   case 289:
-#line 803 "./util/configparser.y" /* yacc.c:1648  */
+#line 803 "./util/configparser.y"
     {
                OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_cert_bundle);
                cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
        }
-#line 3266 "util/configparser.c" /* yacc.c:1648  */
+#line 3271 "util/configparser.c"
     break;
 
   case 290:
-#line 810 "./util/configparser.y" /* yacc.c:1648  */
+#line 810 "./util/configparser.y"
     {
                OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3274,53 +3279,53 @@ yyreduce:
                else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3278 "util/configparser.c" /* yacc.c:1648  */
+#line 3283 "util/configparser.c"
     break;
 
   case 291:
-#line 819 "./util/configparser.y" /* yacc.c:1648  */
+#line 819 "./util/configparser.y"
     {
                OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3289 "util/configparser.c" /* yacc.c:1648  */
+#line 3294 "util/configparser.c"
     break;
 
   case 292:
-#line 827 "./util/configparser.y" /* yacc.c:1648  */
+#line 827 "./util/configparser.y"
     {
                OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphers);
                cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
        }
-#line 3299 "util/configparser.c" /* yacc.c:1648  */
+#line 3304 "util/configparser.c"
     break;
 
   case 293:
-#line 834 "./util/configparser.y" /* yacc.c:1648  */
+#line 834 "./util/configparser.y"
     {
                OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphersuites);
                cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
        }
-#line 3309 "util/configparser.c" /* yacc.c:1648  */
+#line 3314 "util/configparser.c"
     break;
 
   case 294:
-#line 841 "./util/configparser.y" /* yacc.c:1648  */
+#line 841 "./util/configparser.y"
     {
                OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3320 "util/configparser.c" /* yacc.c:1648  */
+#line 3325 "util/configparser.c"
     break;
 
   case 295:
-#line 849 "./util/configparser.y" /* yacc.c:1648  */
+#line 849 "./util/configparser.y"
     {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3328,11 +3333,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3332 "util/configparser.c" /* yacc.c:1648  */
+#line 3337 "util/configparser.c"
     break;
 
   case 296:
-#line 858 "./util/configparser.y" /* yacc.c:1648  */
+#line 858 "./util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3340,11 +3345,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3344 "util/configparser.c" /* yacc.c:1648  */
+#line 3349 "util/configparser.c"
     break;
 
   case 297:
-#line 867 "./util/configparser.y" /* yacc.c:1648  */
+#line 867 "./util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3357,11 +3362,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3361 "util/configparser.c" /* yacc.c:1648  */
+#line 3366 "util/configparser.c"
     break;
 
   case 298:
-#line 881 "./util/configparser.y" /* yacc.c:1648  */
+#line 881 "./util/configparser.y"
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3369,11 +3374,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3373 "util/configparser.c" /* yacc.c:1648  */
+#line 3378 "util/configparser.c"
     break;
 
   case 299:
-#line 890 "./util/configparser.y" /* yacc.c:1648  */
+#line 890 "./util/configparser.y"
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3381,11 +3386,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3385 "util/configparser.c" /* yacc.c:1648  */
+#line 3390 "util/configparser.c"
     break;
 
   case 300:
-#line 899 "./util/configparser.y" /* yacc.c:1648  */
+#line 899 "./util/configparser.y"
     {
        OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3393,11 +3398,11 @@ yyreduce:
        else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3397 "util/configparser.c" /* yacc.c:1648  */
+#line 3402 "util/configparser.c"
     break;
 
   case 301:
-#line 908 "./util/configparser.y" /* yacc.c:1648  */
+#line 908 "./util/configparser.y"
     {
        OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3405,11 +3410,11 @@ yyreduce:
        else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3409 "util/configparser.c" /* yacc.c:1648  */
+#line 3414 "util/configparser.c"
     break;
 
   case 302:
-#line 917 "./util/configparser.y" /* yacc.c:1648  */
+#line 917 "./util/configparser.y"
     {
                OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3417,11 +3422,11 @@ yyreduce:
                else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3421 "util/configparser.c" /* yacc.c:1648  */
+#line 3426 "util/configparser.c"
     break;
 
   case 303:
-#line 926 "./util/configparser.y" /* yacc.c:1648  */
+#line 926 "./util/configparser.y"
     {
        OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3429,31 +3434,31 @@ yyreduce:
        else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3433 "util/configparser.c" /* yacc.c:1648  */
+#line 3438 "util/configparser.c"
     break;
 
   case 304:
-#line 935 "./util/configparser.y" /* yacc.c:1648  */
+#line 935 "./util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 3443 "util/configparser.c" /* yacc.c:1648  */
+#line 3448 "util/configparser.c"
     break;
 
   case 305:
-#line 942 "./util/configparser.y" /* yacc.c:1648  */
+#line 942 "./util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 3453 "util/configparser.c" /* yacc.c:1648  */
+#line 3458 "util/configparser.c"
     break;
 
   case 306:
-#line 949 "./util/configparser.y" /* yacc.c:1648  */
+#line 949 "./util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -3478,105 +3483,105 @@ yyreduce:
                        }
                }
        }
-#line 3482 "util/configparser.c" /* yacc.c:1648  */
+#line 3487 "util/configparser.c"
     break;
 
   case 307:
-#line 975 "./util/configparser.y" /* yacc.c:1648  */
+#line 975 "./util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 3493 "util/configparser.c" /* yacc.c:1648  */
+#line 3498 "util/configparser.c"
     break;
 
   case 308:
-#line 983 "./util/configparser.y" /* yacc.c:1648  */
+#line 983 "./util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 3503 "util/configparser.c" /* yacc.c:1648  */
+#line 3508 "util/configparser.c"
     break;
 
   case 309:
-#line 990 "./util/configparser.y" /* yacc.c:1648  */
+#line 990 "./util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3513 "util/configparser.c" /* yacc.c:1648  */
+#line 3518 "util/configparser.c"
     break;
 
   case 310:
-#line 997 "./util/configparser.y" /* yacc.c:1648  */
+#line 997 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
                cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
        }
-#line 3523 "util/configparser.c" /* yacc.c:1648  */
+#line 3528 "util/configparser.c"
     break;
 
   case 311:
-#line 1004 "./util/configparser.y" /* yacc.c:1648  */
+#line 1004 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3533 "util/configparser.c" /* yacc.c:1648  */
+#line 3538 "util/configparser.c"
     break;
 
   case 312:
-#line 1011 "./util/configparser.y" /* yacc.c:1648  */
+#line 1011 "./util/configparser.y"
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3544 "util/configparser.c" /* yacc.c:1648  */
+#line 3549 "util/configparser.c"
     break;
 
   case 313:
-#line 1019 "./util/configparser.y" /* yacc.c:1648  */
+#line 1019 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3555 "util/configparser.c" /* yacc.c:1648  */
+#line 3560 "util/configparser.c"
     break;
 
   case 314:
-#line 1027 "./util/configparser.y" /* yacc.c:1648  */
+#line 1027 "./util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3566 "util/configparser.c" /* yacc.c:1648  */
+#line 3571 "util/configparser.c"
     break;
 
   case 315:
-#line 1035 "./util/configparser.y" /* yacc.c:1648  */
+#line 1035 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3576 "util/configparser.c" /* yacc.c:1648  */
+#line 3581 "util/configparser.c"
     break;
 
   case 316:
-#line 1042 "./util/configparser.y" /* yacc.c:1648  */
+#line 1042 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3586,11 +3591,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3590 "util/configparser.c" /* yacc.c:1648  */
+#line 3595 "util/configparser.c"
     break;
 
   case 317:
-#line 1053 "./util/configparser.y" /* yacc.c:1648  */
+#line 1053 "./util/configparser.y"
     {
                OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3600,21 +3605,21 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3604 "util/configparser.c" /* yacc.c:1648  */
+#line 3609 "util/configparser.c"
     break;
 
   case 318:
-#line 1064 "./util/configparser.y" /* yacc.c:1648  */
+#line 1064 "./util/configparser.y"
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3614 "util/configparser.c" /* yacc.c:1648  */
+#line 3619 "util/configparser.c"
     break;
 
   case 319:
-#line 1071 "./util/configparser.y" /* yacc.c:1648  */
+#line 1071 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3622,11 +3627,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3626 "util/configparser.c" /* yacc.c:1648  */
+#line 3631 "util/configparser.c"
     break;
 
   case 320:
-#line 1080 "./util/configparser.y" /* yacc.c:1648  */
+#line 1080 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3634,11 +3639,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3638 "util/configparser.c" /* yacc.c:1648  */
+#line 3643 "util/configparser.c"
     break;
 
   case 321:
-#line 1089 "./util/configparser.y" /* yacc.c:1648  */
+#line 1089 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3646,53 +3651,53 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3650 "util/configparser.c" /* yacc.c:1648  */
+#line 3655 "util/configparser.c"
     break;
 
   case 322:
-#line 1098 "./util/configparser.y" /* yacc.c:1648  */
+#line 1098 "./util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 3660 "util/configparser.c" /* yacc.c:1648  */
+#line 3665 "util/configparser.c"
     break;
 
   case 323:
-#line 1105 "./util/configparser.y" /* yacc.c:1648  */
+#line 1105 "./util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 3670 "util/configparser.c" /* yacc.c:1648  */
+#line 3675 "util/configparser.c"
     break;
 
   case 324:
-#line 1112 "./util/configparser.y" /* yacc.c:1648  */
+#line 1112 "./util/configparser.y"
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 3681 "util/configparser.c" /* yacc.c:1648  */
+#line 3686 "util/configparser.c"
     break;
 
   case 325:
-#line 1120 "./util/configparser.y" /* yacc.c:1648  */
+#line 1120 "./util/configparser.y"
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 3692 "util/configparser.c" /* yacc.c:1648  */
+#line 3697 "util/configparser.c"
     break;
 
   case 326:
-#line 1128 "./util/configparser.y" /* yacc.c:1648  */
+#line 1128 "./util/configparser.y"
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3701,11 +3706,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3705 "util/configparser.c" /* yacc.c:1648  */
+#line 3710 "util/configparser.c"
     break;
 
   case 327:
-#line 1138 "./util/configparser.y" /* yacc.c:1648  */
+#line 1138 "./util/configparser.y"
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3714,11 +3719,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3718 "util/configparser.c" /* yacc.c:1648  */
+#line 3723 "util/configparser.c"
     break;
 
   case 328:
-#line 1148 "./util/configparser.y" /* yacc.c:1648  */
+#line 1148 "./util/configparser.y"
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3727,22 +3732,22 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3731 "util/configparser.c" /* yacc.c:1648  */
+#line 3736 "util/configparser.c"
     break;
 
   case 329:
-#line 1158 "./util/configparser.y" /* yacc.c:1648  */
+#line 1158 "./util/configparser.y"
     {
                OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3742 "util/configparser.c" /* yacc.c:1648  */
+#line 3747 "util/configparser.c"
     break;
 
   case 330:
-#line 1166 "./util/configparser.y" /* yacc.c:1648  */
+#line 1166 "./util/configparser.y"
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3754,11 +3759,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3758 "util/configparser.c" /* yacc.c:1648  */
+#line 3763 "util/configparser.c"
     break;
 
   case 331:
-#line 1179 "./util/configparser.y" /* yacc.c:1648  */
+#line 1179 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3768,22 +3773,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3772 "util/configparser.c" /* yacc.c:1648  */
+#line 3777 "util/configparser.c"
     break;
 
   case 332:
-#line 1190 "./util/configparser.y" /* yacc.c:1648  */
+#line 1190 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3783 "util/configparser.c" /* yacc.c:1648  */
+#line 3788 "util/configparser.c"
     break;
 
   case 333:
-#line 1198 "./util/configparser.y" /* yacc.c:1648  */
+#line 1198 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3795,11 +3800,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3799 "util/configparser.c" /* yacc.c:1648  */
+#line 3804 "util/configparser.c"
     break;
 
   case 334:
-#line 1211 "./util/configparser.y" /* yacc.c:1648  */
+#line 1211 "./util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3807,11 +3812,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3811 "util/configparser.c" /* yacc.c:1648  */
+#line 3816 "util/configparser.c"
     break;
 
   case 335:
-#line 1220 "./util/configparser.y" /* yacc.c:1648  */
+#line 1220 "./util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3819,11 +3824,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3823 "util/configparser.c" /* yacc.c:1648  */
+#line 3828 "util/configparser.c"
     break;
 
   case 336:
-#line 1229 "./util/configparser.y" /* yacc.c:1648  */
+#line 1229 "./util/configparser.y"
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3831,11 +3836,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3835 "util/configparser.c" /* yacc.c:1648  */
+#line 3840 "util/configparser.c"
     break;
 
   case 337:
-#line 1238 "./util/configparser.y" /* yacc.c:1648  */
+#line 1238 "./util/configparser.y"
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3844,11 +3849,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3848 "util/configparser.c" /* yacc.c:1648  */
+#line 3853 "util/configparser.c"
     break;
 
   case 338:
-#line 1248 "./util/configparser.y" /* yacc.c:1648  */
+#line 1248 "./util/configparser.y"
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3857,22 +3862,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3861 "util/configparser.c" /* yacc.c:1648  */
+#line 3866 "util/configparser.c"
     break;
 
   case 339:
-#line 1258 "./util/configparser.y" /* yacc.c:1648  */
+#line 1258 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3872 "util/configparser.c" /* yacc.c:1648  */
+#line 3877 "util/configparser.c"
     break;
 
   case 340:
-#line 1266 "./util/configparser.y" /* yacc.c:1648  */
+#line 1266 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3884,11 +3889,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3888 "util/configparser.c" /* yacc.c:1648  */
+#line 3893 "util/configparser.c"
     break;
 
   case 341:
-#line 1279 "./util/configparser.y" /* yacc.c:1648  */
+#line 1279 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3896,22 +3901,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3900 "util/configparser.c" /* yacc.c:1648  */
+#line 3905 "util/configparser.c"
     break;
 
   case 342:
-#line 1288 "./util/configparser.y" /* yacc.c:1648  */
+#line 1288 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3911 "util/configparser.c" /* yacc.c:1648  */
+#line 3916 "util/configparser.c"
     break;
 
   case 343:
-#line 1296 "./util/configparser.y" /* yacc.c:1648  */
+#line 1296 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3919,22 +3924,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3923 "util/configparser.c" /* yacc.c:1648  */
+#line 3928 "util/configparser.c"
     break;
 
   case 344:
-#line 1305 "./util/configparser.y" /* yacc.c:1648  */
+#line 1305 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3934 "util/configparser.c" /* yacc.c:1648  */
+#line 3939 "util/configparser.c"
     break;
 
   case 345:
-#line 1313 "./util/configparser.y" /* yacc.c:1648  */
+#line 1313 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3946,11 +3951,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3950 "util/configparser.c" /* yacc.c:1648  */
+#line 3955 "util/configparser.c"
     break;
 
   case 346:
-#line 1326 "./util/configparser.y" /* yacc.c:1648  */
+#line 1326 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3958,21 +3963,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3962 "util/configparser.c" /* yacc.c:1648  */
+#line 3967 "util/configparser.c"
     break;
 
   case 347:
-#line 1335 "./util/configparser.y" /* yacc.c:1648  */
+#line 1335 "./util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 3972 "util/configparser.c" /* yacc.c:1648  */
+#line 3977 "util/configparser.c"
     break;
 
   case 348:
-#line 1342 "./util/configparser.y" /* yacc.c:1648  */
+#line 1342 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3981,11 +3986,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3985 "util/configparser.c" /* yacc.c:1648  */
+#line 3990 "util/configparser.c"
     break;
 
   case 349:
-#line 1352 "./util/configparser.y" /* yacc.c:1648  */
+#line 1352 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3994,11 +3999,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3998 "util/configparser.c" /* yacc.c:1648  */
+#line 4003 "util/configparser.c"
     break;
 
   case 350:
-#line 1362 "./util/configparser.y" /* yacc.c:1648  */
+#line 1362 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4007,11 +4012,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4011 "util/configparser.c" /* yacc.c:1648  */
+#line 4016 "util/configparser.c"
     break;
 
   case 351:
-#line 1372 "./util/configparser.y" /* yacc.c:1648  */
+#line 1372 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4020,11 +4025,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4024 "util/configparser.c" /* yacc.c:1648  */
+#line 4029 "util/configparser.c"
     break;
 
   case 352:
-#line 1382 "./util/configparser.y" /* yacc.c:1648  */
+#line 1382 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4033,11 +4038,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4037 "util/configparser.c" /* yacc.c:1648  */
+#line 4042 "util/configparser.c"
     break;
 
   case 353:
-#line 1392 "./util/configparser.y" /* yacc.c:1648  */
+#line 1392 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4046,11 +4051,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4050 "util/configparser.c" /* yacc.c:1648  */
+#line 4055 "util/configparser.c"
     break;
 
   case 354:
-#line 1402 "./util/configparser.y" /* yacc.c:1648  */
+#line 1402 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4059,11 +4064,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4063 "util/configparser.c" /* yacc.c:1648  */
+#line 4068 "util/configparser.c"
     break;
 
   case 355:
-#line 1412 "./util/configparser.y" /* yacc.c:1648  */
+#line 1412 "./util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4072,41 +4077,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4076 "util/configparser.c" /* yacc.c:1648  */
+#line 4081 "util/configparser.c"
     break;
 
   case 356:
-#line 1422 "./util/configparser.y" /* yacc.c:1648  */
+#line 1422 "./util/configparser.y"
     {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4086 "util/configparser.c" /* yacc.c:1648  */
+#line 4091 "util/configparser.c"
     break;
 
   case 357:
-#line 1429 "./util/configparser.y" /* yacc.c:1648  */
+#line 1429 "./util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4096 "util/configparser.c" /* yacc.c:1648  */
+#line 4101 "util/configparser.c"
     break;
 
   case 358:
-#line 1436 "./util/configparser.y" /* yacc.c:1648  */
+#line 1436 "./util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4106 "util/configparser.c" /* yacc.c:1648  */
+#line 4111 "util/configparser.c"
     break;
 
   case 359:
-#line 1443 "./util/configparser.y" /* yacc.c:1648  */
+#line 1443 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4114,11 +4119,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4118 "util/configparser.c" /* yacc.c:1648  */
+#line 4123 "util/configparser.c"
     break;
 
   case 360:
-#line 1452 "./util/configparser.y" /* yacc.c:1648  */
+#line 1452 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4126,11 +4131,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4130 "util/configparser.c" /* yacc.c:1648  */
+#line 4135 "util/configparser.c"
     break;
 
   case 361:
-#line 1461 "./util/configparser.y" /* yacc.c:1648  */
+#line 1461 "./util/configparser.y"
     {
                OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4138,11 +4143,11 @@ yyreduce:
                else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4142 "util/configparser.c" /* yacc.c:1648  */
+#line 4147 "util/configparser.c"
     break;
 
   case 362:
-#line 1470 "./util/configparser.y" /* yacc.c:1648  */
+#line 1470 "./util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4150,21 +4155,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4154 "util/configparser.c" /* yacc.c:1648  */
+#line 4159 "util/configparser.c"
     break;
 
   case 363:
-#line 1479 "./util/configparser.y" /* yacc.c:1648  */
+#line 1479 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4164 "util/configparser.c" /* yacc.c:1648  */
+#line 4169 "util/configparser.c"
     break;
 
   case 364:
-#line 1486 "./util/configparser.y" /* yacc.c:1648  */
+#line 1486 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4173,11 +4178,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4177 "util/configparser.c" /* yacc.c:1648  */
+#line 4182 "util/configparser.c"
     break;
 
   case 365:
-#line 1496 "./util/configparser.y" /* yacc.c:1648  */
+#line 1496 "./util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -4196,21 +4201,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 4200 "util/configparser.c" /* yacc.c:1648  */
+#line 4205 "util/configparser.c"
     break;
 
   case 366:
-#line 1516 "./util/configparser.y" /* yacc.c:1648  */
+#line 1516 "./util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 4210 "util/configparser.c" /* yacc.c:1648  */
+#line 4215 "util/configparser.c"
     break;
 
   case 367:
-#line 1523 "./util/configparser.y" /* yacc.c:1648  */
+#line 1523 "./util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4227,11 +4232,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4231 "util/configparser.c" /* yacc.c:1648  */
+#line 4236 "util/configparser.c"
     break;
 
   case 368:
-#line 1541 "./util/configparser.y" /* yacc.c:1648  */
+#line 1541 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4243,11 +4248,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4247 "util/configparser.c" /* yacc.c:1648  */
+#line 4252 "util/configparser.c"
     break;
 
   case 369:
-#line 1554 "./util/configparser.y" /* yacc.c:1648  */
+#line 1554 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4259,11 +4264,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4263 "util/configparser.c" /* yacc.c:1648  */
+#line 4268 "util/configparser.c"
     break;
 
   case 370:
-#line 1567 "./util/configparser.y" /* yacc.c:1648  */
+#line 1567 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4271,11 +4276,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4275 "util/configparser.c" /* yacc.c:1648  */
+#line 4280 "util/configparser.c"
     break;
 
   case 371:
-#line 1576 "./util/configparser.y" /* yacc.c:1648  */
+#line 1576 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4283,11 +4288,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4287 "util/configparser.c" /* yacc.c:1648  */
+#line 4292 "util/configparser.c"
     break;
 
   case 372:
-#line 1585 "./util/configparser.y" /* yacc.c:1648  */
+#line 1585 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4295,11 +4300,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4299 "util/configparser.c" /* yacc.c:1648  */
+#line 4304 "util/configparser.c"
     break;
 
   case 373:
-#line 1594 "./util/configparser.y" /* yacc.c:1648  */
+#line 1594 "./util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4307,11 +4312,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4311 "util/configparser.c" /* yacc.c:1648  */
+#line 4316 "util/configparser.c"
     break;
 
   case 374:
-#line 1603 "./util/configparser.y" /* yacc.c:1648  */
+#line 1603 "./util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4320,11 +4325,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4324 "util/configparser.c" /* yacc.c:1648  */
+#line 4329 "util/configparser.c"
     break;
 
   case 375:
-#line 1613 "./util/configparser.y" /* yacc.c:1648  */
+#line 1613 "./util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4333,11 +4338,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4337 "util/configparser.c" /* yacc.c:1648  */
+#line 4342 "util/configparser.c"
     break;
 
   case 376:
-#line 1623 "./util/configparser.y" /* yacc.c:1648  */
+#line 1623 "./util/configparser.y"
     {
                OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4347,11 +4352,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4351 "util/configparser.c" /* yacc.c:1648  */
+#line 4356 "util/configparser.c"
     break;
 
   case 377:
-#line 1634 "./util/configparser.y" /* yacc.c:1648  */
+#line 1634 "./util/configparser.y"
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4359,11 +4364,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4363 "util/configparser.c" /* yacc.c:1648  */
+#line 4368 "util/configparser.c"
     break;
 
   case 378:
-#line 1643 "./util/configparser.y" /* yacc.c:1648  */
+#line 1643 "./util/configparser.y"
     {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4371,11 +4376,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4375 "util/configparser.c" /* yacc.c:1648  */
+#line 4380 "util/configparser.c"
     break;
 
   case 379:
-#line 1652 "./util/configparser.y" /* yacc.c:1648  */
+#line 1652 "./util/configparser.y"
     {
                OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4383,11 +4388,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4387 "util/configparser.c" /* yacc.c:1648  */
+#line 4392 "util/configparser.c"
     break;
 
   case 380:
-#line 1661 "./util/configparser.y" /* yacc.c:1648  */
+#line 1661 "./util/configparser.y"
     {
                OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4395,11 +4400,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4399 "util/configparser.c" /* yacc.c:1648  */
+#line 4404 "util/configparser.c"
     break;
 
   case 381:
-#line 1670 "./util/configparser.y" /* yacc.c:1648  */
+#line 1670 "./util/configparser.y"
     {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4411,11 +4416,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 4415 "util/configparser.c" /* yacc.c:1648  */
+#line 4420 "util/configparser.c"
     break;
 
   case 382:
-#line 1683 "./util/configparser.y" /* yacc.c:1648  */
+#line 1683 "./util/configparser.y"
     {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4427,11 +4432,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 4431 "util/configparser.c" /* yacc.c:1648  */
+#line 4436 "util/configparser.c"
     break;
 
   case 383:
-#line 1696 "./util/configparser.y" /* yacc.c:1648  */
+#line 1696 "./util/configparser.y"
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4439,21 +4444,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4443 "util/configparser.c" /* yacc.c:1648  */
+#line 4448 "util/configparser.c"
     break;
 
   case 384:
-#line 1705 "./util/configparser.y" /* yacc.c:1648  */
+#line 1705 "./util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 4453 "util/configparser.c" /* yacc.c:1648  */
+#line 4458 "util/configparser.c"
     break;
 
   case 385:
-#line 1712 "./util/configparser.y" /* yacc.c:1648  */
+#line 1712 "./util/configparser.y"
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4461,11 +4466,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4465 "util/configparser.c" /* yacc.c:1648  */
+#line 4470 "util/configparser.c"
     break;
 
   case 386:
-#line 1721 "./util/configparser.y" /* yacc.c:1648  */
+#line 1721 "./util/configparser.y"
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4473,11 +4478,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4477 "util/configparser.c" /* yacc.c:1648  */
+#line 4482 "util/configparser.c"
     break;
 
   case 387:
-#line 1730 "./util/configparser.y" /* yacc.c:1648  */
+#line 1730 "./util/configparser.y"
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4485,11 +4490,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4489 "util/configparser.c" /* yacc.c:1648  */
+#line 4494 "util/configparser.c"
     break;
 
   case 388:
-#line 1739 "./util/configparser.y" /* yacc.c:1648  */
+#line 1739 "./util/configparser.y"
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4498,22 +4503,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4502 "util/configparser.c" /* yacc.c:1648  */
+#line 4507 "util/configparser.c"
     break;
 
   case 389:
-#line 1748 "./util/configparser.y" /* yacc.c:1648  */
+#line 1748 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4513 "util/configparser.c" /* yacc.c:1648  */
+#line 4518 "util/configparser.c"
     break;
 
   case 390:
-#line 1756 "./util/configparser.y" /* yacc.c:1648  */
+#line 1756 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4525,22 +4530,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4529 "util/configparser.c" /* yacc.c:1648  */
+#line 4534 "util/configparser.c"
     break;
 
   case 391:
-#line 1769 "./util/configparser.y" /* yacc.c:1648  */
+#line 1769 "./util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4540 "util/configparser.c" /* yacc.c:1648  */
+#line 4545 "util/configparser.c"
     break;
 
   case 392:
-#line 1777 "./util/configparser.y" /* yacc.c:1648  */
+#line 1777 "./util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -4580,21 +4585,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 4584 "util/configparser.c" /* yacc.c:1648  */
+#line 4589 "util/configparser.c"
     break;
 
   case 393:
-#line 1818 "./util/configparser.y" /* yacc.c:1648  */
+#line 1818 "./util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 4594 "util/configparser.c" /* yacc.c:1648  */
+#line 4599 "util/configparser.c"
     break;
 
   case 394:
-#line 1825 "./util/configparser.y" /* yacc.c:1648  */
+#line 1825 "./util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -4608,11 +4613,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 4612 "util/configparser.c" /* yacc.c:1648  */
+#line 4617 "util/configparser.c"
     break;
 
   case 395:
-#line 1840 "./util/configparser.y" /* yacc.c:1648  */
+#line 1840 "./util/configparser.y"
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4621,11 +4626,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4625 "util/configparser.c" /* yacc.c:1648  */
+#line 4630 "util/configparser.c"
     break;
 
   case 396:
-#line 1850 "./util/configparser.y" /* yacc.c:1648  */
+#line 1850 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4634,41 +4639,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4638 "util/configparser.c" /* yacc.c:1648  */
+#line 4643 "util/configparser.c"
     break;
 
   case 397:
-#line 1860 "./util/configparser.y" /* yacc.c:1648  */
+#line 1860 "./util/configparser.y"
     {
                OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4648 "util/configparser.c" /* yacc.c:1648  */
+#line 4653 "util/configparser.c"
     break;
 
   case 398:
-#line 1867 "./util/configparser.y" /* yacc.c:1648  */
+#line 1867 "./util/configparser.y"
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4658 "util/configparser.c" /* yacc.c:1648  */
+#line 4663 "util/configparser.c"
     break;
 
   case 399:
-#line 1874 "./util/configparser.y" /* yacc.c:1648  */
+#line 1874 "./util/configparser.y"
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 4668 "util/configparser.c" /* yacc.c:1648  */
+#line 4673 "util/configparser.c"
     break;
 
   case 400:
-#line 1881 "./util/configparser.y" /* yacc.c:1648  */
+#line 1881 "./util/configparser.y"
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4676,22 +4681,22 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4680 "util/configparser.c" /* yacc.c:1648  */
+#line 4685 "util/configparser.c"
     break;
 
   case 401:
-#line 1890 "./util/configparser.y" /* yacc.c:1648  */
+#line 1890 "./util/configparser.y"
     {
                OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
                        (yyvsp[0].str)))
                        fatal_exit("out of memory adding dns64-ignore-aaaa");
        }
-#line 4691 "util/configparser.c" /* yacc.c:1648  */
+#line 4696 "util/configparser.c"
     break;
 
   case 402:
-#line 1898 "./util/configparser.y" /* yacc.c:1648  */
+#line 1898 "./util/configparser.y"
     {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -4704,11 +4709,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4708 "util/configparser.c" /* yacc.c:1648  */
+#line 4713 "util/configparser.c"
     break;
 
   case 403:
-#line 1912 "./util/configparser.y" /* yacc.c:1648  */
+#line 1912 "./util/configparser.y"
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4728,11 +4733,11 @@ yyreduce:
                        }
                }
        }
-#line 4732 "util/configparser.c" /* yacc.c:1648  */
+#line 4737 "util/configparser.c"
     break;
 
   case 404:
-#line 1933 "./util/configparser.y" /* yacc.c:1648  */
+#line 1933 "./util/configparser.y"
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4752,11 +4757,11 @@ yyreduce:
                        }
                }
        }
-#line 4756 "util/configparser.c" /* yacc.c:1648  */
+#line 4761 "util/configparser.c"
     break;
 
   case 405:
-#line 1954 "./util/configparser.y" /* yacc.c:1648  */
+#line 1954 "./util/configparser.y"
     {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -4767,11 +4772,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4771 "util/configparser.c" /* yacc.c:1648  */
+#line 4776 "util/configparser.c"
     break;
 
   case 406:
-#line 1966 "./util/configparser.y" /* yacc.c:1648  */
+#line 1966 "./util/configparser.y"
     {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -4782,11 +4787,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4786 "util/configparser.c" /* yacc.c:1648  */
+#line 4791 "util/configparser.c"
     break;
 
   case 407:
-#line 1978 "./util/configparser.y" /* yacc.c:1648  */
+#line 1978 "./util/configparser.y"
     {
                OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
@@ -4797,11 +4802,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4801 "util/configparser.c" /* yacc.c:1648  */
+#line 4806 "util/configparser.c"
     break;
 
   case 408:
-#line 1990 "./util/configparser.y" /* yacc.c:1648  */
+#line 1990 "./util/configparser.y"
     {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -4809,11 +4814,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 4813 "util/configparser.c" /* yacc.c:1648  */
+#line 4818 "util/configparser.c"
     break;
 
   case 409:
-#line 1999 "./util/configparser.y" /* yacc.c:1648  */
+#line 1999 "./util/configparser.y"
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4833,11 +4838,11 @@ yyreduce:
                        }
                }
        }
-#line 4837 "util/configparser.c" /* yacc.c:1648  */
+#line 4842 "util/configparser.c"
     break;
 
   case 410:
-#line 2020 "./util/configparser.y" /* yacc.c:1648  */
+#line 2020 "./util/configparser.y"
     { 
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4845,11 +4850,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4849 "util/configparser.c" /* yacc.c:1648  */
+#line 4854 "util/configparser.c"
     break;
 
   case 411:
-#line 2030 "./util/configparser.y" /* yacc.c:1648  */
+#line 2030 "./util/configparser.y"
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4857,33 +4862,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4861 "util/configparser.c" /* yacc.c:1648  */
+#line 4866 "util/configparser.c"
     break;
 
   case 412:
-#line 2039 "./util/configparser.y" /* yacc.c:1648  */
+#line 2039 "./util/configparser.y"
     {
        OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 4872 "util/configparser.c" /* yacc.c:1648  */
+#line 4877 "util/configparser.c"
     break;
 
   case 413:
-#line 2047 "./util/configparser.y" /* yacc.c:1648  */
+#line 2047 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4883 "util/configparser.c" /* yacc.c:1648  */
+#line 4888 "util/configparser.c"
     break;
 
   case 414:
-#line 2055 "./util/configparser.y" /* yacc.c:1648  */
+#line 2055 "./util/configparser.y"
     {
        OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -4895,11 +4900,11 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 4899 "util/configparser.c" /* yacc.c:1648  */
+#line 4904 "util/configparser.c"
     break;
 
   case 415:
-#line 2068 "./util/configparser.y" /* yacc.c:1648  */
+#line 2068 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4911,11 +4916,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4915 "util/configparser.c" /* yacc.c:1648  */
+#line 4920 "util/configparser.c"
     break;
 
   case 416:
-#line 2081 "./util/configparser.y" /* yacc.c:1648  */
+#line 2081 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -4929,11 +4934,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 4933 "util/configparser.c" /* yacc.c:1648  */
+#line 4938 "util/configparser.c"
     break;
 
   case 417:
-#line 2096 "./util/configparser.y" /* yacc.c:1648  */
+#line 2096 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -4947,11 +4952,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 4951 "util/configparser.c" /* yacc.c:1648  */
+#line 4956 "util/configparser.c"
     break;
 
   case 418:
-#line 2111 "./util/configparser.y" /* yacc.c:1648  */
+#line 2111 "./util/configparser.y"
     { 
        OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
        if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4959,11 +4964,11 @@ yyreduce:
        else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
        free((yyvsp[0].str));
        }
-#line 4963 "util/configparser.c" /* yacc.c:1648  */
+#line 4968 "util/configparser.c"
     break;
 
   case 419:
-#line 2120 "./util/configparser.y" /* yacc.c:1648  */
+#line 2120 "./util/configparser.y"
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4971,20 +4976,20 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4975 "util/configparser.c" /* yacc.c:1648  */
+#line 4980 "util/configparser.c"
     break;
 
   case 420:
-#line 2129 "./util/configparser.y" /* yacc.c:1648  */
+#line 2129 "./util/configparser.y"
     { 
                OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
                free((yyvsp[0].str));
        }
-#line 4984 "util/configparser.c" /* yacc.c:1648  */
+#line 4989 "util/configparser.c"
     break;
 
   case 421:
-#line 2135 "./util/configparser.y" /* yacc.c:1648  */
+#line 2135 "./util/configparser.y"
     { 
                OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) <= 0)
@@ -4992,11 +4997,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4996 "util/configparser.c" /* yacc.c:1648  */
+#line 5001 "util/configparser.c"
     break;
 
   case 422:
-#line 2144 "./util/configparser.y" /* yacc.c:1648  */
+#line 2144 "./util/configparser.y"
     { 
                OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5004,11 +5009,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5008 "util/configparser.c" /* yacc.c:1648  */
+#line 5013 "util/configparser.c"
     break;
 
   case 423:
-#line 2153 "./util/configparser.y" /* yacc.c:1648  */
+#line 2153 "./util/configparser.y"
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5017,11 +5022,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5021 "util/configparser.c" /* yacc.c:1648  */
+#line 5026 "util/configparser.c"
     break;
 
   case 424:
-#line 2163 "./util/configparser.y" /* yacc.c:1648  */
+#line 2163 "./util/configparser.y"
     {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5030,11 +5035,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5034 "util/configparser.c" /* yacc.c:1648  */
+#line 5039 "util/configparser.c"
     break;
 
   case 425:
-#line 2173 "./util/configparser.y" /* yacc.c:1648  */
+#line 2173 "./util/configparser.y"
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
@@ -5046,11 +5051,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5050 "util/configparser.c" /* yacc.c:1648  */
+#line 5055 "util/configparser.c"
     break;
 
   case 426:
-#line 2186 "./util/configparser.y" /* yacc.c:1648  */
+#line 2186 "./util/configparser.y"
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
@@ -5062,11 +5067,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5066 "util/configparser.c" /* yacc.c:1648  */
+#line 5071 "util/configparser.c"
     break;
 
   case 427:
-#line 2199 "./util/configparser.y" /* yacc.c:1648  */
+#line 2199 "./util/configparser.y"
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
@@ -5077,11 +5082,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5081 "util/configparser.c" /* yacc.c:1648  */
+#line 5086 "util/configparser.c"
     break;
 
   case 428:
-#line 2211 "./util/configparser.y" /* yacc.c:1648  */
+#line 2211 "./util/configparser.y"
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
@@ -5094,11 +5099,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5098 "util/configparser.c" /* yacc.c:1648  */
+#line 5103 "util/configparser.c"
     break;
 
   case 429:
-#line 2225 "./util/configparser.y" /* yacc.c:1648  */
+#line 2225 "./util/configparser.y"
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
@@ -5109,11 +5114,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5113 "util/configparser.c" /* yacc.c:1648  */
+#line 5118 "util/configparser.c"
     break;
 
   case 430:
-#line 2237 "./util/configparser.y" /* yacc.c:1648  */
+#line 2237 "./util/configparser.y"
     {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
@@ -5126,11 +5131,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5130 "util/configparser.c" /* yacc.c:1648  */
+#line 5135 "util/configparser.c"
     break;
 
   case 431:
-#line 2251 "./util/configparser.y" /* yacc.c:1648  */
+#line 2251 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -5139,31 +5144,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 5143 "util/configparser.c" /* yacc.c:1648  */
+#line 5148 "util/configparser.c"
     break;
 
   case 432:
-#line 2261 "./util/configparser.y" /* yacc.c:1648  */
+#line 2261 "./util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5153 "util/configparser.c" /* yacc.c:1648  */
+#line 5158 "util/configparser.c"
     break;
 
   case 433:
-#line 2268 "./util/configparser.y" /* yacc.c:1648  */
+#line 2268 "./util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5163 "util/configparser.c" /* yacc.c:1648  */
+#line 5168 "util/configparser.c"
     break;
 
   case 434:
-#line 2275 "./util/configparser.y" /* yacc.c:1648  */
+#line 2275 "./util/configparser.y"
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5171,11 +5176,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5175 "util/configparser.c" /* yacc.c:1648  */
+#line 5180 "util/configparser.c"
     break;
 
   case 435:
-#line 2284 "./util/configparser.y" /* yacc.c:1648  */
+#line 2284 "./util/configparser.y"
     {
                OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5183,11 +5188,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5187 "util/configparser.c" /* yacc.c:1648  */
+#line 5192 "util/configparser.c"
     break;
 
   case 436:
-#line 2293 "./util/configparser.y" /* yacc.c:1648  */
+#line 2293 "./util/configparser.y"
     {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5196,11 +5201,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5200 "util/configparser.c" /* yacc.c:1648  */
+#line 5205 "util/configparser.c"
     break;
 
   case 437:
-#line 2303 "./util/configparser.y" /* yacc.c:1648  */
+#line 2303 "./util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5209,11 +5214,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5213 "util/configparser.c" /* yacc.c:1648  */
+#line 5218 "util/configparser.c"
     break;
 
   case 438:
-#line 2313 "./util/configparser.y" /* yacc.c:1648  */
+#line 2313 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -5222,31 +5227,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 5226 "util/configparser.c" /* yacc.c:1648  */
+#line 5231 "util/configparser.c"
     break;
 
   case 439:
-#line 2323 "./util/configparser.y" /* yacc.c:1648  */
+#line 2323 "./util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5236 "util/configparser.c" /* yacc.c:1648  */
+#line 5241 "util/configparser.c"
     break;
 
   case 440:
-#line 2330 "./util/configparser.y" /* yacc.c:1648  */
+#line 2330 "./util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5246 "util/configparser.c" /* yacc.c:1648  */
+#line 5251 "util/configparser.c"
     break;
 
   case 441:
-#line 2337 "./util/configparser.y" /* yacc.c:1648  */
+#line 2337 "./util/configparser.y"
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5254,11 +5259,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5258 "util/configparser.c" /* yacc.c:1648  */
+#line 5263 "util/configparser.c"
     break;
 
   case 442:
-#line 2346 "./util/configparser.y" /* yacc.c:1648  */
+#line 2346 "./util/configparser.y"
     {
                OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5266,11 +5271,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5270 "util/configparser.c" /* yacc.c:1648  */
+#line 5275 "util/configparser.c"
     break;
 
   case 443:
-#line 2355 "./util/configparser.y" /* yacc.c:1648  */
+#line 2355 "./util/configparser.y"
     {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5279,11 +5284,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5283 "util/configparser.c" /* yacc.c:1648  */
+#line 5288 "util/configparser.c"
     break;
 
   case 444:
-#line 2365 "./util/configparser.y" /* yacc.c:1648  */
+#line 2365 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->auths->name)
@@ -5292,52 +5297,52 @@ yyreduce:
                free(cfg_parser->cfg->auths->name);
                cfg_parser->cfg->auths->name = (yyvsp[0].str);
        }
-#line 5296 "util/configparser.c" /* yacc.c:1648  */
+#line 5301 "util/configparser.c"
     break;
 
   case 445:
-#line 2375 "./util/configparser.y" /* yacc.c:1648  */
+#line 2375 "./util/configparser.y"
     {
                OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->zonefile);
                cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
        }
-#line 5306 "util/configparser.c" /* yacc.c:1648  */
+#line 5311 "util/configparser.c"
     break;
 
   case 446:
-#line 2382 "./util/configparser.y" /* yacc.c:1648  */
+#line 2382 "./util/configparser.y"
     {
                OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5316 "util/configparser.c" /* yacc.c:1648  */
+#line 5321 "util/configparser.c"
     break;
 
   case 447:
-#line 2389 "./util/configparser.y" /* yacc.c:1648  */
+#line 2389 "./util/configparser.y"
     {
                OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5326 "util/configparser.c" /* yacc.c:1648  */
+#line 5331 "util/configparser.c"
     break;
 
   case 448:
-#line 2396 "./util/configparser.y" /* yacc.c:1648  */
+#line 2396 "./util/configparser.y"
     {
                OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5337 "util/configparser.c" /* yacc.c:1648  */
+#line 5342 "util/configparser.c"
     break;
 
   case 449:
-#line 2404 "./util/configparser.y" /* yacc.c:1648  */
+#line 2404 "./util/configparser.y"
     {
                OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5346,11 +5351,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5350 "util/configparser.c" /* yacc.c:1648  */
+#line 5355 "util/configparser.c"
     break;
 
   case 450:
-#line 2414 "./util/configparser.y" /* yacc.c:1648  */
+#line 2414 "./util/configparser.y"
     {
                OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5359,11 +5364,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5363 "util/configparser.c" /* yacc.c:1648  */
+#line 5368 "util/configparser.c"
     break;
 
   case 451:
-#line 2424 "./util/configparser.y" /* yacc.c:1648  */
+#line 2424 "./util/configparser.y"
     {
                OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5372,11 +5377,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5376 "util/configparser.c" /* yacc.c:1648  */
+#line 5381 "util/configparser.c"
     break;
 
   case 452:
-#line 2434 "./util/configparser.y" /* yacc.c:1648  */
+#line 2434 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -5385,11 +5390,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 5389 "util/configparser.c" /* yacc.c:1648  */
+#line 5394 "util/configparser.c"
     break;
 
   case 453:
-#line 2444 "./util/configparser.y" /* yacc.c:1648  */
+#line 2444 "./util/configparser.y"
     {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -5427,11 +5432,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5431 "util/configparser.c" /* yacc.c:1648  */
+#line 5436 "util/configparser.c"
     break;
 
   case 454:
-#line 2483 "./util/configparser.y" /* yacc.c:1648  */
+#line 2483 "./util/configparser.y"
     {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -5440,33 +5445,33 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 5444 "util/configparser.c" /* yacc.c:1648  */
+#line 5449 "util/configparser.c"
     break;
 
   case 455:
-#line 2493 "./util/configparser.y" /* yacc.c:1648  */
+#line 2493 "./util/configparser.y"
     {
                OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(
                        &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 5455 "util/configparser.c" /* yacc.c:1648  */
+#line 5460 "util/configparser.c"
     break;
 
   case 456:
-#line 2501 "./util/configparser.y" /* yacc.c:1648  */
+#line 2501 "./util/configparser.y"
     {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
                        fatal_exit("out of memory adding local-data");
                }
        }
-#line 5466 "util/configparser.c" /* yacc.c:1648  */
+#line 5471 "util/configparser.c"
     break;
 
   case 457:
-#line 2509 "./util/configparser.y" /* yacc.c:1648  */
+#line 2509 "./util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -5480,11 +5485,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 5484 "util/configparser.c" /* yacc.c:1648  */
+#line 5489 "util/configparser.c"
     break;
 
   case 458:
-#line 2524 "./util/configparser.y" /* yacc.c:1648  */
+#line 2524 "./util/configparser.y"
     {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5492,19 +5497,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5496 "util/configparser.c" /* yacc.c:1648  */
+#line 5501 "util/configparser.c"
     break;
 
   case 459:
-#line 2533 "./util/configparser.y" /* yacc.c:1648  */
+#line 2533 "./util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 5504 "util/configparser.c" /* yacc.c:1648  */
+#line 5509 "util/configparser.c"
     break;
 
   case 470:
-#line 2544 "./util/configparser.y" /* yacc.c:1648  */
+#line 2544 "./util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5513,11 +5518,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5517 "util/configparser.c" /* yacc.c:1648  */
+#line 5522 "util/configparser.c"
     break;
 
   case 471:
-#line 2554 "./util/configparser.y" /* yacc.c:1648  */
+#line 2554 "./util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5525,79 +5530,79 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5529 "util/configparser.c" /* yacc.c:1648  */
+#line 5534 "util/configparser.c"
     break;
 
   case 472:
-#line 2563 "./util/configparser.y" /* yacc.c:1648  */
+#line 2563 "./util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5539 "util/configparser.c" /* yacc.c:1648  */
+#line 5544 "util/configparser.c"
     break;
 
   case 473:
-#line 2570 "./util/configparser.y" /* yacc.c:1648  */
+#line 2570 "./util/configparser.y"
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5549 "util/configparser.c" /* yacc.c:1648  */
+#line 5554 "util/configparser.c"
     break;
 
   case 474:
-#line 2577 "./util/configparser.y" /* yacc.c:1648  */
+#line 2577 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 5559 "util/configparser.c" /* yacc.c:1648  */
+#line 5564 "util/configparser.c"
     break;
 
   case 475:
-#line 2584 "./util/configparser.y" /* yacc.c:1648  */
+#line 2584 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 5569 "util/configparser.c" /* yacc.c:1648  */
+#line 5574 "util/configparser.c"
     break;
 
   case 476:
-#line 2591 "./util/configparser.y" /* yacc.c:1648  */
+#line 2591 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 5579 "util/configparser.c" /* yacc.c:1648  */
+#line 5584 "util/configparser.c"
     break;
 
   case 477:
-#line 2598 "./util/configparser.y" /* yacc.c:1648  */
+#line 2598 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 5589 "util/configparser.c" /* yacc.c:1648  */
+#line 5594 "util/configparser.c"
     break;
 
   case 478:
-#line 2605 "./util/configparser.y" /* yacc.c:1648  */
+#line 2605 "./util/configparser.y"
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 5597 "util/configparser.c" /* yacc.c:1648  */
+#line 5602 "util/configparser.c"
     break;
 
   case 493:
-#line 2622 "./util/configparser.y" /* yacc.c:1648  */
+#line 2622 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5605,21 +5610,21 @@ yyreduce:
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5609 "util/configparser.c" /* yacc.c:1648  */
+#line 5614 "util/configparser.c"
     break;
 
   case 494:
-#line 2631 "./util/configparser.y" /* yacc.c:1648  */
+#line 2631 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 5619 "util/configparser.c" /* yacc.c:1648  */
+#line 5624 "util/configparser.c"
     break;
 
   case 495:
-#line 2638 "./util/configparser.y" /* yacc.c:1648  */
+#line 2638 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5627,11 +5632,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5631 "util/configparser.c" /* yacc.c:1648  */
+#line 5636 "util/configparser.c"
     break;
 
   case 496:
-#line 2647 "./util/configparser.y" /* yacc.c:1648  */
+#line 2647 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5639,31 +5644,31 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5643 "util/configparser.c" /* yacc.c:1648  */
+#line 5648 "util/configparser.c"
     break;
 
   case 497:
-#line 2656 "./util/configparser.y" /* yacc.c:1648  */
+#line 2656 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 5653 "util/configparser.c" /* yacc.c:1648  */
+#line 5658 "util/configparser.c"
     break;
 
   case 498:
-#line 2663 "./util/configparser.y" /* yacc.c:1648  */
+#line 2663 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 5663 "util/configparser.c" /* yacc.c:1648  */
+#line 5668 "util/configparser.c"
     break;
 
   case 499:
-#line 2670 "./util/configparser.y" /* yacc.c:1648  */
+#line 2670 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5672,11 +5677,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5676 "util/configparser.c" /* yacc.c:1648  */
+#line 5681 "util/configparser.c"
     break;
 
   case 500:
-#line 2680 "./util/configparser.y" /* yacc.c:1648  */
+#line 2680 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5685,11 +5690,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5689 "util/configparser.c" /* yacc.c:1648  */
+#line 5694 "util/configparser.c"
     break;
 
   case 501:
-#line 2690 "./util/configparser.y" /* yacc.c:1648  */
+#line 2690 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5698,11 +5703,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5702 "util/configparser.c" /* yacc.c:1648  */
+#line 5707 "util/configparser.c"
     break;
 
   case 502:
-#line 2700 "./util/configparser.y" /* yacc.c:1648  */
+#line 2700 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5711,11 +5716,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5715 "util/configparser.c" /* yacc.c:1648  */
+#line 5720 "util/configparser.c"
     break;
 
   case 503:
-#line 2710 "./util/configparser.y" /* yacc.c:1648  */
+#line 2710 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5724,11 +5729,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5728 "util/configparser.c" /* yacc.c:1648  */
+#line 5733 "util/configparser.c"
     break;
 
   case 504:
-#line 2720 "./util/configparser.y" /* yacc.c:1648  */
+#line 2720 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5737,29 +5742,29 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5741 "util/configparser.c" /* yacc.c:1648  */
+#line 5746 "util/configparser.c"
     break;
 
   case 505:
-#line 2730 "./util/configparser.y" /* yacc.c:1648  */
+#line 2730 "./util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 5749 "util/configparser.c" /* yacc.c:1648  */
+#line 5754 "util/configparser.c"
     break;
 
   case 509:
-#line 2739 "./util/configparser.y" /* yacc.c:1648  */
+#line 2739 "./util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5759 "util/configparser.c" /* yacc.c:1648  */
+#line 5764 "util/configparser.c"
     break;
 
   case 510:
-#line 2745 "./util/configparser.y" /* yacc.c:1648  */
+#line 2745 "./util/configparser.y"
     {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5768,21 +5773,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5772 "util/configparser.c" /* yacc.c:1648  */
+#line 5777 "util/configparser.c"
     break;
 
   case 511:
-#line 2755 "./util/configparser.y" /* yacc.c:1648  */
+#line 2755 "./util/configparser.y"
     {
                OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->log_identity);
                cfg_parser->cfg->log_identity = (yyvsp[0].str);
        }
-#line 5782 "util/configparser.c" /* yacc.c:1648  */
+#line 5787 "util/configparser.c"
     break;
 
   case 512:
-#line 2762 "./util/configparser.y" /* yacc.c:1648  */
+#line 2762 "./util/configparser.y"
     {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -5790,30 +5795,30 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 5794 "util/configparser.c" /* yacc.c:1648  */
+#line 5799 "util/configparser.c"
     break;
 
   case 513:
-#line 2771 "./util/configparser.y" /* yacc.c:1648  */
+#line 2771 "./util/configparser.y"
     {
                OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 5805 "util/configparser.c" /* yacc.c:1648  */
+#line 5810 "util/configparser.c"
     break;
 
   case 514:
-#line 2779 "./util/configparser.y" /* yacc.c:1648  */
+#line 2779 "./util/configparser.y"
     {
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 5813 "util/configparser.c" /* yacc.c:1648  */
+#line 5818 "util/configparser.c"
     break;
 
   case 527:
-#line 2795 "./util/configparser.y" /* yacc.c:1648  */
+#line 2795 "./util/configparser.y"
     {
                OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5821,11 +5826,11 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5825 "util/configparser.c" /* yacc.c:1648  */
+#line 5830 "util/configparser.c"
     break;
 
   case 528:
-#line 2805 "./util/configparser.y" /* yacc.c:1648  */
+#line 2805 "./util/configparser.y"
     {
                OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5833,21 +5838,21 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5837 "util/configparser.c" /* yacc.c:1648  */
+#line 5842 "util/configparser.c"
     break;
 
   case 529:
-#line 2814 "./util/configparser.y" /* yacc.c:1648  */
+#line 2814 "./util/configparser.y"
     {
                OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnscrypt_provider);
                cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
        }
-#line 5847 "util/configparser.c" /* yacc.c:1648  */
+#line 5852 "util/configparser.c"
     break;
 
   case 530:
-#line 2821 "./util/configparser.y" /* yacc.c:1648  */
+#line 2821 "./util/configparser.y"
     {
                OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
@@ -5855,21 +5860,21 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 5859 "util/configparser.c" /* yacc.c:1648  */
+#line 5864 "util/configparser.c"
     break;
 
   case 531:
-#line 2830 "./util/configparser.y" /* yacc.c:1648  */
+#line 2830 "./util/configparser.y"
     {
                OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
        }
-#line 5869 "util/configparser.c" /* yacc.c:1648  */
+#line 5874 "util/configparser.c"
     break;
 
   case 532:
-#line 2837 "./util/configparser.y" /* yacc.c:1648  */
+#line 2837 "./util/configparser.y"
     {
                OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
@@ -5877,22 +5882,22 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 5881 "util/configparser.c" /* yacc.c:1648  */
+#line 5886 "util/configparser.c"
     break;
 
   case 533:
-#line 2846 "./util/configparser.y" /* yacc.c:1648  */
+#line 2846 "./util/configparser.y"
     {
        OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 5892 "util/configparser.c" /* yacc.c:1648  */
+#line 5897 "util/configparser.c"
     break;
 
   case 534:
-#line 2854 "./util/configparser.y" /* yacc.c:1648  */
+#line 2854 "./util/configparser.y"
     {
        OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -5904,22 +5909,22 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 5908 "util/configparser.c" /* yacc.c:1648  */
+#line 5913 "util/configparser.c"
     break;
 
   case 535:
-#line 2867 "./util/configparser.y" /* yacc.c:1648  */
+#line 2867 "./util/configparser.y"
     {
        OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 5919 "util/configparser.c" /* yacc.c:1648  */
+#line 5924 "util/configparser.c"
     break;
 
   case 536:
-#line 2875 "./util/configparser.y" /* yacc.c:1648  */
+#line 2875 "./util/configparser.y"
     {
        OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -5931,19 +5936,19 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 5935 "util/configparser.c" /* yacc.c:1648  */
+#line 5940 "util/configparser.c"
     break;
 
   case 537:
-#line 2888 "./util/configparser.y" /* yacc.c:1648  */
+#line 2888 "./util/configparser.y"
     {
                OUTYY(("\nP(cachedb:)\n"));
        }
-#line 5943 "util/configparser.c" /* yacc.c:1648  */
+#line 5948 "util/configparser.c"
     break;
 
   case 545:
-#line 2898 "./util/configparser.y" /* yacc.c:1648  */
+#line 2898 "./util/configparser.y"
     {
        #ifdef USE_CACHEDB
                OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
@@ -5957,11 +5962,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5961 "util/configparser.c" /* yacc.c:1648  */
+#line 5966 "util/configparser.c"
     break;
 
   case 546:
-#line 2913 "./util/configparser.y" /* yacc.c:1648  */
+#line 2913 "./util/configparser.y"
     {
        #ifdef USE_CACHEDB
                OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
@@ -5975,11 +5980,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5979 "util/configparser.c" /* yacc.c:1648  */
+#line 5984 "util/configparser.c"
     break;
 
   case 547:
-#line 2928 "./util/configparser.y" /* yacc.c:1648  */
+#line 2928 "./util/configparser.y"
     {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
@@ -5990,11 +5995,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5994 "util/configparser.c" /* yacc.c:1648  */
+#line 5999 "util/configparser.c"
     break;
 
   case 548:
-#line 2940 "./util/configparser.y" /* yacc.c:1648  */
+#line 2940 "./util/configparser.y"
     {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                int port;
@@ -6008,11 +6013,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6012 "util/configparser.c" /* yacc.c:1648  */
+#line 6017 "util/configparser.c"
     break;
 
   case 549:
-#line 2955 "./util/configparser.y" /* yacc.c:1648  */
+#line 2955 "./util/configparser.y"
     {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
@@ -6024,11 +6029,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6028 "util/configparser.c" /* yacc.c:1648  */
+#line 6033 "util/configparser.c"
     break;
 
   case 550:
-#line 2968 "./util/configparser.y" /* yacc.c:1648  */
+#line 2968 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if (atoi((yyvsp[0].str)) < 0)
@@ -6038,19 +6043,19 @@ yyreduce:
                                fatal_exit("out of memory adding tcp connection limit");
                }
        }
-#line 6042 "util/configparser.c" /* yacc.c:1648  */
+#line 6047 "util/configparser.c"
     break;
 
   case 551:
-#line 2979 "./util/configparser.y" /* yacc.c:1648  */
+#line 2979 "./util/configparser.y"
     {
                        OUTYY(("\nP(ipset:)\n"));
                }
-#line 6050 "util/configparser.c" /* yacc.c:1648  */
+#line 6055 "util/configparser.c"
     break;
 
   case 556:
-#line 2988 "./util/configparser.y" /* yacc.c:1648  */
+#line 2988 "./util/configparser.y"
     {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
@@ -6064,11 +6069,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6068 "util/configparser.c" /* yacc.c:1648  */
+#line 6073 "util/configparser.c"
     break;
 
   case 557:
-#line 3003 "./util/configparser.y" /* yacc.c:1648  */
+#line 3003 "./util/configparser.y"
     {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
@@ -6082,11 +6087,12 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6086 "util/configparser.c" /* yacc.c:1648  */
+#line 6091 "util/configparser.c"
     break;
 
 
-#line 6090 "util/configparser.c" /* yacc.c:1648  */
+#line 6095 "util/configparser.c"
+
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -6111,14 +6117,13 @@ yyreduce:
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -6201,12 +6206,10 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -6268,6 +6271,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -6275,6 +6279,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
+
 #if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -6285,6 +6290,10 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -6314,7 +6323,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 3017 "./util/configparser.y" /* yacc.c:1907  */
+#line 3017 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index 9a82ef13ed7af713f1c9593dae8cf65b6d8982de..86ee8e58a4c313a5476a779387081befd301fcbf 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5.  */
+/* A Bison parser, made by GNU Bison 3.4.1.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -30,6 +31,9 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
 # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
 /* Debug traces.  */
@@ -585,16 +589,15 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 66 "./util/configparser.y" /* yacc.c:1910  */
+#line 66 "./util/configparser.y"
 
        char*   str;
 
-#line 596 "util/configparser.h" /* yacc.c:1910  */
-};
+#line 599 "util/configparser.h"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1