- Added options::negcache_rebuild configuration option
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Wed, 7 Jan 2015 17:59:47 +0000 (17:59 +0000)
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Wed, 7 Jan 2015 17:59:47 +0000 (17:59 +0000)
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/branches/1.0.x@5331 82007160-df01-0410-b94d-b575c5fd34c7

NEWS
doc/reference.conf
src/config-lexer.c
src/config-lexer.l
src/config-parser.c
src/config-parser.h
src/config-parser.y
src/config.c
src/config.h
src/options.h
src/scan.c

diff --git a/NEWS b/NEWS
index b3ffc52f0b471561ca3beb4cd5a5dae58927e613..b77d399e6fa9d0bc800b335233a8c04f91679d92 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+-- Noteworthy changes in version 1.0.2 (2015-??-??)
+o) Added options::negcache_rebuild configuration option
+
+
 -- Noteworthy changes in version 1.0.1 (2015-01-06)
 o) Fixed build on OS X
 o) More code cleanups, no user-visible changes
index 724f52cf0aab650dd93eb4b56309432075396c38..754d2675f8bd9b790adaf5c739d24262b93a61c1 100644 (file)
@@ -42,6 +42,14 @@ options {
         */
 #      negcache = 1 hour;
 
+       /*
+        * How long between rebuilds of the negative cache. The negcache
+        * is only rebuilt to free up memory used by entries that are too old.
+        * You probably don't need to tweak this unless you have huge amounts
+        * of people connecting (hundreds per minute). Default is 12 hours.
+        */
+       negcache_rebuild = 12 hours;
+
        /*
         * Amount of file descriptors to allocate to asynchronous DNS. 64
         * should be plenty for almost anyone.
index 4c7ada6dc85c40b3676695f1972033e25983d131..0e5c521558f1c4e365082c435674779d3a942b9e 100644 (file)
@@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 90
-#define YY_END_OF_BUFFER 91
+#define YY_NUM_RULES 91
+#define YY_END_OF_BUFFER 92
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -374,47 +374,47 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[352] =
+static yyconst flex_int16_t yy_accept[360] =
     {   0,
-       88,   88,   91,   89,   88,   87,   89,    2,   89,   80,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       88,   87,    0,    3,    2,    1,    2,   80,    0,    0,
+       89,   89,   92,   90,   89,   88,   90,    2,   90,   81,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       89,   88,    0,    3,    2,    1,    2,   81,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   13,    0,
-        0,    0,    0,   68,    0,    0,    0,    0,   73,    0,
-        0,    0,    0,    0,    0,   85,    0,   83,    0,    0,
+        0,    0,    0,   69,    0,    0,    0,    0,   74,    0,
+        0,    0,    0,    0,    0,   86,    0,   84,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   55,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   56,    0,    0,    0,    0,    0,
 
         0,   15,    0,   17,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   86,    0,   26,    0,
+        0,    0,    0,    0,    0,    0,   87,    0,   27,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   82,    4,    0,    0,   63,    0,    0,   54,
-        0,    0,    0,    0,   57,   74,    0,    0,    0,    0,
-       18,    0,    0,    0,    0,   20,    0,   21,    0,   23,
-       25,    0,    0,    0,    0,   31,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   81,   44,
-       45,    0,   53,    0,   49,    0,    0,   62,    0,    0,
-
-        0,    0,    0,   84,   56,    0,    0,   67,    0,   16,
-        0,   72,    0,    0,   51,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   35,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   47,   52,    0,   48,    0,
-        0,    0,    0,    0,    0,   12,    0,   14,   66,    0,
-        0,   71,    0,   59,   50,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   79,    0,    0,   61,    0,   39,
-       76,   77,    0,    0,    0,    0,    0,    0,    7,    0,
-        0,    0,    0,    0,    0,    0,    0,   58,    0,    0,
-       27,    0,   29,   30,    0,    0,    0,   36,   37,   60,
-
-        0,    0,   43,    0,   78,    0,    0,    0,    0,   11,
-        0,   75,   65,   19,   70,   22,   24,   28,   32,    0,
-       34,   38,    0,    0,    0,   46,    0,    6,    8,    0,
-        0,   64,   69,    0,   40,    0,    0,    0,   10,    0,
-        0,    0,    0,    5,    9,   33,   41,    0,    0,   42,
-        0
+        0,    0,   83,    4,    0,    0,   64,    0,    0,   55,
+        0,    0,    0,    0,   58,   75,    0,    0,    0,    0,
+       18,    0,    0,    0,    0,   20,    0,   21,    0,   24,
+       26,    0,    0,    0,    0,   32,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   82,   45,
+       46,    0,   54,    0,   50,    0,    0,   63,    0,    0,
+
+        0,    0,    0,   85,   57,    0,    0,   68,    0,   16,
+        0,   73,    0,    0,   52,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   36,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   48,   53,    0,   49,    0,
+        0,    0,    0,    0,    0,   12,    0,   14,   67,    0,
+        0,   72,    0,   60,   51,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   80,    0,    0,   62,    0,   40,
+       77,   78,    0,    0,    0,    0,    0,    0,    7,    0,
+        0,    0,    0,    0,    0,    0,    0,   59,    0,    0,
+       28,    0,   30,   31,    0,    0,    0,   37,   38,   61,
+
+        0,    0,   44,    0,   79,    0,    0,    0,    0,   11,
+        0,   76,   66,   19,   71,   22,   25,   29,   33,    0,
+       35,   39,    0,    0,    0,   47,    0,    6,    8,    0,
+        0,   65,   70,    0,    0,   41,    0,    0,    0,   10,
+        0,    0,    0,    0,    0,    5,    9,    0,   34,   42,
+        0,    0,    0,    0,   43,    0,    0,   23,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -459,93 +459,95 @@ static yyconst flex_int32_t yy_meta[58] =
         1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[355] =
+static yyconst flex_int16_t yy_base[363] =
     {   0,
-        0,    0,  169,  708,  165,    0,   55,    0,   54,   54,
+        0,    0,  239,  727,  167,    0,   55,    0,   54,   54,
        34,   55,   49,   57,   37,   60,   51,   55,   94,  129,
        99,  103,  167,   72,  112,  155,   43,   59,  116,   68,
-      160,    0,   81,  708,    0,  708,    0,  148,   97,   98,
-      111,  133,  152,  147,  138,  146,  160,  155,  708,  150,
+      165,    0,   81,  727,    0,  727,    0,  148,   97,   98,
+      111,  133,  152,  147,  138,  146,  160,  155,  727,  150,
       152,  153,  171,  156,  159,  175,  182,  182,  178,  201,
-      196,  207,  200,  206,  211,  708,  210,  708,  212,  201,
+      196,  207,  200,  206,  211,  727,  210,  727,  212,  201,
       203,  217,  206,  212,  238,  208,  230,  244,  231,  233,
-      240,  237,  244,  256,  248,  259,  252,  265,  244,  120,
+      240,  237,  244,  256,  248,  259,  252,  265,  244,  128,
       265,  264,  257,  259,  257,  273,  266,  262,  271,  280,
 
-      291,  708,  283,  708,  290,  292,  297,   95,  290,  308,
-      291,  307,  295,  309,  312,  306,  708,  301,  708,  309,
+      291,  727,  283,  727,  290,  292,  297,  120,  290,  308,
+      291,  307,  295,  309,  312,  306,  727,  301,  727,  309,
       303,  315,  316,  305,  308,  344,  316,  312,  322,  329,
       345,  332,  343,  349,  352,  353,  355,  345,  345,  353,
-      357,  349,  708,  708,  347,  358,  352,  357,  355,  708,
+      357,  349,  727,  727,  347,  358,  352,  357,  355,  727,
       363,  369,  363,  378,  374,  381,  379,  395,  399,  398,
-      708,  388,  400,  404,  390,  708,  401,  708,  409,  394,
-      708,  398,  392,  400,  407,  708,  403,  400,  406,  399,
-      418,  437,  418,  427,  439,  428,  444,  437,  708,  708,
-      439,  435,  437,  455,  440,  445,  448,  708,  455,  456,
+      727,  388,  400,  404,  390,  727,  401,  727,  409,  394,
+      727,  398,  392,  400,  407,  727,  403,  400,  406,  399,
+      418,  437,  418,  427,  439,  428,  444,  437,  727,  727,
+      439,  435,  437,  455,  440,  445,  448,  727,  455,  456,
 
-       90,  458,  446,  708,  708,  451,  461,  450,  447,  708,
+       95,  458,  446,  727,  727,  451,  461,  450,  447,  727,
       466,  462,  464,  487,  476,  493,  492,  485,  485,  484,
-      490,  499,  495,  504,  708,  490,  493,  503,  505,  509,
-      496,  107,  495,  495,  514,  708,  708,  500,  708,  509,
-      518,  524,  533,  535,  533,  708,  528,  708,  708,  528,
-      546,  708,  530,  532,  708,  542,  536,  537,  539,  544,
-      552,  544,  548,  549,  708,  555,  547,  549,  558,  708,
-      708,  708,   52,  557,  571,  583,  576,  575,  708,  588,
-      578,  581,  587,  579,  593,  596,  596,  708,  597,  583,
-      708,  600,  708,  708,  594,  601,  603,  708,  708,  708,
-
-      598,  622,  708,  605,  708,  597,  596,  601,  622,  708,
-      628,  708,  624,  708,  625,  708,  708,  708,  708,  629,
-      708,  708,  629,  631,  628,  708,  627,  708,  708,  637,
-      641,  708,  708,  632,  708,  636,  637,  641,  708,  638,
-      639,  640,  650,  708,  708,  708,  708,  649,  664,  708,
-      708,   81,  705,   71
+      490,  499,  495,  504,  727,  490,  493,  503,  505,  509,
+      496,  107,  495,  495,  514,  727,  727,  500,  727,  509,
+      518,  524,  533,  535,  533,  727,  528,  727,  727,  528,
+      546,  727,  530,  532,  727,  542,  536,  537,  539,  544,
+      552,  544,  548,  549,  727,  555,  547,  549,  558,  727,
+      727,  727,   90,  557,  571,  583,  576,  575,  727,  588,
+      578,  581,  587,  579,  593,  596,  596,  727,  597,  583,
+      727,  600,  727,  727,  594,  601,  603,  727,  727,  727,
+
+      598,  622,  727,  605,  727,  597,  596,  601,  622,  727,
+      628,  727,  624,  727,  625,   52,  727,  727,  727,  629,
+      727,  727,  629,  631,  628,  727,  627,  727,  727,  637,
+      641,  727,  727,  635,  633,  727,  637,  638,  643,  727,
+      639,  653,  641,  644,  662,  727,  727,  677,  727,  727,
+      671,  666,  680,  679,  727,  678,  686,  727,  727,   81,
+      724,   71
     } ;
 
-static yyconst flex_int16_t yy_def[355] =
+static yyconst flex_int16_t yy_def[363] =
     {   0,
-      351,    1,  351,  351,  351,  352,  353,  354,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  352,  353,  351,  354,  351,  354,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-        0,  351,  351,  351
+      359,    1,  359,  359,  359,  360,  361,  362,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  360,  361,  359,  362,  359,  362,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,    0,  359,
+      359,  359
     } ;
 
-static yyconst flex_int16_t yy_nxt[766] =
+static yyconst flex_int16_t yy_nxt[785] =
     {   0,
         4,    5,    6,    7,    8,    4,    9,   10,   10,   10,
        11,   12,   13,   14,   15,   16,    4,   17,   18,   19,
@@ -555,16 +557,16 @@ static yyconst flex_int16_t yy_nxt[766] =
        25,   26,   27,   28,   29,    4,   30,   34,   34,   36,
        37,   38,   38,   38,   39,   40,   43,   45,   47,   84,
        48,   35,   44,   49,   50,   41,   85,   52,   51,   46,
-       53,   32,   88,   34,   34,  302,   75,   42,   39,   40,
+       53,   32,   88,   34,   34,  334,   75,   42,   39,   40,
        43,   45,   47,   84,   48,   76,   44,   49,   50,   41,
 
        85,   52,   51,   46,   53,   54,   88,   89,   55,   63,
        75,   42,   56,   64,   57,  271,  272,   65,   67,   76,
-       90,   91,   66,  244,   77,   68,   78,   69,  162,   54,
+       90,   91,   66,  302,   77,   68,   78,   69,  244,   54,
        86,   89,   55,   63,   87,   79,   56,   64,   57,   58,
        59,   65,   67,   60,   90,   91,   66,   61,   77,   68,
-       78,   69,   62,  145,   86,   38,   38,   38,   87,   79,
-       92,   31,   93,   58,   59,   80,   31,   60,  351,   94,
+       78,   69,   62,  162,   86,   38,   38,   38,   87,   79,
+       92,  145,   93,   58,   59,   80,   31,   60,   31,   94,
        95,   61,   96,   81,   97,   98,   62,   70,   99,  100,
        82,   71,  101,  102,   92,   72,   93,   83,  103,   80,
        73,  104,   74,   94,   95,  105,   96,   81,   97,   98,
@@ -572,7 +574,7 @@ static yyconst flex_int16_t yy_nxt[766] =
       106,   70,   99,  100,   82,   71,  101,  102,  107,   72,
       109,   83,  103,  108,   73,  104,   74,  110,  111,  105,
       112,  114,  115,  116,  106,  117,  118,  121,  122,  113,
-      123,  124,  107,  119,  109,  125,  128,  108,  351,  120,
+      123,  124,  107,  119,  109,  125,  128,  108,  359,  120,
       129,  110,  111,  133,  112,  114,  115,  116,  126,  117,
       118,  121,  122,  113,  123,  124,  130,  119,  134,  125,
       128,  135,  127,  120,  129,  136,  131,  133,  137,  132,
@@ -594,7 +596,7 @@ static yyconst flex_int16_t yy_nxt[766] =
       205,  197,  198,  199,  200,  206,  207,  201,  202,  208,
       209,  203,  210,  211,  212,  213,  204,  214,  215,  216,
       217,  218,  219,  220,  205,  221,  222,  223,  224,  206,
-      207,  225,  226,  208,  209,  351,  210,  211,  212,  213,
+      207,  225,  226,  208,  209,  359,  210,  211,  212,  213,
       229,  214,  215,  216,  217,  218,  219,  220,  230,  221,
       222,  223,  224,  231,  232,  225,  226,  227,  233,  228,
       234,  235,  236,  237,  229,  238,  239,  240,  241,  242,
@@ -615,25 +617,27 @@ static yyconst flex_int16_t yy_nxt[766] =
 
       301,  307,  308,  309,  310,  311,  312,  313,  303,  314,
       315,  316,  317,  318,  319,  320,  304,  321,  322,  326,
-      327,  305,  306,  328,  351,  307,  308,  309,  310,  311,
+      327,  305,  306,  328,  359,  307,  308,  309,  310,  311,
       312,  313,  329,  314,  315,  316,  317,  318,  319,  320,
       323,  321,  322,  326,  327,  330,  324,  328,  325,  331,
-      332,  333,  334,  335,  336,  337,  329,  338,  339,  340,
-      341,  342,  343,  344,  323,  345,  346,  347,  348,  330,
-      324,  349,  325,  331,  332,  333,  334,  335,  336,  337,
-      350,  338,  339,  340,  341,  342,  343,  344,  351,  345,
-      346,  347,  348,  351,  351,  349,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  350,   33,   33,    3,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351
+      332,  333,  335,  336,  337,  338,  329,  339,  340,  341,
+      342,  343,  344,  345,  323,  346,  347,  348,  349,  330,
+      324,  350,  325,  331,  332,  333,  335,  336,  337,  338,
+      351,  339,  340,  341,  342,  343,  344,  345,  352,  346,
+      347,  348,  349,  353,  354,  350,  355,  356,  357,  358,
+
+      359,  359,  359,  359,  351,  359,  359,  359,  359,  359,
+      359,  359,  352,  359,  359,  359,  359,  353,  354,  359,
+      355,  356,  357,  358,   33,   33,    3,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359
     } ;
 
-static yyconst flex_int16_t yy_chk[766] =
+static yyconst flex_int16_t yy_chk[785] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -642,17 +646,17 @@ static yyconst flex_int16_t yy_chk[766] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    7,    7,    9,
         9,   10,   10,   10,   11,   12,   13,   14,   15,   27,
-       16,  354,   13,   16,   17,   12,   28,   18,   17,   14,
-       18,  352,   30,   33,   33,  273,   24,   12,   11,   12,
+       16,  362,   13,   16,   17,   12,   28,   18,   17,   14,
+       18,  360,   30,   33,   33,  316,   24,   12,   11,   12,
        13,   14,   15,   27,   16,   24,   13,   16,   17,   12,
 
        28,   18,   17,   14,   18,   19,   30,   39,   19,   21,
        24,   12,   19,   21,   19,  232,  232,   21,   22,   24,
-       40,   41,   21,  201,   25,   22,   25,   22,  108,   19,
+       40,   41,   21,  273,   25,   22,   25,   22,  201,   19,
        29,   39,   19,   21,   29,   25,   19,   21,   19,   20,
        20,   21,   22,   20,   40,   41,   21,   20,   25,   22,
-       25,   22,   20,   90,   29,   38,   38,   38,   29,   25,
-       42,   31,   43,   20,   20,   26,    5,   20,    3,   44,
+       25,   22,   20,  108,   29,   38,   38,   38,   29,   25,
+       42,   90,   43,   20,   20,   26,   31,   20,    5,   44,
        45,   20,   46,   26,   47,   48,   20,   23,   50,   51,
        26,   23,   52,   53,   42,   23,   43,   26,   54,   26,
        23,   55,   23,   44,   45,   56,   46,   26,   47,   48,
@@ -660,7 +664,7 @@ static yyconst flex_int16_t yy_chk[766] =
        57,   23,   50,   51,   26,   23,   52,   53,   58,   23,
        59,   26,   54,   58,   23,   55,   23,   60,   61,   56,
        62,   63,   64,   65,   57,   67,   69,   70,   71,   62,
-       72,   73,   58,   69,   59,   74,   76,   58,    0,   69,
+       72,   73,   58,   69,   59,   74,   76,   58,    3,   69,
        77,   60,   61,   79,   62,   63,   64,   65,   75,   67,
        69,   70,   71,   62,   72,   73,   78,   69,   80,   74,
        76,   81,   75,   69,   77,   82,   78,   79,   83,   78,
@@ -707,18 +711,20 @@ static yyconst flex_int16_t yy_chk[766] =
       284,  285,  308,  286,  287,  289,  290,  292,  295,  296,
       302,  297,  301,  304,  306,  309,  302,  307,  302,  311,
       313,  315,  320,  323,  324,  325,  308,  327,  330,  331,
-      334,  336,  337,  338,  302,  340,  341,  342,  343,  309,
-      302,  348,  302,  311,  313,  315,  320,  323,  324,  325,
-      349,  327,  330,  331,  334,  336,  337,  338,    0,  340,
-      341,  342,  343,    0,    0,  348,    0,    0,    0,    0,
-
-        0,    0,    0,    0,  349,  353,  353,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351
+      334,  335,  337,  338,  302,  339,  341,  342,  343,  309,
+      302,  344,  302,  311,  313,  315,  320,  323,  324,  325,
+      345,  327,  330,  331,  334,  335,  337,  338,  348,  339,
+      341,  342,  343,  351,  352,  344,  353,  354,  356,  357,
+
+        0,    0,    0,    0,  345,    0,    0,    0,    0,    0,
+        0,    0,  348,    0,    0,    0,    0,  351,  352,    0,
+      353,  354,  356,  357,  361,  361,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -777,7 +783,7 @@ void ccomment(void);
 int linenum = 1;
 char linebuf[512];
 
-#line 781 "config-lexer.c"
+#line 787 "config-lexer.c"
 
 #define INITIAL 0
 
@@ -987,7 +993,7 @@ YY_DECL
 #line 51 "config-lexer.l"
 
 
-#line 991 "config-lexer.c"
+#line 997 "config-lexer.c"
 
        while ( 1 )             /* loops until end-of-file is reached */
                {
@@ -1020,13 +1026,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 352 )
+                               if ( yy_current_state >= 360 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 708 );
+               while ( yy_base[yy_current_state] != 727 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1201,132 +1207,132 @@ YY_RULE_SETUP
 case 23:
 YY_RULE_SETUP
 #line 115 "config-lexer.l"
-{ return NICK;         }
+{ return NEGCACHE_REBUILD; }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 116 "config-lexer.l"
-{ return NICKSERV;     }
+{ return NICK;         }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 117 "config-lexer.l"
-{ return OPER;         }
+{ return NICKSERV;     }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 118 "config-lexer.l"
-{ return OPM;          }
+{ return OPER;         }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 119 "config-lexer.l"
-{ return OPTIONS;      }
+{ return OPM;          }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 120 "config-lexer.l"
-{ return PASSWORD;     }
+{ return OPTIONS;      }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 121 "config-lexer.l"
-{ return PERFORM;      }
+{ return PASSWORD;     }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 122 "config-lexer.l"
-{ return PIDFILE;      }
+{ return PERFORM;      }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 123 "config-lexer.l"
-{ return PORT;         }
+{ return PIDFILE;      }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 124 "config-lexer.l"
-{ return PROTOCOL;     }
+{ return PORT;         }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 125 "config-lexer.l"
-{ return READTIMEOUT;  }
+{ return PROTOCOL;     }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 126 "config-lexer.l"
-{ return REALNAME;     }
+{ return READTIMEOUT;  }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 127 "config-lexer.l"
-{ return REPLY;        }
+{ return REALNAME;     }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 128 "config-lexer.l"
-{ return SCANLOG;      }
+{ return REPLY;        }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 129 "config-lexer.l"
-{ return SCANNER;      }
+{ return SCANLOG;      }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 130 "config-lexer.l"
-{ return SENDMAIL;     }
+{ return SCANNER;      }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 131 "config-lexer.l"
-{ return SERVER;       }
+{ return SENDMAIL;     }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 132 "config-lexer.l"
-{ return TARGET_IP;    }
+{ return SERVER;       }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 133 "config-lexer.l"
-{ return TARGET_PORT;  }
+{ return TARGET_IP;    }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 134 "config-lexer.l"
-{ return TARGET_STRING;}
+{ return TARGET_PORT;  }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 135 "config-lexer.l"
-{ return TIMEOUT;      }
+{ return TARGET_STRING;}
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 136 "config-lexer.l"
-{ return TYPE;         }
+{ return TIMEOUT;      }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 137 "config-lexer.l"
-{ return USER;         }
+{ return TYPE;         }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 138 "config-lexer.l"
-{ return USERNAME;     }
+{ return USER;         }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 139 "config-lexer.l"
-{ return VHOST;        }
+{ return USERNAME;     }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 141 "config-lexer.l"
-{ return YEARS; }
+#line 140 "config-lexer.l"
+{ return VHOST;        }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
@@ -1336,7 +1342,7 @@ YY_RULE_SETUP
 case 50:
 YY_RULE_SETUP
 #line 143 "config-lexer.l"
-{ return MONTHS; }
+{ return YEARS; }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
@@ -1346,7 +1352,7 @@ YY_RULE_SETUP
 case 52:
 YY_RULE_SETUP
 #line 145 "config-lexer.l"
-{ return WEEKS; }
+{ return MONTHS; }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
@@ -1356,7 +1362,7 @@ YY_RULE_SETUP
 case 54:
 YY_RULE_SETUP
 #line 147 "config-lexer.l"
-{ return DAYS; }
+{ return WEEKS; }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
@@ -1366,7 +1372,7 @@ YY_RULE_SETUP
 case 56:
 YY_RULE_SETUP
 #line 149 "config-lexer.l"
-{ return HOURS; }
+{ return DAYS; }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
@@ -1376,7 +1382,7 @@ YY_RULE_SETUP
 case 58:
 YY_RULE_SETUP
 #line 151 "config-lexer.l"
-{ return MINUTES; }
+{ return HOURS; }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
@@ -1386,7 +1392,7 @@ YY_RULE_SETUP
 case 60:
 YY_RULE_SETUP
 #line 153 "config-lexer.l"
-{ return SECONDS; }
+{ return MINUTES; }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
@@ -1395,8 +1401,8 @@ YY_RULE_SETUP
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 156 "config-lexer.l"
-{ return BYTES; }
+#line 155 "config-lexer.l"
+{ return SECONDS; }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
@@ -1406,7 +1412,7 @@ YY_RULE_SETUP
 case 64:
 YY_RULE_SETUP
 #line 158 "config-lexer.l"
-{ return KBYTES; }
+{ return BYTES; }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
@@ -1431,7 +1437,7 @@ YY_RULE_SETUP
 case 69:
 YY_RULE_SETUP
 #line 163 "config-lexer.l"
-{ return MBYTES; }
+{ return KBYTES; }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
@@ -1455,134 +1461,139 @@ YY_RULE_SETUP
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 169 "config-lexer.l"
+#line 168 "config-lexer.l"
+{ return MBYTES; }
+       YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 170 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_HTTP;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 174 "config-lexer.l"
+#line 175 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_HTTPPOST;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 179 "config-lexer.l"
+#line 180 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_SOCKS4;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 184 "config-lexer.l"
+#line 185 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_SOCKS5;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 189 "config-lexer.l"
+#line 190 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_WINGATE;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 194 "config-lexer.l"
+#line 195 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_ROUTER;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 200 "config-lexer.l"
+#line 201 "config-lexer.l"
 {
                            yylval.number=atoi(yytext); 
                            return NUMBER;
                         }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 209 "config-lexer.l"
+#line 210 "config-lexer.l"
 {
                            yylval.number=1;
                            return NUMBER;
                          }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 213 "config-lexer.l"
+#line 214 "config-lexer.l"
 {
                            yylval.number=1;
                            return NUMBER;
                          }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 217 "config-lexer.l"
+#line 218 "config-lexer.l"
 {
                            yylval.number=1;
                            return NUMBER;
                          }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 224 "config-lexer.l"
+#line 225 "config-lexer.l"
 {
                            yylval.number=0;
                            return NUMBER;
                          }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 229 "config-lexer.l"
+#line 230 "config-lexer.l"
 {
                            yylval.number=0;
                            return NUMBER;
                          }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 234 "config-lexer.l"
+#line 235 "config-lexer.l"
 {
                            yylval.number=0;
                            return NUMBER;
                          }
        YY_BREAK
-case 87:
-/* rule 87 can match eol */
+case 88:
+/* rule 88 can match eol */
 YY_RULE_SETUP
-#line 240 "config-lexer.l"
+#line 241 "config-lexer.l"
 {
                            strlcpy(linebuf, yytext + 1, sizeof(linebuf));
                            ++linenum;
                            yyless(1);
                          }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 246 "config-lexer.l"
+#line 247 "config-lexer.l"
 /* ignore whitespace */;
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 248 "config-lexer.l"
+#line 249 "config-lexer.l"
 return yytext[0]; 
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 250 "config-lexer.l"
+#line 251 "config-lexer.l"
 ECHO;
        YY_BREAK
-#line 1586 "config-lexer.c"
+#line 1597 "config-lexer.c"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -1875,7 +1886,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 352 )
+                       if ( yy_current_state >= 360 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1903,11 +1914,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 352 )
+               if ( yy_current_state >= 360 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 351);
+       yy_is_jam = (yy_current_state == 359);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2540,7 +2551,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 250 "config-lexer.l"
+#line 251 "config-lexer.l"
 
 
 
index 0d51e6a58d573ef5a40097a800c79232adcaed3e..b7a4ba64f6f2552332674cf6070d5199e02c7a89 100644 (file)
@@ -112,6 +112,7 @@ MAX_READ                { return MAX_READ;     }
 MODE                    { return MODE;         }
 NAME                    { return NAME;         }
 NEGCACHE                { return NEGCACHE;     }
+NEGCACHE_REBUILD        { return NEGCACHE_REBUILD; }
 NICK                    { return NICK;         }
 NICKSERV                { return NICKSERV;     }
 OPER                    { return OPER;         }
index 78b57f78e3f08470aa570223755b331c5ce8c223..7fe45da3680d3ee37042659ddf63f213d38d6c53 100644 (file)
@@ -132,41 +132,42 @@ extern int yydebug;
     MODE = 277,
     NAME = 278,
     NEGCACHE = 279,
-    NICK = 280,
-    NICKSERV = 281,
-    OPER = 282,
-    OPM = 283,
-    OPTIONS = 284,
-    PASSWORD = 285,
-    PERFORM = 286,
-    PIDFILE = 287,
-    PORT = 288,
-    PROTOCOL = 289,
-    READTIMEOUT = 290,
-    REALNAME = 291,
-    REPLY = 292,
-    SCANLOG = 293,
-    SCANNER = 294,
-    SECONDS = 295,
-    MINUTES = 296,
-    HOURS = 297,
-    DAYS = 298,
-    WEEKS = 299,
-    MONTHS = 300,
-    YEARS = 301,
-    SENDMAIL = 302,
-    SERVER = 303,
-    TARGET_IP = 304,
-    TARGET_PORT = 305,
-    TARGET_STRING = 306,
-    TIMEOUT = 307,
-    TYPE = 308,
-    USERNAME = 309,
-    USER = 310,
-    VHOST = 311,
-    NUMBER = 312,
-    STRING = 313,
-    PROTOCOLTYPE = 314
+    NEGCACHE_REBUILD = 280,
+    NICK = 281,
+    NICKSERV = 282,
+    OPER = 283,
+    OPM = 284,
+    OPTIONS = 285,
+    PASSWORD = 286,
+    PERFORM = 287,
+    PIDFILE = 288,
+    PORT = 289,
+    PROTOCOL = 290,
+    READTIMEOUT = 291,
+    REALNAME = 292,
+    REPLY = 293,
+    SCANLOG = 294,
+    SCANNER = 295,
+    SECONDS = 296,
+    MINUTES = 297,
+    HOURS = 298,
+    DAYS = 299,
+    WEEKS = 300,
+    MONTHS = 301,
+    YEARS = 302,
+    SENDMAIL = 303,
+    SERVER = 304,
+    TARGET_IP = 305,
+    TARGET_PORT = 306,
+    TARGET_STRING = 307,
+    TIMEOUT = 308,
+    TYPE = 309,
+    USERNAME = 310,
+    USER = 311,
+    VHOST = 312,
+    NUMBER = 313,
+    STRING = 314,
+    PROTOCOLTYPE = 315
   };
 #endif
 /* Tokens.  */
@@ -192,53 +193,54 @@ extern int yydebug;
 #define MODE 277
 #define NAME 278
 #define NEGCACHE 279
-#define NICK 280
-#define NICKSERV 281
-#define OPER 282
-#define OPM 283
-#define OPTIONS 284
-#define PASSWORD 285
-#define PERFORM 286
-#define PIDFILE 287
-#define PORT 288
-#define PROTOCOL 289
-#define READTIMEOUT 290
-#define REALNAME 291
-#define REPLY 292
-#define SCANLOG 293
-#define SCANNER 294
-#define SECONDS 295
-#define MINUTES 296
-#define HOURS 297
-#define DAYS 298
-#define WEEKS 299
-#define MONTHS 300
-#define YEARS 301
-#define SENDMAIL 302
-#define SERVER 303
-#define TARGET_IP 304
-#define TARGET_PORT 305
-#define TARGET_STRING 306
-#define TIMEOUT 307
-#define TYPE 308
-#define USERNAME 309
-#define USER 310
-#define VHOST 311
-#define NUMBER 312
-#define STRING 313
-#define PROTOCOLTYPE 314
+#define NEGCACHE_REBUILD 280
+#define NICK 281
+#define NICKSERV 282
+#define OPER 283
+#define OPM 284
+#define OPTIONS 285
+#define PASSWORD 286
+#define PERFORM 287
+#define PIDFILE 288
+#define PORT 289
+#define PROTOCOL 290
+#define READTIMEOUT 291
+#define REALNAME 292
+#define REPLY 293
+#define SCANLOG 294
+#define SCANNER 295
+#define SECONDS 296
+#define MINUTES 297
+#define HOURS 298
+#define DAYS 299
+#define WEEKS 300
+#define MONTHS 301
+#define YEARS 302
+#define SENDMAIL 303
+#define SERVER 304
+#define TARGET_IP 305
+#define TARGET_PORT 306
+#define TARGET_STRING 307
+#define TIMEOUT 308
+#define TYPE 309
+#define USERNAME 310
+#define USER 311
+#define VHOST 312
+#define NUMBER 313
+#define STRING 314
+#define PROTOCOLTYPE 315
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 86 "config-parser.y" /* yacc.c:355  */
+#line 87 "config-parser.y" /* yacc.c:355  */
 
         int number;
         char *string;
 
-#line 242 "config-parser.c" /* yacc.c:355  */
+#line 244 "config-parser.c" /* yacc.c:355  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -253,7 +255,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 257 "config-parser.c" /* yacc.c:358  */
+#line 259 "config-parser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -495,21 +497,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   306
+#define YYLAST   311
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  65
+#define YYNTOKENS  66
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  79
+#define YYNNTS  80
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  149
+#define YYNRULES  151
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  324
+#define YYNSTATES  329
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   314
+#define YYMAXUTOK   315
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -523,14 +525,14 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    64,    62,
-       2,    63,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    65,    63,
+       2,    64,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    60,     2,    61,     2,     2,     2,     2,
+       2,     2,     2,    61,     2,    62,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -549,28 +551,29 @@ static const yytype_uint8 yytranslate[] =
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59
+      55,    56,    57,    58,    59,    60
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   101,   101,   102,   105,   106,   107,   108,   109,   110,
-     112,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     123,   123,   124,   125,   126,   127,   132,   134,   135,   137,
-     138,   139,   140,   141,   143,   148,   154,   159,   167,   169,
-     170,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   190,   196,
-     202,   208,   214,   220,   226,   232,   240,   245,   250,   256,
-     262,   268,   274,   284,   284,   301,   302,   304,   305,   306,
-     308,   316,   324,   335,   335,   351,   352,   354,   355,   356,
-     358,   368,   381,   381,   426,   427,   429,   430,   431,   432,
-     433,   434,   435,   436,   437,   438,   440,   447,   454,   461,
-     477,   483,   489,   495,   501,   520,   522,   523,   525,   526,
-     527,   528,   529,   531,   537,   543,   552,   552,   571,   572,
-     574,   575,   576,   577,   578,   579,   581,   588,   595,   606,
-     612,   614,   615,   617,   635,   637,   638,   640,   641,   643
+       0,   102,   102,   103,   106,   107,   108,   109,   110,   111,
+     113,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     124,   124,   125,   126,   127,   128,   133,   135,   136,   138,
+     139,   140,   141,   142,   143,   145,   150,   155,   161,   166,
+     174,   176,   177,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     197,   203,   209,   215,   221,   227,   233,   239,   247,   252,
+     257,   263,   269,   275,   281,   291,   291,   308,   309,   311,
+     312,   313,   315,   323,   331,   342,   342,   358,   359,   361,
+     362,   363,   365,   375,   388,   388,   433,   434,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,   445,   447,   454,
+     461,   468,   484,   490,   496,   502,   508,   527,   529,   530,
+     532,   533,   534,   535,   536,   538,   544,   550,   559,   559,
+     578,   579,   581,   582,   583,   584,   585,   586,   588,   595,
+     602,   613,   619,   621,   622,   624,   642,   644,   645,   647,
+     648,   650
 };
 #endif
 
