]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
implement configuration of association option ident specifying
authorDave Hart <hart@ntp.org>
Sun, 28 Nov 2010 19:24:29 +0000 (19:24 +0000)
committerDave Hart <hart@ntp.org>
Sun, 28 Nov 2010 19:24:29 +0000 (19:24 +0000)
  the autokey group.  Implementation not yet complete.

bk: 4cf2ac6dzZgT4T1Va3ABw4ZnvUM-BQ

include/ntp_config.h
include/ntpd.h
ntpd/complete.conf
ntpd/ntp_config.c
ntpd/ntp_parser.c
ntpd/ntp_parser.y
ntpd/ntp_peer.c

index 3e9b0407a42990b6471bd7bf5cb88c90e6cc13ec..f16ec2b30ff29d775e253d2145e2206b128f3d7c 100644 (file)
@@ -143,6 +143,7 @@ struct peer_node_tag {
        u_char          ttl;
        u_char          peerversion;
        keyid_t         peerkey;
+       char *          group;
 };
 
 typedef DECL_FIFO_ANCHOR(peer_node) peer_fifo;
index c6afea4e544e4b756937f578d29c74dbf953d3cf..9f4313220041b2ba14b04ee6268400fdc695ec23 100644 (file)
@@ -192,7 +192,7 @@ extern      void    peer_clr_stats  (void);
 extern struct peer *peer_config(sockaddr_u *, const char *,
                                 struct interface *, u_char, u_char,
                                 u_char, u_char, u_int, u_char, keyid_t,
-                                u_char *);
+                                const char *);
 extern void    peer_reset      (struct peer *);
 extern void    refresh_all_peerinterfaces(void);
 extern void    unpeer          (struct peer *);
index 6d85d6c0ff3f49ac44e7fa2411df3f7b943b7951..eee5f9b67786d36fb2a14444abe10403003e2bcf 100644 (file)
@@ -31,7 +31,7 @@ pool 0.north-america.pool.ntp.org. iburst preempt
 server 1.north-america.pool.ntp.org. iburst
 server -4 2.north-america.pool.ntp.org. minpoll 6 maxpoll 10 iburst
 server -6 ntp.davehart.net. minpoll 6 maxpoll 10 version 5 burst iburst
-peer -6 davehart.broker.freenet6.net. xleave autokey
+peer -6 davehart.broker.freenet6.net. ident "autokey-group" xleave autokey
 peer -4 192.168.192.168 key 1 noselect
 broadcast 192.168.192.255
 manycastclient 224.0.1.1
index ad88f8fb356a66bcf6f2c14e4f4922c3e37ab768..9e3dd9da920937e809d65246af713133db37527d 100644 (file)
@@ -96,15 +96,16 @@ static struct masks logcfg_item[] = {
 };
 
 typedef struct peer_resolved_ctx_tag {
-       int     flags;
-       int     host_mode;      /* T_* token identifier */
-       u_short family;
-       keyid_t keyid;
-       u_char  hmode;          /* MODE_* */
-       u_char  version;
-       u_char  minpoll;
-       u_char  maxpoll;
-       u_char  ttl;
+       int             flags;
+       int             host_mode;      /* T_* token identifier */
+       u_short         family;
+       keyid_t         keyid;
+       u_char          hmode;          /* MODE_* */
+       u_char          version;
+       u_char          minpoll;
+       u_char          maxpoll;
+       u_char          ttl;
+       const char *    group;
 } peer_resolved_ctx;
 
 /* Limits */
@@ -754,6 +755,9 @@ dump_config_tree(
                if (peern->peerkey != 0)
                        fprintf(df, " key %u", peern->peerkey);
 
+               if (peern->group != NULL)
+                       fprintf(df, " ident \"%s\"", peern->group);
+
                atrv = HEAD_PFIFO(peern->peerflags);
                for ( ; atrv != NULL; atrv = atrv->link) {
                        NTP_INSIST(T_Flag == atrv->attr);
@@ -1248,6 +1252,10 @@ create_peer_node(
                        }
                        break;
 
+               case T_Ident:
+                       my_node->group = option->value.s;
+                       break;
+
                default:
                        msyslog(LOG_ERR, 
                                "Unknown peer/server option token %s",
@@ -3585,20 +3593,16 @@ config_peers(
                                        FLAG_IBURST,
                                        0,
                                        0,
-                                       (u_char *)"*");
+                                       NULL);
                } else {
                        /* we have a hostname to resolve */
 # ifdef WORKER
-                       ctx = emalloc(sizeof(*ctx));
+                       ctx = emalloc_zero(sizeof(*ctx));
                        ctx->family = AF_UNSPEC;
                        ctx->host_mode = T_Server;
                        ctx->hmode = MODE_CLIENT;
                        ctx->version = NTP_VERSION;
-                       ctx->minpoll = 0;
-                       ctx->maxpoll = 0;
                        ctx->flags = FLAG_IBURST;
-                       ctx->ttl = 0;
-                       ctx->keyid = 0;
 
                        memset(&hints, 0, sizeof(hints));
                        hints.ai_family = (u_short)ctx->family;
@@ -3639,7 +3643,7 @@ config_peers(
                                peerflag_bits(curr_peer),
                                curr_peer->ttl,
                                curr_peer->peerkey,
-                               (u_char *)"*");
+                               curr_peer->group);
                /*
                 * If we have a numeric address, we can safely
                 * proceed in the mainline with it.  Otherwise, hand
@@ -3662,11 +3666,11 @@ config_peers(
                                        peerflag_bits(curr_peer),
                                        curr_peer->ttl,
                                        curr_peer->peerkey,
-                                       (u_char *)"*");
+                                       curr_peer->group);
                } else {
                        /* we have a hostname to resolve */
 # ifdef WORKER
-                       ctx = emalloc(sizeof(*ctx));
+                       ctx = emalloc_zero(sizeof(*ctx));
                        ctx->family = curr_peer->addr->type;
                        ctx->host_mode = curr_peer->host_mode;
                        ctx->hmode = hmode;
@@ -3676,6 +3680,7 @@ config_peers(
                        ctx->flags = peerflag_bits(curr_peer);
                        ctx->ttl = curr_peer->ttl;
                        ctx->keyid = curr_peer->peerkey;
+                       ctx->group = curr_peer->group;
 
                        memset(&hints, 0, sizeof(hints));
                        hints.ai_family = ctx->family;
@@ -3763,7 +3768,7 @@ peer_name_resolved(
                                ctx->flags,
                                ctx->ttl,
                                ctx->keyid,
-                               (u_char *)"*");
+                               ctx->group);
                        break;
                }
        }
index b15a4d834f2e3ba6eb863893e9a0c47394b17388..bbccf6a41551e31393cebf0e43a4b029b6a03d3d 100644 (file)
@@ -732,16 +732,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  181
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   584
+#define YYLAST   510
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  180
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  94
+#define YYNNTS  96
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  279
+#define YYNRULES  282
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  378
+#define YYNSTATES  382
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -807,137 +807,140 @@ static const yytype_uint16 yyprhs[] =
       22,    24,    26,    28,    30,    32,    34,    36,    38,    40,
       44,    46,    48,    50,    52,    54,    56,    59,    61,    63,
       65,    66,    69,    71,    73,    75,    77,    79,    81,    83,
-      85,    87,    89,    91,    94,    96,    98,   100,   102,   104,
-     106,   109,   111,   113,   115,   118,   121,   124,   127,   130,
-     133,   136,   139,   142,   145,   148,   149,   152,   155,   158,
-     160,   162,   164,   166,   168,   171,   174,   176,   179,   182,
-     185,   187,   189,   191,   193,   195,   197,   199,   201,   203,
-     205,   208,   211,   215,   218,   220,   222,   224,   226,   228,
-     230,   232,   234,   236,   237,   240,   243,   246,   248,   250,
-     252,   254,   256,   258,   260,   262,   264,   266,   268,   270,
-     272,   275,   278,   282,   288,   292,   297,   302,   306,   307,
-     310,   312,   314,   316,   318,   320,   322,   324,   326,   328,
-     330,   332,   334,   336,   338,   341,   343,   346,   348,   350,
-     352,   355,   357,   360,   362,   364,   366,   368,   370,   372,
-     374,   376,   380,   383,   385,   388,   391,   394,   397,   399,
-     401,   403,   405,   407,   409,   412,   415,   418,   420,   422,
-     424,   426,   428,   430,   432,   434,   436,   439,   442,   444,
-     447,   449,   451,   453,   455,   457,   459,   461,   463,   466,
-     469,   472,   476,   478,   481,   484,   487,   490,   494,   497,
-     499,   501,   503,   505,   507,   509,   511,   513,   515,   518,
-     519,   524,   526,   527,   528,   531,   534,   537,   540,   542,
-     544,   548,   552,   554,   556,   558,   560,   562,   564,   566,
-     568,   570,   573,   575,   578,   580,   582,   584,   590,   593,
-     595,   598,   600,   602,   604,   606,   608,   610,   616,   618,
-     622,   625,   629,   631,   633,   636,   638,   644,   649,   653,
-     656,   658,   665,   669,   672,   676,   678,   680,   682,   684
+      85,    87,    89,    91,    93,    96,    98,   100,   102,   104,
+     106,   108,   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,   178,   181,
+     183,   186,   189,   192,   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,   285,   289,   295,   299,   304,
+     309,   313,   314,   317,   319,   321,   323,   325,   327,   329,
+     331,   333,   335,   337,   339,   341,   343,   345,   348,   350,
+     353,   355,   357,   359,   362,   364,   367,   369,   371,   373,
+     375,   377,   379,   381,   383,   387,   390,   392,   395,   398,
+     401,   404,   406,   408,   410,   412,   414,   416,   419,   422,
+     425,   427,   429,   431,   433,   435,   437,   439,   441,   443,
+     446,   449,   451,   454,   456,   458,   460,   462,   464,   466,
+     468,   470,   473,   476,   479,   483,   485,   488,   491,   494,
+     497,   501,   504,   506,   508,   510,   512,   514,   516,   518,
+     520,   522,   525,   526,   531,   533,   534,   535,   538,   541,
+     544,   547,   549,   551,   555,   559,   561,   563,   565,   567,
+     569,   571,   573,   575,   577,   580,   582,   585,   587,   589,
+     591,   597,   600,   602,   605,   607,   609,   611,   613,   615,
+     617,   623,   625,   629,   632,   636,   638,   640,   643,   645,
+     651,   656,   660,   663,   665,   672,   676,   679,   683,   685,
+     687,   689,   691
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
      181,     0,    -1,   182,    -1,   182,   183,   164,    -1,   183,
-     164,    -1,     1,   164,    -1,    -1,   184,    -1,   195,    -1,
-     197,    -1,   198,    -1,   207,    -1,   215,    -1,   202,    -1,
-     224,    -1,   229,    -1,   233,    -1,   237,    -1,   260,    -1,
+     164,    -1,     1,   164,    -1,    -1,   184,    -1,   197,    -1,
+     199,    -1,   200,    -1,   209,    -1,   217,    -1,   204,    -1,
+     226,    -1,   231,    -1,   235,    -1,   239,    -1,   262,    -1,
      185,   186,   189,    -1,   133,    -1,   119,    -1,   114,    -1,
       12,    -1,    77,    -1,   187,    -1,   188,   142,    -1,   142,
       -1,    60,    -1,    62,    -1,    -1,   189,   190,    -1,   191,
