[ntp:bk-ntp-stable-send] BitKeeper diffs

Harlan Stenn stenn at deacon.udel.edu
Sun Oct 24 06:05:00 UTC 2010


#### ChangeSet ####
2010-10-24 03:23:09+00:00, davehart at shiny.ad.hartbrothers.com 
  [Bug 1675] Prohibit includefile remote config.

==== ChangeLog ====
2010-10-24 03:23:08+00:00, davehart at shiny.ad.hartbrothers.com +4 -0
  [Bug 1675] Prohibit includefile remote config.

--- 1.658/ChangeLog	2010-10-22 03:46:01 -04:00
+++ 1.658.1.1/ChangeLog	2010-10-23 23:23:08 -04:00
@@ -1,4 +1,8 @@
 ---
+
+* [Bug 1675] Prohibit includefile remote config.
+
+---
 (4.2.6p3-RC5) 2010/10/22 Released by Harlan Stenn <stenn at ntp.org>
 
 * [Bug 1649] Require NMEA checksum if $GPRMC or previously seen.

==== ntpd/ntp_parser.c ====
2010-10-24 03:23:08+00:00, davehart at shiny.ad.hartbrothers.com +939 -1247
  ntp_parser.y Bison output

--- 1.56/ntpd/ntp_parser.c	2010-09-21 12:29:50 -04:00
+++ 1.57/ntpd/ntp_parser.c	2010-10-23 23:23:08 -04:00
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.4.3.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2009, 2010 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -46,7 +45,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.4.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -74,9 +73,9 @@
   # include <config.h>
   #endif
 
+  #include "ntp.h"
   #include "ntpd.h"
   #include "ntp_machine.h"
-  #include "ntp.h"
   #include "ntp_stdlib.h"
   #include "ntp_filegen.h"
   #include "ntp_data_structures.h"
@@ -98,12 +97,12 @@
   #define YYFREE	free
   #define YYERROR_VERBOSE
   #define YYMAXDEPTH	1000   /* stop the madness sooner */
-  void yyerror (char *msg);
+  void yyerror(const char *msg);
   extern int input_from_file;  /* 0=input from ntpq :config */
 
 
 /* Line 189 of yacc.c  */
-#line 107 "ntp_parser.c"
+#line 106 "ntp_parser.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -486,7 +485,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 490 "ntp_parser.c"
+#line 489 "ntp_parser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -498,7 +497,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 502 "ntp_parser.c"
+#line 501 "ntp_parser.c"
 
 #ifdef short
 # undef short
@@ -548,7 +547,7 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -711,18 +710,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  177
+#define YYFINAL  168
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   586
+#define YYLAST   630
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  171
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  71
+#define YYNNTS  89
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  251
+#define YYNRULES  267
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  393
+#define YYNSTATES  375
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -786,134 +785,136 @@ static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     5,     9,    12,    15,    16,    18,    20,
       22,    24,    26,    28,    30,    32,    34,    36,    38,    40,
-      44,    47,    49,    51,    53,    55,    57,    59,    62,    65,
-      67,    70,    72,    74,    77,    79,    81,    84,    87,    90,
-      92,    94,    96,    98,   100,   103,   106,   109,   112,   114,
-     116,   118,   121,   124,   127,   130,   133,   136,   139,   142,
-     145,   148,   151,   153,   154,   157,   159,   162,   165,   168,
-     171,   174,   177,   180,   183,   186,   188,   191,   194,   197,
-     200,   203,   206,   209,   212,   215,   218,   221,   224,   228,
-     231,   233,   235,   237,   239,   241,   243,   245,   247,   249,
-     252,   254,   255,   258,   261,   263,   265,   267,   269,   271,
-     273,   275,   277,   279,   281,   283,   286,   290,   294,   299,
-     304,   310,   311,   314,   316,   318,   320,   322,   324,   326,
-     328,   330,   332,   334,   336,   338,   340,   342,   345,   347,
-     350,   353,   356,   360,   363,   365,   368,   371,   374,   377,
-     380,   383,   386,   389,   392,   395,   398,   400,   402,   404,
-     406,   408,   410,   412,   414,   417,   420,   422,   425,   428,
-     431,   434,   437,   440,   443,   445,   449,   451,   454,   457,
-     460,   463,   466,   469,   472,   475,   478,   481,   484,   487,
-     491,   494,   497,   499,   502,   503,   508,   512,   515,   517,
-     520,   523,   526,   528,   530,   534,   538,   540,   542,   544,
-     546,   548,   550,   552,   554,   556,   559,   561,   564,   566,
-     568,   570,   576,   579,   581,   584,   586,   588,   590,   592,
-     594,   596,   602,   604,   608,   611,   615,   619,   622,   624,
-     630,   635,   639,   642,   644,   651,   655,   658,   662,   666,
-     670,   674
+      44,    47,    49,    51,    53,    55,    57,    59,    62,    64,
+      66,    68,    71,    73,    75,    77,    80,    82,    84,    86,
+      88,    90,    92,    94,    96,    98,   101,   103,   105,   107,
+     109,   111,   113,   116,   118,   120,   122,   125,   128,   131,
+     134,   137,   140,   143,   146,   149,   152,   155,   156,   159,
+     162,   165,   167,   169,   171,   173,   175,   177,   180,   183,
+     185,   188,   191,   194,   196,   198,   200,   202,   204,   206,
+     208,   210,   212,   215,   218,   222,   225,   227,   229,   231,
+     233,   235,   237,   239,   241,   243,   244,   247,   250,   253,
+     255,   257,   259,   261,   263,   265,   267,   269,   271,   273,
+     275,   277,   279,   282,   286,   290,   295,   300,   306,   307,
+     310,   312,   314,   316,   318,   320,   322,   324,   326,   328,
+     330,   332,   334,   336,   338,   341,   343,   346,   348,   350,
+     352,   356,   359,   361,   364,   367,   370,   373,   375,   377,
+     379,   381,   383,   385,   388,   391,   394,   396,   398,   400,
+     402,   404,   406,   408,   410,   412,   415,   418,   420,   423,
+     425,   427,   429,   431,   433,   435,   437,   439,   442,   445,
+     448,   452,   454,   457,   460,   463,   466,   469,   472,   476,
+     479,   481,   483,   485,   487,   489,   491,   493,   495,   498,
+     499,   504,   506,   507,   510,   512,   515,   518,   521,   523,
+     525,   529,   533,   535,   537,   539,   541,   543,   545,   547,
+     549,   551,   554,   556,   559,   561,   563,   565,   571,   574,
+     576,   579,   581,   583,   585,   587,   589,   591,   597,   599,
+     603,   606,   610,   614,   617,   619,   625,   630,   634,   637,
+     639,   646,   650,   653,   657,   661,   665,   669
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
      172,     0,    -1,   173,    -1,   173,   174,   155,    -1,   174,
-     155,    -1,     1,   155,    -1,    -1,   175,    -1,   181,    -1,
-     183,    -1,   184,    -1,   191,    -1,   197,    -1,   188,    -1,
-     202,    -1,   205,    -1,   208,    -1,   211,    -1,   230,    -1,
-     176,   177,   179,    -1,   176,   177,    -1,   123,    -1,   109,
-      -1,   104,    -1,    13,    -1,    74,    -1,   178,    -1,    57,
-     132,    -1,    59,   132,    -1,   132,    -1,   179,   180,    -1,
-     180,    -1,     7,    -1,    12,   229,    -1,    16,    -1,    50,
-      -1,    61,    54,    -1,    83,    54,    -1,    79,    54,    -1,
-      95,    -1,   111,    -1,   112,    -1,   141,    -1,   151,    -1,
-     143,    54,    -1,    85,    54,    -1,   147,    54,    -1,   182,
-     177,    -1,   145,    -1,   146,    -1,    14,    -1,    75,   227,
-      -1,    88,   227,    -1,     8,    54,    -1,    22,    54,    -1,
-      23,   185,    -1,    62,   132,    -1,    63,   132,    -1,   119,
-      54,    -1,   121,    54,    -1,   142,   223,    -1,   101,   132,
-      -1,   186,    -1,    -1,   186,   187,    -1,   187,    -1,    48,
-     132,    -1,    51,   132,    -1,   114,   132,    -1,   116,   132,
-      -1,   125,   132,    -1,    27,   132,    -1,   121,    54,    -1,
-     139,   189,    -1,   189,   190,    -1,   190,    -1,    19,    54,
-      -1,    45,    54,    -1,    21,   228,    -1,   102,    54,    -1,
-      81,   229,    -1,    78,   229,    -1,    80,   229,    -1,    77,
-     229,    -1,    84,    54,    -1,    11,    54,    -1,   126,   192,
-      -1,   128,   132,    -1,    39,   193,   194,    -1,   192,   193,
-      -1,   193,    -1,    20,    -1,    24,    -1,    72,    -1,   105,
-      -1,   117,    -1,   133,    -1,   137,    -1,   113,    -1,   194,
-     195,    -1,   195,    -1,    -1,    38,   132,    -1,   144,   196,
-      -1,    68,    -1,    90,    -1,    35,    -1,    28,    -1,    92,
-      -1,   107,    -1,    25,    -1,   149,    -1,    87,    -1,   152,
-      -1,     3,    -1,    29,   200,    -1,   120,   177,   198,    -1,
-     120,    26,   198,    -1,   120,    57,    26,   198,    -1,   120,
-      59,    26,   198,    -1,   120,   178,    76,   178,   198,    -1,
-      -1,   198,   199,    -1,    44,    -1,    52,    -1,    64,    -1,
-      65,    -1,    67,    -1,    73,    -1,    91,    -1,    93,    -1,
-      94,    -1,    96,    -1,    97,    -1,    98,    -1,   100,    -1,
-     147,    -1,   200,   201,    -1,   201,    -1,     9,    54,    -1,
-      82,    54,    -1,    86,    54,    -1,    47,   177,   203,    -1,
-     203,   204,    -1,   204,    -1,   135,   229,    -1,   136,   229,
-      -1,   131,    54,    -1,   118,   132,    -1,    40,   228,    -1,
-      41,   228,    -1,    42,   228,    -1,    43,   228,    -1,    35,
-     206,    -1,    28,   206,    -1,   206,   207,    -1,   207,    -1,
+     155,    -1,     1,   155,    -1,    -1,   175,    -1,   186,    -1,
+     188,    -1,   189,    -1,   198,    -1,   206,    -1,   193,    -1,
+     212,    -1,   217,    -1,   221,    -1,   225,    -1,   248,    -1,
+     176,   177,   180,    -1,   176,   177,    -1,   123,    -1,   109,
+      -1,   104,    -1,    13,    -1,    74,    -1,   178,    -1,   179,
+     132,    -1,   132,    -1,    57,    -1,    59,    -1,   180,   181,
+      -1,   181,    -1,   182,    -1,   184,    -1,    12,   247,    -1,
+     183,    -1,     7,    -1,    16,    -1,    50,    -1,    95,    -1,
+     111,    -1,   112,    -1,   141,    -1,   151,    -1,   185,    54,
+      -1,    61,    -1,    83,    -1,    79,    -1,   143,    -1,    85,
+      -1,   147,    -1,   187,   177,    -1,   145,    -1,   146,    -1,
+      14,    -1,    75,   245,    -1,    88,   245,    -1,     8,    54,
+      -1,    22,    54,    -1,    23,   190,    -1,    62,   132,    -1,
+      63,   132,    -1,   119,    54,    -1,   121,    54,    -1,   142,
+     241,    -1,   101,   132,    -1,    -1,   190,   191,    -1,   192,
+     132,    -1,   121,    54,    -1,    48,    -1,    51,    -1,   114,
+      -1,   116,    -1,   125,    -1,    27,    -1,   139,   194,    -1,
+     194,   195,    -1,   195,    -1,   196,    54,    -1,   197,   247,
+      -1,    21,   246,    -1,    19,    -1,    45,    -1,   102,    -1,
+      84,    -1,    11,    -1,    81,    -1,    78,    -1,    80,    -1,
+      77,    -1,   126,   199,    -1,   128,   132,    -1,    39,   200,
+     201,    -1,   199,   200,    -1,   200,    -1,    20,    -1,    24,
+      -1,    72,    -1,   105,    -1,   117,    -1,   133,    -1,   137,
+      -1,   113,    -1,    -1,   201,   202,    -1,    38,   132,    -1,
+     144,   205,    -1,   203,    -1,   204,    -1,    68,    -1,    90,
+      -1,    35,    -1,    28,    -1,    92,    -1,   107,    -1,    25,
+      -1,   149,    -1,    87,    -1,   152,    -1,     3,    -1,    29,
+     209,    -1,   120,   177,   207,    -1,   120,    26,   207,    -1,
+     120,    57,    26,   207,    -1,   120,    59,    26,   207,    -1,
+     120,   178,    76,   178,   207,    -1,    -1,   207,   208,    -1,
+      44,    -1,    52,    -1,    64,    -1,    65,    -1,    67,    -1,
+      73,    -1,    91,    -1,    93,    -1,    94,    -1,    96,    -1,
+      97,    -1,    98,    -1,   100,    -1,   147,    -1,   209,   210,
+      -1,   210,    -1,   211,    54,    -1,     9,    -1,    82,    -1,
+      86,    -1,    47,   177,   213,    -1,   213,   214,    -1,   214,
+      -1,   215,   247,    -1,   216,   246,    -1,   131,    54,    -1,
+     118,   132,    -1,   135,    -1,   136,    -1,    40,    -1,    41,
+      -1,    42,    -1,    43,    -1,    35,   218,    -1,    28,   218,
+      -1,   218,   219,    -1,   219,    -1,   220,    -1,   127,    -1,
        6,    -1,    10,    -1,    17,    -1,    60,    -1,    86,    -1,