@@ -582,18 +585,18 @@ static const char *const yytname[] =
   "$end", "error", "$undefined", "AWAY", "BAN_UNKNOWN", "BLACKLIST",
   "BYTES", "KBYTES", "MBYTES", "CHANNEL", "CONNREGEX", "DNS_FDLIMIT",
   "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE", "IRC", "KLINE",
-  "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE", "NICK",
-  "NICKSERV", "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE",
-  "PORT", "PROTOCOL", "READTIMEOUT", "REALNAME", "REPLY", "SCANLOG",
-  "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "MONTHS",
-  "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT",
-  "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER", "VHOST",
-  "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", "':'",
-  "$accept", "config", "config_items", "timespec_", "timespec",
+  "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE",
+  "NEGCACHE_REBUILD", "NICK", "NICKSERV", "OPER", "OPM", "OPTIONS",
+  "PASSWORD", "PERFORM", "PIDFILE", "PORT", "PROTOCOL", "READTIMEOUT",
+  "REALNAME", "REPLY", "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS",
+  "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP",
+  "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER",
+  "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='",
+  "':'", "$accept", "config", "config_items", "timespec_", "timespec",
   "sizespec_", "sizespec", "options_entry", "options_items",
-  "options_item", "options_negcache", "options_pidfile",
-  "options_dns_fdlimit", "options_scanlog", "irc_entry", "irc_items",
-  "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
+  "options_item", "options_negcache", "options_negcache_rebuild",
+  "options_pidfile", "options_dns_fdlimit", "options_scanlog", "irc_entry",
+  "irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
   "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_port",
   "irc_readtimeout", "irc_realname", "irc_server", "irc_username",
   "irc_vhost", "irc_connregex", "channel_entry", "$@1", "channel_items",