-      -1,   193,    -1,   192,    -1,     7,    -1,    15,    -1,    48,
-      -1,   104,    -1,   121,    -1,   122,    -1,   151,    -1,   161,
-      -1,   194,    56,    -1,    64,    -1,    90,    -1,    85,    -1,
-     153,    -1,    92,    -1,   157,    -1,   196,   186,    -1,   155,
-      -1,   156,    -1,    13,    -1,    78,   257,    -1,    96,   257,
-      -1,     8,    56,    -1,    20,    56,    -1,    21,   199,    -1,
-      65,   142,    -1,    66,   142,    -1,   129,    56,    -1,   131,
-      56,    -1,   152,   253,    -1,   110,   142,    -1,    -1,   199,
-     200,    -1,   201,   142,    -1,   131,    56,    -1,    46,    -1,
-      49,    -1,   124,    -1,   126,    -1,    25,    -1,   149,   203,
-      -1,   203,   204,    -1,   204,    -1,   205,    56,    -1,   206,
-     259,    -1,    19,   258,    -1,    17,    -1,    43,    -1,   111,
-      -1,   112,    -1,    91,    -1,    11,    -1,    88,    -1,    83,
-      -1,    86,    -1,    81,    -1,   136,   208,    -1,   138,   142,
-      -1,    37,   209,   210,    -1,   208,   209,    -1,   209,    -1,
-      18,    -1,    22,    -1,    75,    -1,   115,    -1,   127,    -1,
-     143,    -1,   147,    -1,   123,    -1,    -1,   210,   211,    -1,
-      36,   142,    -1,   154,   214,    -1,   212,    -1,   213,    -1,
-      71,    -1,    98,    -1,    33,    -1,    26,    -1,   100,    -1,
-     117,    -1,    23,    -1,   159,    -1,    94,    -1,   162,    -1,
-       3,    -1,    27,   218,    -1,    95,   221,    -1,   130,   186,
-     216,    -1,   130,   187,    79,   187,   216,    -1,   130,    24,
-     216,    -1,   130,    60,    24,   216,    -1,   130,    62,    24,
-     216,    -1,   130,   135,   216,    -1,    -1,   216,   217,    -1,
-      42,    -1,    50,    -1,    67,    -1,    68,    -1,    70,    -1,
-      76,    -1,    99,    -1,   102,    -1,   103,    -1,   105,    -1,
-     106,    -1,   107,    -1,   109,    -1,   157,    -1,   218,   219,
-      -1,   219,    -1,   220,    56,    -1,     9,    -1,    89,    -1,
-      93,    -1,   221,   222,    -1,   222,    -1,   223,    56,    -1,
-      51,    -1,    52,    -1,    53,    -1,    54,    -1,    80,    -1,
-      82,    -1,    84,    -1,    87,    -1,    45,   186,   225,    -1,
-     225,   226,    -1,   226,    -1,   227,   259,    -1,   228,   258,
-      -1,   141,    56,    -1,   128,   142,    -1,   145,    -1,   146,
-      -1,    38,    -1,    39,    -1,    40,    -1,    41,    -1,    33,
-     230,    -1,    26,   230,    -1,   230,   231,    -1,   231,    -1,
-     232,    -1,   137,    -1,     6,    -1,    10,    -1,    16,    -1,
-      63,    -1,    93,    -1,   108,    -1,   148,   234,    -1,   234,
-     235,    -1,   235,    -1,   236,   259,    -1,     5,    -1,    28,
-      -1,    44,    -1,    47,    -1,   113,    -1,   139,    -1,   140,
-      -1,   248,    -1,   238,   259,    -1,   239,   142,    -1,   240,
-     142,    -1,    55,   142,   183,    -1,    34,    -1,    30,   241,
-      -1,    73,   246,    -1,   116,   256,    -1,   134,   242,    -1,
-     150,   187,   244,    -1,   153,   252,    -1,    14,    -1,   101,
-      -1,   144,    -1,    69,    -1,   118,    -1,   125,    -1,    74,
-      -1,   132,    -1,   142,    -1,   142,    29,    -1,    -1,   142,
-     175,   142,   243,    -1,    24,    -1,    -1,    -1,   244,   245,
-      -1,   120,    56,    -1,    57,   187,    -1,   246,   247,    -1,
-     247,    -1,   142,    -1,   249,   251,   250,    -1,   249,   251,
-     142,    -1,    57,    -1,    97,    -1,     4,    -1,    59,    -1,
-      61,    -1,   160,    -1,    72,    -1,    50,    -1,    31,    -1,
-     252,    56,    -1,    56,    -1,   253,   254,    -1,   254,    -1,
-      56,    -1,   255,    -1,   176,    56,    32,    56,   177,    -1,
-     256,   142,    -1,   142,    -1,   257,   186,    -1,   186,    -1,
-      56,    -1,   151,    -1,    35,    -1,    56,    -1,    29,    -1,
-     261,   178,   262,   265,   179,    -1,   165,    -1,   262,   263,
-     164,    -1,   263,   164,    -1,   264,   175,   259,    -1,   166,
-      -1,   167,    -1,   265,   266,    -1,   266,    -1,   268,   178,
-     267,   269,   179,    -1,   168,   175,   259,   164,    -1,   133,
-     175,   186,    -1,   269,   270,    -1,   270,    -1,   169,   175,
-     259,   178,   271,   179,    -1,   271,   272,   164,    -1,   272,
-     164,    -1,   273,   175,   259,    -1,   170,    -1,   171,    -1,
-     172,    -1,   173,    -1,   174,    -1
+      -1,   193,    -1,   195,    -1,   192,    -1,     7,    -1,    15,
+      -1,    48,    -1,   104,    -1,   121,    -1,   122,    -1,   151,
+      -1,   161,    -1,   194,    56,    -1,    64,    -1,    90,    -1,
+      85,    -1,   153,    -1,    92,    -1,   157,    -1,   196,   142,
+      -1,    49,    -1,   198,   186,    -1,   155,    -1,   156,    -1,
+      13,    -1,    78,   259,    -1,    96,   259,    -1,     8,    56,
+      -1,    20,    56,    -1,    21,   201,    -1,    65,   142,    -1,
+      66,   142,    -1,   129,    56,    -1,   131,    56,    -1,   152,
+     255,    -1,   110,   142,    -1,    -1,   201,   202,    -1,   203,
+     142,    -1,   131,    56,    -1,    46,    -1,    49,    -1,   124,
+      -1,   126,    -1,    25,    -1,   149,   205,    -1,   205,   206,
+      -1,   206,    -1,   207,    56,    -1,   208,   261,    -1,    19,
+     260,    -1,    17,    -1,    43,    -1,   111,    -1,   112,    -1,
+      91,    -1,    11,    -1,    88,    -1,    83,    -1,    86,    -1,
+      81,    -1,   136,   210,    -1,   138,   142,    -1,    37,   211,
+     212,    -1,   210,   211,    -1,   211,    -1,    18,    -1,    22,
+      -1,    75,    -1,   115,    -1,   127,    -1,   143,    -1,   147,
+      -1,   123,    -1,    -1,   212,   213,    -1,    36,   142,    -1,
+     154,   216,    -1,   214,    -1,   215,    -1,    71,    -1,    98,
+      -1,    33,    -1,    26,    -1,   100,    -1,   117,    -1,    23,
+      -1,   159,    -1,    94,    -1,   162,    -1,     3,    -1,    27,
+     220,    -1,    95,   223,    -1,   130,   186,   218,    -1,   130,
+     187,    79,   187,   218,    -1,   130,    24,   218,    -1,   130,
+      60,    24,   218,    -1,   130,    62,    24,   218,    -1,   130,
+     135,   218,    -1,    -1,   218,   219,    -1,    42,    -1,    50,
+      -1,    67,    -1,    68,    -1,    70,    -1,    76,    -1,    99,
+      -1,   102,    -1,   103,    -1,   105,    -1,   106,    -1,   107,
+      -1,   109,    -1,   157,    -1,   220,   221,    -1,   221,    -1,
+     222,    56,    -1,     9,    -1,    89,    -1,    93,    -1,   223,
+     224,    -1,   224,    -1,   225,    56,    -1,    51,    -1,    52,
+      -1,    53,    -1,    54,    -1,    80,    -1,    82,    -1,    84,
+      -1,    87,    -1,    45,   186,   227,    -1,   227,   228,    -1,
+     228,    -1,   229,   261,    -1,   230,   260,    -1,   141,    56,
+      -1,   128,   142,    -1,   145,    -1,   146,    -1,    38,    -1,
+      39,    -1,    40,    -1,    41,    -1,    33,   232,    -1,    26,
+     232,    -1,   232,   233,    -1,   233,    -1,   234,    -1,   137,
+      -1,     6,    -1,    10,    -1,    16,    -1,    63,    -1,    93,
+      -1,   108,    -1,   148,   236,    -1,   236,   237,    -1,   237,
+      -1,   238,   261,    -1,     5,    -1,    28,    -1,    44,    -1,
+      47,    -1,   113,    -1,   139,    -1,   140,    -1,   250,    -1,
+     240,   261,    -1,   241,   142,    -1,   242,   142,    -1,    55,
+     142,   183,    -1,    34,    -1,    30,   243,    -1,    73,   248,
+      -1,   116,   258,    -1,   134,   244,    -1,   150,   187,   246,
+      -1,   153,   254,    -1,    14,    -1,   101,    -1,   144,    -1,
+      69,    -1,   118,    -1,   125,    -1,    74,    -1,   132,    -1,
+     142,    -1,   142,    29,    -1,    -1,   142,   175,   142,   245,
+      -1,    24,    -1,    -1,    -1,   246,   247,    -1,   120,    56,
+      -1,    57,   187,    -1,   248,   249,    -1,   249,    -1,   142,
+      -1,   251,   253,   252,    -1,   251,   253,   142,    -1,    57,
+      -1,    97,    -1,     4,    -1,    59,    -1,    61,    -1,   160,
+      -1,    72,    -1,    50,    -1,    31,    -1,   254,    56,    -1,
+      56,    -1,   255,   256,    -1,   256,    -1,    56,    -1,   257,
+      -1,   176,    56,    32,    56,   177,    -1,   258,   142,    -1,
+     142,    -1,   259,   186,    -1,   186,    -1,    56,    -1,   151,
+      -1,    35,    -1,    56,    -1,    29,    -1,   263,   178,   264,
+     267,   179,    -1,   165,    -1,   264,   265,   164,    -1,   265,
+     164,    -1,   266,   175,   261,    -1,   166,    -1,   167,    -1,
+     267,   268,    -1,   268,    -1,   270,   178,   269,   271,   179,
+      -1,   168,   175,   261,   164,    -1,   133,   175,   186,    -1,
+     271,   272,    -1,   272,    -1,   169,   175,   261,   178,   273,
+     179,    -1,   273,   274,   164,    -1,   274,   164,    -1,   275,
+     175,   261,    -1,   170,    -1,   171,    -1,   172,    -1,   173,
+      -1,   174,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   334,   334,   338,   339,   340,   354,   355,   356,   357,
-     358,   359,   360,   361,   362,   363,   364,   365,   366,   374,
-     384,   385,   386,   387,   388,   392,   393,   398,   403,   405,
-     411,   412,   420,   421,   425,   430,   431,   432,   433,   434,
-     435,   436,   437,   441,   446,   447,   448,   449,   450,   451,
-     460,   470,   471,   481,   483,   485,   496,   503,   505,   510,
-     512,   514,   516,   518,   520,   526,   527,   535,   537,   549,
-     550,   551,   552,   553,   562,   567,   572,   580,   582,   584,
-     589,   590,   591,   592,   593,   594,   598,   599,   600,   601,
-     610,   612,   621,   631,   636,   644,   645,   646,   647,   648,
-     649,   650,   651,   656,   657,   665,   675,   684,   699,   704,
-     705,   709,   710,   714,   715,   716,   717,   718,   719,   720,
-     729,   733,   737,   745,   753,   761,   776,   791,   804,   805,
-     813,   814,   815,   816,   817,   818,   819,   820,   821,   822,
-     823,   824,   825,   826,   830,   835,   843,   848,   849,   850,
-     854,   859,   867,   872,   873,   874,   875,   876,   877,   878,
-     879,   887,   897,   902,   910,   912,   914,   916,   921,   922,
-     926,   927,   928,   929,   937,   939,   944,   949,   957,   959,
-     971,   972,   973,   974,   975,   976,   984,   989,   994,  1002,
-    1007,  1008,  1009,  1010,  1011,  1012,  1013,  1022,  1023,  1030,
-    1037,  1053,  1072,  1077,  1079,  1081,  1083,  1085,  1092,  1097,
-    1098,  1099,  1103,  1104,  1105,  1109,  1110,  1114,  1121,  1131,
-    1140,  1145,  1147,  1152,  1153,  1161,  1163,  1171,  1176,  1184,
-    1209,  1216,  1226,  1227,  1231,  1232,  1233,  1234,  1238,  1239,
-    1240,  1249,  1254,  1262,  1267,  1275,  1277,  1281,  1286,  1291,
-    1299,  1304,  1312,  1321,  1322,  1326,  1327,  1336,  1354,  1358,
-    1363,  1371,  1376,  1377,  1381,  1386,  1394,  1399,  1404,  1409,
-    1414,  1422,  1427,  1432,  1440,  1445,  1446,  1447,  1448,  1449
+       0,   336,   336,   340,   341,   342,   356,   357,   358,   359,
+     360,   361,   362,   363,   364,   365,   366,   367,   368,   376,
+     386,   387,   388,   389,   390,   394,   395,   400,   405,   407,
+     413,   414,   422,   423,   424,   428,   433,   434,   435,   436,
+     437,   438,   439,   440,   444,   449,   450,   451,   452,   453,
+     454,   458,   463,   472,   482,   483,   493,   495,   497,   508,
+     515,   517,   522,   524,   526,   528,   530,   532,   538,   539,
+     547,   549,   561,   562,   563,   564,   565,   574,   579,   584,
+     592,   594,   596,   601,   602,   603,   604,   605,   606,   610,
+     611,   612,   613,   622,   624,   633,   643,   648,   656,   657,
+     658,   659,   660,   661,   662,   663,   668,   669,   677,   687,
+     696,   711,   716,   717,   721,   722,   726,   727,   728,   729,
+     730,   731,   732,   741,   745,   749,   757,   765,   773,   788,
+     803,   816,   817,   825,   826,   827,   828,   829,   830,   831,
+     832,   833,   834,   835,   836,   837,   838,   842,   847,   855,
+     860,   861,   862,   866,   871,   879,   884,   885,   886,   887,
+     888,   889,   890,   891,   899,   909,   914,   922,   924,   926,
+     928,   933,   934,   938,   939,   940,   941,   949,   951,   956,
+     961,   969,   971,   983,   984,   985,   986,   987,   988,   996,
+    1001,  1006,  1014,  1019,  1020,  1021,  1022,  1023,  1024,  1025,
+    1034,  1035,  1042,  1049,  1065,  1084,  1089,  1091,  1093,  1095,
+    1097,  1104,  1109,  1110,  1111,  1115,  1116,  1117,  1121,  1122,
+    1126,  1133,  1143,  1152,  1157,  1159,  1164,  1165,  1173,  1175,
+    1183,  1188,  1196,  1221,  1228,  1238,  1239,  1243,  1244,  1245,
+    1246,  1250,  1251,  1252,  1261,  1266,  1274,  1279,  1287,  1289,
+    1293,  1298,  1303,  1311,  1316,  1324,  1333,  1334,  1338,  1339,
+    1348,  1366,  1370,  1375,  1383,  1388,  1389,  1393,  1398,  1406,
+    1411,  1416,  1421,  1426,  1434,  1439,  1444,  1452,  1457,  1458,
+    1459,  1460,  1461
 };
 #endif
 