-      99,    -1,   127,    -1,   138,   209,    -1,   209,   210,    -1,
-     210,    -1,     5,   229,    -1,    30,   229,    -1,    46,   229,
-      -1,    49,   229,    -1,   103,   229,    -1,   129,   229,    -1,
-     130,   229,    -1,   218,    -1,    53,   132,   174,    -1,    36,
-      -1,    15,   229,    -1,    18,    54,    -1,   134,   229,    -1,
-      32,   212,    -1,    66,   132,    -1,   108,   132,    -1,    71,
-     132,    -1,    70,   216,    -1,   106,   226,    -1,   122,   132,
-      -1,   124,   213,    -1,   140,   178,    -1,   140,   178,   214,
-      -1,   143,   222,    -1,   115,   132,    -1,   132,    -1,   132,
-      31,    -1,    -1,   132,   166,   132,    26,    -1,   132,   166,
-     132,    -1,   214,   215,    -1,   215,    -1,   110,    54,    -1,
-      55,   178,    -1,   216,   217,    -1,   217,    -1,   132,    -1,
-     219,   221,   220,    -1,   219,   221,   132,    -1,    55,    -1,
-      89,    -1,     4,    -1,    56,    -1,    58,    -1,   150,    -1,
-      69,    -1,    52,    -1,    33,    -1,   222,    54,    -1,    54,
-      -1,   223,   224,    -1,   224,    -1,    54,    -1,   225,    -1,
-     167,    54,    34,    54,   168,    -1,   226,   132,    -1,   132,
-      -1,   227,   177,    -1,   177,    -1,    54,    -1,   141,    -1,
-      37,    -1,    54,    -1,    31,    -1,   231,   169,   232,   234,
-     170,    -1,   156,    -1,   232,   233,   155,    -1,   233,   155,
-      -1,   157,   166,   229,    -1,   158,   166,   229,    -1,   234,
-     235,    -1,   235,    -1,   237,   169,   236,   238,   170,    -1,
-     159,   166,   229,   155,    -1,   123,   166,   177,    -1,   238,
-     239,    -1,   239,    -1,   160,   166,   229,   169,   240,   170,
-      -1,   240,   241,   155,    -1,   241,   155,    -1,   161,   166,
-     229,    -1,   162,   166,   229,    -1,   163,   166,   229,    -1,
-     164,   166,   229,    -1,   165,   166,   229,    -1
+      99,    -1,   138,   222,    -1,   222,   223,    -1,   223,    -1,
+     224,   247,    -1,     5,    -1,    30,    -1,    46,    -1,    49,
+      -1,   103,    -1,   129,    -1,   130,    -1,   236,    -1,   226,
+     247,    -1,   227,   132,    -1,   228,   132,    -1,    53,   132,
+     174,    -1,    36,    -1,    18,    54,    -1,    32,   229,    -1,
+      70,   234,    -1,   106,   244,    -1,   124,   230,    -1,   140,
+     178,    -1,   140,   178,   232,    -1,   143,   240,    -1,    15,
+      -1,   134,    -1,    66,    -1,   108,    -1,   115,    -1,    71,
+      -1,   122,    -1,   132,    -1,   132,    31,    -1,    -1,   132,
+     166,   132,   231,    -1,    26,    -1,    -1,   232,   233,    -1,
+     233,    -1,   110,    54,    -1,    55,   178,    -1,   234,   235,
+      -1,   235,    -1,   132,    -1,   237,   239,   238,    -1,   237,
+     239,   132,    -1,    55,    -1,    89,    -1,     4,    -1,    56,
+      -1,    58,    -1,   150,    -1,    69,    -1,    52,    -1,    33,
+      -1,   240,    54,    -1,    54,    -1,   241,   242,    -1,   242,
+      -1,    54,    -1,   243,    -1,   167,    54,    34,    54,   168,
+      -1,   244,   132,    -1,   132,    -1,   245,   177,    -1,   177,
+      -1,    54,    -1,   141,    -1,    37,    -1,    54,    -1,    31,
+      -1,   249,   169,   250,   252,   170,    -1,   156,    -1,   250,
+     251,   155,    -1,   251,   155,    -1,   157,   166,   247,    -1,
+     158,   166,   247,    -1,   252,   253,    -1,   253,    -1,   255,
+     169,   254,   256,   170,    -1,   159,   166,   247,   155,    -1,
+     123,   166,   177,    -1,   256,   257,    -1,   257,    -1,   160,
+     166,   247,   169,   258,   170,    -1,   258,   259,   155,    -1,
+     259,   155,    -1,   161,   166,   247,    -1,   162,   166,   247,
+      -1,   163,   166,   247,    -1,   164,   166,   247,    -1,   165,
+     166,   247,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   300,   300,   304,   305,   306,   320,   321,   322,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,   332,   340,
-     346,   355,   356,   357,   358,   359,   363,   364,   365,   369,
-     373,   374,   378,   379,   380,   381,   382,   383,   384,   385,
-     386,   387,   388,   389,   390,   391,   392,   401,   409,   410,
-     420,   422,   424,   435,   437,   439,   444,   446,   448,   450,
-     452,   454,   459,   461,   465,   472,   482,   484,   486,   488,
-     490,   492,   494,   511,   516,   517,   521,   523,   525,   527,
-     529,   531,   533,   535,   537,   539,   549,   551,   560,   568,
-     569,   573,   574,   575,   576,   577,   578,   579,   580,   584,
-     591,   599,   603,   613,   622,   631,   640,   641,   645,   646,
-     647,   648,   649,   650,   651,   660,   664,   669,   674,   687,
-     700,   709,   710,   715,   716,   717,   718,   719,   720,   721,
-     722,   723,   724,   725,   726,   727,   728,   732,   734,   739,
-     740,   741,   749,   754,   756,   761,   762,   763,   764,   765,
-     766,   767,   768,   776,   778,   783,   790,   800,   801,   802,
-     803,   804,   805,   806,   822,   826,   827,   831,   832,   833,
-     834,   835,   836,   837,   846,   847,   863,   869,   871,   873,
-     875,   877,   880,   882,   893,   895,   897,   907,   909,   911,
-     913,   915,   920,   922,   926,   930,   932,   937,   939,   943,
-     944,   948,   949,   953,   968,   973,   981,   982,   986,   987,
-     988,   989,   993,   994,   995,  1005,  1006,  1010,  1012,  1017,
-    1019,  1023,  1028,  1029,  1033,  1034,  1038,  1047,  1048,  1052,
-    1053,  1062,  1077,  1081,  1082,  1086,  1087,  1091,  1092,  1096,
-    1101,  1105,  1109,  1110,  1114,  1119,  1120,  1124,  1126,  1128,
-    1130,  1132
+       0,   318,   318,   322,   323,   324,   338,   339,   340,   341,
+     342,   343,   344,   345,   346,   347,   348,   349,   350,   358,
+     364,   373,   374,   375,   376,   377,   381,   382,   387,   392,
+     394,   399,   400,   404,   405,   406,   411,   416,   417,   418,
+     419,   420,   421,   422,   423,   427,   432,   433,   434,   435,
+     436,   437,   447,   455,   456,   466,   468,   470,   481,   483,
+     485,   490,   492,   494,   496,   498,   500,   506,   507,   517,
+     519,   531,   532,   533,   534,   535,   536,   545,   550,   551,
+     555,   557,   559,   564,   565,   566,   567,   568,   572,   573,
+     574,   575,   584,   586,   595,   603,   604,   608,   609,   610,
+     611,   612,   613,   614,   615,   620,   621,   631,   641,   650,
+     665,   670,   671,   675,   676,   680,   681,   682,   683,   684,
+     685,   686,   695,   699,   704,   709,   722,   735,   744,   745,
+     750,   751,   752,   753,   754,   755,   756,   757,   758,   759,
+     760,   761,   762,   763,   767,   769,   774,   779,   780,   781,
+     790,   795,   797,   802,   804,   806,   808,   813,   814,   818,
+     819,   820,   821,   830,   832,   837,   844,   854,   856,   868,
+     869,   870,   871,   872,   873,   882,   886,   887,   891,   896,
+     897,   898,   899,   900,   901,   902,   911,   912,   919,   926,
+     942,   961,   966,   968,   970,   972,   974,   976,   978,   980,
+     985,   986,   990,   991,   992,   996,   997,  1001,  1003,  1007,
+    1011,  1016,  1018,  1022,  1024,  1028,  1029,  1033,  1034,  1038,
+    1053,  1058,  1066,  1067,  1071,  1072,  1073,  1074,  1078,  1079,
+    1080,  1090,  1091,  1095,  1097,  1102,  1104,  1108,  1113,  1114,
+    1118,  1119,  1123,  1132,  1133,  1137,  1138,  1147,  1162,  1166,
+    1167,  1171,  1172,  1176,  1177,  1181,  1186,  1190,  1194,  1195,
+    1199,  1204,  1205,  1209,  1211,  1213,  1215,  1217
 };
 #endif
 
@@ -955,20 +956,26 @@ static const char *const yytname[] =
   "T_Server_Offset", "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter",
   "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'",
   "$accept", "configuration", "command_list", "command", "server_command",
-  "client_type", "address", "ip_address", "option_list", "option",
-  "unpeer_command", "unpeer_keyword", "other_mode_command",
-  "authentication_command", "crypto_command_line", "crypto_command_list",
-  "crypto_command", "orphan_mode_command", "tos_option_list", "tos_option",
-  "monitoring_command", "stats_list", "stat", "filegen_option_list",
-  "filegen_option", "filegen_type", "access_control_command",
-  "ac_flag_list", "access_control_flag", "discard_option_list",
-  "discard_option", "fudge_command", "fudge_factor_list", "fudge_factor",
+  "client_type", "address", "ip_address", "address_fam", "option_list",
+  "option", "option_flag", "option_flag_keyword", "option_int",
+  "option_int_keyword", "unpeer_command", "unpeer_keyword",
+  "other_mode_command", "authentication_command", "crypto_command_list",
+  "crypto_command", "crypto_str_keyword", "orphan_mode_command",
+  "tos_option_list", "tos_option", "tos_option_int_keyword",
+  "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
+  "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
+  "filegen_type", "access_control_command", "ac_flag_list",
+  "access_control_flag", "discard_option_list", "discard_option",
+  "discard_option_keyword", "fudge_command", "fudge_factor_list",
+  "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
   "system_option_command", "system_option_list", "system_option",
-  "tinker_command", "tinker_option_list", "tinker_option",
-  "miscellaneous_command", "drift_parm", "variable_assign",
-  "trap_option_list", "trap_option", "log_config_list",
-  "log_config_command", "interface_command", "interface_nic",
-  "nic_rule_class", "nic_rule_action", "integer_list",
+  "system_option_flag_keyword", "tinker_command", "tinker_option_list",
+  "tinker_option", "tinker_option_keyword", "miscellaneous_command",
+  "misc_cmd_dbl_keyword", "misc_cmd_str_keyword",
+  "misc_cmd_str_lcl_keyword", "drift_parm", "variable_assign",
+  "t_default_or_zero", "trap_option_list", "trap_option",
+  "log_config_list", "log_config_command", "interface_command",
+  "interface_nic", "nic_rule_class", "nic_rule_action", "integer_list",
   "integer_list_range", "integer_list_range_elt", "integer_range",
   "string_list", "address_list", "boolean", "number", "simulate_command",
   "sim_conf_start", "sim_init_statement_list", "sim_init_statement",