@@ -623,16 +626,16 @@ static const yytype_uint16 yytoknum[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     123,   125,    59,    61,    58
+     315,   123,   125,    59,    61,    58
 };
 # endif
 
-#define YYPACT_NINF -149
+#define YYPACT_NINF -125
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-149)))
+  (!!((Yystate) == (-125)))
 
-#define YYTABLE_NINF -127
+#define YYTABLE_NINF -129
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -641,39 +644,39 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -149,   122,  -149,   -53,   -52,   -46,   -44,  -149,  -149,  -149,
-    -149,   -50,  -149,   -22,  -149,  -149,    43,    73,   113,   130,
-     -41,   -32,  -149,   -34,     3,  -149,  -149,  -149,   -31,   -26,
-     -24,   -18,   -17,   -14,   -13,   -11,     4,     9,    14,    21,
-      22,    25,    33,     0,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,    57,  -149,    39,    47,    49,    46,  -149,  -149,  -149,
-    -149,  -149,   108,  -149,    53,    65,    75,    77,    54,  -149,
-    -149,  -149,  -149,  -149,   104,    96,    86,    87,  -149,    95,
-      97,    99,   100,   101,   106,   107,   109,   111,   114,   131,
-     129,   134,   135,   136,   127,  -149,   137,   138,   140,   141,
-     139,  -149,   142,   143,   131,   145,   146,   144,  -149,  -149,
-     128,   132,    40,  -149,  -149,  -149,  -149,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,    19,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,   158,  -149,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   133,
-     169,   170,   171,   172,   173,  -149,   147,   174,   175,   176,
-    -149,   119,   177,   178,   179,   180,  -149,   185,   186,   183,
-    -149,   189,   190,   191,   192,   194,   193,   195,   131,   196,
-     197,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,   131,   131,   131,   131,   131,   131,   131,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,   198,   199,   200,
-      71,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,   201,
-     202,   203,   188,   204,    20,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,   206,   207,  -149,   208,     5,
-     209,   210,   211,   212,   214,   215,   216,   217,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,   222,   223,   224,   221,
-    -149,   227,   228,   229,   231,   232,   230,  -149,  -149,  -149,
-    -149,   190,   190,   190,  -149,  -149,  -149,  -149,   234,  -149,
-    -149,  -149,  -149,  -149,   233,   235,   236,  -149,   237,   238,
-     239,   226,   -55,  -149,   240,  -149,  -149,  -149,  -149,   241,
-    -149,  -149,  -149,  -149,  -149,  -149,   246,   243,  -149,  -149,
-    -149,   244,  -149,  -149
+    -125,   127,  -125,   -53,   -49,   -47,   -38,  -125,  -125,  -125,
+    -125,   -27,  -125,     7,  -125,  -125,    34,    83,    77,   136,
+     -23,   -21,  -125,   -14,     1,  -125,  -125,  -125,   -13,    -3,
+       2,     8,     9,    13,    24,    30,    42,    44,    48,    57,
+      64,    65,    67,     0,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,    74,  -125,    70,    71,    75,    12,  -125,  -125,  -125,
+    -125,  -125,    93,  -125,    78,    82,    84,    86,    91,    19,
+    -125,  -125,  -125,  -125,  -125,  -125,    47,   101,    17,    96,
+    -125,   106,   109,   111,   112,   113,   114,   115,   131,   132,
+      87,   108,   133,   137,   138,   139,   140,  -125,   134,   141,
+     142,   143,   144,  -125,   145,   146,   108,   108,   149,   150,
+     147,  -125,  -125,   130,   148,    45,  -125,  -125,  -125,  -125,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,    18,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+     161,  -125,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   135,   172,   173,   174,   175,   176,  -125,   107,
+     177,   178,   179,  -125,    95,   180,   181,   182,   183,   184,
+    -125,   189,   190,   187,  -125,   193,   194,   195,   196,   198,
+     197,   199,   108,   200,   201,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,   108,   108,   108,
+     108,   108,   108,   108,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   202,   203,   204,    81,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,   205,   206,   207,   192,   208,    41,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+     210,   211,  -125,   212,    -2,   213,   214,   215,   216,   218,
+     219,   220,   221,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   226,   227,   228,   225,  -125,   231,   232,   233,   235,
+     236,   234,  -125,  -125,  -125,  -125,   194,   194,   194,  -125,
+    -125,  -125,  -125,   238,  -125,  -125,  -125,  -125,  -125,   237,
+     239,   240,  -125,   241,   242,   243,   230,   -51,  -125,   244,
+    -125,  -125,  -125,  -125,   245,  -125,  -125,  -125,  -125,  -125,
+    -125,   250,   247,  -125,  -125,  -125,   248,  -125,  -125
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -681,65 +684,65 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,    83,     1,     0,     0,     0,     0,     3,     5,     4,
+       2,    85,     1,     0,     0,     0,     0,     3,     5,     4,
        7,     0,     8,     0,     6,     9,     0,     0,     0,     0,