@@ -983,31 +986,32 @@ static const char *const yytname[] =
   "configuration", "command_list", "command", "server_command",
   "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", "mru_option_list", "mru_option",
-  "mru_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",
-  "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",
-  "sim_init_keyword", "sim_server_list", "sim_server", "sim_server_offset",
-  "sim_server_name", "sim_act_list", "sim_act", "sim_act_stmt_list",
-  "sim_act_stmt", "sim_act_keyword", 0
+  "option_int_keyword", "option_str", "option_str_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",
+  "mru_option_list", "mru_option", "mru_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", "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", "sim_init_keyword",
+  "sim_server_list", "sim_server", "sim_server_offset", "sim_server_name",
+  "sim_act_list", "sim_act", "sim_act_stmt_list", "sim_act_stmt",
+  "sim_act_keyword", 0
 };
 #endif
 
@@ -1043,31 +1047,32 @@ static const yytype_uint16 yyr1[] =
        0,   180,   181,   182,   182,   182,   183,   183,   183,   183,
      183,   183,   183,   183,   183,   183,   183,   183,   183,   184,
      185,   185,   185,   185,   185,   186,   186,   187,   188,   188,
-     189,   189,   190,   190,   191,   192,   192,   192,   192,   192,
-     192,   192,   192,   193,   194,   194,   194,   194,   194,   194,
-     195,   196,   196,   197,   197,   197,   198,   198,   198,   198,
-     198,   198,   198,   198,   198,   199,   199,   200,   200,   201,
-     201,   201,   201,   201,   202,   203,   203,   204,   204,   204,
-     205,   205,   205,   205,   205,   205,   206,   206,   206,   206,
-     207,   207,   207,   208,   208,   209,   209,   209,   209,   209,
-     209,   209,   209,   210,   210,   211,   211,   211,   211,   212,
-     212,   213,   213,   214,   214,   214,   214,   214,   214,   214,
-     215,   215,   215,   215,   215,   215,   215,   215,   216,   216,
-     217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   217,   217,   217,   218,   218,   219,   220,   220,   220,
-     221,   221,   222,   223,   223,   223,   223,   223,   223,   223,
-     223,   224,   225,   225,   226,   226,   226,   226,   227,   227,
-     228,   228,   228,   228,   229,   229,   230,   230,   231,   231,
-     232,   232,   232,   232,   232,   232,   233,   234,   234,   235,
-     236,   236,   236,   236,   236,   236,   236,   237,   237,   237,
-     237,   237,   237,   237,   237,   237,   237,   237,   237,   238,
-     238,   238,   239,   239,   239,   240,   240,   241,   241,   241,
-     242,   243,   243,   244,   244,   245,   245,   246,   246,   247,
-     248,   248,   249,   249,   250,   250,   250,   250,   251,   251,
-     251,   252,   252,   253,   253,   254,   254,   255,   256,   256,
-     257,   257,   258,   258,   258,   259,   259,   260,   261,   262,
-     262,   263,   264,   264,   265,   265,   266,   267,   268,   269,
-     269,   270,   271,   271,   272,   273,   273,   273,   273,   273
+     189,   189,   190,   190,   190,   191,   192,   192,   192,   192,
+     192,   192,   192,   192,   193,   194,   194,   194,   194,   194,
+     194,   195,   196,   197,   198,   198,   199,   199,   199,   200,
+     200,   200,   200,   200,   200,   200,   200,   200,   201,   201,
+     202,   202,   203,   203,   203,   203,   203,   204,   205,   205,
+     206,   206,   206,   207,   207,   207,   207,   207,   207,   208,
+     208,   208,   208,   209,   209,   209,   210,   210,   211,   211,
+     211,   211,   211,   211,   211,   211,   212,   212,   213,   213,
+     213,   213,   214,   214,   215,   215,   216,   216,   216,   216,
+     216,   216,   216,   217,   217,   217,   217,   217,   217,   217,
+     217,   218,   218,   219,   219,   219,   219,   219,   219,   219,
+     219,   219,   219,   219,   219,   219,   219,   220,   220,   221,
+     222,   222,   222,   223,   223,   224,   225,   225,   225,   225,
+     225,   225,   225,   225,   226,   227,   227,   228,   228,   228,
+     228,   229,   229,   230,   230,   230,   230,   231,   231,   232,
+     232,   233,   233,   234,   234,   234,   234,   234,   234,   235,
+     236,   236,   237,   238,   238,   238,   238,   238,   238,   238,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   240,   240,   240,   241,   241,   241,   242,   242,
+     243,   243,   243,   244,   245,   245,   246,   246,   247,   247,
+     248,   248,   249,   250,   250,   251,   251,   252,   252,   252,
+     252,   253,   253,   253,   254,   254,   255,   255,   256,   256,
+     257,   258,   258,   259,   259,   260,   260,   260,   261,   261,
+     262,   263,   264,   264,   265,   266,   266,   267,   267,   268,
+     269,   270,   271,   271,   272,   273,   273,   274,   275,   275,
+     275,   275,   275
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1077,30 +1082,31 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
        1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
        0,     2,     1,     1,     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,     2,     2,     1,     2,     2,     2,
+       1,     1,     1,     1,     2,     1,     1,     1,     1,     1,
+       1,     2,     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,     2,     2,     1,
+       2,     2,     2,     1,     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,
-       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,     2,     3,     5,     3,     4,     4,     3,     0,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
+       1,     1,     1,     2,     2,     3,     5,     3,     4,     4,
+       3,     0,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     1,     2,
+       1,     1,     1,     2,     1,     2,     1,     1,     1,     1,
+       1,     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,     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,     3,     2,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
-       4,     1,     0,     0,     2,     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,     1,     1,     2,     1,     5,     4,     3,     2,
-       1,     6,     3,     2,     3,     1,     1,     1,     1,     1
+       1,     2,     2,     2,     3,     1,     2,     2,     2,     2,
+       3,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     0,     4,     1,     0,     0,     2,     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,     1,     1,     2,     1,     5,
+       4,     3,     2,     1,     6,     3,     2,     3,     1,     1,
+       1,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1108,59 +1114,60 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     0,     0,    23,    53,   209,     0,    65,     0,     0,
-     219,     0,   202,     0,     0,     0,   232,     0,     0,   212,
-       0,   215,    24,     0,     0,     0,   233,   210,     0,    22,
-       0,   213,    21,   214,     0,     0,     0,   216,    20,     0,
-       0,     0,   211,     0,     0,     0,     0,     0,    51,    52,
-     258,     0,     2,     0,     7,     0,     8,     0,     9,    10,
+       0,     0,     0,    23,    56,   212,     0,    68,     0,     0,
+     222,     0,   205,     0,     0,     0,   235,     0,     0,   215,
+       0,   218,    24,     0,     0,     0,   236,   213,     0,    22,
+       0,   216,    21,   217,     0,     0,     0,   219,    20,     0,
+       0,     0,   214,     0,     0,     0,     0,     0,    54,    55,
+     261,     0,     2,     0,     7,     0,     8,     0,     9,    10,
       13,    11,    12,    14,    15,    16,    17,     0,     0,     0,