@@ -1004,34 +1011,35 @@ static const yytype_uint16 yytoknum[] =
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
+static const yytype_uint16 yyr1[] =
 {
        0,   171,   172,   173,   173,   173,   174,   174,   174,   174,
      174,   174,   174,   174,   174,   174,   174,   174,   174,   175,
-     175,   176,   176,   176,   176,   176,   177,   177,   177,   178,
-     179,   179,   180,   180,   180,   180,   180,   180,   180,   180,
-     180,   180,   180,   180,   180,   180,   180,   181,   182,   182,
-     183,   183,   183,   184,   184,   184,   184,   184,   184,   184,
-     184,   184,   185,   185,   186,   186,   187,   187,   187,   187,
-     187,   187,   187,   188,   189,   189,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   191,   191,   191,   192,
-     192,   193,   193,   193,   193,   193,   193,   193,   193,   194,
-     194,   194,   195,   195,   195,   195,   195,   195,   196,   196,
-     196,   196,   196,   196,   196,   197,   197,   197,   197,   197,
-     197,   198,   198,   199,   199,   199,   199,   199,   199,   199,
-     199,   199,   199,   199,   199,   199,   199,   200,   200,   201,
-     201,   201,   202,   203,   203,   204,   204,   204,   204,   204,
-     204,   204,   204,   205,   205,   206,   206,   207,   207,   207,
-     207,   207,   207,   207,   208,   209,   209,   210,   210,   210,
-     210,   210,   210,   210,   211,   211,   211,   211,   211,   211,
-     211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
-     211,   211,   212,   212,   212,   213,   213,   214,   214,   215,
-     215,   216,   216,   217,   218,   218,   219,   219,   220,   220,
-     220,   220,   221,   221,   221,   222,   222,   223,   223,   224,
-     224,   225,   226,   226,   227,   227,   228,   228,   228,   229,
-     229,   230,   231,   232,   232,   233,   233,   234,   234,   235,
-     236,   237,   238,   238,   239,   240,   240,   241,   241,   241,
-     241,   241
+     175,   176,   176,   176,   176,   176,   177,   177,   178,   179,
+     179,   180,   180,   181,   181,   181,   182,   183,   183,   183,
+     183,   183,   183,   183,   183,   184,   185,   185,   185,   185,
+     185,   185,   186,   187,   187,   188,   188,   188,   189,   189,
+     189,   189,   189,   189,   189,   189,   189,   190,   190,   191,
+     191,   192,   192,   192,   192,   192,   192,   193,   194,   194,
+     195,   195,   195,   196,   196,   196,   196,   196,   197,   197,
+     197,   197,   198,   198,   198,   199,   199,   200,   200,   200,
+     200,   200,   200,   200,   200,   201,   201,   202,   202,   202,
+     202,   203,   203,   204,   204,   205,   205,   205,   205,   205,
+     205,   205,   206,   206,   206,   206,   206,   206,   207,   207,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   209,   209,   210,   211,   211,   211,
+     212,   213,   213,   214,   214,   214,   214,   215,   215,   216,
+     216,   216,   216,   217,   217,   218,   218,   219,   219,   220,
+     220,   220,   220,   220,   220,   221,   222,   222,   223,   224,
+     224,   224,   224,   224,   224,   224,   225,   225,   225,   225,
+     225,   225,   225,   225,   225,   225,   225,   225,   225,   225,
+     226,   226,   227,   227,   227,   228,   228,   229,   229,   229,
+     230,   231,   231,   232,   232,   233,   233,   234,   234,   235,
+     236,   236,   237,   237,   238,   238,   238,   238,   239,   239,
+     239,   240,   240,   241,   241,   242,   242,   243,   244,   244,
+     245,   245,   246,   246,   246,   247,   247,   248,   249,   250,
+     250,   251,   251,   252,   252,   253,   254,   255,   256,   256,
+     257,   258,   258,   259,   259,   259,   259,   259
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1039,90 +1047,90 @@ static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     3,     2,     2,     0,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       2,     1,     1,     1,     1,     1,     1,     2,     1,     1,
+       1,     2,     1,     1,     1,     2,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     1,     1,     1,     1,
+       1,     1,     2,     1,     1,     1,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     0,     2,     2,
        2,     1,     1,     1,     1,     1,     1,     2,     2,     1,
-       2,     1,     1,     2,     1,     1,     2,     2,     2,     1,
-       1,     1,     1,     1,     2,     2,     2,     2,     1,     1,
-       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     1,     0,     2,     1,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       1,     0,     2,     2,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     3,     3,     4,     4,
-       5,     0,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     1,     2,
-       2,     2,     3,     2,     1,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     2,     1,     2,     2,     2,
-       2,     2,     2,     2,     1,     3,     1,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
-       2,     2,     1,     2,     0,     4,     3,     2,     1,     2,
-       2,     2,     1,     1,     3,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     1,     2,     1,     1,
-       1,     5,     2,     1,     2,     1,     1,     1,     1,     1,
-       1,     5,     1,     3,     2,     3,     3,     2,     1,     5,
-       4,     3,     2,     1,     6,     3,     2,     3,     3,     3,
-       3,     3
+       2,     2,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     2,     3,     2,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     2,     2,     2,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     3,     3,     4,     4,     5,     0,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
+       3,     2,     1,     2,     2,     2,     2,     1,     1,     1,
+       1,     1,     1,     2,     2,     2,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     2,     1,     2,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
+       3,     1,     2,     2,     2,     2,     2,     2,     3,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
+       4,     1,     0,     2,     1,     2,     2,     2,     1,     1,
+       3,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     1,     2,     1,     1,     1,     5,     2,     1,
+       2,     1,     1,     1,     1,     1,     1,     5,     1,     3,
+       2,     3,     3,     2,     1,     5,     4,     3,     2,     1,
+       6,     3,     2,     3,     3,     3,     3,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+static const yytype_uint16 yydefact[] =
 {
-       0,     0,     0,    24,    50,     0,     0,     0,    63,     0,
-       0,   194,     0,   176,     0,     0,     0,   206,     0,     0,
-       0,     0,     0,    25,     0,     0,   207,     0,    23,     0,
-       0,    22,     0,     0,     0,     0,     0,    21,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    48,    49,   232,
+       0,     0,     0,    24,    55,   200,     0,     0,    67,     0,
+       0,   209,     0,   191,     0,     0,     0,   222,     0,     0,
+     202,     0,   205,    25,     0,     0,   223,     0,    23,     0,
+     203,    22,   204,     0,     0,     0,   206,    21,     0,     0,
+       0,   201,     0,     0,     0,     0,     0,    53,    54,   248,
        0,     2,     0,     7,     0,     8,     0,     9,    10,    13,
-      11,    12,    14,    15,    16,    17,   174,     0,    18,     0,
-       5,    53,   230,   229,   177,   178,    54,     0,     0,     0,
-       0,     0,     0,     0,    55,    62,    65,   157,   158,   159,
-     160,   161,   162,   163,   154,   156,     0,     0,     0,   115,
-     138,   192,   180,   153,    91,    92,    93,    94,    98,    95,
-      96,    97,   101,     0,     0,    29,     0,    26,     6,    56,
-      57,   181,   203,   184,   202,   183,   225,    51,    52,    61,
-     223,   185,   182,   191,    58,   121,     0,     0,   121,    26,
-      59,   186,     0,   187,    86,    90,    87,   179,     0,     0,
-       0,     0,     0,     0,     0,   164,   166,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    73,    75,   188,
-     219,     0,    60,   218,   220,   216,   190,     1,     0,     4,
-      20,    47,   214,   213,   212,     0,     0,    71,    66,    67,
-      68,    69,    72,    70,    64,   155,   139,   140,   141,   137,
-     193,   107,   106,     0,   104,   105,     0,    88,   100,    27,
-      28,     0,     0,     0,     0,     0,     0,     0,     0,   142,
-     144,   175,   201,   224,   222,   117,   121,   121,   116,     0,
-       0,    89,   167,   168,   169,   170,   171,   172,   173,   165,
-      85,    76,   228,   226,   227,    78,    77,    83,    81,    82,
-      80,    84,    79,    74,     0,     0,   189,   198,     0,   217,
-     215,     3,    32,     0,    34,    35,     0,     0,     0,     0,
-      39,    40,    41,    42,     0,     0,    43,    19,    31,   208,
-     209,   210,   205,   211,   204,     0,     0,     0,     0,   102,
-     114,   110,   112,   108,   109,   111,   113,   103,    99,   149,
-     150,   151,   152,   148,   147,   145,   146,   143,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   122,   118,   119,   121,   196,   200,   199,   197,
-       0,    33,    36,    38,    37,    45,    44,    46,    30,     0,
-       0,     0,     0,     0,   238,     0,   234,   120,   195,     0,
-     235,   236,     0,   233,   231,   237,     0,   221,   241,     0,
-       0,     0,     0,     0,   243,     0,     0,   239,   242,   240,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   244,     0,   246,   247,   248,   249,
-     250,   251,   245
+      11,    12,    14,    15,    16,    17,     0,     0,     0,   186,
+       0,    18,     0,     5,    58,   192,    59,    60,   169,   170,
+     171,   172,   173,   174,   168,   164,   166,   167,   147,   148,
+     149,   122,   145,     0,   207,   193,   163,    97,    98,    99,
+     100,   104,   101,   102,   103,   105,    29,    30,    28,     0,
+      26,     0,     6,    61,    62,   219,   194,   218,   241,    56,
+      57,    66,   239,   195,    63,   128,    29,    30,   128,    26,
+      64,     0,   196,    92,    96,    93,   179,   180,   181,   182,
+     183,   184,   185,   175,   177,     0,    87,    83,     0,    84,
+      91,    89,    90,    88,    86,    85,    77,    79,     0,     0,
+     197,   235,     0,    65,   234,   236,   232,   199,     1,     0,
+       4,    20,    52,   246,   245,   187,   188,   189,   230,   229,
+     228,     0,     0,    76,    71,    72,    73,    74,     0,    75,
+      68,     0,   165,   144,   146,   208,    94,   159,   160,   161,
+     162,     0,     0,   157,   158,   150,   152,     0,     0,    27,
+     190,   217,   240,   238,   124,   128,   128,   123,     0,     0,
+      95,   176,   178,   244,   242,   243,    82,    78,    80,    81,
+       0,     0,   198,   214,     0,   233,   231,     3,    37,     0,
+      38,    39,    46,    48,    47,    50,    40,    41,    42,    43,
+      49,    51,    44,    19,    32,    33,    36,    34,     0,   224,
+     225,   226,   221,   227,   220,     0,     0,     0,     0,    70,
+      69,   114,   113,     0,   111,   112,     0,   106,   109,   110,
+     156,   155,   151,   153,   154,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   129,
+     125,   126,   128,   212,   216,   215,   213,     0,    35,    31,
+      45,     0,     0,     0,     0,     0,   254,     0,   250,   107,
+     121,   117,   119,   115,   116,   118,   120,   108,   127,   211,
+     210,     0,   251,   252,     0,   249,   247,   253,     0,   237,
+     257,     0,     0,     0,     0,     0,   259,     0,     0,   255,
+     258,   256,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   260,     0,   262,   263,
+     264,   265,   266,   267,   261
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    50,    51,    52,    53,    54,   126,   117,   277,   278,
-      55,    56,    57,    58,    84,    85,    86,    59,   167,   168,
-      60,   144,   112,   207,   208,   297,    61,   225,   322,    99,
-     100,    62,   219,   220,    63,    94,    95,    64,   155,   156,
-      65,   102,   143,   256,   257,   123,   124,    66,    67,   284,
-     185,   176,   172,   173,   174,   131,   127,   245,    74,    68,
-      69,   287,   288,   343,   344,   360,   345,   363,   364,   377,
-     378
+      -1,    50,    51,    52,    53,    54,   118,   110,   111,   253,
+     254,   255,   256,   257,   258,    55,    56,    57,    58,    77,
+     190,   191,    59,   156,   157,   158,   159,    60,   133,   105,
+     196,   277,   278,   279,   327,    61,   214,   299,    91,    92,
+      93,    62,   205,   206,   207,   208,    63,    85,    86,    87,
+      64,   143,   144,   145,    65,    66,    67,    68,    95,   132,
+     330,   232,   233,   116,   117,    69,    70,   264,   181,   167,
+     163,   164,   165,   123,   119,   226,   175,    71,    72,   267,
+     268,   315,   316,   342,   317,   345,   346,   359,   360
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1130,59 +1138,58 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -145
 static const yytype_int16 yypact[] =
 {
-      26,  -137,   -31,  -145,  -145,   -17,   -25,   -19,   164,    76,
-      -2,  -111,    76,  -145,   135,   -29,   -96,  -145,   -94,   -86,
-     -72,   -69,   -65,  -145,   -29,   -29,  -145,   -58,  -145,   -56,
-     -55,  -145,   -54,    29,     7,    31,   -38,  -145,   -37,   135,
-     -34,   -17,    94,   454,   -30,   -51,    51,  -145,  -145,  -145,
-     104,   247,   -49,  -145,   -29,  -145,   -29,  -145,  -145,  -145,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,    18,  -145,   -40,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,    -1,     6,    12,
-      21,    35,   107,    38,  -145,   164,  -145,  -145,  -145,  -145,
-    -145,  -145,  -145,  -145,    76,  -145,   109,   119,   120,    -2,
-    -145,   127,  -145,    76,  -145,  -145,  -145,  -145,  -145,  -145,
-    -145,  -145,   -18,    46,    47,  -145,   188,  -145,   383,  -145,
-    -145,  -145,  -145,   -69,  -145,  -145,  -145,   -29,   -29,  -145,
-    -145,    48,  -145,  -145,  -145,  -145,    -7,    -4,  -145,   108,
-    -145,  -145,    17,  -145,   135,  -145,  -145,  -145,   -17,   -17,
-     -17,   -17,   -17,   -17,   -17,    94,  -145,   132,   133,    15,
-     134,   -17,   -17,   -17,   -17,   136,   138,   454,  -145,   -42,
-    -145,   140,   -51,  -145,  -145,  -145,   144,  -145,    40,  -145,
-     435,  -145,  -145,  -145,  -145,     1,  -126,  -145,  -145,  -145,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
-    -145,  -145,  -145,    68,  -145,  -145,    50,   -18,  -145,  -145,
-    -145,    15,    15,    15,    15,    69,   150,   -17,   -17,   188,
-    -145,  -145,  -145,  -145,  -145,   141,  -145,  -145,   141,   -30,
-      77,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
+     126,  -121,   -19,  -145,  -145,  -145,    -2,    -1,  -145,     8,
+      20,   -95,     8,  -145,    47,   -46,   -78,  -145,   -76,   -73,
+    -145,   -72,  -145,  -145,   -46,   -46,  -145,   -71,  -145,   -67,
+    -145,  -145,  -145,    12,   -17,    19,  -145,  -145,   -58,    47,
+     -56,  -145,     0,   295,   -55,   -47,    24,  -145,  -145,  -145,
+      80,   262,   -70,  -145,   -46,  -145,   -46,  -145,  -145,  -145,
+    -145,  -145,  -145,  -145,  -145,  -145,   -10,   -50,   -49,  -145,
+       3,  -145,   -85,  -145,  -145,  -145,  -145,   142,  -145,  -145,
+    -145,  -145,  -145,  -145,  -145,     8,  -145,  -145,  -145,  -145,
+    -145,    20,  -145,    33,    58,  -145,     8,  -145,  -145,  -145,
+    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,   168,
+    -145,   -36,   398,  -145,  -145,  -145,   -72,  -145,  -145,   -46,
+     -46,  -145,  -145,   -34,  -145,  -145,    71,    73,  -145,    25,
+    -145,   -57,  -145,    47,  -145,  -145,  -145,  -145,  -145,  -145,
+    -145,  -145,  -145,     0,  -145,   -10,  -145,  -145,    -9,  -145,
+    -145,  -145,  -145,  -145,  -145,  -145,   295,  -145,    57,   -10,
+     -35,  -145,    59,   -47,  -145,  -145,  -145,    63,  -145,   -37,
+    -145,    31,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
+    -145,     6,  -126,  -145,  -145,  -145,  -145,  -145,    74,  -145,
+    -145,   -20,  -145,  -145,  -145,  -145,   -11,  -145,  -145,  -145,
+    -145,     4,    77,  -145,  -145,   168,  -145,   -10,    -9,  -145,
+    -145,  -145,  -145,  -145,   483,  -145,  -145,   483,   -55,     5,
     -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
-    -145,  -145,  -145,  -145,   -30,   156,   -42,  -145,   177,  -145,
-    -145,  -145,  -145,   -17,  -145,  -145,   159,   172,   173,   179,
-    -145,  -145,  -145,  -145,   182,   193,  -145,   435,  -145,  -145,
-    -145,  -145,  -145,  -145,  -145,    83,    84,  -115,    96,  -145,
+     -55,    91,   -35,  -145,   112,  -145,  -145,  -145,  -145,   -10,
     -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
+    -145,  -145,  -145,    31,  -145,  -145,  -145,  -145,    93,  -145,
+    -145,  -145,  -145,  -145,  -145,    -7,    -3,  -107,    -4,  -145,
+    -145,  -145,  -145,    34,  -145,  -145,     1,  -145,  -145,  -145,
     -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
     -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
-    -145,  -145,  -145,   141,   141,  -145,   227,  -145,  -145,  -145,
-     200,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,   -17,
-     -17,    97,   111,  -114,  -145,    95,  -145,   141,  -145,    99,
-    -145,  -145,   -29,  -145,  -145,  -145,   112,  -145,  -145,   115,
-     113,   -17,   118,  -144,  -145,   122,   -17,  -145,  -145,  -145,
-     105,    81,   121,   124,   125,   126,   129,    55,   142,   -17,
-     -17,   -17,   -17,   -17,  -145,   146,  -145,  -145,  -145,  -145,
-    -145,  -145,  -145
+     483,   483,  -145,   131,  -145,  -145,  -145,   116,  -145,  -145,
+    -145,   -10,   -10,     9,    16,  -100,  -145,     7,  -145,  -145,
+    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,   483,  -145,
+    -145,    15,  -145,  -145,   -46,  -145,  -145,  -145,    26,  -145,
+    -145,    21,    35,   -10,    28,  -112,  -145,    36,   -10,  -145,
+    -145,  -145,    37,   -40,    39,    41,    46,    50,    62,    61,
+      48,   -10,   -10,   -10,   -10,   -10,  -145,    78,  -145,  -145,
+    -145,  -145,  -145,  -145,  -145
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -145,  -145,  -145,   -47,  -145,  -145,    -9,   -33,  -145,    16,
-    -145,  -145,  -145,  -145,  -145,  -145,   211,  -145,  -145,   137,
-    -145,  -145,   -27,  -145,    98,  -145,  -145,  -136,  -145,  -145,
-     204,  -145,  -145,    88,  -145,   296,   -79,  -145,  -145,   157,
-    -145,  -145,  -145,  -145,    58,  -145,   192,  -145,  -145,  -145,
-    -145,  -145,  -145,   139,  -145,  -145,   291,    45,   -41,  -145,
-    -145,  -145,    39,  -145,   -16,  -145,  -145,  -145,   -35,  -145,
-     -48
+    -145,  -145,  -145,   -43,  -145,  -145,   -15,   -32,  -145,  -145,
+     -51,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
+    -145,  -145,  -145,  -145,    81,  -145,  -145,  -145,  -145,   -33,
+    -145,  -145,  -145,  -145,  -145,  -145,  -125,  -145,  -145,   122,
+    -145,  -145,  -145,    38,  -145,  -145,  -145,   217,   -63,  -145,
+    -145,  -145,    95,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
+    -145,  -145,    10,  -145,   120,  -145,  -145,  -145,  -145,  -145,
+    -145,    76,  -145,  -145,   215,    43,  -144,  -145,  -145,  -145,
+     -23,  -145,   -62,  -145,  -145,  -145,   -90,  -145,  -102
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1192,174 +1199,182 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-     147,   139,   228,   170,   178,   279,   116,    96,   341,   341,
-     201,   169,   145,   254,    72,   195,   362,   202,    70,   226,
-     203,   101,   227,    71,   195,   138,   367,     1,   113,    75,
-     114,   285,   286,   135,     2,    76,   118,    73,   119,     3,
-       4,     5,   285,   286,     6,   180,   120,   181,     7,     8,
-     204,   182,   242,   290,     9,    10,   354,   280,    11,   281,
-     121,    12,    13,   122,   136,    14,   137,   125,   255,   243,
-     183,   221,   205,    15,   129,   291,   130,   132,   133,    16,
-      97,    17,    87,   134,    98,   140,    88,   184,    18,    19,
-     323,   324,    20,    89,   141,   142,    21,    22,   146,   148,
-      23,    24,   115,   115,   177,   175,   179,   232,   233,   234,
-     235,   236,   237,   238,    25,    26,   171,   231,   223,   223,
-     247,   248,   249,   250,   149,   209,   206,    27,   210,   186,
-      28,   187,    29,   282,    30,    31,    90,   292,   188,   115,
-     150,    32,   293,   151,   189,    33,    34,    35,    36,    37,
-      38,   283,    39,   190,    40,   104,   244,   294,   200,   105,
-      41,   192,    91,   196,    42,    43,    44,   191,    45,    46,
-     193,    47,    48,   197,   198,    92,   305,   306,   209,   210,
-     224,    -6,    49,   230,   229,   308,   240,   241,   246,   347,
-     251,    77,   252,   309,   258,   261,   325,   152,   260,   295,
-     289,   303,   296,    93,   304,   310,   311,   106,   312,   326,
-     328,   330,    78,   332,   313,    79,   372,   373,   374,   375,
-     376,   327,   331,   153,   154,   384,   333,   334,   211,   212,
-     213,   214,   314,   335,   315,   316,   336,   317,   318,   319,
-     107,   320,   372,   373,   374,   375,   376,   337,   108,   339,
-     340,   346,   109,   348,   349,     2,   299,   300,   301,   302,
-       3,     4,     5,   352,   356,     6,   353,   357,   110,     7,
-       8,   359,   111,   362,   371,     9,    10,   369,    80,    11,
-      81,   361,    12,    13,   366,    82,    14,   379,   321,    83,
-     380,   381,   382,   338,    15,   383,   194,   386,   350,   351,
-      16,   392,    17,   199,   253,   298,   215,   307,   103,    18,
-      19,   259,   239,    20,   329,   222,   128,    21,    22,   216,
-     365,    23,    24,   217,   218,   370,   342,   355,   368,   385,
-       0,     0,     0,     0,     0,    25,    26,     0,   387,   388,
-     389,   390,   391,   358,     0,     0,     0,     0,    27,     0,
-       0,    28,     0,    29,     0,    30,    31,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,    33,    34,    35,    36,
-      37,    38,     0,    39,     0,    40,     0,     0,     0,     0,
-       0,    41,     0,     0,     0,    42,    43,    44,     0,    45,
-      46,     2,    47,    48,     0,     0,     3,     4,     5,     0,
-       0,     6,    -6,    49,     0,     7,     8,     0,     0,     0,
-       0,     9,    10,     0,     0,    11,     0,     0,    12,    13,
-       0,     0,    14,     0,     0,     0,     0,     0,     0,     0,
-      15,     0,     0,     0,     0,     0,    16,     0,    17,     0,
-       0,     0,   262,     0,     0,    18,    19,   263,     0,    20,
-       0,   264,     0,    21,    22,     0,     0,    23,    24,     0,
-       0,     0,     0,     0,     0,   157,     0,     0,     0,     0,
-       0,    25,    26,   158,     0,   159,     0,     0,     0,     0,
-       0,     0,     0,     0,    27,   265,     0,    28,     0,    29,
-       0,    30,    31,     0,     0,     0,   266,     0,    32,   160,
-       0,     0,    33,    34,    35,    36,    37,    38,     0,    39,
-       0,    40,     0,     0,   267,     0,     0,    41,   268,     0,
-     269,    42,    43,    44,     0,    45,    46,     0,    47,    48,
-     270,   161,   162,     0,   163,   164,     0,     0,   165,    49,
-       0,     0,     0,     0,     0,     0,   271,   272,     0,     0,
-       0,     0,     0,     0,     0,     0,   166,     0,     0,     0,
+     109,   222,   129,   217,   320,   136,   134,   161,   169,   125,
+     259,   106,   160,   107,    78,   229,   313,   271,    79,   128,
+     230,   173,   192,   313,   272,    80,   321,   273,   223,    88,
+     137,   265,   266,   192,    73,    74,   178,    94,   238,   171,
+     126,   172,   127,   239,   174,   224,   138,   240,   344,   139,
+     265,   266,    75,    76,   112,   179,   113,   274,   349,   114,
+     115,   121,   260,   283,   261,   122,   124,    97,    81,   210,
+     336,    98,   180,   130,   131,   231,   135,   108,   166,   275,
+     168,   241,   176,   177,   182,   170,   108,   194,   322,   195,
+     300,   301,   242,   323,    82,   308,   209,   215,   213,   216,
+     220,   218,    89,   140,   212,   212,    90,    83,   324,   219,
+     243,   228,   270,   234,   244,   108,   245,   236,   237,    99,
+     162,   354,   355,   356,   357,   358,   246,     1,   269,   141,
+     142,   281,   225,   276,     2,    84,   280,   303,   262,     3,
+       4,     5,   247,   248,     6,   305,   307,   310,     7,     8,
+     325,   318,   100,   326,     9,    10,   263,   329,    11,   311,
+     101,    12,    13,   312,   102,    14,   319,   332,   333,   183,
+     331,   335,   249,    15,   250,   334,   338,   328,   251,    16,
+     103,    17,   252,   339,   104,   341,   302,   343,    18,    19,
+     184,   351,    20,   185,   348,   344,    21,    22,   304,   347,
+      23,    24,   309,   368,   352,   361,   353,   362,   197,   198,
+     199,   200,   363,   193,    25,    26,   364,   369,   370,   371,
+     372,   373,   354,   355,   356,   357,   358,    27,   365,    96,
+      28,   366,    29,   374,    30,    31,   211,   227,   221,   235,
+     120,    32,   306,   282,   314,    33,    34,    35,    36,    37,
+      38,   284,    39,   337,    40,   350,   186,   367,   187,     0,
+      41,     0,     0,   188,    42,    43,    44,   189,    45,    46,
+       2,    47,    48,     0,     0,     3,     4,     5,     0,     0,
+       6,    -6,    49,     0,     7,     8,   201,     0,     0,     0,
+       9,    10,     0,     0,    11,     0,     0,    12,    13,   202,
+       0,    14,     0,   203,   204,     0,   146,     0,     0,    15,
+       0,     0,     0,     0,   147,    16,   148,    17,     0,   340,
+       0,     0,     0,     0,    18,    19,     0,     0,    20,     0,
+       0,     0,    21,    22,     0,     0,    23,    24,     0,     0,
+     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      25,    26,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    27,     0,     0,    28,     0,    29,     0,
+      30,    31,   150,   151,     0,   152,   153,    32,     0,   154,
+       0,    33,    34,    35,    36,    37,    38,     0,    39,     0,
+      40,     0,     0,     0,     0,     0,    41,   155,     0,     0,
+      42,    43,    44,     0,    45,    46,     2,    47,    48,     0,
+       0,     3,     4,     5,     0,     0,     6,    -6,    49,     0,
+       7,     8,     0,     0,     0,     0,     9,    10,     0,     0,
+      11,     0,     0,    12,    13,     0,     0,    14,     0,     0,
+       0,     0,     0,     0,     0,    15,     0,     0,     0,     0,
+       0,    16,     0,    17,     0,     0,     0,     0,     0,     0,
+      18,    19,     0,     0,    20,     0,     0,     0,    21,    22,
+       0,     0,    23,    24,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    25,    26,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
+       0,     0,    28,     0,    29,     0,    30,    31,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,    33,    34,    35,
+      36,    37,    38,     0,    39,     0,    40,   285,     0,     0,
+       0,     0,    41,     0,     0,   286,    42,    43,    44,     0,
+      45,    46,     0,    47,    48,     0,     0,   287,   288,     0,
+     289,     0,     0,     0,    49,     0,   290,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   291,     0,   292,   293,     0,   294,
+     295,   296,     0,   297,     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,
-       0,     0,     0,     0,     0,     0,   273,     0,   274,     0,
-       0,     0,   275,     0,     0,     0,   276
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     298
 };
 
 static const yytype_int16 yycheck[] =
 {
-      41,    34,   138,    54,    51,     4,    15,     9,   123,   123,
-      28,    44,    39,    55,    31,    94,   160,    35,   155,    26,
-      38,   132,    26,    54,   103,    34,   170,     1,    57,    54,
-      59,   157,   158,    26,     8,    54,   132,    54,   132,    13,
-      14,    15,   157,   158,    18,    54,   132,    56,    22,    23,
-      68,    33,    37,     3,    28,    29,   170,    56,    32,    58,
-     132,    35,    36,   132,    57,    39,    59,   132,   110,    54,
-      52,   118,    90,    47,   132,    25,   132,   132,   132,    53,
-      82,    55,     6,    54,    86,    54,    10,    69,    62,    63,
-     226,   227,    66,    17,   132,   132,    70,    71,   132,     5,
-      74,    75,   132,   132,     0,    54,   155,   148,   149,   150,
-     151,   152,   153,   154,    88,    89,   167,   144,   127,   128,
-     161,   162,   163,   164,    30,   132,   144,   101,   132,   169,
-     104,   132,   106,   132,   108,   109,    60,    87,   132,   132,
-      46,   115,    92,    49,   132,   119,   120,   121,   122,   123,
-     124,   150,   126,   132,   128,    20,   141,   107,    31,    24,
-     134,    54,    86,    54,   138,   139,   140,   132,   142,   143,
-     132,   145,   146,    54,    54,    99,   217,   218,   132,   132,
-     132,   155,   156,   166,    76,    44,    54,    54,    54,   325,
-      54,    27,    54,    52,    54,   155,   229,   103,    54,   149,
-     132,   132,   152,   127,    54,    64,    65,    72,    67,   132,
-      54,    34,    48,    54,    73,    51,   161,   162,   163,   164,
-     165,   254,   263,   129,   130,   170,    54,    54,    40,    41,
-      42,    43,    91,    54,    93,    94,    54,    96,    97,    98,
-     105,   100,   161,   162,   163,   164,   165,    54,   113,   166,
-     166,   155,   117,    26,    54,     8,   211,   212,   213,   214,
-      13,    14,    15,   166,   169,    18,   155,   168,   133,    22,
-      23,   159,   137,   160,   169,    28,    29,   155,   114,    32,
-     116,   166,    35,    36,   166,   121,    39,   166,   147,   125,
-     166,   166,   166,   277,    47,   166,    85,   155,   339,   340,
-      53,   155,    55,    99,   167,   207,   118,   219,    12,    62,
-      63,   172,   155,    66,   256,   123,    25,    70,    71,   131,
-     361,    74,    75,   135,   136,   366,   287,   343,   363,   377,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,   379,   380,
-     381,   382,   383,   352,    -1,    -1,    -1,    -1,   101,    -1,
-      -1,   104,    -1,   106,    -1,   108,   109,    -1,    -1,    -1,
-      -1,    -1,   115,    -1,    -1,    -1,   119,   120,   121,   122,
-     123,   124,    -1,   126,    -1,   128,    -1,    -1,    -1,    -1,
-      -1,   134,    -1,    -1,    -1,   138,   139,   140,    -1,   142,
-     143,     8,   145,   146,    -1,    -1,    13,    14,    15,    -1,
-      -1,    18,   155,   156,    -1,    22,    23,    -1,    -1,    -1,
-      -1,    28,    29,    -1,    -1,    32,    -1,    -1,    35,    36,
-      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    53,    -1,    55,    -1,
-      -1,    -1,     7,    -1,    -1,    62,    63,    12,    -1,    66,
-      -1,    16,    -1,    70,    71,    -1,    -1,    74,    75,    -1,
-      -1,    -1,    -1,    -1,    -1,    11,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    19,    -1,    21,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   101,    50,    -1,   104,    -1,   106,
-      -1,   108,   109,    -1,    -1,    -1,    61,    -1,   115,    45,
-      -1,    -1,   119,   120,   121,   122,   123,   124,    -1,   126,
-      -1,   128,    -1,    -1,    79,    -1,    -1,   134,    83,    -1,
-      85,   138,   139,   140,    -1,   142,   143,    -1,   145,   146,
-      95,    77,    78,    -1,    80,    81,    -1,    -1,    84,   156,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,   112,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   102,    -1,    -1,    -1,
+      15,   145,    34,   128,     3,     5,    39,    54,    51,    26,
+       4,    57,    44,    59,     6,   159,   123,    28,    10,    34,
+      55,    31,    85,   123,    35,    17,    25,    38,    37,     9,
+      30,   157,   158,    96,   155,    54,    33,   132,     7,    54,
+      57,    56,    59,    12,    54,    54,    46,    16,   160,    49,
+     157,   158,    54,    54,   132,    52,   132,    68,   170,   132,
+     132,   132,    56,   207,    58,   132,    54,    20,    60,   112,
+     170,    24,    69,    54,   132,   110,   132,   132,    54,    90,
+       0,    50,   132,   132,   169,   155,   132,    54,    87,    31,
+     215,   216,    61,    92,    86,   239,   132,    26,   132,    26,
+     133,    76,    82,   103,   119,   120,    86,    99,   107,   166,
+      79,    54,   132,    54,    83,   132,    85,    54,   155,    72,
+     167,   161,   162,   163,   164,   165,    95,     1,    54,   129,
+     130,    54,   141,   144,     8,   127,   132,   132,   132,    13,
+      14,    15,   111,   112,    18,    54,    34,    54,    22,    23,
+     149,   155,   105,   152,    28,    29,   150,    26,    32,   166,
+     113,    35,    36,   166,   117,    39,   132,   311,   312,    27,
+      54,   155,   141,    47,   143,   166,   169,   302,   147,    53,
+     133,    55,   151,   168,   137,   159,   218,   166,    62,    63,
+      48,   155,    66,    51,   166,   160,    70,    71,   230,   343,
+      74,    75,   253,   155,   348,   166,   169,   166,    40,    41,
+      42,    43,   166,    91,    88,    89,   166,   361,   362,   363,
+     364,   365,   161,   162,   163,   164,   165,   101,   166,    12,
+     104,   170,   106,   155,   108,   109,   116,   156,   143,   163,
+      25,   115,   232,   205,   267,   119,   120,   121,   122,   123,
+     124,   208,   126,   315,   128,   345,   114,   359,   116,    -1,
+     134,    -1,    -1,   121,   138,   139,   140,   125,   142,   143,
+       8,   145,   146,    -1,    -1,    13,    14,    15,    -1,    -1,
+      18,   155,   156,    -1,    22,    23,   118,    -1,    -1,    -1,
+      28,    29,    -1,    -1,    32,    -1,    -1,    35,    36,   131,
+      -1,    39,    -1,   135,   136,    -1,    11,    -1,    -1,    47,
+      -1,    -1,    -1,    -1,    19,    53,    21,    55,    -1,   334,
+      -1,    -1,    -1,    -1,    62,    63,    -1,    -1,    66,    -1,
+      -1,    -1,    70,    71,    -1,    -1,    74,    75,    -1,    -1,
+      45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   101,    -1,    -1,   104,    -1,   106,    -1,
+     108,   109,    77,    78,    -1,    80,    81,   115,    -1,    84,
+      -1,   119,   120,   121,   122,   123,   124,    -1,   126,    -1,
+     128,    -1,    -1,    -1,    -1,    -1,   134,   102,    -1,    -1,
+     138,   139,   140,    -1,   142,   143,     8,   145,   146,    -1,
+      -1,    13,    14,    15,    -1,    -1,    18,   155,   156,    -1,
+      22,    23,    -1,    -1,    -1,    -1,    28,    29,    -1,    -1,
+      32,    -1,    -1,    35,    36,    -1,    -1,    39,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,
+      -1,    53,    -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,
+      62,    63,    -1,    -1,    66,    -1,    -1,    -1,    70,    71,
+      -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,    -1,   104,    -1,   106,    -1,   108,   109,    -1,    -1,
+      -1,    -1,    -1,   115,    -1,    -1,    -1,   119,   120,   121,
+     122,   123,   124,    -1,   126,    -1,   128,    44,    -1,    -1,
+      -1,    -1,   134,    -1,    -1,    52,   138,   139,   140,    -1,
+     142,   143,    -1,   145,   146,    -1,    -1,    64,    65,    -1,
+      67,    -1,    -1,    -1,   156,    -1,    73,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    91,    -1,    93,    94,    -1,    96,
+      97,    98,    -1,   100,    -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,
-      -1,    -1,    -1,    -1,    -1,    -1,   141,    -1,   143,    -1,
-      -1,    -1,   147,    -1,    -1,    -1,   151
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     147
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+static const yytype_uint16 yystos[] =
 {
        0,     1,     8,    13,    14,    15,    18,    22,    23,    28,
       29,    32,    35,    36,    39,    47,    53,    55,    62,    63,
       66,    70,    71,    74,    75,    88,    89,   101,   104,   106,
      108,   109,   115,   119,   120,   121,   122,   123,   124,   126,
      128,   134,   138,   139,   140,   142,   143,   145,   146,   156,
-     172,   173,   174,   175,   176,   181,   182,   183,   184,   188,
-     191,   197,   202,   205,   208,   211,   218,   219,   230,   231,
-     155,    54,    31,    54,   229,    54,    54,    27,    48,    51,
-     114,   116,   121,   125,   185,   186,   187,     6,    10,    17,
-      60,    86,    99,   127,   206,   207,     9,    82,    86,   200,
-     201,   132,   212,   206,    20,    24,    72,   105,   113,   117,
-     133,   137,   193,    57,    59,   132,   177,   178,   132,   132,
-     132,   132,   132,   216,   217,   132,   177,   227,   227,   132,
-     132,   226,   132,   132,    54,    26,    57,    59,   177,   178,
-      54,   132,   132,   213,   192,   193,   132,   229,     5,    30,
-      46,    49,   103,   129,   130,   209,   210,    11,    19,    21,
-      45,    77,    78,    80,    81,    84,   102,   189,   190,   178,
-      54,   167,   223,   224,   225,    54,   222,     0,   174,   155,
-     177,   177,    33,    52,    69,   221,   169,   132,   132,   132,
-     132,   132,    54,   132,   187,   207,    54,    54,    54,   201,
-      31,    28,    35,    38,    68,    90,   144,   194,   195,   132,
-     132,    40,    41,    42,    43,   118,   131,   135,   136,   203,
-     204,   174,   217,   177,   132,   198,    26,    26,   198,    76,
-     166,   193,   229,   229,   229,   229,   229,   229,   229,   210,
-      54,    54,    37,    54,   141,   228,    54,   229,   229,   229,
-     229,    54,    54,   190,    55,   110,   214,   215,    54,   224,
-      54,   155,     7,    12,    16,    50,    61,    79,    83,    85,
-      95,   111,   112,   141,   143,   147,   151,   179,   180,     4,
-      56,    58,   132,   150,   220,   157,   158,   232,   233,   132,
-       3,    25,    87,    92,   107,   149,   152,   196,   195,   228,
-     228,   228,   228,   132,    54,   229,   229,   204,    44,    52,
-      64,    65,    67,    73,    91,    93,    94,    96,    97,    98,
-     100,   147,   199,   198,   198,   178,   132,   178,    54,   215,
-      34,   229,    54,    54,    54,    54,    54,    54,   180,   166,
-     166,   123,   233,   234,   235,   237,   155,   198,    26,    54,
-     229,   229,   166,   155,   170,   235,   169,   168,   177,   159,
-     236,   166,   160,   238,   239,   229,   166,   170,   239,   155,
-     229,   169,   161,   162,   163,   164,   165,   240,   241,   166,
-     166,   166,   166,   166,   170,   241,   155,   229,   229,   229,
-     229,   229,   155
+     172,   173,   174,   175,   176,   186,   187,   188,   189,   193,
+     198,   206,   212,   217,   221,   225,   226,   227,   228,   236,
+     237,   248,   249,   155,    54,    54,    54,   190,     6,    10,
+      17,    60,    86,    99,   127,   218,   219,   220,     9,    82,
+      86,   209,   210,   211,   132,   229,   218,    20,    24,    72,
+     105,   113,   117,   133,   137,   200,    57,    59,   132,   177,
+     178,   179,   132,   132,   132,   132,   234,   235,   177,   245,
+     245,   132,   132,   244,    54,    26,    57,    59,   177,   178,
+      54,   132,   230,   199,   200,   132,     5,    30,    46,    49,
+     103,   129,   130,   222,   223,   224,    11,    19,    21,    45,
+      77,    78,    80,    81,    84,   102,   194,   195,   196,   197,
+     178,    54,   167,   241,   242,   243,    54,   240,     0,   174,
+     155,   177,   177,    31,    54,   247,   132,   132,    33,    52,
+      69,   239,   169,    27,    48,    51,   114,   116,   121,   125,
+     191,   192,   219,   210,    54,    31,   201,    40,    41,    42,
+      43,   118,   131,   135,   136,   213,   214,   215,   216,   132,
+     174,   235,   177,   132,   207,    26,    26,   207,    76,   166,
+     200,   223,   247,    37,    54,   141,   246,   195,    54,   247,
+      55,   110,   232,   233,    54,   242,    54,   155,     7,    12,
+      16,    50,    61,    79,    83,    85,    95,   111,   112,   141,
+     143,   147,   151,   180,   181,   182,   183,   184,   185,     4,
+      56,    58,   132,   150,   238,   157,   158,   250,   251,    54,
+     132,    28,    35,    38,    68,    90,   144,   202,   203,   204,
+     132,    54,   214,   247,   246,    44,    52,    64,    65,    67,
+      73,    91,    93,    94,    96,    97,    98,   100,   147,   208,
+     207,   207,   178,   132,   178,    54,   233,    34,   247,   181,
+      54,   166,   166,   123,   251,   252,   253,   255,   155,   132,
+       3,    25,    87,    92,   107,   149,   152,   205,   207,    26,
+     231,    54,   247,   247,   166,   155,   170,   253,   169,   168,
+     177,   159,   254,   166,   160,   256,   257,   247,   166,   170,
+     257,   155,   247,   169,   161,   162,   163,   164,   165,   258,
+     259,   166,   166,   166,   166,   166,   170,   259,   155,   247,
+     247,   247,   247,   247,   155
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1374,9 +1389,18 @@ static const yytype_uint8 yystos[] =
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
 #define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -1433,7 +1457,7 @@ while (YYID (0))
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -2172,8 +2196,8 @@ yyreduce:
     {
         case 5:
 
-/* Line 1455 of yacc.c  */
-#line 307 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 325 "ntp_parser.y"
     {
 			/* I will need to incorporate much more fine grained
 			 * error messages. The following should suffice for
@@ -2189,8 +2213,8 @@ yyreduce:
 
   case 19:
 
-/* Line 1455 of yacc.c  */
-#line 341 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 359 "ntp_parser.y"
     {
 			struct peer_node *my_node =  create_peer_node((yyvsp[(1) - (3)].Integer), (yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue));
 			if (my_node)
@@ -2200,8 +2224,8 @@ yyreduce:
 
   case 20:
 
-/* Line 1455 of yacc.c  */
-#line 347 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 365 "ntp_parser.y"
     {
 			struct peer_node *my_node = create_peer_node((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Address_node), NULL);
 			if (my_node)
@@ -2211,148 +2235,71 @@ yyreduce:
 
   case 27:
 
-/* Line 1455 of yacc.c  */
-#line 364 "ntp_parser.y"
-    { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), AF_INET); }
+/* Line 1464 of yacc.c  */
+#line 383 "ntp_parser.y"
+    { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), (yyvsp[(1) - (2)].Integer)); }
     break;
 
   case 28:
 
-/* Line 1455 of yacc.c  */
-#line 365 "ntp_parser.y"
-    { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), AF_INET6); }
+/* Line 1464 of yacc.c  */
+#line 388 "ntp_parser.y"
+    { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), 0); }
     break;
 
   case 29:
 