-       0,     0,   148,     0,     0,   146,   147,    57,     0,     0,
+       0,     0,   150,     0,     0,   148,   149,    59,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    40,    41,    43,    46,    44,    45,
-      47,    48,    55,    49,    50,    51,    52,    53,    54,    42,
-      56,     0,   122,     0,     0,     0,     0,   117,   118,   119,
-     120,   121,     0,    33,     0,     0,     0,     0,     0,    28,
-      29,    30,    31,    32,     0,     0,     0,     0,   145,     0,
+       0,     0,     0,     0,    42,    43,    45,    48,    46,    47,
+      49,    50,    57,    51,    52,    53,    54,    55,    56,    44,
+      58,     0,   124,     0,     0,     0,     0,   119,   120,   121,
+     122,   123,     0,    34,     0,     0,     0,     0,     0,     0,
+      28,    29,    30,    31,    32,    33,     0,     0,     0,     0,
+     147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    41,     0,     0,
+       0,     0,     0,   118,     0,     0,     0,     0,     0,     0,
+       0,    27,    91,     0,     0,     0,    88,    89,    90,   107,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    39,     0,     0,     0,     0,
-       0,   116,     0,     0,     0,     0,     0,     0,    27,    89,
-       0,     0,     0,    86,    87,    88,   105,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    95,    96,    97,
-      99,   101,    98,   100,   103,   104,   102,     0,   144,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
-       0,     0,     0,     0,     0,    38,     0,     0,     0,     0,
-     115,     0,     0,     0,     0,     0,    26,     0,     0,     0,
-      85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    94,   149,    58,    72,    59,    60,    61,    62,    63,
-      64,    65,    66,    10,    10,    10,    10,    10,    10,    10,
-      12,    11,    67,    68,    69,    70,    71,     0,     0,     0,
-       0,    76,    77,    78,    79,   123,   124,   125,   135,     0,
-       0,     0,     0,     0,     0,   129,   130,   132,   131,   133,
-     134,    36,    34,    35,    37,     0,     0,    84,     0,    20,
-       0,     0,     0,     0,     0,     0,     0,     0,    93,    13,
-      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
-      75,     0,     0,     0,     0,     0,     0,   128,    90,    91,
-     110,    20,    20,    20,    22,    21,   113,   106,     0,   108,
-     111,   109,   112,   107,     0,     0,     0,    74,     0,     0,
-       0,     0,     0,   142,     0,   127,    23,    24,    25,     0,
-      82,    81,    80,   139,   137,   136,     0,     0,   141,   138,
-     114,     0,   140,   143
+      97,    98,    99,   101,   103,   100,   102,   105,   106,   104,
+       0,   146,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    10,     0,     0,     0,     0,     0,    40,     0,
+       0,     0,     0,   117,     0,     0,     0,     0,     0,     0,
+      26,     0,     0,     0,    87,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    96,   151,    60,    74,    61,
+      62,    63,    64,    65,    66,    67,    68,    10,    10,    10,
+      10,    10,    10,    10,    12,    11,    69,    70,    71,    72,
+      73,     0,     0,     0,     0,    78,    79,    80,    81,   125,
+     126,   127,   137,     0,     0,     0,     0,     0,     0,   131,
+     132,   134,   133,   135,   136,    38,    35,    36,    37,    39,
+       0,     0,    86,     0,    20,     0,     0,     0,     0,     0,
+       0,     0,     0,    95,    13,    14,    15,    16,    17,    18,
+      19,     0,     0,     0,     0,    77,     0,     0,     0,     0,
+       0,     0,   130,    92,    93,   112,    20,    20,    20,    22,
+      21,   115,   108,     0,   110,   113,   111,   114,   109,     0,
+       0,     0,    76,     0,     0,     0,     0,     0,   144,     0,
+     129,    23,    24,    25,     0,    84,    83,    82,   141,   139,
+     138,     0,     0,   143,   140,   116,     0,   142,   145
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -149,  -149,  -149,   -23,   -99,  -148,    23,  -149,  -149,   182,
-    -149,  -149,  -149,  -149,  -149,  -149,   213,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,   -12,  -149,  -149,  -149,  -149,
-    -149,  -149,    85,  -149,  -149,  -149,  -149,  -149,    74,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-     219,  -149,  -149,  -149,  -149,  -149,  -149,   -25,  -149,  -149,
-    -149,  -149,  -149,  -149,   -47,  -149,  -149,   249,  -149
+    -125,  -125,  -125,   -24,  -101,  -124,    25,  -125,  -125,   120,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,   217,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,   -19,  -125,  -125,  -125,
+    -125,  -125,  -125,    88,  -125,  -125,  -125,  -125,  -125,   122,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   224,  -125,  -125,  -125,  -125,  -125,  -125,    27,  -125,
+    -125,  -125,  -125,  -125,  -125,   -93,  -125,  -125,   254,  -125
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     7,   210,   211,   284,   285,     8,    78,    79,
-      80,    81,    82,    83,     9,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,   220,   221,   222,   223,   224,    10,
-      11,   122,   123,   124,   125,    12,    13,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,    14,    66,
-      67,    68,    69,    70,    71,    72,   234,   235,   236,   237,
-     238,   239,   240,   302,   303,    15,    24,    25,    26
+      -1,     1,     7,   214,   215,   289,   290,     8,    79,    80,
+      81,    82,    83,    84,    85,     9,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,   224,   225,   226,   227,   228,
+      10,    11,   125,   126,   127,   128,    12,    13,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,    14,
+      66,    67,    68,    69,    70,    71,    72,   238,   239,   240,
+     241,   242,   243,   244,   307,   308,    15,    24,    25,    26
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -747,131 +750,134 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     160,    27,   301,    28,    22,    20,   317,    16,    17,   -73,
-      29,   281,   282,   283,    18,   173,    19,    21,    30,    84,
-     126,   228,    31,    23,   229,    32,    33,    34,    85,    86,
-      35,    36,    89,    37,   127,    38,    39,    90,   230,    91,
-     128,   119,   129,   231,    22,    92,    93,    62,    40,    94,
-      95,  -126,    96,   130,    41,    73,    42,   232,    63,    64,
-     120,   104,   249,    23,    87,    74,   106,    97,   131,   132,
-     133,   134,    98,   233,    27,   135,    28,    99,    75,   121,
-     190,   276,   -73,    29,   100,   101,    76,   217,   102,   256,
-     218,    30,    77,    65,   219,    31,   103,   126,    32,    33,
-      34,   179,   107,    35,    36,   119,    37,   110,    38,    39,
-     108,   127,   109,   112,    62,   117,   113,   128,  -126,   129,
-     228,    40,     2,   229,   120,    63,    64,    41,   114,    42,
-     130,    73,   269,   306,   307,   308,     3,   230,   115,     4,
-     116,    74,   231,   121,   147,   131,   132,   133,   134,   148,
-       5,     6,   135,   149,    75,   150,   232,   151,   152,   153,
-      65,   -92,    76,   217,   154,   155,   218,   156,    77,   157,
-     219,   158,   233,   203,   204,   205,   206,   207,   208,   209,
-     259,   260,   261,   262,   263,   264,   265,   161,   159,   165,
-     159,   177,   162,   163,   164,   178,   167,   166,   168,   169,
-     172,   170,   171,   174,   175,   250,   176,   180,   270,   277,
-     191,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   212,   213,   214,   215,   216,   225,   226,   227,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   274,   251,
-     254,   252,   253,   255,   257,   318,   105,     0,     0,   258,
-     118,   266,   267,   268,   271,   272,   273,   275,   278,   279,
-     280,   286,   287,    88,   289,   288,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   111,   299,   300,   301,   316,
-     304,   309,   305,     0,     0,   310,     0,   311,   312,   313,
-     314,   315,   319,   320,   321,   322,   323
+     163,    27,    22,    28,   286,   287,   288,   306,    16,   -75,
+      29,   322,    17,    62,    18,   176,   177,  -128,    30,   129,
+      73,    23,    31,    19,    63,    64,    32,    33,    34,    20,
+      74,    35,    36,   130,    37,    22,    38,    39,    86,   131,
+      87,   132,   232,    75,    76,   233,   122,    21,   122,    40,
+      88,    91,    77,   133,    23,    41,   254,    42,    78,   234,
+      65,    92,   106,    89,   235,   123,    93,   123,   134,   135,
+     136,   137,    94,    95,   112,   138,   150,    96,    62,   236,
+     194,   120,  -128,   108,    27,   124,    28,   124,    97,    63,
+      64,   261,   -75,    29,    98,   237,   232,   221,   114,   233,
+     222,    30,   129,   281,   223,    31,    99,   183,   100,    32,
+      33,    34,   101,   234,    35,    36,   130,    37,   235,    38,
+      39,   102,   131,   221,   132,    65,   222,     2,   103,   104,
+     223,   105,    40,   236,   109,   110,   133,    73,    41,   111,
+      42,     3,   115,   274,     4,   161,   116,    74,   117,   237,
+     118,   134,   135,   136,   137,   119,     5,     6,   138,   151,
+      75,    76,   311,   312,   313,   152,   162,   -94,   153,    77,
+     154,   155,   156,   157,   158,    78,   207,   208,   209,   210,
+     211,   212,   213,   264,   265,   266,   267,   268,   269,   270,
+     159,   160,   164,   162,   181,   169,   165,   166,   167,   121,
+     170,   171,   172,   168,   175,   275,   174,   173,   178,   179,
+     180,   255,   182,   184,   323,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   216,   217,   218,   219,   220,
+     229,   230,   231,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   279,   256,   259,   257,   258,   260,   262,
+     107,   195,     0,     0,   263,   282,   271,   272,   273,   276,
+     277,   278,   280,   283,   284,   285,   291,   292,    90,   294,
+     293,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     113,   304,   305,   306,   321,   309,   314,   310,     0,     0,
+     315,     0,   316,   317,   318,   319,   320,   324,   325,   326,
+     327,   328
 };
 
 static const yytype_int16 yycheck[] =
 {
-      99,     1,    57,     3,     1,    55,    61,    60,    60,     9,
-      10,     6,     7,     8,    60,   114,    60,    39,    18,    60,
-       1,     1,    22,    20,     4,    25,    26,    27,    60,    63,
-      30,    31,    63,    33,    15,    35,    36,    63,    18,    63,
-      21,     1,    23,    23,     1,    63,    63,     1,    48,    63,
-      63,     5,    63,    34,    54,     1,    56,    37,    12,    13,
-      20,    61,    57,    20,    61,    11,     9,    63,    49,    50,
-      51,    52,    63,    53,     1,    56,     3,    63,    24,    39,
-      61,    61,     9,    10,    63,    63,    32,    16,    63,   188,
-      19,    18,    38,    47,    23,    22,    63,     1,    25,    26,
-      27,    61,    63,    30,    31,     1,    33,    61,    35,    36,
-      63,    15,    63,     5,     1,    61,    63,    21,     5,    23,
-       1,    48,     0,     4,    20,    12,    13,    54,    63,    56,
-      34,     1,    61,   281,   282,   283,    14,    18,    63,    17,
-      63,    11,    23,    39,    58,    49,    50,    51,    52,    62,
-      28,    29,    56,    58,    24,    58,    37,    58,    58,    58,
-      47,    39,    32,    16,    58,    58,    19,    58,    38,    58,
-      23,    57,    53,    40,    41,    42,    43,    44,    45,    46,
-     203,   204,   205,   206,   207,   208,   209,    58,    57,    62,
-      57,    63,    58,    58,    58,    63,    58,    60,    58,    58,
-      57,    62,    60,    58,    58,   182,    62,   122,   220,   234,
-     136,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      62,    62,    62,    62,    62,    62,    62,    62,    62,    62,
-      62,    62,    62,    62,    62,    62,    62,    62,    62,    62,
-      62,    62,    62,    58,    58,    62,    57,    57,    60,    58,
-      57,    59,    58,    58,    58,   302,    43,    -1,    -1,    62,
-      78,    63,    63,    63,    63,    63,    63,    63,    62,    62,
-      62,    62,    62,    24,    62,    64,    62,    62,    62,    62,
-      58,    58,    58,    62,    57,    66,    58,    58,    57,    63,
-      58,    57,    62,    -1,    -1,    62,    -1,    62,    62,    62,
-      62,    62,    62,    62,    58,    62,    62
+     101,     1,     1,     3,     6,     7,     8,    58,    61,     9,
+      10,    62,    61,     1,    61,   116,   117,     5,    18,     1,
+       1,    20,    22,    61,    12,    13,    26,    27,    28,    56,
+      11,    31,    32,    15,    34,     1,    36,    37,    61,    21,
+      61,    23,     1,    24,    25,     4,     1,    40,     1,    49,
+      64,    64,    33,    35,    20,    55,    58,    57,    39,    18,
+      48,    64,    62,    62,    23,    20,    64,    20,    50,    51,
+      52,    53,    64,    64,    62,    57,    59,    64,     1,    38,
+      62,    62,     5,     9,     1,    40,     3,    40,    64,    12,
+      13,   192,     9,    10,    64,    54,     1,    16,     5,     4,
+      19,    18,     1,    62,    23,    22,    64,    62,    64,    26,
+      27,    28,    64,    18,    31,    32,    15,    34,    23,    36,
+      37,    64,    21,    16,    23,    48,    19,     0,    64,    64,
+      23,    64,    49,    38,    64,    64,    35,     1,    55,    64,
+      57,    14,    64,    62,    17,    58,    64,    11,    64,    54,
+      64,    50,    51,    52,    53,    64,    29,    30,    57,    63,
+      24,    25,   286,   287,   288,    59,    58,    40,    59,    33,
+      59,    59,    59,    59,    59,    39,    41,    42,    43,    44,
+      45,    46,    47,   207,   208,   209,   210,   211,   212,   213,
+      59,    59,    59,    58,    64,    61,    59,    59,    59,    79,
+      59,    59,    59,    63,    58,   224,    61,    63,    59,    59,
+      63,   186,    64,   125,   307,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    63,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,    59,    59,
+      63,    58,    58,    61,    59,    58,    60,    59,    59,    59,
+      43,   139,    -1,    -1,    63,   238,    64,    64,    64,    64,
+      64,    64,    64,    63,    63,    63,    63,    63,    24,    63,
+      65,    63,    63,    63,    63,    59,    59,    59,    63,    58,
+      66,    59,    59,    58,    64,    59,    58,    63,    -1,    -1,
+      63,    -1,    63,    63,    63,    63,    63,    63,    63,    59,
+      63,    63
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    66,     0,    14,    17,    28,    29,    67,    72,    79,
-     104,   105,   110,   111,   123,   140,    60,    60,    60,    60,
-      55,    39,     1,    20,   141,   142,   143,     1,     3,    10,
-      18,    22,    25,    26,    27,    30,    31,    33,    35,    36,
-      48,    54,    56,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,     1,    12,    13,    47,   124,   125,   126,   127,
-     128,   129,   130,     1,    11,    24,    32,    38,    73,    74,
-      75,    76,    77,    78,    60,    60,    63,    61,   142,    63,
-      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      63,    63,    63,    63,    61,    81,     9,    63,    63,    63,
-      61,   125,     5,    63,    63,    63,    63,    61,    74,     1,
-      20,    39,   106,   107,   108,   109,     1,    15,    21,    23,
-      34,    49,    50,    51,    52,    56,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,    58,    62,    58,
-      58,    58,    58,    58,    58,    58,    58,    58,    57,    57,
-      69,    58,    58,    58,    58,    62,    60,    58,    58,    58,
-      62,    60,    57,    69,    58,    58,    62,    63,    63,    61,
-     107,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      61,   113,    62,    62,    62,    62,    62,    62,    62,    62,
-      62,    62,    62,    40,    41,    42,    43,    44,    45,    46,
-      68,    69,    62,    62,    62,    62,    62,    16,    19,    23,
-      99,   100,   101,   102,   103,    62,    62,    62,     1,     4,
-      18,    23,    37,    53,   131,   132,   133,   134,   135,   136,
-     137,    62,    62,    62,    62,    58,    58,    62,    57,    57,
-      71,    58,    59,    58,    57,    58,    69,    58,    62,    68,
-      68,    68,    68,    68,    68,    68,    63,    63,    63,    61,
-     100,    63,    63,    63,    60,    63,    61,   132,    62,    62,
-      62,     6,     7,     8,    70,    71,    62,    62,    64,    62,
-      62,    62,    62,    62,    58,    58,    58,    62,    57,    58,
-      58,    57,   138,   139,    58,    62,    70,    70,    70,    57,
-      62,    62,    62,    62,    62,    62,    63,    61,   139,    62,
-      62,    58,    62,    62
+       0,    67,     0,    14,    17,    29,    30,    68,    73,    81,
+     106,   107,   112,   113,   125,   142,    61,    61,    61,    61,
+      56,    40,     1,    20,   143,   144,   145,     1,     3,    10,
+      18,    22,    26,    27,    28,    31,    32,    34,    36,    37,
+      49,    55,    57,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,     1,    12,    13,    48,   126,   127,   128,   129,
+     130,   131,   132,     1,    11,    24,    25,    33,    39,    74,
+      75,    76,    77,    78,    79,    80,    61,    61,    64,    62,
+     144,    64,    64,    64,    64,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    64,    64,    62,    83,     9,    64,
+      64,    64,    62,   127,     5,    64,    64,    64,    64,    64,
+      62,    75,     1,    20,    40,   108,   109,   110,   111,     1,
+      15,    21,    23,    35,    50,    51,    52,    53,    57,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+      59,    63,    59,    59,    59,    59,    59,    59,    59,    59,
+      59,    58,    58,    70,    59,    59,    59,    59,    63,    61,
+      59,    59,    59,    63,    61,    58,    70,    70,    59,    59,
+      63,    64,    64,    62,   109,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    62,   115,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    41,    42,    43,
+      44,    45,    46,    47,    69,    70,    63,    63,    63,    63,
+      63,    16,    19,    23,   101,   102,   103,   104,   105,    63,
+      63,    63,     1,     4,    18,    23,    38,    54,   133,   134,
+     135,   136,   137,   138,   139,    63,    63,    63,    63,    63,
+      59,    59,    63,    58,    58,    72,    59,    60,    59,    58,
+      59,    70,    59,    63,    69,    69,    69,    69,    69,    69,
+      69,    64,    64,    64,    62,   102,    64,    64,    64,    61,
+      64,    62,   134,    63,    63,    63,     6,     7,     8,    71,
+      72,    63,    63,    65,    63,    63,    63,    63,    63,    59,
+      59,    59,    63,    58,    59,    59,    58,   140,   141,    59,
+      63,    71,    71,    71,    58,    63,    63,    63,    63,    63,
+      63,    64,    62,   141,    63,    63,    59,    63,    63
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    65,    66,    66,    67,    67,    67,    67,    67,    67,
-      68,    68,    69,    69,    69,    69,    69,    69,    69,    69,
-      70,    70,    71,    71,    71,    71,    72,    73,    73,    74,
-      74,    74,    74,    74,    75,    76,    77,    78,    79,    80,
-      80,    81,    81,    81,    81,    81,    81,    81,    81,    81,
-      81,    81,    81,    81,    81,    81,    81,    81,    82,    83,
+       0,    66,    67,    67,    68,    68,    68,    68,    68,    68,
+      69,    69,    70,    70,    70,    70,    70,    70,    70,    70,
+      71,    71,    72,    72,    72,    72,    73,    74,    74,    75,
+      75,    75,    75,    75,    75,    76,    77,    78,    79,    80,
+      81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
+      83,    83,    83,    83,    83,    83,    83,    83,    83,    83,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    98,    97,    99,    99,   100,   100,   100,
-     101,   102,   103,   105,   104,   106,   106,   107,   107,   107,
-     108,   109,   111,   110,   112,   112,   113,   113,   113,   113,
-     113,   113,   113,   113,   113,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   124,   125,   125,
-     125,   125,   125,   126,   127,   128,   130,   129,   131,   131,
-     132,   132,   132,   132,   132,   132,   133,   134,   135,   136,
-     137,   138,   138,   139,   140,   141,   141,   142,   142,   143
+      94,    95,    96,    97,    98,   100,    99,   101,   101,   102,
+     102,   102,   103,   104,   105,   107,   106,   108,   108,   109,
+     109,   109,   110,   111,   113,   112,   114,   114,   115,   115,
+     115,   115,   115,   115,   115,   115,   115,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   126,
+     127,   127,   127,   127,   127,   128,   129,   130,   132,   131,
+     133,   133,   134,   134,   134,   134,   134,   134,   135,   136,
+     137,   138,   139,   140,   140,   141,   142,   143,   143,   144,
+     144,   145
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -880,18 +886,19 @@ static const yytype_uint8 yyr2[] =
        0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
        0,     1,     2,     3,     3,     3,     3,     3,     3,     3,
        0,     1,     2,     3,     3,     3,     5,     2,     1,     1,
-       1,     1,     1,     1,     4,     4,     4,     4,     5,     2,
+       1,     1,     1,     1,     1,     4,     4,     4,     4,     4,
+       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     0,     6,     2,     1,     1,     1,     1,
-       4,     4,     4,     0,     6,     2,     1,     1,     1,     1,
-       4,     4,     0,     6,     2,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
-       4,     4,     4,     4,     6,     5,     2,     1,     1,     1,
-       1,     1,     1,     4,     4,     4,     0,     6,     2,     1,
-       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
-       5,     2,     1,     4,     5,     2,     1,     1,     1,     4
+       4,     4,     4,     4,     4,     0,     6,     2,     1,     1,
+       1,     1,     4,     4,     4,     0,     6,     2,     1,     1,
+       1,     1,     4,     4,     0,     6,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
+       4,     4,     4,     4,     4,     4,     6,     5,     2,     1,
+       1,     1,     1,     1,     1,     4,     4,     4,     0,     6,
+       2,     1,     1,     1,     1,     1,     1,     1,     4,     4,
+       4,     4,     5,     2,     1,     4,     5,     2,     1,     1,
+       1,     4
 };
 
 