-     197,     0,    18,     0,     5,    56,    57,    58,   180,   181,
-     182,   183,   184,   185,   179,   175,   177,   178,   147,   148,
-     149,   120,   145,     0,   217,   203,   174,    95,    96,    97,
-      98,   102,    99,   100,   101,   103,    28,    29,    27,     0,
-      25,     0,     6,    59,    60,   229,   204,   228,   251,    54,
-     153,   154,   155,   156,   157,   158,   159,   160,   121,   151,
-       0,    55,    64,   249,   205,    61,   128,    28,    29,   128,
-     128,    25,    62,     0,   206,    90,    94,    91,   190,   191,
-     192,   193,   194,   195,   196,   186,   188,     0,    85,    80,
-       0,    81,    89,    87,    88,    86,    84,    82,    83,    74,
-      76,     0,     0,   223,   245,     0,    63,   244,   246,   242,
-     208,     1,     0,     4,    30,    50,   256,   255,   198,   199,
-     200,   240,   239,   238,     0,     0,    73,    69,    70,    71,
-      72,     0,    66,     0,   176,   144,   146,   218,    92,   170,
-     171,   172,   173,     0,     0,   168,   169,   161,   163,     0,
-       0,    26,   201,   227,   250,   150,   152,   248,   124,   128,
-     128,   127,   122,     0,     0,    93,   187,   189,   254,   252,
-     253,    79,    75,    77,    78,   207,     0,   243,   241,     3,
-      19,   234,   235,   236,   231,   237,   230,   262,   263,     0,
-       0,     0,    68,    67,   112,   111,     0,   109,   110,     0,
-     104,   107,   108,   167,   166,   162,   164,   165,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   129,   125,   126,   128,   222,     0,     0,   224,
-       0,    35,    36,    37,    44,    46,    45,    48,    38,    39,
-      40,    41,    47,    49,    42,    31,    32,    34,    33,     0,
-       0,     0,     0,   265,     0,   260,     0,   105,   119,   115,
-     117,   113,   114,   116,   118,   106,   123,   221,   220,   226,
-     225,     0,    43,     0,   259,   257,   264,     0,   261,   247,
-     268,     0,     0,     0,     0,     0,   270,     0,     0,   266,
-     269,   267,     0,     0,   275,   276,   277,   278,   279,     0,
-       0,     0,   271,     0,   273,     0,   272,   274
+     200,     0,    18,     0,     5,    59,    60,    61,   183,   184,
+     185,   186,   187,   188,   182,   178,   180,   181,   150,   151,
+     152,   123,   148,     0,   220,   206,   177,    98,    99,   100,
+     101,   105,   102,   103,   104,   106,    28,    29,    27,     0,
+      25,     0,     6,    62,    63,   232,   207,   231,   254,    57,
+     156,   157,   158,   159,   160,   161,   162,   163,   124,   154,
+       0,    58,    67,   252,   208,    64,   131,    28,    29,   131,
+     131,    25,    65,     0,   209,    93,    97,    94,   193,   194,
+     195,   196,   197,   198,   199,   189,   191,     0,    88,    83,
+       0,    84,    92,    90,    91,    89,    87,    85,    86,    77,
+      79,     0,     0,   226,   248,     0,    66,   247,   249,   245,
+     211,     1,     0,     4,    30,    53,   259,   258,   201,   202,
+     203,   243,   242,   241,     0,     0,    76,    72,    73,    74,
+      75,     0,    69,     0,   179,   147,   149,   221,    95,   173,
+     174,   175,   176,     0,     0,   171,   172,   164,   166,     0,
+       0,    26,   204,   230,   253,   153,   155,   251,   127,   131,
+     131,   130,   125,     0,     0,    96,   190,   192,   257,   255,
+     256,    82,    78,    80,    81,   210,     0,   246,   244,     3,
+      19,   237,   238,   239,   234,   240,   233,   265,   266,     0,
+       0,     0,    71,    70,   115,   114,     0,   112,   113,     0,
+     107,   110,   111,   170,   169,   165,   167,   168,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   132,   128,   129,   131,   225,     0,     0,   227,
+       0,    36,    37,    38,    52,    45,    47,    46,    49,    39,
+      40,    41,    42,    48,    50,    43,    31,    32,    35,    33,
+       0,    34,     0,     0,     0,     0,   268,     0,   263,     0,
+     108,   122,   118,   120,   116,   117,   119,   121,   109,   126,
+     224,   223,   229,   228,     0,    44,    51,     0,   262,   260,
+     267,     0,   264,   250,   271,     0,     0,     0,     0,     0,
+     273,     0,     0,   269,   272,   270,     0,     0,   278,   279,
+     280,   281,   282,     0,     0,     0,   274,     0,   276,     0,
+     275,   277
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,    51,    52,    53,    54,    55,   118,   110,   111,   250,
-     315,   316,   317,   318,   319,    56,    57,    58,    59,    77,
-     202,   203,    60,   169,   170,   171,   172,    61,   145,   105,
-     208,   270,   271,   272,   335,    62,   228,   292,    91,    92,
-      93,   128,   129,   130,    63,   217,   218,   219,   220,    64,
-      85,    86,    87,    65,   155,   156,   157,    66,    67,    68,
-      69,    95,   144,   338,   245,   299,   116,   117,    70,    71,
-     256,   194,   180,   176,   177,   178,   134,   119,   241,   188,
-      72,    73,   259,   260,   261,   322,   323,   352,   324,   355,
-     356,   369,   370,   371
+     316,   317,   318,   319,   320,   321,   322,    56,    57,    58,
+      59,    77,   202,   203,    60,   169,   170,   171,   172,    61,
+     145,   105,   208,   270,   271,   272,   338,    62,   228,   292,
+      91,    92,    93,   128,   129,   130,    63,   217,   218,   219,
+     220,    64,    85,    86,    87,    65,   155,   156,   157,    66,
+      67,    68,    69,    95,   144,   341,   245,   299,   116,   117,
+      70,    71,   256,   194,   180,   176,   177,   178,   134,   119,
+     241,   188,    72,    73,   259,   260,   261,   325,   326,   356,
+     327,   359,   360,   373,   374,   375
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1168,44 +1175,45 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -156
 static const yytype_int16 yypact[] =
 {
-       2,  -151,   -23,  -156,  -156,  -156,    -8,  -156,    76,    11,
-     -92,    76,  -156,    89,   -36,   -84,  -156,   -79,   -72,  -156,
-     -61,  -156,  -156,   -36,   322,   -36,  -156,  -156,   -59,  -156,
-     -57,  -156,  -156,  -156,    32,   -16,    33,  -156,  -156,   -48,
-      89,   -47,  -156,    49,   428,   -41,   -52,    34,  -156,  -156,
-    -156,    84,   188,   -73,  -156,   -36,  -156,   -36,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,  -156,  -156,     5,   -32,   -29,
-    -156,     6,  -156,   -76,  -156,  -156,  -156,   148,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,    76,  -156,  -156,  -156,  -156,
-    -156,    11,  -156,    59,    94,  -156,    76,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   141,
-    -156,   -13,   334,  -156,  -156,  -156,   -61,  -156,  -156,   -36,
-    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   322,  -156,
-      81,   -36,  -156,  -156,    -1,  -156,  -156,   118,   120,  -156,
-    -156,    68,  -156,   -27,  -156,    89,  -156,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,    49,  -156,     5,  -156,  -156,
-     -26,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   428,
-    -156,    93,     5,  -156,  -156,    97,   -52,  -156,  -156,  -156,
-     100,  -156,    -5,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,     1,  -101,  -156,  -156,  -156,  -156,
-    -156,   104,  -156,    21,  -156,  -156,  -156,  -156,    16,  -156,
-    -156,  -156,  -156,    23,   112,  -156,  -156,   141,  -156,     5,
-     -26,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   427,  -156,
-    -156,   427,   427,   -41,    30,  -156,  -156,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,   -51,   143,  -156,  -156,  -156,
-     266,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   -93,
-      12,     3,  -156,  -156,  -156,  -156,    35,  -156,  -156,    28,
+       2,  -151,   -29,  -156,  -156,  -156,   -26,  -156,    78,    -3,
+     -87,    78,  -156,   107,   -53,   -86,  -156,   -84,   -76,  -156,
+     -69,  -156,  -156,   -53,   305,   -53,  -156,  -156,   -68,  -156,
+     -64,  -156,  -156,  -156,   -23,   -16,    27,  -156,  -156,   -57,
+     107,   -50,  -156,    49,   398,   -47,   -52,    45,  -156,  -156,
+    -156,   102,   171,   -60,  -156,   -53,  -156,   -53,  -156,  -156,
+    -156,  -156,  -156,  -156,  -156,  -156,  -156,     9,   -36,   -35,
+    -156,    19,  -156,   -70,  -156,  -156,  -156,   168,  -156,  -156,
+    -156,  -156,  -156,  -156,  -156,    78,  -156,  -156,  -156,  -156,
+    -156,    -3,  -156,    55,    84,  -156,    78,  -156,  -156,  -156,
+    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   235,
+    -156,   -27,   317,  -156,  -156,  -156,   -69,  -156,  -156,   -53,
+    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   305,  -156,
+      74,   -53,  -156,  -156,    -5,  -156,  -156,   115,   118,  -156,
+    -156,    65,  -156,   -28,  -156,   107,  -156,  -156,  -156,  -156,
+    -156,  -156,  -156,  -156,  -156,    49,  -156,     9,  -156,  -156,
+       5,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   398,
+    -156,    92,     9,  -156,  -156,    93,   -52,  -156,  -156,  -156,
+      97,  -156,    -4,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
+    -156,  -156,  -156,  -156,     1,  -141,  -156,  -156,  -156,  -156,
+    -156,   103,  -156,    21,  -156,  -156,  -156,  -156,    16,  -156,
+    -156,  -156,  -156,    22,   109,  -156,  -156,   235,  -156,     9,
+       5,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   153,  -156,
+    -156,   153,   153,   -47,    30,  -156,  -156,  -156,  -156,  -156,
+    -156,  -156,  -156,  -156,  -156,   -20,   137,  -156,  -156,  -156,
+     161,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   -85,
+      13,    -2,  -156,  -156,  -156,  -156,    36,  -156,  -156,    28,
+    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
     -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
+    -156,  -156,  -156,   153,   153,  -156,   156,   -47,   125,  -156,
+     138,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
     -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
-    -156,  -156,  -156,   427,   427,  -156,   159,   -41,   129,  -156,
-     130,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   135,
-      17,    29,  -126,  -156,    27,  -156,     5,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,  -156,   427,  -156,  -156,  -156,
-    -156,    18,  -156,   -36,  -156,  -156,  -156,    38,  -156,  -156,
-    -156,    36,    41,     5,    42,  -124,  -156,    43,     5,  -156,
-    -156,  -156,    45,    67,  -156,  -156,  -156,  -156,  -156,    56,
-      55,    69,  -156,    60,  -156,     5,  -156,  -156
+     140,  -156,    58,    31,    47,  -109,  -156,    34,  -156,     9,
+    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   153,
+    -156,  -156,  -156,  -156,    41,  -156,  -156,   -53,  -156,  -156,
+    -156,    51,  -156,  -156,  -156,    38,    62,     9,    52,  -116,
+    -156,    68,     9,  -156,  -156,  -156,    57,   226,  -156,  -156,
+    -156,  -156,  -156,   194,    69,    63,  -156,    75,  -156,     9,
+    -156,  -156
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1213,14 +1221,14 @@ static const yytype_int16 yypgoto[] =
 {
     -156,  -156,  -156,   -40,  -156,  -156,   -14,   -34,  -156,  -156,
     -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,    62,  -156,  -156,  -156,  -156,   -15,
-    -156,  -156,  -156,  -156,  -156,  -156,  -121,  -156,  -156,   151,
-    -156,  -156,   106,  -156,  -156,  -156,    31,  -156,  -156,  -156,
-     235,   -58,  -156,  -156,  -156,    92,  -156,  -156,  -156,  -156,
-    -156,  -156,  -156,  -156,  -156,  -156,  -156,   133,  -156,  -156,
-    -156,  -156,  -156,  -156,    74,  -156,  -156,   226,    39,  -155,
-    -156,  -156,  -156,    -7,  -156,  -156,   -67,  -156,  -156,  -156,
-     -99,  -156,  -111,  -156
+    -156,  -156,  -156,  -156,  -156,  -156,    72,  -156,  -156,  -156,
+    -156,   -22,  -156,  -156,  -156,  -156,  -156,  -156,  -120,  -156,
+    -156,   151,  -156,  -156,   119,  -156,  -156,  -156,    26,  -156,
+    -156,  -156,   246,   -51,  -156,  -156,  -156,   106,  -156,  -156,
+    -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,  -156,   148,
+    -156,  -156,  -156,  -156,  -156,  -156,    94,  -156,  -156,   244,
+      59,  -155,  -156,  -156,  -156,    12,  -156,  -156,   -48,  -156,
+    -156,  -156,   -81,  -156,   -93,  -156
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1230,128 +1238,114 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-     109,   141,   237,     1,   174,   251,   297,   320,   136,   238,
-       2,   173,   182,    74,     3,     4,     5,   244,   231,   232,
-      88,   140,     6,     7,   106,   146,   107,   204,     8,     9,
-     239,   328,    10,    75,   186,    11,    12,   191,   204,    13,
-     320,   184,   264,   185,   137,   354,   138,    14,    76,   265,
-      94,   329,   266,   345,   148,   359,   192,    15,   112,    16,
-     252,   187,   253,   113,   276,   257,   258,    17,    18,   298,
-     114,    19,   222,   257,   258,    20,    21,   149,   193,    22,
-      23,   115,    78,   132,   181,   133,    79,   267,   135,   142,
-     179,   183,    80,   150,   143,   147,   151,    24,    25,    26,
-      89,   108,   195,    27,    90,   224,   108,    97,   293,   294,
-     189,    98,    28,   190,   268,   206,    29,   224,    30,   139,
-      31,    32,   330,   207,   175,   240,   108,    33,   331,   221,
-     235,    34,    35,    36,    37,    38,    39,   226,    40,    81,
-      41,   227,   229,   254,   230,   332,    42,   233,   234,   243,
-      43,    44,    45,   246,    46,    47,   248,    48,    49,   249,
-     262,   255,   152,   263,    99,   273,    -6,    50,   274,    82,
-     269,   348,   296,   196,   336,   300,   325,   327,   326,   209,
-     210,   211,   212,   337,    83,   340,   341,   333,   153,   154,
-     334,   342,   343,   344,   197,   349,     2,   198,   357,   295,
-       3,     4,     5,   362,   100,   347,   351,   361,     6,     7,
-     354,   353,   101,    84,     8,     9,   102,   358,    10,   374,
-     377,    11,    12,   363,   376,    13,   364,   365,   366,   367,
-     368,   242,   103,    14,   225,   372,   104,   364,   365,   366,
-     367,   368,   205,    15,   375,    16,    96,   236,   275,   223,
-     247,   131,   321,    17,    18,   346,   360,    19,   373,   277,
-       0,    20,    21,   339,     0,    22,    23,     0,     0,   213,
-       0,     0,   199,   301,   200,     0,     0,     0,     0,   201,
-       0,   302,   214,    24,    25,    26,   215,   216,     0,    27,
-       0,     0,     0,     0,     0,     0,     0,     0,    28,     0,
-       0,     0,    29,     0,    30,     0,    31,    32,     0,     0,
-       0,     0,     0,    33,   303,     0,     0,    34,    35,    36,
-      37,    38,    39,     0,    40,     0,    41,     0,     0,   350,
-     304,     0,    42,     0,     0,     0,    43,    44,    45,     0,
-      46,    47,     2,    48,    49,     0,     3,     4,     5,     0,
-       0,   305,    -6,    50,     6,     7,   306,     0,   307,     0,
-       8,     9,     0,     0,    10,     0,     0,    11,    12,     0,
-     308,    13,     0,   120,   121,   122,   123,     0,     0,    14,
-       0,     0,     0,     0,     0,     0,     0,   309,   310,    15,
-       0,    16,     0,     0,     0,     0,     0,     0,     0,    17,
-      18,     0,   124,    19,   125,     0,   126,    20,    21,   127,
-       0,    22,    23,     0,     0,     0,     0,   311,     0,   312,
-       0,     0,     0,   313,     0,     0,     0,   314,     0,    24,
-      25,    26,     0,     0,     0,    27,     0,     0,     0,   158,
-       0,     0,     0,     0,    28,   159,     0,   160,    29,     0,
-      30,     0,    31,    32,     0,     0,     0,     0,     0,    33,
-       0,     0,     0,    34,    35,    36,    37,    38,    39,   278,
-      40,   161,    41,     0,     0,     0,     0,   279,    42,     0,
-       0,     0,    43,    44,    45,     0,    46,    47,     0,    48,
-      49,     0,     0,     0,   280,   281,     0,   282,     0,    50,
-       0,     0,     0,   283,     0,     0,     0,     0,     0,   162,
-       0,   163,     0,     0,   164,     0,   165,     0,     0,   166,
-       0,     0,     0,     0,     0,     0,   284,     0,     0,   285,
-     286,     0,   287,   288,   289,     0,   290,     0,     0,   167,
-     168,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     109,   141,   237,     1,   174,   251,    88,   106,   136,   107,
+       2,   173,   182,    74,     3,     4,     5,   244,   146,   231,
+     232,   140,     6,     7,   323,   257,   258,    75,     8,     9,
+      76,   331,    10,   135,   204,    11,    12,   297,   186,    13,
+     238,   184,   264,   185,   137,   204,   138,    14,   323,   265,
+     191,   332,   266,   358,   148,    94,   112,    15,   113,    16,
+     252,   239,   253,   363,   276,   187,   114,    17,    18,   192,
+     349,    19,   222,   115,   132,    20,    21,   149,   133,    22,
+      23,   257,   258,   142,    78,   143,    89,   267,    79,   108,
+      90,   193,   147,   150,    80,   108,   151,    24,    25,    26,
+     298,   179,   181,    27,   183,   224,   189,   190,   195,   293,
+     294,   206,    28,   207,   268,   221,    29,   224,    30,   139,
+      31,    32,   333,   235,   175,    97,   108,    33,   334,    98,
+     226,    34,    35,    36,    37,    38,    39,   227,    40,   229,
+      41,    81,   230,   254,   233,   335,    42,   234,   243,   246,
+      43,    44,    45,   248,    46,    47,   240,    48,    49,   262,
+     249,   255,   152,   263,   273,   274,    -6,    50,   301,   300,
+     269,    82,   296,   329,   352,   339,   302,   328,   330,     2,
+     340,   343,    99,     3,     4,     5,    83,   336,   153,   154,
+     337,     6,     7,   196,   344,   278,   345,     8,     9,   295,
+     346,    10,   361,   279,    11,    12,   347,   366,    13,   303,
+     304,   348,   351,   357,   197,    84,    14,   198,   353,   355,
+     280,   281,   100,   282,   381,   305,    15,   362,    16,   283,
+     101,   358,   365,   378,   102,   367,    17,    18,   379,   380,
+      19,   242,   205,   275,    20,    21,   306,   225,    22,    23,
+     103,   307,   284,   308,   104,   285,   286,    96,   287,   288,
+     289,   236,   290,   342,   223,   309,    24,    25,    26,   131,
+     247,   324,    27,   209,   210,   211,   212,   350,   364,   277,
+     377,    28,   310,   311,     0,    29,     0,    30,     0,    31,
+      32,     0,   199,     0,   200,     0,    33,     0,     0,   201,
+      34,    35,    36,    37,    38,    39,     0,    40,     0,    41,
+     291,     0,   312,     0,   313,    42,     0,     0,   314,    43,
+      44,    45,   315,    46,    47,     2,    48,    49,     0,     3,
+       4,     5,     0,   354,     0,    -6,    50,     6,     7,     0,
+       0,     0,     0,     8,     9,     0,     0,    10,     0,     0,
+      11,    12,     0,     0,    13,     0,   120,   121,   122,   123,
+       0,     0,    14,   213,   368,   369,   370,   371,   372,     0,
+       0,     0,    15,   376,    16,     0,   214,     0,     0,     0,
+     215,   216,    17,    18,     0,   124,    19,   125,     0,   126,
+      20,    21,   127,     0,    22,    23,   368,   369,   370,   371,
+     372,     0,     0,     0,     0,     0,     0,     0,     0,   158,
+       0,     0,    24,    25,    26,   159,     0,   160,    27,     0,
+       0,     0,     0,     0,     0,     0,     0,    28,     0,     0,
+       0,    29,     0,    30,     0,    31,    32,     0,     0,     0,
+       0,   161,    33,     0,     0,     0,    34,    35,    36,    37,
+      38,    39,     0,    40,     0,    41,     0,     0,     0,     0,
+       0,    42,     0,     0,     0,    43,    44,    45,     0,    46,
+      47,     0,    48,    49,     0,     0,     0,     0,     0,   162,
+       0,   163,    50,     0,   164,     0,   165,     0,     0,   166,
        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,     0,     0,   291
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   167,
+     168
 };
 
 static const yytype_int16 yycheck[] =
 {
-      14,    35,   157,     1,    56,     4,    57,   133,    24,    35,
-       8,    45,    52,   164,    12,    13,    14,   172,   139,   140,
-       9,    35,    20,    21,    60,    40,    62,    85,    26,    27,
-      56,     3,    30,    56,    29,    33,    34,    31,    96,    37,
-     133,    55,    26,    57,    60,   169,    62,    45,    56,    33,
-     142,    23,    36,   179,     5,   179,    50,    55,   142,    57,
-      59,    56,    61,   142,   219,   166,   167,    65,    66,   120,
-     142,    69,   112,   166,   167,    73,    74,    28,    72,    77,
-      78,   142,     6,   142,     0,   142,    10,    71,    56,    56,
-      56,   164,    16,    44,   142,   142,    47,    95,    96,    97,
-      89,   142,   178,   101,    93,   119,   142,    18,   229,   230,
-     142,    22,   110,   142,    98,    56,   114,   131,   116,   135,
-     118,   119,    94,    29,   176,   151,   142,   125,   100,   142,
-     145,   129,   130,   131,   132,   133,   134,    56,   136,    63,
-     138,   142,    24,   142,    24,   117,   144,    79,   175,    56,
-     148,   149,   150,    56,   152,   153,    56,   155,   156,   164,
-      56,   160,   113,   142,    75,   142,   164,   165,    56,    93,
-     154,   326,   142,    25,   295,    32,   164,   142,   175,    38,
-      39,    40,    41,    24,   108,    56,    56,   159,   139,   140,
-     162,    56,   175,   164,    46,   177,     8,    49,   353,   233,
-      12,    13,    14,   358,   115,   178,   168,   164,    20,    21,
-     169,   175,   123,   137,    26,    27,   127,   175,    30,   164,
-     375,    33,    34,   178,   164,    37,   170,   171,   172,   173,
-     174,   169,   143,    45,   128,   179,   147,   170,   171,   172,
-     173,   174,    91,    55,   175,    57,    11,   155,   217,   116,
-     176,    25,   259,    65,    66,   322,   355,    69,   369,   220,
-      -1,    73,    74,   297,    -1,    77,    78,    -1,    -1,   128,
-      -1,    -1,   124,     7,   126,    -1,    -1,    -1,    -1,   131,
-      -1,    15,   141,    95,    96,    97,   145,   146,    -1,   101,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,
-      -1,    -1,   114,    -1,   116,    -1,   118,   119,    -1,    -1,
-      -1,    -1,    -1,   125,    48,    -1,    -1,   129,   130,   131,
-     132,   133,   134,    -1,   136,    -1,   138,    -1,    -1,   343,
-      64,    -1,   144,    -1,    -1,    -1,   148,   149,   150,    -1,
-     152,   153,     8,   155,   156,    -1,    12,    13,    14,    -1,
-      -1,    85,   164,   165,    20,    21,    90,    -1,    92,    -1,
-      26,    27,    -1,    -1,    30,    -1,    -1,    33,    34,    -1,
-     104,    37,    -1,    51,    52,    53,    54,    -1,    -1,    45,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,   122,    55,
-      -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
-      66,    -1,    80,    69,    82,    -1,    84,    73,    74,    87,
-      -1,    77,    78,    -1,    -1,    -1,    -1,   151,    -1,   153,
-      -1,    -1,    -1,   157,    -1,    -1,    -1,   161,    -1,    95,
-      96,    97,    -1,    -1,    -1,   101,    -1,    -1,    -1,    11,
-      -1,    -1,    -1,    -1,   110,    17,    -1,    19,   114,    -1,
-     116,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,   125,
-      -1,    -1,    -1,   129,   130,   131,   132,   133,   134,    42,
-     136,    43,   138,    -1,    -1,    -1,    -1,    50,   144,    -1,
-      -1,    -1,   148,   149,   150,    -1,   152,   153,    -1,   155,
-     156,    -1,    -1,    -1,    67,    68,    -1,    70,    -1,   165,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    81,
-      -1,    83,    -1,    -1,    86,    -1,    88,    -1,    -1,    91,
-      -1,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,   102,
-     103,    -1,   105,   106,   107,    -1,   109,    -1,    -1,   111,
-     112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      14,    35,   157,     1,    56,     4,     9,    60,    24,    62,
+       8,    45,    52,   164,    12,    13,    14,   172,    40,   139,
+     140,    35,    20,    21,   133,   166,   167,    56,    26,    27,
+      56,     3,    30,    56,    85,    33,    34,    57,    29,    37,
+      35,    55,    26,    57,    60,    96,    62,    45,   133,    33,
+      31,    23,    36,   169,     5,   142,   142,    55,   142,    57,
+      59,    56,    61,   179,   219,    56,   142,    65,    66,    50,
+     179,    69,   112,   142,   142,    73,    74,    28,   142,    77,
+      78,   166,   167,    56,     6,   142,    89,    71,    10,   142,
+      93,    72,   142,    44,    16,   142,    47,    95,    96,    97,
+     120,    56,     0,   101,   164,   119,   142,   142,   178,   229,
+     230,    56,   110,    29,    98,   142,   114,   131,   116,   135,
+     118,   119,    94,   145,   176,    18,   142,   125,   100,    22,
+      56,   129,   130,   131,   132,   133,   134,   142,   136,    24,
+     138,    63,    24,   142,    79,   117,   144,   175,    56,    56,
+     148,   149,   150,    56,   152,   153,   151,   155,   156,    56,
+     164,   160,   113,   142,   142,    56,   164,   165,     7,    32,
+     154,    93,   142,   175,   329,   295,    15,   164,   142,     8,
+      24,    56,    75,    12,    13,    14,   108,   159,   139,   140,
+     162,    20,    21,    25,    56,    42,    56,    26,    27,   233,
+     142,    30,   357,    50,    33,    34,   175,   362,    37,    48,
+      49,   164,   178,   175,    46,   137,    45,    49,   177,   168,
+      67,    68,   115,    70,   379,    64,    55,   175,    57,    76,
+     123,   169,   164,   164,   127,   178,    65,    66,   175,   164,
+      69,   169,    91,   217,    73,    74,    85,   128,    77,    78,
+     143,    90,    99,    92,   147,   102,   103,    11,   105,   106,
+     107,   155,   109,   297,   116,   104,    95,    96,    97,    25,
+     176,   259,   101,    38,    39,    40,    41,   325,   359,   220,
+     373,   110,   121,   122,    -1,   114,    -1,   116,    -1,   118,
+     119,    -1,   124,    -1,   126,    -1,   125,    -1,    -1,   131,
+     129,   130,   131,   132,   133,   134,    -1,   136,    -1,   138,
+     157,    -1,   151,    -1,   153,   144,    -1,    -1,   157,   148,
+     149,   150,   161,   152,   153,     8,   155,   156,    -1,    12,
+      13,    14,    -1,   347,    -1,   164,   165,    20,    21,    -1,
+      -1,    -1,    -1,    26,    27,    -1,    -1,    30,    -1,    -1,
+      33,    34,    -1,    -1,    37,    -1,    51,    52,    53,    54,
+      -1,    -1,    45,   128,   170,   171,   172,   173,   174,    -1,
+      -1,    -1,    55,   179,    57,    -1,   141,    -1,    -1,    -1,
+     145,   146,    65,    66,    -1,    80,    69,    82,    -1,    84,
+      73,    74,    87,    -1,    77,    78,   170,   171,   172,   173,
+     174,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    11,
+      -1,    -1,    95,    96,    97,    17,    -1,    19,   101,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+      -1,   114,    -1,   116,    -1,   118,   119,    -1,    -1,    -1,
+      -1,    43,   125,    -1,    -1,    -1,   129,   130,   131,   132,
+     133,   134,    -1,   136,    -1,   138,    -1,    -1,    -1,    -1,
+      -1,   144,    -1,    -1,    -1,   148,   149,   150,    -1,   152,
+     153,    -1,   155,   156,    -1,    -1,    -1,    -1,    -1,    81,
+      -1,    83,   165,    -1,    86,    -1,    88,    -1,    -1,    91,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   157
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+     112
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1363,39 +1357,40 @@ static const yytype_uint16 yystos[] =
       73,    74,    77,    78,    95,    96,    97,   101,   110,   114,
      116,   118,   119,   125,   129,   130,   131,   132,   133,   134,
      136,   138,   144,   148,   149,   150,   152,   153,   155,   156,
-     165,   181,   182,   183,   184,   185,   195,   196,   197,   198,
-     202,   207,   215,   224,   229,   233,   237,   238,   239,   240,
-     248,   249,   260,   261,   164,    56,    56,   199,     6,    10,
-      16,    63,    93,   108,   137,   230,   231,   232,     9,    89,
-      93,   218,   219,   220,   142,   241,   230,    18,    22,    75,
-     115,   123,   127,   143,   147,   209,    60,    62,   142,   186,
-     187,   188,   142,   142,   142,   142,   246,   247,   186,   257,
-      51,    52,    53,    54,    80,    82,    84,    87,   221,   222,
-     223,   257,   142,   142,   256,    56,    24,    60,    62,   135,
-     186,   187,    56,   142,   242,   208,   209,   142,     5,    28,
-      44,    47,   113,   139,   140,   234,   235,   236,    11,    17,
-      19,    43,    81,    83,    86,    88,    91,   111,   112,   203,
-     204,   205,   206,   187,    56,   176,   253,   254,   255,    56,
-     252,     0,   183,   164,   186,   186,    29,    56,   259,   142,
-     142,    31,    50,    72,   251,   178,    25,    46,    49,   124,
-     126,   131,   200,   201,   231,   219,    56,    29,   210,    38,
-      39,    40,    41,   128,   141,   145,   146,   225,   226,   227,
-     228,   142,   183,   247,   186,   222,    56,   142,   216,    24,
-      24,   216,   216,    79,   175,   209,   235,   259,    35,    56,
-     151,   258,   204,    56,   259,   244,    56,   254,    56,   164,
-     189,     4,    59,    61,   142,   160,   250,   166,   167,   262,
-     263,   264,    56,   142,    26,    33,    36,    71,    98,   154,
-     211,   212,   213,   142,    56,   226,   259,   258,    42,    50,
+     165,   181,   182,   183,   184,   185,   197,   198,   199,   200,
+     204,   209,   217,   226,   231,   235,   239,   240,   241,   242,
+     250,   251,   262,   263,   164,    56,    56,   201,     6,    10,
+      16,    63,    93,   108,   137,   232,   233,   234,     9,    89,
+      93,   220,   221,   222,   142,   243,   232,    18,    22,    75,
+     115,   123,   127,   143,   147,   211,    60,    62,   142,   186,
+     187,   188,   142,   142,   142,   142,   248,   249,   186,   259,
+      51,    52,    53,    54,    80,    82,    84,    87,   223,   224,
+     225,   259,   142,   142,   258,    56,    24,    60,    62,   135,
+     186,   187,    56,   142,   244,   210,   211,   142,     5,    28,
+      44,    47,   113,   139,   140,   236,   237,   238,    11,    17,
+      19,    43,    81,    83,    86,    88,    91,   111,   112,   205,
+     206,   207,   208,   187,    56,   176,   255,   256,   257,    56,
+     254,     0,   183,   164,   186,   186,    29,    56,   261,   142,
+     142,    31,    50,    72,   253,   178,    25,    46,    49,   124,
+     126,   131,   202,   203,   233,   221,    56,    29,   212,    38,
+      39,    40,    41,   128,   141,   145,   146,   227,   228,   229,
+     230,   142,   183,   249,   186,   224,    56,   142,   218,    24,
+      24,   218,   218,    79,   175,   211,   237,   261,    35,    56,
+     151,   260,   206,    56,   261,   246,    56,   256,    56,   164,
+     189,     4,    59,    61,   142,   160,   252,   166,   167,   264,
+     265,   266,    56,   142,    26,    33,    36,    71,    98,   154,
+     213,   214,   215,   142,    56,   228,   261,   260,    42,    50,
       67,    68,    70,    76,    99,   102,   103,   105,   106,   107,
-     109,   157,   217,   216,   216,   187,   142,    57,   120,   245,
-      32,     7,    15,    48,    64,    85,    90,    92,   104,   121,
-     122,   151,   153,   157,   161,   190,   191,   192,   193,   194,
-     133,   263,   265,   266,   268,   164,   175,   142,     3,    23,
-      94,   100,   117,   159,   162,   214,   216,    24,   243,   187,
-      56,    56,    56,   175,   164,   179,   266,   178,   259,   177,
-     186,   168,   267,   175,   169,   269,   270,   259,   175,   179,
-     270,   164,   259,   178,   170,   171,   172,   173,   174,   271,
-     272,   273,   179,   272,   164,   175,   164,   259
+     109,   157,   219,   218,   218,   187,   142,    57,   120,   247,
+      32,     7,    15,    48,    49,    64,    85,    90,    92,   104,
+     121,   122,   151,   153,   157,   161,   190,   191,   192,   193,
+     194,   195,   196,   133,   265,   267,   268,   270,   164,   175,
+     142,     3,    23,    94,   100,   117,   159,   162,   216,   218,
+      24,   245,   187,    56,    56,    56,   142,   175,   164,   179,
+     268,   178,   261,   177,   186,   168,   269,   175,   169,   271,
+     272,   261,   175,   179,   272,   164,   261,   178,   170,   171,
+     172,   173,   174,   273,   274,   275,   179,   274,   164,   175,
+     164,   261
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2218,7 +2213,7 @@ yyreduce:
         case 5:
 
 /* Line 1464 of yacc.c  */
-#line 341 "ntp_parser.y"
+#line 343 "ntp_parser.y"
     {
                        /* I will need to incorporate much more fine grained
                         * error messages. The following should suffice for
@@ -2235,7 +2230,7 @@ yyreduce:
   case 19:
 
 /* Line 1464 of yacc.c  */
-#line 375 "ntp_parser.y"
+#line 377 "ntp_parser.y"
     {
                        peer_node *my_node;
 
@@ -2247,66 +2242,73 @@ yyreduce:
   case 26:
 
 /* Line 1464 of yacc.c  */
-#line 394 "ntp_parser.y"
+#line 396 "ntp_parser.y"
     { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), (yyvsp[(1) - (2)].Integer)); }
     break;
 
   case 27:
 
 /* Line 1464 of yacc.c  */
-#line 399 "ntp_parser.y"
+#line 401 "ntp_parser.y"
     { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), AF_UNSPEC); }
     break;
 
   case 28:
 
 /* Line 1464 of yacc.c  */