-/* Line 1455 of yacc.c  */
-#line 369 "ntp_parser.y"
-    { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), 0); }
+/* Line 1464 of yacc.c  */
+#line 393 "ntp_parser.y"
+    { (yyval.Integer) = AF_INET; }
     break;
 
   case 30:
 
-/* Line 1455 of yacc.c  */
-#line 373 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
+/* Line 1464 of yacc.c  */
+#line 395 "ntp_parser.y"
+    { (yyval.Integer) = AF_INET6; }
     break;
 
   case 31:
 
-/* Line 1455 of yacc.c  */
-#line 374 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+/* Line 1464 of yacc.c  */
+#line 399 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 32:
 
-/* Line 1455 of yacc.c  */
-#line 378 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 33:
-
-/* Line 1455 of yacc.c  */
-#line 379 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-    break;
-
-  case 34:
-
-/* Line 1455 of yacc.c  */
-#line 380 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
+/* Line 1464 of yacc.c  */
+#line 400 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 35:
 
-/* Line 1455 of yacc.c  */
-#line 381 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
+/* Line 1464 of yacc.c  */
+#line 407 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 36:
 
-/* Line 1455 of yacc.c  */
-#line 382 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 37:
-
-/* Line 1455 of yacc.c  */
-#line 383 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 38:
-
-/* Line 1455 of yacc.c  */
-#line 384 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 39:
-
-/* Line 1455 of yacc.c  */
-#line 385 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 40:
-
-/* Line 1455 of yacc.c  */
-#line 386 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 41:
-
-/* Line 1455 of yacc.c  */
-#line 387 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 42:
-
-/* Line 1455 of yacc.c  */
-#line 388 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 43:
-
-/* Line 1455 of yacc.c  */
-#line 389 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 412 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 44:
-
-/* Line 1455 of yacc.c  */
-#line 390 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
   case 45:
 