@@ -1568,260 +1575,268 @@ yyreduce:
   switch (yyn)
     {
         case 10:
-#line 112 "config-parser.y" /* yacc.c:1646  */
+#line 113 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = 0; }
-#line 1574 "config-parser.c" /* yacc.c:1646  */
+#line 1581 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 113 "config-parser.y" /* yacc.c:1646  */
+#line 114 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1580 "config-parser.c" /* yacc.c:1646  */
+#line 1587 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 114 "config-parser.y" /* yacc.c:1646  */
+#line 115 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1586 "config-parser.c" /* yacc.c:1646  */
+#line 1593 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 115 "config-parser.y" /* yacc.c:1646  */
+#line 116 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
-#line 1592 "config-parser.c" /* yacc.c:1646  */
+#line 1599 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 116 "config-parser.y" /* yacc.c:1646  */
+#line 117 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
-#line 1598 "config-parser.c" /* yacc.c:1646  */
+#line 1605 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 117 "config-parser.y" /* yacc.c:1646  */
+#line 118 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
-#line 1604 "config-parser.c" /* yacc.c:1646  */
+#line 1611 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 118 "config-parser.y" /* yacc.c:1646  */
+#line 119 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
-#line 1610 "config-parser.c" /* yacc.c:1646  */
+#line 1617 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 119 "config-parser.y" /* yacc.c:1646  */
+#line 120 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
-#line 1616 "config-parser.c" /* yacc.c:1646  */
+#line 1623 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 120 "config-parser.y" /* yacc.c:1646  */
+#line 121 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
-#line 1622 "config-parser.c" /* yacc.c:1646  */
+#line 1629 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 123 "config-parser.y" /* yacc.c:1646  */
+#line 124 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = 0; }
-#line 1628 "config-parser.c" /* yacc.c:1646  */
+#line 1635 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 124 "config-parser.y" /* yacc.c:1646  */
+#line 125 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1634 "config-parser.c" /* yacc.c:1646  */
+#line 1641 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 125 "config-parser.y" /* yacc.c:1646  */
+#line 126 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1640 "config-parser.c" /* yacc.c:1646  */
+#line 1647 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 126 "config-parser.y" /* yacc.c:1646  */
+#line 127 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
-#line 1646 "config-parser.c" /* yacc.c:1646  */
+#line 1653 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 127 "config-parser.y" /* yacc.c:1646  */
+#line 128 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
-#line 1652 "config-parser.c" /* yacc.c:1646  */
+#line 1659 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 34:
-#line 144 "config-parser.y" /* yacc.c:1646  */
+  case 35:
+#line 146 "config-parser.y" /* yacc.c:1646  */
     {
    OptionsItem->negcache = (yyvsp[-1].number);
 }
-#line 1660 "config-parser.c" /* yacc.c:1646  */
+#line 1667 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 35:
-#line 149 "config-parser.y" /* yacc.c:1646  */
+  case 36:
+#line 151 "config-parser.y" /* yacc.c:1646  */
+    {
+   OptionsItem->negcache_rebuild = (yyvsp[-1].number);
+}
+#line 1675 "config-parser.c" /* yacc.c:1646  */
+    break;
+
+  case 37:
+#line 156 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OptionsItem->pidfile);
    OptionsItem->pidfile = xstrdup((yyvsp[-1].string));
 }