-#line 404 "ntp_parser.y"
+#line 406 "ntp_parser.y"
     { (yyval.Integer) = AF_INET; }
     break;
 
   case 29:
 
 /* Line 1464 of yacc.c  */
-#line 406 "ntp_parser.y"
+#line 408 "ntp_parser.y"
     { (yyval.Integer) = AF_INET6; }
     break;
 
   case 30:
 
 /* Line 1464 of yacc.c  */
-#line 411 "ntp_parser.y"
+#line 413 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
   case 31:
 
 /* Line 1464 of yacc.c  */
-#line 413 "ntp_parser.y"
+#line 415 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 34:
+  case 35:
 
 /* Line 1464 of yacc.c  */
-#line 426 "ntp_parser.y"
+#line 429 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 43:
+  case 44:
 
 /* Line 1464 of yacc.c  */
-#line 442 "ntp_parser.y"
+#line 445 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 50:
+  case 51:
+
+/* Line 1464 of yacc.c  */
+#line 459 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
+    break;
+
+  case 53:
 
 /* Line 1464 of yacc.c  */
-#line 461 "ntp_parser.y"
+#line 473 "ntp_parser.y"
     {
                        unpeer_node *my_node;
                        
@@ -2316,31 +2318,31 @@ yyreduce:
                }
     break;
 