-/* Line 1455 of yacc.c  */
-#line 391 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 46:
-
-/* Line 1455 of yacc.c  */
-#line 392 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 428 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 47:
+  case 52:
 
-/* Line 1455 of yacc.c  */
-#line 402 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 448 "ntp_parser.y"
     {
 			struct unpeer_node *my_node = create_unpeer_node((yyvsp[(2) - (2)].Address_node));
 			if (my_node)
@@ -2360,104 +2307,104 @@ yyreduce:
 		}
     break;
 
-  case 50:
+  case 55:
 
-/* Line 1455 of yacc.c  */
-#line 421 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 467 "ntp_parser.y"
     { cfgt.broadcastclient = 1; }
     break;
 
-  case 51:
+  case 56:
 
-/* Line 1455 of yacc.c  */
-#line 423 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 469 "ntp_parser.y"
     { append_queue(cfgt.manycastserver, (yyvsp[(2) - (2)].Queue)); }
     break;
 
-  case 52:
+  case 57:
 
-/* Line 1455 of yacc.c  */
-#line 425 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 471 "ntp_parser.y"
     { append_queue(cfgt.multicastclient, (yyvsp[(2) - (2)].Queue)); }
     break;
 
-  case 53:
+  case 58:
 
-/* Line 1455 of yacc.c  */
-#line 436 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 482 "ntp_parser.y"
     { enqueue(cfgt.vars, create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer))); }
     break;
 
-  case 54:
+  case 59:
 
-/* Line 1455 of yacc.c  */
-#line 438 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 484 "ntp_parser.y"
     { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 55:
+  case 60:
 
-/* Line 1455 of yacc.c  */
-#line 440 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 486 "ntp_parser.y"
     { 
 			cfgt.auth.cryptosw++;
 			append_queue(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Queue));
 		}
     break;
 
-  case 56:
+  case 61:
 