-#line 1669 "config-parser.c" /* yacc.c:1646  */
+#line 1684 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 36:
-#line 155 "config-parser.y" /* yacc.c:1646  */
+  case 38:
+#line 162 "config-parser.y" /* yacc.c:1646  */
     {
    OptionsItem->dns_fdlimit = (yyvsp[-1].number);
 }
-#line 1677 "config-parser.c" /* yacc.c:1646  */
+#line 1692 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 37:
-#line 160 "config-parser.y" /* yacc.c:1646  */
+  case 39:
+#line 167 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OptionsItem->scanlog);
    OptionsItem->scanlog = xstrdup((yyvsp[-1].string));
 }
-#line 1686 "config-parser.c" /* yacc.c:1646  */
+#line 1701 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 58:
-#line 191 "config-parser.y" /* yacc.c:1646  */
+  case 60:
+#line 198 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->away);
    IRCItem->away = xstrdup((yyvsp[-1].string));
 }
-#line 1695 "config-parser.c" /* yacc.c:1646  */
+#line 1710 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 59:
-#line 197 "config-parser.y" /* yacc.c:1646  */
+  case 61:
+#line 204 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->kline);
    IRCItem->kline = xstrdup((yyvsp[-1].string));
 }
-#line 1704 "config-parser.c" /* yacc.c:1646  */
+#line 1719 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 60:
-#line 203 "config-parser.y" /* yacc.c:1646  */
+  case 62:
+#line 210 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->mode);
    IRCItem->mode = xstrdup((yyvsp[-1].string));
 }