-  case 53:
+  case 56:
 
 /* Line 1464 of yacc.c  */
-#line 482 "ntp_parser.y"
+#line 494 "ntp_parser.y"
     { cfgt.broadcastclient = 1; }
     break;
 
-  case 54:
+  case 57:
 
 /* Line 1464 of yacc.c  */
-#line 484 "ntp_parser.y"
+#line 496 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[(2) - (2)].Address_fifo)); }
     break;
 
-  case 55:
+  case 58:
 
 /* Line 1464 of yacc.c  */
-#line 486 "ntp_parser.y"
+#line 498 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[(2) - (2)].Address_fifo)); }
     break;
 
-  case 56:
+  case 59:
 
 /* Line 1464 of yacc.c  */
-#line 497 "ntp_parser.y"
+#line 509 "ntp_parser.y"
     {
                        attr_val *atrv;
                        
@@ -2349,93 +2351,93 @@ yyreduce:
                }
     break;
 
-  case 57:
+  case 60:
 
 /* Line 1464 of yacc.c  */
-#line 504 "ntp_parser.y"
+#line 516 "ntp_parser.y"
     { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 58:
+  case 61:
 
 /* Line 1464 of yacc.c  */
-#line 506 "ntp_parser.y"
+#line 518 "ntp_parser.y"
     { 
                        cfgt.auth.cryptosw++;
                        CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
     break;
 
-  case 59:
+  case 62:
 
 /* Line 1464 of yacc.c  */
-#line 511 "ntp_parser.y"
+#line 523 "ntp_parser.y"
     { cfgt.auth.keys = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 60:
+  case 63:
 
 /* Line 1464 of yacc.c  */
-#line 513 "ntp_parser.y"
+#line 525 "ntp_parser.y"
     { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 61:
+  case 64:
 
 /* Line 1464 of yacc.c  */
-#line 515 "ntp_parser.y"
+#line 527 "ntp_parser.y"
     { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 62:
+  case 65:
 
 /* Line 1464 of yacc.c  */
-#line 517 "ntp_parser.y"
+#line 529 "ntp_parser.y"
     { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 63:
+  case 66:
 
 /* Line 1464 of yacc.c  */
-#line 519 "ntp_parser.y"
+#line 531 "ntp_parser.y"
     { cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Attr_val_fifo); }
     break;
 
-  case 64:
+  case 67:
 
 /* Line 1464 of yacc.c  */
-#line 521 "ntp_parser.y"
+#line 533 "ntp_parser.y"
     { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 65:
+  case 68:
 
 /* Line 1464 of yacc.c  */
-#line 526 "ntp_parser.y"
+#line 538 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
-  case 66:
+  case 69:
 
 /* Line 1464 of yacc.c  */
-#line 528 "ntp_parser.y"
+#line 540 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 67:
+  case 70:
 
 /* Line 1464 of yacc.c  */
-#line 536 "ntp_parser.y"
+#line 548 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
-  case 68:
+  case 71:
 
 /* Line 1464 of yacc.c  */
-#line 538 "ntp_parser.y"
+#line 550 "ntp_parser.y"
     {
                        (yyval.Attr_val) = NULL;
                        cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer);
@@ -2446,65 +2448,65 @@ yyreduce:
                }
     break;
 
-  case 74:
+  case 77:
 
 /* Line 1464 of yacc.c  */
-#line 563 "ntp_parser.y"
+#line 575 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 75:
+  case 78:
 
 /* Line 1464 of yacc.c  */
-#line 568 "ntp_parser.y"
+#line 580 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 76:
+  case 79:
 
 /* Line 1464 of yacc.c  */
-#line 573 "ntp_parser.y"
+#line 585 "ntp_parser.y"
     {  
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 77:
+  case 80:
 
 /* Line 1464 of yacc.c  */
-#line 581 "ntp_parser.y"
+#line 593 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 78:
+  case 81:
 
 /* Line 1464 of yacc.c  */
-#line 583 "ntp_parser.y"
+#line 595 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 79:
+  case 82:
 
 /* Line 1464 of yacc.c  */
-#line 585 "ntp_parser.y"
+#line 597 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 90:
+  case 93:
 
 /* Line 1464 of yacc.c  */
-#line 611 "ntp_parser.y"
+#line 623 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[(2) - (2)].Int_fifo)); }
     break;
 
-  case 91:
+  case 94:
 
 /* Line 1464 of yacc.c  */
-#line 613 "ntp_parser.y"
+#line 625 "ntp_parser.y"
     {
                        if (input_from_file) {
                                cfgt.stats_dir = (yyvsp[(2) - (2)].String);
@@ -2515,10 +2517,10 @@ yyreduce:
                }
     break;
 
-  case 92:
+  case 95:
 
 /* Line 1464 of yacc.c  */
-#line 622 "ntp_parser.y"
+#line 634 "ntp_parser.y"
     {
                        filegen_node *fgn;
                        
@@ -2527,47 +2529,47 @@ yyreduce:
                }
     break;
 
-  case 93:
+  case 96:
 
 /* Line 1464 of yacc.c  */
-#line 632 "ntp_parser.y"
+#line 644 "ntp_parser.y"
     {
                        (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
                }
     break;
 
-  case 94:
+  case 97:
 
 /* Line 1464 of yacc.c  */
-#line 637 "ntp_parser.y"
+#line 649 "ntp_parser.y"
     {
                        (yyval.Int_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
                }
     break;
 
-  case 103:
+  case 106:
 
 /* Line 1464 of yacc.c  */
-#line 656 "ntp_parser.y"
+#line 668 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
-  case 104:
+  case 107:
 
 /* Line 1464 of yacc.c  */
-#line 658 "ntp_parser.y"
+#line 670 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 105:
+  case 108:
 
 /* Line 1464 of yacc.c  */
-#line 666 "ntp_parser.y"
+#line 678 "ntp_parser.y"
     {
                        if (input_from_file) {
                                (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
@@ -2579,10 +2581,10 @@ yyreduce:
                }
     break;
 
-  case 106:
+  case 109:
 
 /* Line 1464 of yacc.c  */
-#line 676 "ntp_parser.y"
+#line 688 "ntp_parser.y"
     {
                        if (input_from_file) {
                                (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
@@ -2593,10 +2595,10 @@ yyreduce:
                }
     break;
 
-  case 107:
+  case 110:
 
 /* Line 1464 of yacc.c  */
-#line 685 "ntp_parser.y"
+#line 697 "ntp_parser.y"
     {
                        const char *err;
                        
@@ -2613,35 +2615,35 @@ yyreduce:
                }
     break;
 
-  case 108:
+  case 111:
 
 /* Line 1464 of yacc.c  */
-#line 700 "ntp_parser.y"
+#line 712 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 120:
+  case 123:
 
 /* Line 1464 of yacc.c  */
-#line 730 "ntp_parser.y"
+#line 742 "ntp_parser.y"
     {
                        CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
     break;
 
-  case 121:
+  case 124:
 
 /* Line 1464 of yacc.c  */
-#line 734 "ntp_parser.y"
+#line 746 "ntp_parser.y"
     {
                        CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
     break;
 
-  case 122:
+  case 125:
 
 /* Line 1464 of yacc.c  */
-#line 738 "ntp_parser.y"
+#line 750 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2651,10 +2653,10 @@ yyreduce:
                }
     break;
 
-  case 123:
+  case 126:
 
 /* Line 1464 of yacc.c  */
-#line 746 "ntp_parser.y"
+#line 758 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2664,10 +2666,10 @@ yyreduce:
                }
     break;
 
-  case 124:
+  case 127:
 
 /* Line 1464 of yacc.c  */
-#line 754 "ntp_parser.y"
+#line 766 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2677,10 +2679,10 @@ yyreduce:
                }
     break;
 
-  case 125:
+  case 128:
 
 /* Line 1464 of yacc.c  */
-#line 762 "ntp_parser.y"
+#line 774 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2697,10 +2699,10 @@ yyreduce:
                }
     break;
 
-  case 126:
+  case 129:
 
 /* Line 1464 of yacc.c  */
-#line 777 "ntp_parser.y"
+#line 789 "ntp_parser.y"
     {
                        restrict_node *rn;
                        
@@ -2717,10 +2719,10 @@ yyreduce:
                }
     break;
 
-  case 127:
+  case 130:
 
 /* Line 1464 of yacc.c  */
-#line 792 "ntp_parser.y"
+#line 804 "ntp_parser.y"
     {
                        restrict_node * rn;
 
@@ -2731,81 +2733,81 @@ yyreduce:
                }
     break;
 
-  case 128:
+  case 131:
 
 /* Line 1464 of yacc.c  */
-#line 804 "ntp_parser.y"
+#line 816 "ntp_parser.y"
     { (yyval.Int_fifo) = NULL; }
     break;
 
-  case 129:
+  case 132:
 
 /* Line 1464 of yacc.c  */
-#line 806 "ntp_parser.y"
+#line 818 "ntp_parser.y"
     {
                        (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
                }
     break;
 
-  case 144:
+  case 147:
 
 /* Line 1464 of yacc.c  */
-#line 831 "ntp_parser.y"
+#line 843 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 145:
+  case 148:
 
 /* Line 1464 of yacc.c  */
-#line 836 "ntp_parser.y"
+#line 848 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 146:
+  case 149:
 
 /* Line 1464 of yacc.c  */
-#line 844 "ntp_parser.y"
+#line 856 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 150:
+  case 153:
 
 /* Line 1464 of yacc.c  */
-#line 855 "ntp_parser.y"
+#line 867 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 151:
+  case 154:
 
 /* Line 1464 of yacc.c  */
-#line 860 "ntp_parser.y"
+#line 872 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 152:
+  case 155:
 
 /* Line 1464 of yacc.c  */
-#line 868 "ntp_parser.y"
+#line 880 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 161:
+  case 164:
 
 /* Line 1464 of yacc.c  */
-#line 888 "ntp_parser.y"
+#line 900 "ntp_parser.y"
     {
                        addr_opts_node *aon;
                        
@@ -2814,99 +2816,99 @@ yyreduce:
                }
     break;
 
-  case 162:
+  case 165:
 
 /* Line 1464 of yacc.c  */
-#line 898 "ntp_parser.y"
+#line 910 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 163:
+  case 166:
 
 /* Line 1464 of yacc.c  */
-#line 903 "ntp_parser.y"
+#line 915 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 164:
+  case 167:
 
 /* Line 1464 of yacc.c  */
-#line 911 "ntp_parser.y"
+#line 923 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 165:
+  case 168:
 
 /* Line 1464 of yacc.c  */
-#line 913 "ntp_parser.y"
+#line 925 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 166:
+  case 169:
 
 /* Line 1464 of yacc.c  */
-#line 915 "ntp_parser.y"
+#line 927 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 167:
+  case 170:
 
 /* Line 1464 of yacc.c  */
-#line 917 "ntp_parser.y"
+#line 929 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
-  case 174:
+  case 177:
 
 /* Line 1464 of yacc.c  */
-#line 938 "ntp_parser.y"
+#line 950 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 175:
+  case 178:
 
 /* Line 1464 of yacc.c  */
-#line 940 "ntp_parser.y"
+#line 952 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 176:
+  case 179:
 
 /* Line 1464 of yacc.c  */
-#line 945 "ntp_parser.y"
+#line 957 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 177:
+  case 180:
 
 /* Line 1464 of yacc.c  */
-#line 950 "ntp_parser.y"
+#line 962 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 178:
+  case 181:
 
 /* Line 1464 of yacc.c  */
-#line 958 "ntp_parser.y"
+#line 970 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 179:
+  case 182:
 
 /* Line 1464 of yacc.c  */
-#line 960 "ntp_parser.y"
+#line 972 "ntp_parser.y"
     { 
                        if (input_from_file) {
                                (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
@@ -2917,44 +2919,44 @@ yyreduce:
                }
     break;
 
-  case 186:
+  case 189:
 
 /* Line 1464 of yacc.c  */
-#line 985 "ntp_parser.y"
+#line 997 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 187:
+  case 190:
 
 /* Line 1464 of yacc.c  */
-#line 990 "ntp_parser.y"
+#line 1002 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 188:
+  case 191:
 
 /* Line 1464 of yacc.c  */
-#line 995 "ntp_parser.y"
+#line 1007 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 189:
+  case 192:
 
 /* Line 1464 of yacc.c  */
-#line 1003 "ntp_parser.y"
+#line 1015 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 198:
+  case 201:
 
 /* Line 1464 of yacc.c  */
-#line 1024 "ntp_parser.y"
+#line 1036 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -2963,10 +2965,10 @@ yyreduce:
                }
     break;
 
-  case 199:
+  case 202:
 
 /* Line 1464 of yacc.c  */
-#line 1031 "ntp_parser.y"
+#line 1043 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -2975,10 +2977,10 @@ yyreduce:
                }
     break;
 
-  case 200:
+  case 203:
 
 /* Line 1464 of yacc.c  */
-#line 1038 "ntp_parser.y"
+#line 1050 "ntp_parser.y"
     {
                        char error_text[64];
                        attr_val *av;
@@ -2996,10 +2998,10 @@ yyreduce:
                }
     break;
 
-  case 201:
+  case 204:
 
 /* Line 1464 of yacc.c  */
-#line 1054 "ntp_parser.y"
+#line 1066 "ntp_parser.y"
     {
                        if (!input_from_file) {
                                yyerror("remote includefile ignored");
@@ -3020,48 +3022,48 @@ yyreduce:
                }
     break;
 
-  case 202:
+  case 205:
 
 /* Line 1464 of yacc.c  */
-#line 1073 "ntp_parser.y"
+#line 1085 "ntp_parser.y"
     {
                        while (curr_include_level != -1)
                                FCLOSE(fp[curr_include_level--]);
                }
     break;
 
-  case 203:
+  case 206:
 
 /* Line 1464 of yacc.c  */
-#line 1078 "ntp_parser.y"
+#line 1090 "ntp_parser.y"
     { /* see drift_parm below for actions */ }
     break;
 
-  case 204:
+  case 207:
 
 /* Line 1464 of yacc.c  */
-#line 1080 "ntp_parser.y"
+#line 1092 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 205:
+  case 208:
 
 /* Line 1464 of yacc.c  */
-#line 1082 "ntp_parser.y"
+#line 1094 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[(2) - (2)].String_fifo)); }
     break;
 
-  case 206:
+  case 209:
 
 /* Line 1464 of yacc.c  */
-#line 1084 "ntp_parser.y"
+#line 1096 "ntp_parser.y"
     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); }
     break;
 
-  case 207:
+  case 210:
 
 /* Line 1464 of yacc.c  */
-#line 1086 "ntp_parser.y"
+#line 1098 "ntp_parser.y"
     {
                        addr_opts_node *aon;
                        
@@ -3070,17 +3072,17 @@ yyreduce:
                }
     break;
 
-  case 208:
+  case 211:
 
 /* Line 1464 of yacc.c  */
-#line 1093 "ntp_parser.y"
+#line 1105 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 217:
+  case 220:
 
 /* Line 1464 of yacc.c  */
-#line 1115 "ntp_parser.y"
+#line 1127 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3089,10 +3091,10 @@ yyreduce:
                }
     break;
 
-  case 218:
+  case 221:
 
 /* Line 1464 of yacc.c  */
-#line 1122 "ntp_parser.y"
+#line 1134 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3103,10 +3105,10 @@ yyreduce:
                }
     break;
 
-  case 219:
+  case 222:
 
 /* Line 1464 of yacc.c  */
-#line 1131 "ntp_parser.y"
+#line 1143 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3115,78 +3117,78 @@ yyreduce:
                }
     break;
 
-  case 220:
+  case 223:
 
 /* Line 1464 of yacc.c  */
-#line 1141 "ntp_parser.y"
+#line 1153 "ntp_parser.y"
     { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), (yyvsp[(4) - (4)].Integer)); }
     break;
 
-  case 222:
+  case 225:
 
 /* Line 1464 of yacc.c  */
-#line 1147 "ntp_parser.y"
+#line 1159 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 223:
+  case 226:
 
 /* Line 1464 of yacc.c  */
-#line 1152 "ntp_parser.y"
+#line 1164 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
-  case 224:
+  case 227:
 
 /* Line 1464 of yacc.c  */
-#line 1154 "ntp_parser.y"
+#line 1166 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 225:
+  case 228:
 
 /* Line 1464 of yacc.c  */
-#line 1162 "ntp_parser.y"
+#line 1174 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 226:
+  case 229:
 
 /* Line 1464 of yacc.c  */
-#line 1164 "ntp_parser.y"
+#line 1176 "ntp_parser.y"
     {
                        (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), estrdup((yyvsp[(2) - (2)].Address_node)->address));
                        destroy_address_node((yyvsp[(2) - (2)].Address_node));
                }
     break;
 
-  case 227:
+  case 230:
 
 /* Line 1464 of yacc.c  */
-#line 1172 "ntp_parser.y"
+#line 1184 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 228:
+  case 231:
 
 /* Line 1464 of yacc.c  */
-#line 1177 "ntp_parser.y"
+#line 1189 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 229:
+  case 232:
 
 /* Line 1464 of yacc.c  */
-#line 1185 "ntp_parser.y"
+#line 1197 "ntp_parser.y"
     {
                        char    prefix;
                        char *  type;
@@ -3210,10 +3212,10 @@ yyreduce:
                }
     break;
 
-  case 230:
+  case 233:
 
 /* Line 1464 of yacc.c  */
-#line 1210 "ntp_parser.y"
+#line 1222 "ntp_parser.y"
     {
                        nic_rule_node *nrn;
                        
@@ -3222,10 +3224,10 @@ yyreduce:
                }
     break;
 
-  case 231:
+  case 234:
 
 /* Line 1464 of yacc.c  */
-#line 1217 "ntp_parser.y"
+#line 1229 "ntp_parser.y"
     {
                        nic_rule_node *nrn;
                        
@@ -3234,104 +3236,104 @@ yyreduce:
                }
     break;
 
-  case 241:
+  case 244:
 
 /* Line 1464 of yacc.c  */
-#line 1250 "ntp_parser.y"
+#line 1262 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
                }
     break;
 
-  case 242:
+  case 245:
 
 /* Line 1464 of yacc.c  */
-#line 1255 "ntp_parser.y"
+#line 1267 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
                }
     break;
 
-  case 243:
+  case 246:
 
 /* Line 1464 of yacc.c  */
-#line 1263 "ntp_parser.y"
+#line 1275 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
     break;
 
-  case 244:
+  case 247:
 
 /* Line 1464 of yacc.c  */
-#line 1268 "ntp_parser.y"
+#line 1280 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 245:
+  case 248:
 
 /* Line 1464 of yacc.c  */
-#line 1276 "ntp_parser.y"
+#line 1288 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 247:
+  case 250:
 
 /* Line 1464 of yacc.c  */
-#line 1282 "ntp_parser.y"
+#line 1294 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); }
     break;
 
-  case 248:
+  case 251:
 
 /* Line 1464 of yacc.c  */
-#line 1287 "ntp_parser.y"
+#line 1299 "ntp_parser.y"
     {
                        (yyval.String_fifo) = (yyvsp[(1) - (2)].String_fifo);
                        APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(2) - (2)].String)));
                }
     break;
 