-/* Line 1455 of yacc.c  */
-#line 445 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 491 "ntp_parser.y"
     { cfgt.auth.keys = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 57:
+  case 62:
 
-/* Line 1455 of yacc.c  */
-#line 447 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 493 "ntp_parser.y"
     { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 58:
+  case 63:
 
-/* Line 1455 of yacc.c  */
-#line 449 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 495 "ntp_parser.y"
     { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 59:
+  case 64:
 
-/* Line 1455 of yacc.c  */
-#line 451 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 497 "ntp_parser.y"
     { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 60:
+  case 65:
 
-/* Line 1455 of yacc.c  */
-#line 453 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 499 "ntp_parser.y"
     { cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Queue); }
     break;
 
-  case 61:
+  case 66:
 
-/* Line 1455 of yacc.c  */
-#line 455 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 501 "ntp_parser.y"
     { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 63:
+  case 67:
 
-/* Line 1455 of yacc.c  */
-#line 461 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 506 "ntp_parser.y"
     { (yyval.Queue) = create_queue(); }
     break;
 
-  case 64:
+  case 68:
 
-/* Line 1455 of yacc.c  */
-#line 466 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 508 "ntp_parser.y"
     { 
 			if ((yyvsp[(2) - (2)].Attr_val) != NULL)
 				(yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val));
@@ -2466,64 +2413,17 @@ yyreduce:
 		}
     break;
 
-  case 65:
-
-/* Line 1455 of yacc.c  */
-#line 473 "ntp_parser.y"
-    {
-			if ((yyvsp[(1) - (1)].Attr_val) != NULL)
-				(yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val));
-			else
-				(yyval.Queue) = create_queue();
-		}
-    break;
-
-  case 66:
-
-/* Line 1455 of yacc.c  */
-#line 483 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-    break;
-
-  case 67:
-
-/* Line 1455 of yacc.c  */
-#line 485 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-    break;
-
-  case 68:
-
-/* Line 1455 of yacc.c  */
-#line 487 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-    break;
-
   case 69:
 
-/* Line 1455 of yacc.c  */
-#line 489 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 518 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
   case 70:
 
-/* Line 1455 of yacc.c  */
-#line 491 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-    break;
-
-  case 71:
-
-/* Line 1455 of yacc.c  */
-#line 493 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-    break;
-
-  case 72:
-
-/* Line 1455 of yacc.c  */
-#line 495 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 520 "ntp_parser.y"
     {
 			(yyval.Attr_val) = NULL;
 			cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer);
@@ -2534,277 +2434,201 @@ yyreduce:
 		}
     break;
 
-  case 73:
-
-/* Line 1455 of yacc.c  */
-#line 512 "ntp_parser.y"
-    { append_queue(cfgt.orphan_cmds,(yyvsp[(2) - (2)].Queue)); }
-    break;
-
-  case 74:
-
-/* Line 1455 of yacc.c  */
-#line 516 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
-    break;
-
-  case 75:
-
-/* Line 1455 of yacc.c  */
-#line 517 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
-    break;
-
-  case 76:
-
-/* Line 1455 of yacc.c  */
-#line 522 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
-    break;
-
   case 77:
 
-/* Line 1455 of yacc.c  */
-#line 524 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
+/* Line 1464 of yacc.c  */
+#line 546 "ntp_parser.y"
+    { append_queue(cfgt.orphan_cmds,(yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 78:
 
-/* Line 1455 of yacc.c  */
-#line 526 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
+/* Line 1464 of yacc.c  */
+#line 550 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 79:
 
-/* Line 1455 of yacc.c  */
-#line 528 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
+/* Line 1464 of yacc.c  */
+#line 551 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 80:
 
-/* Line 1455 of yacc.c  */
-#line 530 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+/* Line 1464 of yacc.c  */
+#line 556 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 81:
 
-/* Line 1455 of yacc.c  */
-#line 532 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 558 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 82:
 
-/* Line 1455 of yacc.c  */
-#line 534 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-    break;
-
-  case 83:
-
-/* Line 1455 of yacc.c  */
-#line 536 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-    break;
-
-  case 84:
-
-/* Line 1455 of yacc.c  */
-#line 538 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 85:
-
-/* Line 1455 of yacc.c  */
-#line 540 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
+/* Line 1464 of yacc.c  */
+#line 560 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 86:
+  case 92:
 
-/* Line 1455 of yacc.c  */
-#line 550 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 585 "ntp_parser.y"
     { append_queue(cfgt.stats_list, (yyvsp[(2) - (2)].Queue)); }
     break;
 
-  case 87:
+  case 93:
 
-/* Line 1455 of yacc.c  */
-#line 552 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 587 "ntp_parser.y"
     {
-			if (input_from_file)
+			if (input_from_file) {
 				cfgt.stats_dir = (yyvsp[(2) - (2)].String);
-			else {
-				free((yyvsp[(2) - (2)].String));
+			} else {
+				YYFREE((yyvsp[(2) - (2)].String));
 				yyerror("statsdir remote configuration ignored");
 			}
 		}
     break;
 
-  case 88:
+  case 94:
 
-/* Line 1455 of yacc.c  */
-#line 561 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 596 "ntp_parser.y"
     {
 			enqueue(cfgt.filegen_opts,
 				create_filegen_node((yyvsp[(2) - (3)].Integer), (yyvsp[(3) - (3)].Queue)));
 		}
     break;
 
-  case 89:
+  case 95:
 
-/* Line 1455 of yacc.c  */
-#line 568 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 603 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); }
     break;
 
-  case 90:
+  case 96:
 
-/* Line 1455 of yacc.c  */
-#line 569 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 604 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue(create_ival((yyvsp[(1) - (1)].Integer))); }
     break;
 
-  case 99:
+  case 105:
 
-/* Line 1455 of yacc.c  */
-#line 585 "ntp_parser.y"
-    {
-			if ((yyvsp[(2) - (2)].Attr_val) != NULL)
-				(yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val));
-			else
-				(yyval.Queue) = (yyvsp[(1) - (2)].Queue);
-		}
+/* Line 1464 of yacc.c  */
+#line 620 "ntp_parser.y"
+    { (yyval.Queue) = create_queue(); }
     break;
 
-  case 100:
+  case 106:
 
-/* Line 1455 of yacc.c  */
-#line 592 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 622 "ntp_parser.y"
     {
-			if ((yyvsp[(1) - (1)].Attr_val) != NULL)
-				(yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val));
+			if ((yyvsp[(2) - (2)].Attr_val) != NULL)
+				(yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val));
 			else
-				(yyval.Queue) = create_queue();
+				(yyval.Queue) = (yyvsp[(1) - (2)].Queue);
 		}
     break;
 
-  case 101:
-
-/* Line 1455 of yacc.c  */
-#line 599 "ntp_parser.y"
-    { (yyval.Queue) = create_queue(); }
-    break;
-
-  case 102:
+  case 107:
 
-/* Line 1455 of yacc.c  */
-#line 604 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 632 "ntp_parser.y"
     {
-			if (input_from_file)
+			if (input_from_file) {
 				(yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
-			else {
+			} else {
 				(yyval.Attr_val) = NULL;
-				free((yyvsp[(2) - (2)].String));
-				yyerror("filegen file remote configuration ignored");
+				YYFREE((yyvsp[(2) - (2)].String));
+				yyerror("filegen file remote config ignored");
 			}
 		}
     break;
 
-  case 103:
+  case 108:
 
-/* Line 1455 of yacc.c  */
-#line 614 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 642 "ntp_parser.y"
     {
-			if (input_from_file)
+			if (input_from_file) {
 				(yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
-			else {
+			} else {
 				(yyval.Attr_val) = NULL;
-				yyerror("filegen type remote configuration ignored");
+				yyerror("filegen type remote config ignored");
 			}
 		}
     break;
 
-  case 104:
+  case 109:
 
-/* Line 1455 of yacc.c  */
-#line 623 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 651 "ntp_parser.y"
     {
-			if (input_from_file)
-				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
-			else {
-				(yyval.Attr_val) = NULL;
-				yyerror("filegen link remote configuration ignored");
-			}
-		}
-    break;
-
-  case 105:
-
-/* Line 1455 of yacc.c  */
-#line 632 "ntp_parser.y"
-    {
-			if (input_from_file)
+			const char *err;
+			
+			if (input_from_file) {
 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
-			else {
+			} else {
 				(yyval.Attr_val) = NULL;
-				yyerror("filegen nolink remote configuration ignored");
+				if (T_Link == (yyvsp[(1) - (1)].Integer))
+					err = "filegen link remote config ignored";
+				else
+					err = "filegen nolink remote config ignored";
+				yyerror(err);
 			}
 		}
     break;
 
-  case 106:
-
-/* Line 1455 of yacc.c  */
-#line 640 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 107:
+  case 110:
 
-/* Line 1455 of yacc.c  */
-#line 641 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 666 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 115:
+  case 122:
 
-/* Line 1455 of yacc.c  */
-#line 661 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 696 "ntp_parser.y"
     {
 			append_queue(cfgt.discard_opts, (yyvsp[(2) - (2)].Queue));
 		}
     break;
 
-  case 116:
+  case 123:
 
-/* Line 1455 of yacc.c  */
-#line 665 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 700 "ntp_parser.y"
     {
 			enqueue(cfgt.restrict_opts,
 				create_restrict_node((yyvsp[(2) - (3)].Address_node), NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no));
 		}
     break;
 
-  case 117:
+  case 124:
 
-/* Line 1455 of yacc.c  */
-#line 670 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 705 "ntp_parser.y"
     {
 			enqueue(cfgt.restrict_opts,
 				create_restrict_node(NULL, NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no));
 		}
     break;
 
-  case 118:
+  case 125:
 
-/* Line 1455 of yacc.c  */
-#line 675 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 710 "ntp_parser.y"
     {
 			enqueue(cfgt.restrict_opts,
 				create_restrict_node(
@@ -2819,10 +2643,10 @@ yyreduce:
 		}
     break;
 
-  case 119:
+  case 126:
 
-/* Line 1455 of yacc.c  */
-#line 688 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 723 "ntp_parser.y"
     {
 			enqueue(cfgt.restrict_opts,
 				create_restrict_node(
@@ -2837,160 +2661,118 @@ yyreduce:
 		}
     break;
 
-  case 120:
+  case 127:
 
-/* Line 1455 of yacc.c  */
-#line 701 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 736 "ntp_parser.y"
     {
 			enqueue(cfgt.restrict_opts,
 				create_restrict_node((yyvsp[(2) - (5)].Address_node), (yyvsp[(4) - (5)].Address_node), (yyvsp[(5) - (5)].Queue), ip_file->line_no));
 		}
     break;
 
-  case 121:
+  case 128:
 
-/* Line 1455 of yacc.c  */
-#line 709 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 744 "ntp_parser.y"
     { (yyval.Queue) = create_queue(); }
     break;
 
-  case 122:
+  case 129:
 
-/* Line 1455 of yacc.c  */
-#line 711 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 746 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); }
     break;
 
-  case 137:
+  case 144:
 
-/* Line 1455 of yacc.c  */
-#line 733 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 768 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
-  case 138:
+  case 145:
 
-/* Line 1455 of yacc.c  */
-#line 735 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 770 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
-  case 139:
-
-/* Line 1455 of yacc.c  */
-#line 739 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 140:
-
-/* Line 1455 of yacc.c  */
-#line 740 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 141:
+  case 146:
 
-/* Line 1455 of yacc.c  */
-#line 741 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 775 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 142:
+  case 150:
 
-/* Line 1455 of yacc.c  */
-#line 750 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 791 "ntp_parser.y"
     { enqueue(cfgt.fudge, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
     break;
 
-  case 143:
+  case 151:
 
-/* Line 1455 of yacc.c  */
-#line 755 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 796 "ntp_parser.y"
     { enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
-  case 144:
+  case 152:
 
-/* Line 1455 of yacc.c  */
-#line 757 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 798 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
-  case 145:
-
-/* Line 1455 of yacc.c  */
-#line 761 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-    break;
-
-  case 146:
+  case 153:
 
-/* Line 1455 of yacc.c  */
-#line 762 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 803 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 147:
-
-/* Line 1455 of yacc.c  */
-#line 763 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 148:
-
-/* Line 1455 of yacc.c  */
-#line 764 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-    break;
-
-  case 149:
-
-/* Line 1455 of yacc.c  */
-#line 765 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-    break;
-
-  case 150:
+  case 154:
 
-/* Line 1455 of yacc.c  */
-#line 766 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 805 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 151:
+  case 155:
 
-/* Line 1455 of yacc.c  */
-#line 767 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 807 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 152:
+  case 156:
 
-/* Line 1455 of yacc.c  */
-#line 768 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+/* Line 1464 of yacc.c  */
+#line 809 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
-  case 153:
+  case 163:
 
-/* Line 1455 of yacc.c  */
-#line 777 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 831 "ntp_parser.y"
     { append_queue(cfgt.enable_opts, (yyvsp[(2) - (2)].Queue));  }
     break;
 
-  case 154:
+  case 164:
 
-/* Line 1455 of yacc.c  */
-#line 779 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 833 "ntp_parser.y"
     { append_queue(cfgt.disable_opts, (yyvsp[(2) - (2)].Queue));  }
     break;
 
-  case 155:
+  case 165:
 
-/* Line 1455 of yacc.c  */
-#line 784 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 838 "ntp_parser.y"
     {
 			if ((yyvsp[(2) - (2)].Attr_val) != NULL)
 				(yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val));
@@ -2999,10 +2781,10 @@ yyreduce:
 		}
     break;
 
-  case 156:
+  case 166:
 
-/* Line 1455 of yacc.c  */
-#line 791 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 845 "ntp_parser.y"
     {
 			if ((yyvsp[(1) - (1)].Attr_val) != NULL)
 				(yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val));
@@ -3011,366 +2793,272 @@ yyreduce:
 		}
     break;
 
-  case 157:
-
-/* Line 1455 of yacc.c  */
-#line 800 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 158:
-
-/* Line 1455 of yacc.c  */
-#line 801 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 159:
-
-/* Line 1455 of yacc.c  */
-#line 802 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 160:
-
-/* Line 1455 of yacc.c  */
-#line 803 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 161:
-
-/* Line 1455 of yacc.c  */
-#line 804 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-    break;
-
-  case 162:
+  case 167:
 
-/* Line 1455 of yacc.c  */
-#line 805 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 855 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 163:
+  case 168:
 
-/* Line 1455 of yacc.c  */
-#line 807 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 857 "ntp_parser.y"
     { 
-			if (input_from_file)
+			if (input_from_file) {
 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
-			else {
+			} else {
 				(yyval.Attr_val) = NULL;
-				yyerror("enable/disable stats remote configuration ignored");
+				yyerror("enable/disable stats remote config ignored");
 			}
 		}
     break;
 
-  case 164:
+  case 175:
 
-/* Line 1455 of yacc.c  */
-#line 822 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 882 "ntp_parser.y"
     { append_queue(cfgt.tinker, (yyvsp[(2) - (2)].Queue)); }
     break;
 
-  case 165:
+  case 176:
 
-/* Line 1455 of yacc.c  */
-#line 826 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 886 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
-  case 166:
+  case 177:
 
-/* Line 1455 of yacc.c  */
-#line 827 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 887 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
-  case 167:
-
-/* Line 1455 of yacc.c  */
-#line 831 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-    break;
-
-  case 168:
-
-/* Line 1455 of yacc.c  */
-#line 832 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-    break;
-
-  case 169:
+  case 178:
 
-/* Line 1455 of yacc.c  */
-#line 833 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 892 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 170:
+  case 187:
 
-/* Line 1455 of yacc.c  */
-#line 834 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+/* Line 1464 of yacc.c  */
+#line 913 "ntp_parser.y"
+    {
+			struct attr_val *av;
+			
+			av = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double));
+			enqueue(cfgt.vars, av);
+		}
     break;
 
-  case 171:
+  case 188:
 
-/* Line 1455 of yacc.c  */
-#line 835 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+/* Line 1464 of yacc.c  */
+#line 920 "ntp_parser.y"
+    {
+			struct attr_val *av;
+			
+			av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
+			enqueue(cfgt.vars, av);
+		}
     break;
 
-  case 172:
-
-/* Line 1455 of yacc.c  */
-#line 836 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-    break;
+  case 189:
 
-  case 173:
+/* Line 1464 of yacc.c  */
+#line 927 "ntp_parser.y"
+    {
+			char error_text[64];
+			struct attr_val *av;
 
-/* Line 1455 of yacc.c  */
-#line 837 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+			if (input_from_file) {
+				av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
+				enqueue(cfgt.vars, av);
+			} else {
+				YYFREE((yyvsp[(2) - (2)].String));
+				snprintf(error_text, sizeof(error_text),
+					 "%s remote config ignored",
+					 keyword((yyvsp[(1) - (2)].Integer)));
+				yyerror(error_text);
+			}
+		}
     break;
 
-  case 175:
+  case 190:
 
-/* Line 1455 of yacc.c  */
-#line 848 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 943 "ntp_parser.y"
     {
+			if (!input_from_file) {
+				yyerror("remote includefile ignored");
+				break;
+			}
 			if (curr_include_level >= MAXINCLUDELEVEL) {
 				fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
-				msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
-			}
-			else {
+				msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.\n");
+			} else {
 				fp[curr_include_level + 1] = F_OPEN(FindConfig((yyvsp[(2) - (3)].String)), "r");
 				if (fp[curr_include_level + 1] == NULL) {
 					fprintf(stderr, "getconfig: Couldn't open <%s>\n", FindConfig((yyvsp[(2) - (3)].String)));
-					msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", FindConfig((yyvsp[(2) - (3)].String)));
-				}
-				else
+					msyslog(LOG_ERR, "getconfig: Couldn't open <%s>\n", FindConfig((yyvsp[(2) - (3)].String)));
+				} else {
 					ip_file = fp[++curr_include_level];
+				}
 			}
 		}
     break;
 
-  case 176:
+  case 191:
 
-/* Line 1455 of yacc.c  */
-#line 864 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 962 "ntp_parser.y"
     {
 			while (curr_include_level != -1)
 				FCLOSE(fp[curr_include_level--]);
 		}
     break;
 
-  case 177:
-
-/* Line 1455 of yacc.c  */
-#line 870 "ntp_parser.y"
-    { enqueue(cfgt.vars, create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double))); }
-    break;
-
-  case 178:
+  case 192:
 
-/* Line 1455 of yacc.c  */
-#line 872 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 967 "ntp_parser.y"
     { enqueue(cfgt.vars, create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer))); }
     break;
 
-  case 179:
-
-/* Line 1455 of yacc.c  */
-#line 874 "ntp_parser.y"
-    { enqueue(cfgt.vars, create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double))); }
-    break;
-
-  case 180:
+  case 193:
 
-/* Line 1455 of yacc.c  */
-#line 876 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 969 "ntp_parser.y"
     { /* Null action, possibly all null parms */ }
     break;
 
-  case 181:
-
-/* Line 1455 of yacc.c  */
-#line 878 "ntp_parser.y"
-    { enqueue(cfgt.vars, create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String))); }
-    break;
-
-  case 182:
-
-/* Line 1455 of yacc.c  */
-#line 881 "ntp_parser.y"
-    { enqueue(cfgt.vars, create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String))); }
-    break;
-
-  case 183:
-
-/* Line 1455 of yacc.c  */
-#line 883 "ntp_parser.y"
-    {
-			if (input_from_file)
-				enqueue(cfgt.vars,
-					create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)));
-			else {
-				free((yyvsp[(2) - (2)].String));
-				yyerror("logfile remote configuration ignored");
-			}
-		}
-    break;
-
-  case 184:
+  case 194:
 
-/* Line 1455 of yacc.c  */
-#line 894 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 971 "ntp_parser.y"
     { append_queue(cfgt.logconfig, (yyvsp[(2) - (2)].Queue)); }
     break;
 
-  case 185:
+  case 195:
 
-/* Line 1455 of yacc.c  */
-#line 896 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 973 "ntp_parser.y"
     { append_queue(cfgt.phone, (yyvsp[(2) - (2)].Queue)); }
     break;
 
-  case 186:
-
-/* Line 1455 of yacc.c  */
-#line 898 "ntp_parser.y"
-    {
-			if (input_from_file)
-				enqueue(cfgt.vars,
-					create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)));
-			else {
-				free((yyvsp[(2) - (2)].String));
-				yyerror("saveconfigdir remote configuration ignored");
-			}
-		}
-    break;
-
-  case 187:
+  case 196:
 
-/* Line 1455 of yacc.c  */
-#line 908 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 975 "ntp_parser.y"
     { enqueue(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); }
     break;
 
-  case 188:
+  case 197:
 
-/* Line 1455 of yacc.c  */
-#line 910 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 977 "ntp_parser.y"
     { enqueue(cfgt.trap, create_addr_opts_node((yyvsp[(2) - (2)].Address_node), NULL)); }
     break;
 
-  case 189:
+  case 198:
 
-/* Line 1455 of yacc.c  */
-#line 912 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 979 "ntp_parser.y"
     { enqueue(cfgt.trap, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
     break;
 
-  case 190:
+  case 199:
 
-/* Line 1455 of yacc.c  */
-#line 914 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 981 "ntp_parser.y"
     { append_queue(cfgt.ttl, (yyvsp[(2) - (2)].Queue)); }
     break;
 
-  case 191:
+  case 207:
 
-/* Line 1455 of yacc.c  */
-#line 916 "ntp_parser.y"
-    { enqueue(cfgt.qos, create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String))); }
-    break;
-
-  case 192:
-
-/* Line 1455 of yacc.c  */
-#line 921 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1002 "ntp_parser.y"
     { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String))); }
     break;
 
-  case 193:
+  case 208:
 
-/* Line 1455 of yacc.c  */
-#line 923 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1004 "ntp_parser.y"
     { enqueue(cfgt.vars, create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double)));
 			  enqueue(cfgt.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String))); }
     break;
 
-  case 194:
+  case 209:
 
-/* Line 1455 of yacc.c  */
-#line 926 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1007 "ntp_parser.y"
     { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, "\0")); }
     break;
 
-  case 195:
+  case 210:
 
-/* Line 1455 of yacc.c  */
-#line 931 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1012 "ntp_parser.y"
     { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), (yyvsp[(4) - (4)].Integer)); }
     break;
 
-  case 196:
+  case 212:
 
-/* Line 1455 of yacc.c  */
-#line 933 "ntp_parser.y"
-    { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (3)].String), (yyvsp[(3) - (3)].String), 0); }
+/* Line 1464 of yacc.c  */
+#line 1018 "ntp_parser.y"
+    { (yyval.Integer) = 0; }
     break;
 
-  case 197:
+  case 213:
 