-#line 1713 "config-parser.c" /* yacc.c:1646  */
+#line 1728 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 61:
-#line 209 "config-parser.y" /* yacc.c:1646  */
+  case 63:
+#line 216 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->nick);
    IRCItem->nick = xstrdup((yyvsp[-1].string));
 }
-#line 1722 "config-parser.c" /* yacc.c:1646  */
+#line 1737 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 62:
-#line 215 "config-parser.y" /* yacc.c:1646  */
+  case 64:
+#line 222 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->nickserv);
    IRCItem->nickserv = xstrdup((yyvsp[-1].string));
 }
-#line 1731 "config-parser.c" /* yacc.c:1646  */
+#line 1746 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 221 "config-parser.y" /* yacc.c:1646  */
+  case 65:
+#line 228 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->oper);
    IRCItem->oper = xstrdup((yyvsp[-1].string));
 }
-#line 1740 "config-parser.c" /* yacc.c:1646  */
+#line 1755 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 64:
-#line 227 "config-parser.y" /* yacc.c:1646  */
+  case 66:
+#line 234 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->password);
    IRCItem->password = xstrdup((yyvsp[-1].string));
 }
-#line 1749 "config-parser.c" /* yacc.c:1646  */
+#line 1764 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 65:
-#line 233 "config-parser.y" /* yacc.c:1646  */
+  case 67:
+#line 240 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    node = node_create(xstrdup((yyvsp[-1].string)));
 
    list_add(IRCItem->performs, node);
 }
-#line 1760 "config-parser.c" /* yacc.c:1646  */
+#line 1775 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 241 "config-parser.y" /* yacc.c:1646  */
+  case 68:
+#line 248 "config-parser.y" /* yacc.c:1646  */
     {
    IRCItem->port = (yyvsp[-1].number);
 }
-#line 1768 "config-parser.c" /* yacc.c:1646  */
+#line 1783 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 246 "config-parser.y" /* yacc.c:1646  */
+  case 69:
+#line 253 "config-parser.y" /* yacc.c:1646  */
     {
    IRCItem->readtimeout = (yyvsp[-1].number);
 }
-#line 1776 "config-parser.c" /* yacc.c:1646  */
+#line 1791 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 68:
-#line 251 "config-parser.y" /* yacc.c:1646  */
+  case 70:
+#line 258 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->realname);
    IRCItem->realname = xstrdup((yyvsp[-1].string));
 }
-#line 1785 "config-parser.c" /* yacc.c:1646  */
+#line 1800 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 257 "config-parser.y" /* yacc.c:1646  */
+  case 71:
+#line 264 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->server);
    IRCItem->server = xstrdup((yyvsp[-1].string));
 }
-#line 1794 "config-parser.c" /* yacc.c:1646  */
+#line 1809 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 263 "config-parser.y" /* yacc.c:1646  */
+  case 72:
+#line 270 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->username);
    IRCItem->username = xstrdup((yyvsp[-1].string));
 }
-#line 1803 "config-parser.c" /* yacc.c:1646  */
+#line 1818 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 269 "config-parser.y" /* yacc.c:1646  */
+  case 73:
+#line 276 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->vhost);
    IRCItem->vhost = xstrdup((yyvsp[-1].string));
 }
-#line 1812 "config-parser.c" /* yacc.c:1646  */
+#line 1827 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 275 "config-parser.y" /* yacc.c:1646  */
+  case 74:
+#line 282 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->connregex);
    IRCItem->connregex = xstrdup((yyvsp[-1].string));
 }
-#line 1821 "config-parser.c" /* yacc.c:1646  */
+#line 1836 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 284 "config-parser.y" /* yacc.c:1646  */
+  case 75:
+#line 291 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct ChannelConf *item;
@@ -1837,44 +1852,44 @@ yyreduce:
 
    tmp = item;
 }
-#line 1841 "config-parser.c" /* yacc.c:1646  */
+#line 1856 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 80:
-#line 309 "config-parser.y" /* yacc.c:1646  */
+  case 82:
+#line 316 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 1852 "config-parser.c" /* yacc.c:1646  */
+#line 1867 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 81:
-#line 317 "config-parser.y" /* yacc.c:1646  */
+  case 83:
+#line 324 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->key);
    item->key = xstrdup((yyvsp[-1].string));
 }
-#line 1863 "config-parser.c" /* yacc.c:1646  */
+#line 1878 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 325 "config-parser.y" /* yacc.c:1646  */
+  case 84:
+#line 332 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->invite);
    item->invite = xstrdup((yyvsp[-1].string));
 }
-#line 1874 "config-parser.c" /* yacc.c:1646  */
+#line 1889 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 83:
-#line 335 "config-parser.y" /* yacc.c:1646  */
+  case 85:
+#line 342 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct UserConf *item;
@@ -1889,11 +1904,11 @@ yyreduce:
 
    tmp = item; 
 }
-#line 1893 "config-parser.c" /* yacc.c:1646  */
+#line 1908 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 90:
-#line 359 "config-parser.y" /* yacc.c:1646  */
+  case 92:
+#line 366 "config-parser.y" /* yacc.c:1646  */
     {
    struct UserConf *item = tmp;
    node_t *node;
@@ -1902,11 +1917,11 @@ yyreduce:
 
    list_add(item->masks, node);
 }
-#line 1906 "config-parser.c" /* yacc.c:1646  */
+#line 1921 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 91:
-#line 369 "config-parser.y" /* yacc.c:1646  */
+  case 93:
+#line 376 "config-parser.y" /* yacc.c:1646  */
     {
    struct UserConf *item = tmp;
    node_t *node;
@@ -1915,11 +1930,11 @@ yyreduce:
 
    list_add(item->scanners, node);
 }
-#line 1919 "config-parser.c" /* yacc.c:1646  */
+#line 1934 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 92:
-#line 381 "config-parser.y" /* yacc.c:1646  */
+  case 94:
+#line 388 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct ScannerConf *item, *olditem;
@@ -1963,41 +1978,41 @@ yyreduce:
    list_add(ScannerItemList, node);
    tmp = item;
 }
-#line 1967 "config-parser.c" /* yacc.c:1646  */
+#line 1982 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 106:
-#line 441 "config-parser.y" /* yacc.c:1646  */
+  case 108:
+#line 448 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 1977 "config-parser.c" /* yacc.c:1646  */
+#line 1992 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 107:
-#line 448 "config-parser.y" /* yacc.c:1646  */
+  case 109:
+#line 455 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->vhost);
    item->vhost = xstrdup((yyvsp[-1].string));
 }
-#line 1987 "config-parser.c" /* yacc.c:1646  */
+#line 2002 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 108:
-#line 455 "config-parser.y" /* yacc.c:1646  */
+  case 110:
+#line 462 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->target_ip);
    item->target_ip = xstrdup((yyvsp[-1].string));
 }
-#line 1997 "config-parser.c" /* yacc.c:1646  */
+#line 2012 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 109:
-#line 462 "config-parser.y" /* yacc.c:1646  */
+  case 111:
+#line 469 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
 
@@ -2012,47 +2027,47 @@ yyreduce:
 
    list_add(item->target_string, node);
 }
-#line 2016 "config-parser.c" /* yacc.c:1646  */
+#line 2031 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 110:
-#line 478 "config-parser.y" /* yacc.c:1646  */
+  case 112:
+#line 485 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->fd = (yyvsp[-1].number);
 }
-#line 2025 "config-parser.c" /* yacc.c:1646  */
+#line 2040 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 111:
-#line 484 "config-parser.y" /* yacc.c:1646  */
+  case 113:
+#line 491 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->target_port = (yyvsp[-1].number);
 }
-#line 2034 "config-parser.c" /* yacc.c:1646  */
+#line 2049 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 112:
-#line 490 "config-parser.y" /* yacc.c:1646  */
+  case 114:
+#line 497 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->timeout = (yyvsp[-1].number);
 }
-#line 2043 "config-parser.c" /* yacc.c:1646  */
+#line 2058 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 496 "config-parser.y" /* yacc.c:1646  */
+  case 115:
+#line 503 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->max_read = (yyvsp[-1].number);
 }
-#line 2052 "config-parser.c" /* yacc.c:1646  */
+#line 2067 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 502 "config-parser.y" /* yacc.c:1646  */
+  case 116:
+#line 509 "config-parser.y" /* yacc.c:1646  */
     {
    struct ProtocolConf *item;
    struct ScannerConf  *item2;
@@ -2068,38 +2083,38 @@ yyreduce:
    node = node_create(item);
    list_add(item2->protocols, node);
 }
-#line 2072 "config-parser.c" /* yacc.c:1646  */
+#line 2087 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 123:
-#line 532 "config-parser.y" /* yacc.c:1646  */
+  case 125:
+#line 539 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->dnsbl_from);
    OpmItem->dnsbl_from = xstrdup((yyvsp[-1].string));
 }
-#line 2081 "config-parser.c" /* yacc.c:1646  */
+#line 2096 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 124:
-#line 538 "config-parser.y" /* yacc.c:1646  */
+  case 126:
+#line 545 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->dnsbl_to);
    OpmItem->dnsbl_to = xstrdup((yyvsp[-1].string));
 }