-  case 249:
+  case 252:
 
 /* Line 1464 of yacc.c  */
-#line 1292 "ntp_parser.y"
+#line 1304 "ntp_parser.y"
     {
                        (yyval.String_fifo) = NULL;
                        APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(1) - (1)].String)));
                }
     break;
 
-  case 250:
+  case 253:
 
 /* Line 1464 of yacc.c  */
-#line 1300 "ntp_parser.y"
+#line 1312 "ntp_parser.y"
     {
                        (yyval.Address_fifo) = (yyvsp[(1) - (2)].Address_fifo);
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(2) - (2)].Address_node));
                }
     break;
 
-  case 251:
+  case 254:
 
 /* Line 1464 of yacc.c  */
-#line 1305 "ntp_parser.y"
+#line 1317 "ntp_parser.y"
     {
                        (yyval.Address_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(1) - (1)].Address_node));
                }
     break;
 
-  case 252:
+  case 255:
 
 /* Line 1464 of yacc.c  */
-#line 1313 "ntp_parser.y"
+#line 1325 "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");
@@ -3342,31 +3344,31 @@ yyreduce:
                }
     break;
 
-  case 253:
+  case 256:
 
 /* Line 1464 of yacc.c  */
-#line 1321 "ntp_parser.y"
+#line 1333 "ntp_parser.y"
     { (yyval.Integer) = 1; }
     break;
 