-/* Line 1455 of yacc.c  */
-#line 938 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1023 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
-  case 198:
+  case 214:
 
-/* Line 1455 of yacc.c  */
-#line 939 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1024 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
-  case 199:
+  case 215:
 
-/* Line 1455 of yacc.c  */
-#line 943 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1028 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 200:
+  case 216:
 
-/* Line 1455 of yacc.c  */
-#line 944 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1029 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_pval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Address_node)); }
     break;
 
-  case 201:
+  case 217:
 
-/* Line 1455 of yacc.c  */
-#line 948 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1033 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
-  case 202:
+  case 218:
 
-/* Line 1455 of yacc.c  */
-#line 949 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1034 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
-  case 203:
+  case 219:
 
-/* Line 1455 of yacc.c  */
-#line 954 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1039 "ntp_parser.y"
     {
 			char prefix = (yyvsp[(1) - (1)].String)[0];
 			char *type = (yyvsp[(1) - (1)].String) + 1;
@@ -3384,135 +3072,135 @@ yyreduce:
 		}
     break;
 
-  case 204:
+  case 220:
 
-/* Line 1455 of yacc.c  */
-#line 969 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1054 "ntp_parser.y"
     {
 			enqueue(cfgt.nic_rules,
 				create_nic_rule_node((yyvsp[(3) - (3)].Integer), NULL, (yyvsp[(2) - (3)].Integer)));
 		}
     break;
 
-  case 205:
+  case 221:
 
-/* Line 1455 of yacc.c  */
-#line 974 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1059 "ntp_parser.y"
     {
 			enqueue(cfgt.nic_rules,
 				create_nic_rule_node(0, (yyvsp[(3) - (3)].String), (yyvsp[(2) - (3)].Integer)));
 		}
     break;
 
-  case 215:
+  case 231:
 
-/* Line 1455 of yacc.c  */
-#line 1005 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1090 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); }
     break;
 
-  case 216:
+  case 232:
 
-/* Line 1455 of yacc.c  */
-#line 1006 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1091 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue(create_ival((yyvsp[(1) - (1)].Integer))); }
     break;
 
-  case 217:
+  case 233:
 
-/* Line 1455 of yacc.c  */
-#line 1011 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1096 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
-  case 218:
+  case 234:
 
-/* Line 1455 of yacc.c  */
-#line 1013 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1098 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
-  case 219:
+  case 235:
 
-/* Line 1455 of yacc.c  */
-#line 1018 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1103 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 221:
+  case 237:
 
-/* Line 1455 of yacc.c  */
-#line 1024 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1109 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_shorts('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); }
     break;
 
-  case 222:
+  case 238:
 
-/* Line 1455 of yacc.c  */
-#line 1028 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1113 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_pval((yyvsp[(2) - (2)].String))); }
     break;
 
-  case 223:
+  case 239:
 
-/* Line 1455 of yacc.c  */
-#line 1029 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1114 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue(create_pval((yyvsp[(1) - (1)].String))); }
     break;
 
-  case 224:
+  case 240:
 
-/* Line 1455 of yacc.c  */
-#line 1033 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1118 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Address_node)); }
     break;
 
-  case 225:
+  case 241:
 
-/* Line 1455 of yacc.c  */
-#line 1034 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1119 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Address_node)); }
     break;
 
-  case 226:
+  case 242:
 
-/* Line 1455 of yacc.c  */
-#line 1039 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1124 "ntp_parser.y"
     {
 			if ((yyvsp[(1) - (1)].Integer) != 0 && (yyvsp[(1) - (1)].Integer) != 1) {
 				yyerror("Integer value is not boolean (0 or 1). Assuming 1");
 				(yyval.Integer) = 1;
-			}
-			else
+			} else {
 				(yyval.Integer) = (yyvsp[(1) - (1)].Integer);
+			}
 		}
     break;
 
-  case 227:
+  case 243:
 
-/* Line 1455 of yacc.c  */
-#line 1047 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1132 "ntp_parser.y"
     { (yyval.Integer) = 1; }
     break;
 
-  case 228:
+  case 244:
 
-/* Line 1455 of yacc.c  */
-#line 1048 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1133 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 229:
+  case 245:
 
-/* Line 1455 of yacc.c  */
-#line 1052 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1137 "ntp_parser.y"
     { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); }
     break;
 
-  case 231:
+  case 247:
 
-/* Line 1455 of yacc.c  */
-#line 1063 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1148 "ntp_parser.y"
     {
 			cfgt.sim_details = create_sim_node((yyvsp[(3) - (5)].Queue), (yyvsp[(4) - (5)].Queue));
 
@@ -3521,150 +3209,150 @@ yyreduce:
 		}
     break;
 
-  case 232:
+  case 248:
 
-/* Line 1455 of yacc.c  */
-#line 1077 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1162 "ntp_parser.y"
     { old_config_style = 0; }
     break;
 
-  case 233:
+  case 249:
 
-/* Line 1455 of yacc.c  */
-#line 1081 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1166 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
     break;
 
-  case 234:
+  case 250:
 
-/* Line 1455 of yacc.c  */
-#line 1082 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1167 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
     break;
 
-  case 235:
+  case 251:
 
-/* Line 1455 of yacc.c  */
-#line 1086 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1171 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 236:
+  case 252:
 
-/* Line 1455 of yacc.c  */
-#line 1087 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1172 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 237:
+  case 253:
 
-/* Line 1455 of yacc.c  */
-#line 1091 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1176 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_server)); }
     break;
 
-  case 238:
+  case 254:
 
-/* Line 1455 of yacc.c  */
-#line 1092 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1177 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_server)); }
     break;
 
-  case 239:
+  case 255:
 
-/* Line 1455 of yacc.c  */
-#line 1097 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1182 "ntp_parser.y"
     { (yyval.Sim_server) = create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Queue)); }
     break;
 
-  case 240:
+  case 256:
 
-/* Line 1455 of yacc.c  */
-#line 1101 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1186 "ntp_parser.y"
     { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
     break;
 
-  case 241:
+  case 257:
 
-/* Line 1455 of yacc.c  */
-#line 1105 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1190 "ntp_parser.y"
     { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
     break;
 
-  case 242:
+  case 258:
 
-/* Line 1455 of yacc.c  */
-#line 1109 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1194 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_script)); }
     break;
 
-  case 243:
+  case 259:
 
-/* Line 1455 of yacc.c  */
-#line 1110 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1195 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_script)); }
     break;
 
-  case 244:
+  case 260:
 
-/* Line 1455 of yacc.c  */
-#line 1115 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1200 "ntp_parser.y"
     { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Queue)); }
     break;
 
-  case 245:
+  case 261:
 
-/* Line 1455 of yacc.c  */
-#line 1119 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1204 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
     break;
 
-  case 246:
+  case 262:
 
-/* Line 1455 of yacc.c  */
-#line 1120 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1205 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
     break;
 
-  case 247:
+  case 263:
 
-/* Line 1455 of yacc.c  */
-#line 1125 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1210 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 248:
+  case 264:
 
-/* Line 1455 of yacc.c  */
-#line 1127 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1212 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 249:
+  case 265:
 
-/* Line 1455 of yacc.c  */
-#line 1129 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1214 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 250:
+  case 266:
 
-/* Line 1455 of yacc.c  */
-#line 1131 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1216 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 251:
+  case 267:
 
-/* Line 1455 of yacc.c  */
-#line 1133 "ntp_parser.y"
+/* Line 1464 of yacc.c  */
+#line 1218 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
 
 
-/* Line 1455 of yacc.c  */
-#line 3668 "ntp_parser.c"
+/* Line 1464 of yacc.c  */
+#line 3356 "ntp_parser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3875,11 +3563,14 @@ yyreturn:
 
 
 