-#line 2090 "config-parser.c" /* yacc.c:1646  */
+#line 2105 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 125:
-#line 544 "config-parser.y" /* yacc.c:1646  */
+  case 127:
+#line 551 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->sendmail);
    OpmItem->sendmail = xstrdup((yyvsp[-1].string));
 }
-#line 2099 "config-parser.c" /* yacc.c:1646  */
+#line 2114 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 126:
-#line 552 "config-parser.y" /* yacc.c:1646  */
+  case 128:
+#line 559 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct BlacklistConf *item;
@@ -2117,33 +2132,33 @@ yyreduce:
 
    tmp = item;
 }
-#line 2121 "config-parser.c" /* yacc.c:1646  */
+#line 2136 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 136:
-#line 581 "config-parser.y" /* yacc.c:1646  */
+  case 138:
+#line 588 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 2132 "config-parser.c" /* yacc.c:1646  */
+#line 2147 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 137:
-#line 588 "config-parser.y" /* yacc.c:1646  */
+  case 139:
+#line 595 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    MyFree(item->kline);
    item->kline = xstrdup((yyvsp[-1].string));
 }
-#line 2143 "config-parser.c" /* yacc.c:1646  */
+#line 2158 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 138:
-#line 595 "config-parser.y" /* yacc.c:1646  */
+  case 140:
+#line 602 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
    
@@ -2154,21 +2169,21 @@ yyreduce:
    else
       yyerror("Unknown blacklist type defined");
 }
-#line 2158 "config-parser.c" /* yacc.c:1646  */
+#line 2173 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 139:
-#line 606 "config-parser.y" /* yacc.c:1646  */
+  case 141:
+#line 613 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    item->ban_unknown = (yyvsp[-1].number);
 }
-#line 2168 "config-parser.c" /* yacc.c:1646  */
+#line 2183 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 143:
-#line 618 "config-parser.y" /* yacc.c:1646  */
+  case 145:
+#line 625 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistReplyConf *item;
    struct BlacklistConf *blacklist = tmp;
@@ -2182,22 +2197,22 @@ yyreduce:
    node = node_create(item);
    list_add(blacklist->reply, node);
 }
-#line 2186 "config-parser.c" /* yacc.c:1646  */
+#line 2201 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 644 "config-parser.y" /* yacc.c:1646  */
+  case 151:
+#line 651 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    node = node_create(xstrdup((yyvsp[-1].string)));
 
    list_add(ExemptItem->masks, node);
 }
-#line 2197 "config-parser.c" /* yacc.c:1646  */
+#line 2212 "config-parser.c" /* yacc.c:1646  */
     break;
 
 
-#line 2201 "config-parser.c" /* yacc.c:1646  */
+#line 2216 "config-parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2425,5 +2440,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 651 "config-parser.y" /* yacc.c:1906  */
+#line 658 "config-parser.y" /* yacc.c:1906  */
 
index fcdf311d4ad3d7b74bf777098a0a7c099af10790..2e226154173db76dc8c0a97d14d5b2d368297d9b 100644 (file)
@@ -67,41 +67,42 @@ extern int yydebug;
     MODE = 277,
     NAME = 278,
     NEGCACHE = 279,
-    NICK = 280,
-    NICKSERV = 281,
-    OPER = 282,
-    OPM = 283,
-    OPTIONS = 284,
-    PASSWORD = 285,
-    PERFORM = 286,
-    PIDFILE = 287,
-    PORT = 288,
-    PROTOCOL = 289,
-    READTIMEOUT = 290,
-    REALNAME = 291,
-    REPLY = 292,
-    SCANLOG = 293,
-    SCANNER = 294,
-    SECONDS = 295,
-    MINUTES = 296,
-    HOURS = 297,
-    DAYS = 298,
-    WEEKS = 299,
-    MONTHS = 300,
-    YEARS = 301,
-    SENDMAIL = 302,
-    SERVER = 303,
-    TARGET_IP = 304,
-    TARGET_PORT = 305,
-    TARGET_STRING = 306,
-    TIMEOUT = 307,
-    TYPE = 308,
-    USERNAME = 309,
-    USER = 310,
-    VHOST = 311,
-    NUMBER = 312,
-    STRING = 313,
-    PROTOCOLTYPE = 314
+    NEGCACHE_REBUILD = 280,
+    NICK = 281,
+    NICKSERV = 282,
+    OPER = 283,
+    OPM = 284,
+    OPTIONS = 285,
+    PASSWORD = 286,
+    PERFORM = 287,
+    PIDFILE = 288,
+    PORT = 289,
+    PROTOCOL = 290,
+    READTIMEOUT = 291,
+    REALNAME = 292,
+    REPLY = 293,
+    SCANLOG = 294,
+    SCANNER = 295,
+    SECONDS = 296,
+    MINUTES = 297,
+    HOURS = 298,
+    DAYS = 299,
+    WEEKS = 300,
+    MONTHS = 301,
+    YEARS = 302,
+    SENDMAIL = 303,
+    SERVER = 304,
+    TARGET_IP = 305,
+    TARGET_PORT = 306,
+    TARGET_STRING = 307,
+    TIMEOUT = 308,
+    TYPE = 309,
+    USERNAME = 310,
+    USER = 311,
+    VHOST = 312,
+    NUMBER = 313,
+    STRING = 314,
+    PROTOCOLTYPE = 315
   };
 #endif
 /* Tokens.  */
@@ -127,53 +128,54 @@ extern int yydebug;
 #define MODE 277
 #define NAME 278
 #define NEGCACHE 279
-#define NICK 280
-#define NICKSERV 281
-#define OPER 282
-#define OPM 283
-#define OPTIONS 284
-#define PASSWORD 285
-#define PERFORM 286
-#define PIDFILE 287
-#define PORT 288
-#define PROTOCOL 289
-#define READTIMEOUT 290
-#define REALNAME 291
-#define REPLY 292
-#define SCANLOG 293
-#define SCANNER 294
-#define SECONDS 295
-#define MINUTES 296
-#define HOURS 297
-#define DAYS 298
-#define WEEKS 299
-#define MONTHS 300
-#define YEARS 301
-#define SENDMAIL 302
-#define SERVER 303
-#define TARGET_IP 304
-#define TARGET_PORT 305
-#define TARGET_STRING 306
-#define TIMEOUT 307
-#define TYPE 308
-#define USERNAME 309
-#define USER 310
-#define VHOST 311
-#define NUMBER 312
-#define STRING 313
-#define PROTOCOLTYPE 314
+#define NEGCACHE_REBUILD 280
+#define NICK 281
+#define NICKSERV 282
+#define OPER 283
+#define OPM 284
+#define OPTIONS 285
+#define PASSWORD 286
+#define PERFORM 287
+#define PIDFILE 288
+#define PORT 289
+#define PROTOCOL 290
+#define READTIMEOUT 291
+#define REALNAME 292
+#define REPLY 293
+#define SCANLOG 294
+#define SCANNER 295
+#define SECONDS 296
+#define MINUTES 297
+#define HOURS 298
+#define DAYS 299
+#define WEEKS 300
+#define MONTHS 301
+#define YEARS 302
+#define SENDMAIL 303
+#define SERVER 304
+#define TARGET_IP 305
+#define TARGET_PORT 306
+#define TARGET_STRING 307
+#define TIMEOUT 308
+#define TYPE 309
+#define USERNAME 310
+#define USER 311
+#define VHOST 312
+#define NUMBER 313
+#define STRING 314
+#define PROTOCOLTYPE 315
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 86 "config-parser.y" /* yacc.c:1909  */
+#line 87 "config-parser.y" /* yacc.c:1909  */
 
         int number;
         char *string;
 
-#line 177 "config-parser.h" /* yacc.c:1909  */
+#line 179 "config-parser.h" /* yacc.c:1909  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
index 2f7ae5c5fb5fa60df2bddaace4e33c121bda068b..67c67e513e1a3e6bd255d8e584ff334eb5b0a90d 100644 (file)
@@ -55,6 +55,7 @@ void *tmp;        /* Variable to temporarily hold nodes before insertion to list
 %token MODE
 %token NAME
 %token NEGCACHE
+%token NEGCACHE_REBUILD
 %token NICK
 %token NICKSERV
 %token OPER
@@ -135,6 +136,7 @@ options_items: options_items options_item |
                options_item;
 
 options_item: options_negcache |
+              options_negcache_rebuild |
               options_pidfile |
               options_dns_fdlimit |
               options_scanlog |
@@ -145,6 +147,11 @@ options_negcache: NEGCACHE '=' timespec ';'
    OptionsItem->negcache = $3;
 };
 
+options_negcache_rebuild: NEGCACHE_REBUILD '=' timespec ';'
+{
+   OptionsItem->negcache_rebuild = $3;
+};
+
 options_pidfile: PIDFILE '=' STRING ';'
 {
    MyFree(OptionsItem->pidfile);
index f89686e21d270d218925ca39b2b4d5329bd56fa7..423d00aeea2acd96f656e6fc00fe17f9b9c23b65 100644 (file)
@@ -92,6 +92,7 @@ config_setup(void)
 
   /* Setup options block defaults */
   OptionsItem->negcache = 0;   /* 0 disabled negcache */
+  OptionsItem->negcache_rebuild = 43200;
   OptionsItem->pidfile = xstrdup("hopm.pid");
   OptionsItem->dns_fdlimit = 50;
   OptionsItem->scanlog = NULL;
index 5e56b814182ff4707967cae6c734be526198d821..b3a7ab4cd1a5192204b2777ab8555a2f27f323c2 100644 (file)
@@ -43,6 +43,7 @@ struct ChannelConf
 struct OptionsConf
 {
   int negcache;
+  time_t negcache_rebuild;
   unsigned int dns_fdlimit;
   char *pidfile;
   char *scanlog;
index 67425e0003121804f18777d0c67e6bf5167e4dcf..7d11bef36e595548acf4c1d23683251cdc869a19 100644 (file)
 
 /* Interval in how often we try to reconnect (in seconds) */
 #define RECONNECTINTERVAL 30
-
-/* How long (in seconds) between rebuilds of the negative cache.  The negcache
- * is only rebuilt to free up memory used by entries that are too old.  You
- * probably don't need to tweak this unless you have huge amounts of people
- * connecting (hundreds per minute).  Default is 12 hours.
- */
-#define NEG_CACHE_REBUILD (60 * 60 * 12)
 #endif /* OPTIONS_H */
index 6eabd6eca063d3373307910b0dd9a90c6a1f2bd4..b3d3a5b0704e7627b1f306c5323d0f53f3cdf067 100644 (file)
@@ -113,15 +113,14 @@ scan_cycle(void)
 void
 scan_timer(void)
 {
-  static unsigned int nc_counter;
+  static time_t nc_counter;
 
   if (OptionsItem->negcache > 0)
   {
-    if (nc_counter++ >= NEG_CACHE_REBUILD)
+    if (nc_counter++ >= OptionsItem->negcache_rebuild)
     {
       /*
-       * Time to rebuild the negative
-       * cache.
+       * Time to rebuild the negative cache.
        */
       if (OPT_DEBUG)
         log_printf("SCAN -> Rebuilding negative cache");