-  case 254:
+  case 257:
 
 /* Line 1464 of yacc.c  */
-#line 1322 "ntp_parser.y"
+#line 1334 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 255:
+  case 258:
 
 /* Line 1464 of yacc.c  */
-#line 1326 "ntp_parser.y"
+#line 1338 "ntp_parser.y"
     { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); }
     break;
 
-  case 257:
+  case 260:
 
 /* Line 1464 of yacc.c  */
-#line 1337 "ntp_parser.y"
+#line 1349 "ntp_parser.y"
     {
                        sim_node *sn;
                        
@@ -3378,139 +3380,139 @@ yyreduce:
                }
     break;
 
-  case 258:
+  case 261:
 
 /* Line 1464 of yacc.c  */
-#line 1354 "ntp_parser.y"
+#line 1366 "ntp_parser.y"
     { old_config_style = 0; }
     break;
 
-  case 259:
+  case 262:
 
 /* Line 1464 of yacc.c  */
-#line 1359 "ntp_parser.y"
+#line 1371 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val));
                }
     break;
 
-  case 260:
+  case 263:
 
 /* Line 1464 of yacc.c  */
-#line 1364 "ntp_parser.y"
+#line 1376 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
                }
     break;
 
-  case 261:
+  case 264:
 
 /* Line 1464 of yacc.c  */
-#line 1372 "ntp_parser.y"
+#line 1384 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 264:
+  case 267:
 
 /* Line 1464 of yacc.c  */
-#line 1382 "ntp_parser.y"
+#line 1394 "ntp_parser.y"
     {
                        (yyval.Sim_server_fifo) = (yyvsp[(1) - (2)].Sim_server_fifo);
                        APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(2) - (2)].Sim_server));
                }
     break;
 
-  case 265:
+  case 268:
 
 /* Line 1464 of yacc.c  */
-#line 1387 "ntp_parser.y"
+#line 1399 "ntp_parser.y"
     {
                        (yyval.Sim_server_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(1) - (1)].Sim_server));
                }
     break;
 
-  case 266:
+  case 269:
 
 /* Line 1464 of yacc.c  */
-#line 1395 "ntp_parser.y"
+#line 1407 "ntp_parser.y"
     { (yyval.Sim_server) = create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Sim_script_fifo)); }
     break;
 
-  case 267:
+  case 270:
 
 /* Line 1464 of yacc.c  */
-#line 1400 "ntp_parser.y"
+#line 1412 "ntp_parser.y"
     { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
     break;
 
-  case 268:
+  case 271:
 
 /* Line 1464 of yacc.c  */
-#line 1405 "ntp_parser.y"
+#line 1417 "ntp_parser.y"
     { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
     break;
 
-  case 269:
+  case 272:
 
 /* Line 1464 of yacc.c  */
-#line 1410 "ntp_parser.y"
+#line 1422 "ntp_parser.y"
     {
                        (yyval.Sim_script_fifo) = (yyvsp[(1) - (2)].Sim_script_fifo);
                        APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(2) - (2)].Sim_script));
                }
     break;
 
-  case 270:
+  case 273:
 
 /* Line 1464 of yacc.c  */
-#line 1415 "ntp_parser.y"
+#line 1427 "ntp_parser.y"
     {
                        (yyval.Sim_script_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(1) - (1)].Sim_script));
                }
     break;
 
-  case 271:
+  case 274:
 
 /* Line 1464 of yacc.c  */
-#line 1423 "ntp_parser.y"
+#line 1435 "ntp_parser.y"
     { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Attr_val_fifo)); }
     break;
 
-  case 272:
+  case 275:
 
 /* Line 1464 of yacc.c  */
-#line 1428 "ntp_parser.y"
+#line 1440 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val));
                }
     break;
 
-  case 273:
+  case 276:
 
 /* Line 1464 of yacc.c  */
-#line 1433 "ntp_parser.y"
+#line 1445 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
                }
     break;
 
-  case 274:
+  case 277:
 
 /* Line 1464 of yacc.c  */
-#line 1441 "ntp_parser.y"
+#line 1453 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
 
 
 /* Line 1464 of yacc.c  */
-#line 3514 "ntp_parser.c"
+#line 3516 "ntp_parser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3722,7 +3724,7 @@ yyreturn:
 
 
 /* Line 1684 of yacc.c  */
-#line 1452 "ntp_parser.y"
+#line 1464 "ntp_parser.y"
 
 
 void 
index 997ebf26d5b6be124e966dc5440591dc8468285f..4338f6be119265cbd2e413fabddf1305e345e352 100644 (file)
 %type  <Attr_val_fifo> option_list
 %type  <Attr_val>      option_int
 %type  <Integer>       option_int_keyword
+%type  <Attr_val>      option_str
+%type  <Integer>       option_str_keyword
 %type  <Integer>       stat
 %type  <Int_fifo>      stats_list
 %type  <String_fifo>   string_list
@@ -419,6 +421,7 @@ option_list
 option
        :       option_flag
        |       option_int
+       |       option_str
        ;
 
 option_flag
@@ -451,6 +454,15 @@ option_int_keyword
        |       T_Version
        ;
 
+option_str
+       :       option_str_keyword T_String
+                       { $$ = create_attr_sval($1, $2); }
+       ;
+
+option_str_keyword
+       :       T_Ident
+       ;
+
 
 /* unpeer commands
  * ---------------
index e74eca7ca40ae141cbc175aacef6456dc43d6dea..4f2f78b38ffecd9fb2c4ddbfa3a4ac08678befa4 100644 (file)
@@ -511,17 +511,17 @@ unpeer(
  */
 struct peer *
 peer_config(
-       sockaddr_u *srcadr,
-       const char *hostname,
-       struct interface *dstadr,
-       u_char  hmode,
-       u_char  version,
-       u_char  minpoll,
-       u_char  maxpoll,
-       u_int   flags,
-       u_char  ttl,
-       keyid_t key,
-       u_char *keystr
+       sockaddr_u *    srcadr,
+       const char *    hostname,
+       endpt *         dstadr,
+       u_char          hmode,
+       u_char          version,
+       u_char          minpoll,
+       u_char          maxpoll,
+       u_int           flags,
+       u_char          ttl,
+       keyid_t         key,
+       const char *    group
        )
 {
        u_char cast_flags;