-/* Line 1675 of yacc.c  */
-#line 1137 "ntp_parser.y"
+/* Line 1684 of yacc.c  */
+#line 1222 "ntp_parser.y"
 
 
-void yyerror (char *msg)
+void
+yyerror(
+	const char *msg
+	)
 {
 	int retval;
 
@@ -3909,8 +3600,9 @@ void yyerror (char *msg)
 
 
 /*
- * token_name - convert T_ token integers to text
- *		example: token_name(T_Server) returns "T_Server"
+ * token_name - Convert T_ token integers to text.
+ *		Example: token_name(T_Server) returns "T_Server".
+ *		see also keyword(T_Server) which returns "server".
  */
 const char *
 token_name(

==== ntpd/ntp_parser.y ====
2010-10-24 03:23:09+00:00, davehart at shiny.ad.hartbrothers.com +266 -177
  [Bug 1675] Prohibit includefile remote config.
  Collapse duplicated C snippets into common actions.

--- 1.51/ntpd/ntp_parser.y	2010-09-21 12:29:50 -04:00
+++ 1.52/ntpd/ntp_parser.y	2010-10-23 23:23:09 -04:00
@@ -13,9 +13,9 @@
   # include <config.h>
   #endif
 
+  #include "ntp.h"
   #include "ntpd.h"
   #include "ntp_machine.h"
-  #include "ntp.h"
   #include "ntp_stdlib.h"
   #include "ntp_filegen.h"
   #include "ntp_data_structures.h"
@@ -37,7 +37,7 @@
   #define YYFREE	free
   #define YYERROR_VERBOSE
   #define YYMAXDEPTH	1000   /* stop the madness sooner */
-  void yyerror (char *msg);
+  void yyerror(const char *msg);
   extern int input_from_file;  /* 0=input from ntpq :config */
 %}
 
@@ -236,41 +236,59 @@
 %type	<Integer>	access_control_flag
 %type	<Queue>		ac_flag_list
 %type	<Address_node>	address
+%type	<Integer>	address_fam
 %type	<Queue>		address_list
 %type	<Integer>	boolean
 %type	<Integer>	client_type
 %type	<Attr_val>	crypto_command
-%type	<Queue>		crypto_command_line
 %type	<Queue>		crypto_command_list
+%type	<Integer>	crypto_str_keyword
 %type	<Attr_val>	discard_option
+%type	<Integer>	discard_option_keyword
 %type	<Queue>		discard_option_list
+%type	<Integer>	enable_disable
 %type	<Attr_val>	filegen_option
 %type	<Queue>		filegen_option_list
 %type	<Integer>	filegen_type
 %type	<Attr_val>	fudge_factor
+%type	<Integer>	fudge_factor_bool_keyword
+%type	<Integer>	fudge_factor_dbl_keyword
 %type	<Queue>		fudge_factor_list
 %type	<Queue>		integer_list
 %type	<Queue>		integer_list_range
 %type	<Attr_val>	integer_list_range_elt
 %type	<Attr_val>	integer_range
 %type	<Integer>	nic_rule_action
-%type	<Queue>		interface_command
+%type	<Integer>	interface_command
 %type	<Integer>	interface_nic
 %type	<Address_node>	ip_address
+%type	<Integer>	link_nolink
 %type	<Attr_val>	log_config_command
 %type	<Queue>		log_config_list
+%type	<Integer>	misc_cmd_dbl_keyword
+%type	<Integer>	misc_cmd_str_keyword
+%type	<Integer>	misc_cmd_str_lcl_keyword
 %type	<Integer>	nic_rule_class
 %type	<Double>	number
 %type	<Attr_val>	option
+%type	<Attr_val>	option_flag
+%type	<Integer>	option_flag_keyword
 %type	<Queue>		option_list
+%type	<Attr_val>	option_int
+%type	<Integer>	option_int_keyword
 %type	<Integer>	stat
 %type	<Queue>		stats_list
 %type	<Queue>		string_list
 %type	<Attr_val>	system_option
+%type	<Integer>	system_option_flag_keyword
 %type	<Queue>		system_option_list
+%type	<Integer>	t_default_or_zero
+%type	<Integer>	tinker_option_keyword
 %type	<Attr_val>	tinker_option
 %type	<Queue>		tinker_option_list
 %type	<Attr_val>	tos_option
+%type	<Integer>	tos_option_dbl_keyword
+%type	<Integer>	tos_option_int_keyword
 %type	<Queue>		tos_option_list
 %type	<Attr_val>	trap_option
 %type	<Queue>		trap_option_list
@@ -361,12 +379,20 @@ client_type
 
 address
 	:	ip_address
-	|	T_Ipv4_flag T_String	{ $$ = create_address_node($2, AF_INET); }
-	|	T_Ipv6_flag T_String	{ $$ = create_address_node($2, AF_INET6); }
+	|	address_fam T_String
+			{ $$ = create_address_node($2, $1); }
 	;
 
 ip_address
-	:	T_String { $$ = create_address_node($1, 0); }
+	:	T_String
+			{ $$ = create_address_node($1, 0); }
+	;
+
+address_fam
+	:	T_Ipv4_flag
+			{ $$ = AF_INET; }
+	|	T_Ipv6_flag
+			{ $$ = AF_INET6; }
 	;
 
 option_list
@@ -375,24 +401,44 @@ option_list
 	;
 
 option
-	:	T_Autokey		{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Bias number		{ $$ = create_attr_dval($1, $2); }
-	|	T_Burst			{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Iburst		{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Key T_Integer		{ $$ = create_attr_ival($1, $2); }
-	|	T_Minpoll T_Integer	{ $$ = create_attr_ival($1, $2); }
-	|	T_Maxpoll T_Integer	{ $$ = create_attr_ival($1, $2); }
-	|	T_Noselect		{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Preempt		{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Prefer		{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_True			{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Xleave		{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Ttl T_Integer		{ $$ = create_attr_ival($1, $2); }
-	|	T_Mode T_Integer	{ $$ = create_attr_ival($1, $2); }
-	|	T_Version T_Integer	{ $$ = create_attr_ival($1, $2); }
+	:	option_flag
+	|	option_int
+	|	T_Bias number
+			{ $$ = create_attr_dval($1, $2); }
+	;
+
+option_flag
+	:	option_flag_keyword
+			{ $$ = create_attr_ival(T_Flag, $1); }
+	;
+
+option_flag_keyword
+	:	T_Autokey
+	|	T_Burst
+	|	T_Iburst
+	|	T_Noselect
+	|	T_Preempt
+	|	T_Prefer
+	|	T_True
+	|	T_Xleave
+	;
+
+option_int
+	:	option_int_keyword T_Integer
+			{ $$ = create_attr_ival($1, $2); }
+	;
+
+option_int_keyword
+	:	T_Key
+	|	T_Minpoll
+	|	T_Maxpoll
+	|	T_Ttl
+	|	T_Mode
+	|	T_Version
 	;
 
 
+
 /* unpeer commands
  * ---------------
  */
@@ -436,7 +482,7 @@ authentication_command
 			{ enqueue(cfgt.vars, create_attr_ival($1, $2)); }
 	|	T_ControlKey T_Integer
 			{ cfgt.auth.control_key = $2; }
-	|	T_Crypto crypto_command_line
+	|	T_Crypto crypto_command_list
 		{ 
 			cfgt.auth.cryptosw++;
 			append_queue(cfgt.auth.crypto_cmd_list, $2);
@@ -455,41 +501,20 @@ authentication_command
 			{ cfgt.auth.ntp_signd_socket = $2; }
 	;
 
-crypto_command_line
-	:	crypto_command_list
-	|	/* Null list */
-			{ $$ = create_queue(); }
-	;
-
 crypto_command_list
-	:	crypto_command_list crypto_command
+	:	/* empty list */
+			{ $$ = create_queue(); }
+	|	crypto_command_list crypto_command
 		{ 
 			if ($2 != NULL)
 				$$ = enqueue($1, $2);
 			else
 				$$ = $1;
 		}
-	|	crypto_command
-		{
-			if ($1 != NULL)
-				$$ = enqueue_in_new_queue($1);
-			else
-				$$ = create_queue();
-		}
 	;
 
 crypto_command
-	:	T_Host	T_String
-			{ $$ = create_attr_sval($1, $2); }
-	|	T_Ident	T_String
-			{ $$ = create_attr_sval($1, $2); }
-	|	T_Pw T_String
-			{ $$ = create_attr_sval($1, $2); }
-	|	T_Randfile T_String
-			{ $$ = create_attr_sval($1, $2); }
-	|	T_Sign	T_String
-			{ $$ = create_attr_sval($1, $2); }
-	|	T_Digest T_String
+	:	crypto_str_keyword T_String
 			{ $$ = create_attr_sval($1, $2); }
 	|	T_Revoke T_Integer
 		{
@@ -502,6 +527,15 @@ crypto_command
 		}
 	;
 
+crypto_str_keyword
+	:	T_Host
+	|	T_Ident
+	|	T_Pw
+	|	T_Randfile
+	|	T_Sign
+	|	T_Digest
+	;
+
 
 /* Orphan Mode Commands
  * --------------------
@@ -518,26 +552,27 @@ tos_option_list
 	;
 
 tos_option
-	:	T_Ceiling T_Integer
-			{ $$ = create_attr_dval($1, (double)$2); }
-	|	T_Floor T_Integer
+	:	tos_option_int_keyword T_Integer
 			{ $$ = create_attr_dval($1, (double)$2); }
-	|	T_Cohort boolean
-			{ $$ = create_attr_dval($1, (double)$2); }
-	|	T_Orphan T_Integer
-			{ $$ = create_attr_dval($1, (double)$2); }
-	|	T_Mindist number
-			{ $$ = create_attr_dval($1, $2); }
-	|	T_Maxdist number
+	|	tos_option_dbl_keyword number
 			{ $$ = create_attr_dval($1, $2); }
-	|	T_Minclock number
-			{ $$ = create_attr_dval($1, $2); }
-	|	T_Maxclock number
-			{ $$ = create_attr_dval($1, $2); }
-	|	T_Minsane T_Integer
-			{ $$ = create_attr_dval($1, (double)$2); }
-	|	T_Beacon T_Integer
-			{ $$ = create_attr_dval($1, (double)$2); }
+	|	T_Cohort boolean
+			{ $$ = create_attr_ival($1, $2); }
+	;
+
+tos_option_int_keyword
+	:	T_Ceiling
+	|	T_Floor
+	|	T_Orphan
+	|	T_Minsane
+	|	T_Beacon
+	;
+
+tos_option_dbl_keyword
+	:	T_Mindist
+	|	T_Maxdist
+	|	T_Minclock
+	|	T_Maxclock
 	;
 
 
@@ -550,10 +585,10 @@ monitoring_command
 			{ append_queue(cfgt.stats_list, $2); }
 	|	T_Statsdir T_String
 		{
-			if (input_from_file)
+			if (input_from_file) {
 				cfgt.stats_dir = $2;
-			else {
-				free($2);
+			} else {
+				YYFREE($2);
 				yyerror("statsdir remote configuration ignored");
 			}
 		}
@@ -581,64 +616,64 @@ stat
 	;
 
 filegen_option_list
-	:	filegen_option_list filegen_option
+	:	/* empty list */
+			{ $$ = create_queue(); }
+	|	filegen_option_list filegen_option
 		{
 			if ($2 != NULL)
 				$$ = enqueue($1, $2);
 			else
 				$$ = $1;
 		}
-	|	filegen_option
-		{
-			if ($1 != NULL)
-				$$ = enqueue_in_new_queue($1);
-			else
-				$$ = create_queue();
-		}
-	|	/* empty list */
-			{ $$ = create_queue(); }
 	;
 
 filegen_option
 	:	T_File T_String
 		{
-			if (input_from_file)
+			if (input_from_file) {
 				$$ = create_attr_sval($1, $2);
-			else {
+			} else {
 				$$ = NULL;
-				free($2);
-				yyerror("filegen file remote configuration ignored");
+				YYFREE($2);
+				yyerror("filegen file remote config ignored");
 			}
 		}
 	|	T_Type filegen_type
 		{
-			if (input_from_file)
+			if (input_from_file) {
 				$$ = create_attr_ival($1, $2);
-			else {
+			} else {
 				$$ = NULL;
-				yyerror("filegen type remote configuration ignored");
+				yyerror("filegen type remote config ignored");
 			}
 		}
-	|	T_Link
+	|	link_nolink
 		{
-			if (input_from_file)
+			const char *err;
+			
+			if (input_from_file) {
 				$$ = create_attr_ival(T_Flag, $1);
-			else {
+			} else {
 				$$ = NULL;
-				yyerror("filegen link remote configuration ignored");
+				if (T_Link == $1)
+					err = "filegen link remote config ignored";
+				else
+					err = "filegen nolink remote config ignored";
+				yyerror(err);
 			}
 		}
+	|	enable_disable
+			{ $$ = create_attr_ival(T_Flag, $1); }
+	;
+
+link_nolink
+	:	T_Link
 	|	T_Nolink
-		{
-			if (input_from_file)
-				$$ = create_attr_ival(T_Flag, $1);
-			else {
-				$$ = NULL;
-				yyerror("filegen nolink remote configuration ignored");
-			}
-		}
-	|	T_Enable	{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Disable	{ $$ = create_attr_ival(T_Flag, $1); }
+	;
+
+enable_disable
+	:	T_Enable
+	|	T_Disable
 	;
 
 filegen_type
@@ -705,7 +740,7 @@ access_control_command
 	;
 
 ac_flag_list
-	:	/* Null statement */
+	:	/* empty list is allowed */
 			{ $$ = create_queue(); }
 	|	ac_flag_list access_control_flag
 			{ $$ = enqueue($1, create_ival($2)); }
@@ -736,11 +771,17 @@ discard_option_list
 	;
 
 discard_option
-	:	T_Average T_Integer { $$ = create_attr_ival($1, $2); }
-	|	T_Minimum T_Integer { $$ = create_attr_ival($1, $2); }
-	|	T_Monitor T_Integer { $$ = create_attr_ival($1, $2); }
+	:	discard_option_keyword T_Integer
+			{ $$ = create_attr_ival($1, $2); }
 	;
 
+discard_option_keyword
+	:	T_Average
+	|	T_Minimum
+	|	T_Monitor
+	;
+
+
 /* Fudge Commands
  * --------------
  */
@@ -758,16 +799,29 @@ fudge_factor_list
 	;
 	
 fudge_factor
-	:	T_Time1 number		{ $$ = create_attr_dval($1, $2); }
-	|	T_Time2 number		{ $$ = create_attr_dval($1, $2); }
-	|	T_Stratum T_Integer	{ $$ = create_attr_ival($1, $2); }
-	|	T_Refid T_String	{ $$ = create_attr_sval($1, $2); }
-	|	T_Flag1 boolean		{ $$ = create_attr_ival($1, $2); }
-	|	T_Flag2	boolean		{ $$ = create_attr_ival($1, $2); }
-	|	T_Flag3	boolean		{ $$ = create_attr_ival($1, $2); }
-	|	T_Flag4 boolean		{ $$ = create_attr_ival($1, $2); }
+	:	fudge_factor_dbl_keyword number
+			{ $$ = create_attr_dval($1, $2); }
+	|	fudge_factor_bool_keyword boolean
+			{ $$ = create_attr_ival($1, $2); }
+	|	T_Stratum T_Integer
+			{ $$ = create_attr_ival($1, $2); }
+	|	T_Refid T_String
+			{ $$ = create_attr_sval($1, $2); }
+	;
+
+fudge_factor_dbl_keyword
+	:	T_Time1
+	|	T_Time2
 	;
 
+fudge_factor_bool_keyword
+	:	T_Flag1
+	|	T_Flag2
+	|	T_Flag3
+	|	T_Flag4
+	;
+
+
 /* Command for System Options
  * --------------------------
  */
@@ -797,23 +851,29 @@ system_option_list
 	;
 
 system_option
-	:	T_Auth      { $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Bclient   { $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Calibrate { $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Kernel    { $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Monitor   { $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Ntp       { $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Stats     
+	:	system_option_flag_keyword
+			{ $$ = create_attr_ival(T_Flag, $1); }
+	|	T_Stats
 		{ 
-			if (input_from_file)
+			if (input_from_file) {
 				$$ = create_attr_ival(T_Flag, $1);
-			else {
+			} else {
 				$$ = NULL;
-				yyerror("enable/disable stats remote configuration ignored");
+				yyerror("enable/disable stats remote config ignored");
 			}
 		}
 	;
 
+system_option_flag_keyword
+	:	T_Auth
+	|	T_Bclient
+	|	T_Calibrate
+	|	T_Kernel
+	|	T_Monitor
+	|	T_Ntp
+	;
+
+
 /* Tinker Commands
  * ---------------
  */
@@ -828,13 +888,18 @@ tinker_option_list
 	;
 
 tinker_option
-	:	T_Allan number	    { $$ = create_attr_dval($1, $2); }
-	|	T_Dispersion number { $$ = create_attr_dval($1, $2); }
-	|	T_Freq number	    { $$ = create_attr_dval($1, $2); }
-	|	T_Huffpuff number   { $$ = create_attr_dval($1, $2); }
-	|	T_Panic number	    { $$ = create_attr_dval($1, $2); }
-	|	T_Step number	    { $$ = create_attr_dval($1, $2); }
-	|	T_Stepout number    { $$ = create_attr_dval($1, $2); }
+	:	tinker_option_keyword number
+			{ $$ = create_attr_dval($1, $2); }
+	;
+
+tinker_option_keyword
+	:	T_Allan
+	|	T_Dispersion
+	|	T_Freq
+	|	T_Huffpuff
+	|	T_Panic
+	|	T_Step
+	|	T_Stepout
 	;
 
 
@@ -844,20 +909,53 @@ tinker_option
 
 miscellaneous_command
 	:	interface_command
+	|	misc_cmd_dbl_keyword number
+		{
+			struct attr_val *av;
+			
+			av = create_attr_dval($1, $2);
+			enqueue(cfgt.vars, av);
+		}
+	|	misc_cmd_str_keyword T_String
+		{
+			struct attr_val *av;
+			
+			av = create_attr_sval($1, $2);
+			enqueue(cfgt.vars, av);
+		}
+	|	misc_cmd_str_lcl_keyword T_String
+		{
+			char error_text[64];
+			struct attr_val *av;
+
+			if (input_from_file) {
+				av = create_attr_sval($1, $2);
+				enqueue(cfgt.vars, av);
+			} else {
+				YYFREE($2);
+				snprintf(error_text, sizeof(error_text),
+					 "%s remote config ignored",
+					 keyword($1));
+				yyerror(error_text);
+			}
+		}
 	|	T_Includefile T_String command
 		{
+			if (!input_from_file) {
+				yyerror("remote includefile ignored");
+				break;
+			}
 			if (curr_include_level >= MAXINCLUDELEVEL) {
 				fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
-				msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
-			}
-			else {
+				msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.\n");
+			} else {
 				fp[curr_include_level + 1] = F_OPEN(FindConfig($2), "r");
 				if (fp[curr_include_level + 1] == NULL) {
 					fprintf(stderr, "getconfig: Couldn't open <%s>\n", FindConfig($2));
-					msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", FindConfig($2));
-				}
-				else
+					msyslog(LOG_ERR, "getconfig: Couldn't open <%s>\n", FindConfig($2));
+				} else {
 					ip_file = fp[++curr_include_level];
+				}
 			}
 		}
 	|	T_End
@@ -865,45 +963,14 @@ miscellaneous_command
 			while (curr_include_level != -1)
 				FCLOSE(fp[curr_include_level--]);
 		}
-
-	|	T_Broadcastdelay number
-			{ enqueue(cfgt.vars, create_attr_dval($1, $2)); }
 	|	T_Calldelay T_Integer
 			{ enqueue(cfgt.vars, create_attr_ival($1, $2)); }
-	|	T_Tick number
-			{ enqueue(cfgt.vars, create_attr_dval($1, $2)); }
 	|	T_Driftfile drift_parm
 			{ /* Null action, possibly all null parms */ }
-	|	T_Leapfile T_String
-			{ enqueue(cfgt.vars, create_attr_sval($1, $2)); }
-
-	|	T_Pidfile T_String
-			{ enqueue(cfgt.vars, create_attr_sval($1, $2)); }
-	|	T_Logfile T_String
-		{
-			if (input_from_file)
-				enqueue(cfgt.vars,
-					create_attr_sval($1, $2));
-			else {
-				free($2);
-				yyerror("logfile remote configuration ignored");
-			}
-		}
-
 	|	T_Logconfig log_config_list
 			{ append_queue(cfgt.logconfig, $2); }
 	|	T_Phone string_list
 			{ append_queue(cfgt.phone, $2); }
-	|	T_Saveconfigdir	T_String
-		{
-			if (input_from_file)
-				enqueue(cfgt.vars,
-					create_attr_sval($1, $2));
-			else {
-				free($2);
-				yyerror("saveconfigdir remote configuration ignored");
-			}
-		}
 	|	T_Setvar variable_assign
 			{ enqueue(cfgt.setvar, $2); }
 	|	T_Trap ip_address
@@ -912,10 +979,24 @@ miscellaneous_command
 			{ enqueue(cfgt.trap, create_addr_opts_node($2, $3)); }
 	|	T_Ttl integer_list
 			{ append_queue(cfgt.ttl, $2); }
-	|	T_Qos T_String
-			{ enqueue(cfgt.qos, create_attr_sval($1, $2)); }
 	;
-	
+
+misc_cmd_dbl_keyword
+	:	T_Broadcastdelay
+	|	T_Tick
+	;
+
+misc_cmd_str_keyword
+	:	T_Leapfile
+	|	T_Pidfile
+	|	T_Qos
+	;
+
+misc_cmd_str_lcl_keyword
+	:	T_Logfile
+	|	T_Saveconfigdir
+	;
+
 drift_parm
 	:	T_String
 			{ enqueue(cfgt.vars, create_attr_sval(T_Driftfile, $1)); }
@@ -927,10 +1008,14 @@ drift_parm
 	;
 
 variable_assign
-	:	T_String '=' T_String T_Default
+	:	T_String '=' T_String t_default_or_zero
 			{ $$ = create_setvar_node($1, $3, $4); }
-	|	T_String '=' T_String
-			{ $$ = create_setvar_node($1, $3, 0); }
+	;
+
+t_default_or_zero
+	:	T_Default
+	|	/* empty, no "default" modifier */
+		{ $$ = 0; }
 	;
 
 trap_option_list
@@ -1040,9 +1125,9 @@ boolean
 			if ($1 != 0 && $1 != 1) {
 				yyerror("Integer value is not boolean (0 or 1). Assuming 1");
 				$$ = 1;
-			}
-			else
+			} else {
 				$$ = $1;
+			}
 		}
 	|	T_True    { $$ = 1; }
 	|	T_False   { $$ = 0; }
@@ -1136,7 +1221,10 @@ sim_act_stmt
 
 %%
 
-void yyerror (char *msg)
+void
+yyerror(
+	const char *msg
+	)
 {
 	int retval;
 
@@ -1166,8 +1254,9 @@ void yyerror (char *msg)
 
 
 /*
- * token_name - convert T_ token integers to text
- *		example: token_name(T_Server) returns "T_Server"
+ * token_name - Convert T_ token integers to text.
+ *		Example: token_name(T_Server) returns "T_Server".
+ *		see also keyword(T_Server) which returns "server".
  */
 const char *
 token_name(

==== ntpd/ntp_scanner.c ====
2010-10-24 03:23:09+00:00, davehart at shiny.ad.hartbrothers.com +4 -1
  [Bug 1675] Prohibit includefile remote config.

--- 1.32/ntpd/ntp_scanner.c	2010-07-02 02:43:19 -04:00
+++ 1.33/ntpd/ntp_scanner.c	2010-10-23 23:23:09 -04:00
@@ -62,7 +62,10 @@ static int is_keyword(char *lexeme, foll
 
 
 /*
- * keyword() - Return the keyword associated with token T_ identifier
+ * keyword() - Return the keyword associated with token T_ identifier.
+ *	       See also token_name() for the string-ized T_ identifier.
+ *	       Example: keyword(T_Server) returns "server"
+ *			token_name(T_Server) returns "T_Server"
  */
 const char *
 keyword(


More information about the bk-ntp-stable-send mailing list