]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 1973] Widen reference clock mode from 8 to 32 bits.
authorDave Hart <hart@ntp.org>
Tue, 26 Jul 2011 00:18:29 +0000 (00:18 +0000)
committerDave Hart <hart@ntp.org>
Tue, 26 Jul 2011 00:18:29 +0000 (00:18 +0000)
bk: 4e2e07d5FD7hQOqLPUY8135qk0ohsQ

15 files changed:
ChangeLog
include/ntp.h
include/ntp_config.h
include/ntpd.h
libntp/tsftomsu.c
ntpd/complete.conf
ntpd/keyword-gen-utd
ntpd/ntp_config.c
ntpd/ntp_keyword.h
ntpd/ntp_parser.c
ntpd/ntp_parser.h
ntpd/ntp_parser.y
ntpd/ntp_peer.c
ntpd/ntp_scanner.c
sntp/main.c

index 6b3c06ab8ac6d50a392554af3809a5894d9bce55..56f8609f99aa94db8079b319d93ff052cfacbc64 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
 * [Bug 1972] from 4.2.6p4-RC2: checking for struct rtattr fails.
+* [Bug 1973] Widen reference clock mode from 8 to 32 bits.
 (4.2.7p195) 2011/07/25 Released by Harlan Stenn <stenn@ntp.org>
 * Added loc/redhat.
 (4.2.7p194) 2011/07/25 Released by Harlan Stenn <stenn@ntp.org>
index 074e021f0c2ea7ed560cdfb39e2769dfd48dbb41..d2574c1c02bdebe9c981d00117bed8b05e4e07bc 100644 (file)
@@ -266,7 +266,7 @@ struct peer {
        u_char  cast_flags;     /* additional flags */
        u_char  last_event;     /* last peer error code */
        u_char  num_events;     /* number of error events */
-       u_char  ttl;            /* ttl/refclock mode */
+       u_int32 ttl;            /* ttl/refclock mode */
        char    *ident;         /* group identifier name */
 
        /*
index 0a432aad725fbccb387b684d4ea805da12b4a30c..e2a842f8dc61ab2266c92288f028ba0ceaee0d2c 100644 (file)
@@ -131,7 +131,7 @@ struct peer_node_tag {
        attr_val_fifo * peerflags;
        u_char          minpoll;
        u_char          maxpoll;
-       u_char          ttl;
+       u_int32         ttl;
        u_char          peerversion;
        keyid_t         peerkey;
        char *          group;
@@ -299,6 +299,7 @@ address_node *create_address_node(char *addr, int type);
 void destroy_address_node(address_node *my_node);
 attr_val *create_attr_dval(int attr, double value);
 attr_val *create_attr_ival(int attr, int value);
+attr_val *create_attr_uval(int attr, u_int value);
 attr_val *create_attr_rangeval(int attr, int first, int last);
 attr_val *create_attr_sval(int attr, char *s);
 filegen_node *create_filegen_node(int filegen_token,
index 3edb475a1500652d3aaffa38f915f56e019d8b3f..1a850c7a8f911b3015a8c8c54cbded155e09dd64 100644 (file)
@@ -172,14 +172,14 @@ extern  void      set_peerdstadr  (struct peer *peer,
                                 endpt *interface);
 extern struct peer *newpeer    (sockaddr_u *, const char *,
                                 endpt *, u_char, u_char,
-                                u_char, u_char, u_int, u_char, u_char,
+                                u_char, u_char, u_int, u_char, u_int32,
                                 keyid_t, const char *);
 extern void    peer_all_reset  (void);
 extern void    peer_clr_stats  (void);
 extern struct peer *peer_config(sockaddr_u *, const char *,
                                 endpt *, u_char, u_char,
-                                u_char, u_char, u_int, u_char, keyid_t,
-                                const char *);
+                                u_char, u_char, u_int, u_int32,
+                                keyid_t, const char *);
 extern void    peer_reset      (struct peer *);
 extern void    refresh_all_peerinterfaces(void);
 extern void    unpeer          (struct peer *);
index 2d8c6084ad110b23fb3d1efef8c3182345851009..2a8c15022d8c485d50edfe643772d9305c2802ce 100644 (file)
@@ -7,13 +7,15 @@
 
 int
 tsftomsu(
-       u_long tsf,
-       int round
+       u_long  tsf,
+       int     round_it
        )
 {
-       register long val_ui, val_uf;
-       register long tmp_ui, tmp_uf;
-       register int i;
+       long    val_ui;
+       long    val_uf;
+       long    tmp_ui;
+       long    tmp_uf;
+       int     i;
 
        /*
         * Essentially, multiply by 10 three times in l_fp form.
@@ -33,7 +35,8 @@ tsftomsu(
        /*
         * Round the value if need be, then return it.
         */
-       if (round && (val_uf & 0x80000000))
-           val_ui++;
+       if (round_it && (0x80000000 & val_uf))
+               val_ui++;
+
        return (int)val_ui;
 }
index 485ea036db4ccedc8407ac33087dc190e6cd847b..bce6ecd05b7a63ac70e38acc00c06705e27a1c65 100644 (file)
@@ -26,7 +26,7 @@ disable bclient calibrate kernel
 tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300
 tinker allan 1500 dispersion 15 freq 0 huffpuff 7200 panic 1000 step 0.128 stepout 900
 broadcastclient
-server 127.127.1.0 mode 64 prefer true
+server 127.127.1.0 mode 4294967295 prefer true
 fudge 127.127.1.0 time1 0 time2 1.1 stratum 7 refid Abcd
 pool 0.north-america.pool.ntp.org. iburst preempt
 server 1.north-america.pool.ntp.org. iburst
index 918531ac31cfcf64fea69c81d4dee9dc6b44ef32..957d9e740d56825e8c00757255f016058c8abaf1 100644 (file)
@@ -1 +1 @@
- *      Generated 2011-07-16 15:02:24 UTC        diff_ignore_line
+ *      Generated 2011-07-26 00:04:53 UTC        diff_ignore_line
index c86d99700d82c942f9b3f9876d31a49764aa01a1..36b22d5fdcca8695f6f401678eb3c57ee7e49200 100644 (file)
@@ -1052,6 +1052,23 @@ create_attr_ival(
 }
 
 
+attr_val *
+create_attr_uval(
+       int     attr,
+       u_int   value
+       )
+{
+       attr_val *my_val;
+
+       my_val = emalloc_zero(sizeof(*my_val));
+       my_val->attr = attr;
+       my_val->value.u = value;
+       my_val->type = T_U_int;
+
+       return my_val;
+}
+
+
 attr_val *
 create_attr_rangeval(
        int     attr,
@@ -1234,12 +1251,7 @@ create_peer_node(
                        break;
 
                case T_Mode:
-                       if (option->value.u >= UCHAR_MAX) {
-                               msyslog(LOG_ERR, "mode: invalid argument");
-                               errflag = 1;
-                       } else {
-                               my_node->ttl = (u_char)option->value.u;
-                       }
+                       my_node->ttl = option->value.u;
                        break;
 
                case T_Key:
index f49fcd4b34d374679ab03fa1c20c1ec1ae2955d4..38ea7e1843dfcc9819c1b441f3c106402f2fecb6 100644 (file)
@@ -2,7 +2,7 @@
  * ntp_keyword.h
  * 
  * NOTE: edit this file with caution, it is generated by keyword-gen.c
- *      Generated 2011-07-16 15:02:24 UTC        diff_ignore_line
+ *      Generated 2011-07-26 00:04:53 UTC        diff_ignore_line
  *
  */
 #include "ntp_scanner.h"
@@ -10,7 +10,7 @@
 
 #define LOWEST_KEYWORD_ID 258
 
-const char * const keyword_text[179] = {
+const char * const keyword_text[180] = {
        /* 0       258                T_Age */  "age",
        /* 1       259                T_All */  "all",
        /* 2       260              T_Allan */  "allan",
@@ -170,26 +170,27 @@ const char * const keyword_text[179] = {
        /* 156     414         T_Trustedkey */  "trustedkey",
        /* 157     415                T_Ttl */  "ttl",
        /* 158     416               T_Type */  "type",
-       /* 159     417           T_Unconfig */  "unconfig",
-       /* 160     418             T_Unpeer */  "unpeer",
-       /* 161     419            T_Version */  "version",
-       /* 162     420    T_WanderThreshold */  NULL,
-       /* 163     421               T_Week */  "week",
-       /* 164     422           T_Wildcard */  "wildcard",
-       /* 165     423             T_Xleave */  "xleave",
-       /* 166     424               T_Year */  "year",
-       /* 167     425               T_Flag */  NULL,
-       /* 168     426                T_EOC */  NULL,
-       /* 169     427           T_Simulate */  "simulate",
-       /* 170     428         T_Beep_Delay */  "beep_delay",
-       /* 171     429       T_Sim_Duration */  "simulation_duration",
-       /* 172     430      T_Server_Offset */  "server_offset",
-       /* 173     431           T_Duration */  "duration",
-       /* 174     432        T_Freq_Offset */  "freq_offset",
-       /* 175     433             T_Wander */  "wander",
-       /* 176     434             T_Jitter */  "jitter",
-       /* 177     435         T_Prop_Delay */  "prop_delay",
-       /* 178     436         T_Proc_Delay */  "proc_delay"
+       /* 159     417              T_U_int */  NULL,
+       /* 160     418           T_Unconfig */  "unconfig",
+       /* 161     419             T_Unpeer */  "unpeer",
+       /* 162     420            T_Version */  "version",
+       /* 163     421    T_WanderThreshold */  NULL,
+       /* 164     422               T_Week */  "week",
+       /* 165     423           T_Wildcard */  "wildcard",
+       /* 166     424             T_Xleave */  "xleave",
+       /* 167     425               T_Year */  "year",
+       /* 168     426               T_Flag */  NULL,
+       /* 169     427                T_EOC */  NULL,
+       /* 170     428           T_Simulate */  "simulate",
+       /* 171     429         T_Beep_Delay */  "beep_delay",
+       /* 172     430       T_Sim_Duration */  "simulation_duration",
+       /* 173     431      T_Server_Offset */  "server_offset",
+       /* 174     432           T_Duration */  "duration",
+       /* 175     433        T_Freq_Offset */  "freq_offset",
+       /* 176     434             T_Wander */  "wander",
+       /* 177     435             T_Jitter */  "jitter",
+       /* 178     436         T_Prop_Delay */  "prop_delay",
+       /* 179     437         T_Proc_Delay */  "proc_delay"
 };
 
 #define SCANNER_INIT_S 795
@@ -236,7 +237,7 @@ const scan_state sst[798] = {
   S_ST( 'd',   3,       38,     0 ), /*    37 beep_             */
   S_ST( 'e',   3,       39,     0 ), /*    38 beep_d            */
   S_ST( 'l',   3,       40,     0 ), /*    39 beep_de           */
-  S_ST( 'a',   3,      428,     0 ), /*    40 beep_del          */
+  S_ST( 'a',   3,      429,     0 ), /*    40 beep_del          */
   S_ST( 'r',   3,       42,    30 ), /*    41 b                 */
   S_ST( 'o',   3,       43,     0 ), /*    42 br                */
   S_ST( 'a',   3,       44,     0 ), /*    43 bro               */
@@ -334,7 +335,7 @@ const scan_state sst[798] = {
   S_ST( 'a',   3,      136,     0 ), /*   135 dur               */
   S_ST( 't',   3,      137,     0 ), /*   136 dura              */
   S_ST( 'i',   3,      138,     0 ), /*   137 durat             */
-  S_ST( 'o',   3,      431,     0 ), /*   138 durati            */
+  S_ST( 'o',   3,      432,     0 ), /*   138 durati            */
   S_ST( 'e',   3,      140,   101 ), /*   139                   */
   S_ST( 'n',   3,      291,     0 ), /*   140 e                 */
   S_ST( 'a',   3,      142,     0 ), /*   141 en                */
@@ -358,7 +359,7 @@ const scan_state sst[798] = {
   S_ST( 'f',   3,      160,     0 ), /*   159 freq_o            */
   S_ST( 'f',   3,      161,     0 ), /*   160 freq_of           */
   S_ST( 's',   3,      162,     0 ), /*   161 freq_off          */
-  S_ST( 'e',   3,      432,     0 ), /*   162 freq_offs         */
+  S_ST( 'e',   3,      433,     0 ), /*   162 freq_offs         */
   S_ST( 'u',   3,      164,   155 ), /*   163 f                 */
   S_ST( 'd',   3,      165,     0 ), /*   164 fu                */
   S_ST( 'g',   3,      302,     0 ), /*   165 fud               */
@@ -418,7 +419,7 @@ const scan_state sst[798] = {
   S_ST( 'i',   3,      220,     0 ), /*   219 j                 */
   S_ST( 't',   3,      221,     0 ), /*   220 ji                */
   S_ST( 't',   3,      222,     0 ), /*   221 jit               */
-  S_ST( 'e',   3,      434,     0 ), /*   222 jitt              */
+  S_ST( 'e',   3,      435,     0 ), /*   222 jitt              */
   S_ST( 'k',   3,      230,   218 ), /*   223                   */
   S_ST( 'e',   3,      322,     0 ), /*   224 k                 */
   S_ST( 'r',   3,      226,     0 ), /*   225 ke                */
@@ -443,7 +444,7 @@ const scan_state sst[798] = {
   S_ST( 's',   3,      245,   243 ), /*   244 li                */
   S_ST( 't',   3,      246,     0 ), /*   245 lis               */
   S_ST( 'e',   3,      330,     0 ), /*   246 list              */
-  S_ST( 'o',   3,      420,   238 ), /*   247 l                 */
+  S_ST( 'o',   3,      417,   238 ), /*   247 l                 */
   S_ST( 'g',   3,      254,     0 ), /*   248 lo                */
   S_ST( 'c',   3,      250,     0 ), /*   249 log               */
   S_ST( 'o',   3,      251,     0 ), /*   250 logc              */
@@ -613,27 +614,27 @@ const scan_state sst[798] = {
   S_ST( 'y',   0,        0,     0 ), /*   414 T_Trustedkey      */
   S_ST( 'l',   0,        0,     0 ), /*   415 T_Ttl             */
   S_ST( 'e',   0,        0,     0 ), /*   416 T_Type            */
-  S_ST( 'g',   1,        0,     0 ), /*   417 T_Unconfig        */
-  S_ST( 'r',   1,        0,     0 ), /*   418 T_Unpeer          */
-  S_ST( 'n',   0,        0,     0 ), /*   419 T_Version         */
-  S_ST( 'w',   3,      425,   257 ), /*   420 lo                */
-  S_ST( 'k',   0,        0,     0 ), /*   421 T_Week            */
-  S_ST( 'd',   0,        0,     0 ), /*   422 T_Wildcard        */
-  S_ST( 'e',   0,        0,     0 ), /*   423 T_Xleave          */
-  S_ST( 'r',   0,        0,     0 ), /*   424 T_Year            */
-  S_ST( 'p',   3,      426,     0 ), /*   425 low               */
-  S_ST( 'r',   3,      437,     0 ), /*   426 lowp              */
-  S_ST( 'e',   0,        0,     0 ), /*   427 T_Simulate        */
-  S_ST( 'y',   0,        0,     0 ), /*   428 T_Beep_Delay      */
-  S_ST( 'n',   0,        0,     0 ), /*   429 T_Sim_Duration    */
-  S_ST( 't',   0,        0,     0 ), /*   430 T_Server_Offset   */
-  S_ST( 'n',   0,        0,     0 ), /*   431 T_Duration        */
-  S_ST( 't',   0,        0,     0 ), /*   432 T_Freq_Offset     */
-  S_ST( 'r',   0,        0,     0 ), /*   433 T_Wander          */
-  S_ST( 'r',   0,        0,     0 ), /*   434 T_Jitter          */
-  S_ST( 'y',   0,        0,     0 ), /*   435 T_Prop_Delay      */
-  S_ST( 'y',   0,        0,     0 ), /*   436 T_Proc_Delay      */
-  S_ST( 'i',   3,      438,     0 ), /*   437 lowpr             */
+  S_ST( 'w',   3,      421,   257 ), /*   417 lo                */
+  S_ST( 'g',   1,        0,     0 ), /*   418 T_Unconfig        */
+  S_ST( 'r',   1,        0,     0 ), /*   419 T_Unpeer          */
+  S_ST( 'n',   0,        0,     0 ), /*   420 T_Version         */
+  S_ST( 'p',   3,      426,     0 ), /*   421 low               */
+  S_ST( 'k',   0,        0,     0 ), /*   422 T_Week            */
+  S_ST( 'd',   0,        0,     0 ), /*   423 T_Wildcard        */
+  S_ST( 'e',   0,        0,     0 ), /*   424 T_Xleave          */
+  S_ST( 'r',   0,        0,     0 ), /*   425 T_Year            */
+  S_ST( 'r',   3,      427,     0 ), /*   426 lowp              */
+  S_ST( 'i',   3,      438,     0 ), /*   427 lowpr             */
+  S_ST( 'e',   0,        0,     0 ), /*   428 T_Simulate        */
+  S_ST( 'y',   0,        0,     0 ), /*   429 T_Beep_Delay      */
+  S_ST( 'n',   0,        0,     0 ), /*   430 T_Sim_Duration    */
+  S_ST( 't',   0,        0,     0 ), /*   431 T_Server_Offset   */
+  S_ST( 'n',   0,        0,     0 ), /*   432 T_Duration        */
+  S_ST( 't',   0,        0,     0 ), /*   433 T_Freq_Offset     */
+  S_ST( 'r',   0,        0,     0 ), /*   434 T_Wander          */
+  S_ST( 'r',   0,        0,     0 ), /*   435 T_Jitter          */
+  S_ST( 'y',   0,        0,     0 ), /*   436 T_Prop_Delay      */
+  S_ST( 'y',   0,        0,     0 ), /*   437 T_Proc_Delay      */
   S_ST( 'o',   3,      439,     0 ), /*   438 lowpri            */
   S_ST( 't',   3,      440,     0 ), /*   439 lowprio           */
   S_ST( 'r',   3,      441,     0 ), /*   440 lowpriot          */
@@ -815,13 +816,13 @@ const scan_state sst[798] = {
   S_ST( 'd',   3,      617,     0 ), /*   616 proc_             */
   S_ST( 'e',   3,      618,     0 ), /*   617 proc_d            */
   S_ST( 'l',   3,      619,     0 ), /*   618 proc_de           */
-  S_ST( 'a',   3,      436,     0 ), /*   619 proc_del          */
+  S_ST( 'a',   3,      437,     0 ), /*   619 proc_del          */
   S_ST( 'p',   3,      621,   614 ), /*   620 pro               */
   S_ST( '_',   3,      622,     0 ), /*   621 prop              */
   S_ST( 'd',   3,      623,     0 ), /*   622 prop_             */
   S_ST( 'e',   3,      624,     0 ), /*   623 prop_d            */
   S_ST( 'l',   3,      625,     0 ), /*   624 prop_de           */
-  S_ST( 'a',   3,      435,     0 ), /*   625 prop_del          */
+  S_ST( 'a',   3,      436,     0 ), /*   625 prop_del          */
   S_ST( 't',   3,      627,   620 ), /*   626 pro               */
   S_ST( 'o',   3,      628,     0 ), /*   627 prot              */
   S_ST( 's',   3,      629,     0 ), /*   628 proto             */
@@ -882,7 +883,7 @@ const scan_state sst[798] = {
   S_ST( 'f',   3,      684,     0 ), /*   683 server_o          */
   S_ST( 'f',   3,      685,     0 ), /*   684 server_of         */
   S_ST( 's',   3,      686,     0 ), /*   685 server_off        */
-  S_ST( 'e',   3,      430,     0 ), /*   686 server_offs       */
+  S_ST( 'e',   3,      431,     0 ), /*   686 server_offs       */
   S_ST( 't',   3,      688,   678 ), /*   687 se                */
   S_ST( 'v',   3,      689,     0 ), /*   688 set               */
   S_ST( 'a',   3,      394,     0 ), /*   689 setv              */
@@ -892,7 +893,7 @@ const scan_state sst[798] = {
   S_ST( 'l',   3,      694,     0 ), /*   693 simu              */
   S_ST( 'a',   3,      695,     0 ), /*   694 simul             */
   S_ST( 't',   3,      696,     0 ), /*   695 simula            */
-  S_ST( 'i',   3,      697,   427 ), /*   696 simulat           */
+  S_ST( 'i',   3,      697,   428 ), /*   696 simulat           */
   S_ST( 'o',   3,      698,     0 ), /*   697 simulati          */
   S_ST( 'n',   3,      699,     0 ), /*   698 simulatio         */
   S_ST( '_',   3,      700,     0 ), /*   699 simulation        */
@@ -902,7 +903,7 @@ const scan_state sst[798] = {
   S_ST( 'a',   3,      704,     0 ), /*   703 simulation_dur    */
   S_ST( 't',   3,      705,     0 ), /*   704 simulation_dura   */
   S_ST( 'i',   3,      706,     0 ), /*   705 simulation_durat  */
-  S_ST( 'o',   3,      429,     0 ), /*   706 simulation_durati */
+  S_ST( 'o',   3,      430,     0 ), /*   706 simulation_durati */
   S_ST( 'o',   3,      708,   690 ), /*   707 s                 */
   S_ST( 'u',   3,      709,     0 ), /*   708 so                */
   S_ST( 'r',   3,      710,     0 ), /*   709 sou               */
@@ -963,36 +964,36 @@ const scan_state sst[798] = {
   S_ST( 'o',   3,      765,     0 ), /*   764 unc               */
   S_ST( 'n',   3,      766,     0 ), /*   765 unco              */
   S_ST( 'f',   3,      767,     0 ), /*   766 uncon             */
-  S_ST( 'i',   3,      417,     0 ), /*   767 unconf            */
+  S_ST( 'i',   3,      418,     0 ), /*   767 unconf            */
   S_ST( 'p',   3,      769,   763 ), /*   768 un                */
   S_ST( 'e',   3,      770,     0 ), /*   769 unp               */
-  S_ST( 'e',   3,      418,     0 ), /*   770 unpe              */
+  S_ST( 'e',   3,      419,     0 ), /*   770 unpe              */
   S_ST( 'v',   3,      772,   761 ), /*   771                   */
   S_ST( 'e',   3,      773,     0 ), /*   772 v                 */
   S_ST( 'r',   3,      774,     0 ), /*   773 ve                */
   S_ST( 's',   3,      775,     0 ), /*   774 ver               */
   S_ST( 'i',   3,      776,     0 ), /*   775 vers              */
-  S_ST( 'o',   3,      419,     0 ), /*   776 versi             */
+  S_ST( 'o',   3,      420,     0 ), /*   776 versi             */
   S_ST( 'w',   3,      784,   771 ), /*   777                   */
   S_ST( 'a',   3,      779,     0 ), /*   778 w                 */
   S_ST( 'n',   3,      780,     0 ), /*   779 wa                */
   S_ST( 'd',   3,      781,     0 ), /*   780 wan               */
-  S_ST( 'e',   3,      433,     0 ), /*   781 wand              */
+  S_ST( 'e',   3,      434,     0 ), /*   781 wand              */
   S_ST( 'e',   3,      783,   778 ), /*   782 w                 */
-  S_ST( 'e',   3,      421,     0 ), /*   783 we                */
+  S_ST( 'e',   3,      422,     0 ), /*   783 we                */
   S_ST( 'i',   3,      785,   782 ), /*   784 w                 */
   S_ST( 'l',   3,      786,     0 ), /*   785 wi                */
   S_ST( 'd',   3,      787,     0 ), /*   786 wil               */
   S_ST( 'c',   3,      788,     0 ), /*   787 wild              */
   S_ST( 'a',   3,      789,     0 ), /*   788 wildc             */
-  S_ST( 'r',   3,      422,     0 ), /*   789 wildca            */
+  S_ST( 'r',   3,      423,     0 ), /*   789 wildca            */
   S_ST( 'x',   3,      791,   777 ), /*   790                   */
   S_ST( 'l',   3,      792,     0 ), /*   791 x                 */
   S_ST( 'e',   3,      793,     0 ), /*   792 xl                */
   S_ST( 'a',   3,      794,     0 ), /*   793 xle               */
-  S_ST( 'v',   3,      423,     0 ), /*   794 xlea              */
+  S_ST( 'v',   3,      424,     0 ), /*   794 xlea              */
   S_ST( 'y',   3,      796,   790 ), /*   795 [initial state]   */
   S_ST( 'e',   3,      797,     0 ), /*   796 y                 */
-  S_ST( 'a',   3,      424,     0 )  /*   797 ye                */
+  S_ST( 'a',   3,      425,     0 )  /*   797 ye                */
 };
 
index 1f08e106f4661039df7491fca279c0783175f0d3..8fae897a038ceed15572d61c8fba706fe5d02833 100644 (file)
                                */
 
 
-  struct FILE_INFO *ip_file;   /* Pointer to the configuration file stream */
+  struct FILE_INFO *ip_file;   /* configuration file stream */
 
   #define YYMALLOC     emalloc
   #define YYFREE       free
   #define YYERROR_VERBOSE
-  #define YYMAXDEPTH   1000   /* stop the madness sooner */
+  #define YYMAXDEPTH   1000    /* stop the madness sooner */
   void yyerror(const char *msg);
-  extern int input_from_file;  /* 0=input from ntpq :config */
+  extern int input_from_file;  /* else from ntpq :config */
 
 
 /* Line 189 of yacc.c  */
      T_Trustedkey = 414,
      T_Ttl = 415,
      T_Type = 416,
-     T_Unconfig = 417,
-     T_Unpeer = 418,
-     T_Version = 419,
-     T_WanderThreshold = 420,
-     T_Week = 421,
-     T_Wildcard = 422,
-     T_Xleave = 423,
-     T_Year = 424,
-     T_Flag = 425,
-     T_EOC = 426,
-     T_Simulate = 427,
-     T_Beep_Delay = 428,
-     T_Sim_Duration = 429,
-     T_Server_Offset = 430,
-     T_Duration = 431,
-     T_Freq_Offset = 432,
-     T_Wander = 433,
-     T_Jitter = 434,
-     T_Prop_Delay = 435,
-     T_Proc_Delay = 436
+     T_U_int = 417,
+     T_Unconfig = 418,
+     T_Unpeer = 419,
+     T_Version = 420,
+     T_WanderThreshold = 421,
+     T_Week = 422,
+     T_Wildcard = 423,
+     T_Xleave = 424,
+     T_Year = 425,
+     T_Flag = 426,
+     T_EOC = 427,
+     T_Simulate = 428,
+     T_Beep_Delay = 429,
+     T_Sim_Duration = 430,
+     T_Server_Offset = 431,
+     T_Duration = 432,
+     T_Freq_Offset = 433,
+     T_Wander = 434,
+     T_Jitter = 435,
+     T_Prop_Delay = 436,
+     T_Proc_Delay = 437
    };
 #endif
 /* Tokens.  */
 #define T_Trustedkey 414
 #define T_Ttl 415
 #define T_Type 416
-#define T_Unconfig 417
-#define T_Unpeer 418
-#define T_Version 419
-#define T_WanderThreshold 420
-#define T_Week 421
-#define T_Wildcard 422
-#define T_Xleave 423
-#define T_Year 424
-#define T_Flag 425
-#define T_EOC 426
-#define T_Simulate 427
-#define T_Beep_Delay 428
-#define T_Sim_Duration 429
-#define T_Server_Offset 430
-#define T_Duration 431
-#define T_Freq_Offset 432
-#define T_Wander 433
-#define T_Jitter 434
-#define T_Prop_Delay 435
-#define T_Proc_Delay 436
+#define T_U_int 417
+#define T_Unconfig 418
+#define T_Unpeer 419
+#define T_Version 420
+#define T_WanderThreshold 421
+#define T_Week 422
+#define T_Wildcard 423
+#define T_Xleave 424
+#define T_Year 425
+#define T_Flag 426
+#define T_EOC 427
+#define T_Simulate 428
+#define T_Beep_Delay 429
+#define T_Sim_Duration 430
+#define T_Server_Offset 431
+#define T_Duration 432
+#define T_Freq_Offset 433
+#define T_Wander 434
+#define T_Jitter 435
+#define T_Prop_Delay 436
+#define T_Proc_Delay 437
 
 
 
@@ -503,6 +505,7 @@ typedef union YYSTYPE
        char *                  String;
        double                  Double;
        int                     Integer;
+       unsigned                U_int;
        gen_fifo *              Generic_fifo;
        attr_val *              Attr_val;
        attr_val_fifo *         Attr_val_fifo;
@@ -519,7 +522,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 523 "ntp_parser.c"
+#line 526 "ntp_parser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -531,7 +534,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 535 "ntp_parser.c"
+#line 538 "ntp_parser.c"
 
 #ifdef short
 # undef short
@@ -746,20 +749,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  193
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   606
+#define YYLAST   563
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  187
+#define YYNTOKENS  188
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  99
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  294
+#define YYNRULES  295
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  395
+#define YYNSTATES  396
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   436
+#define YYMAXUTOK   437
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -771,15 +774,15 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     183,   184,     2,     2,     2,     2,     2,     2,     2,     2,
+     184,   185,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   182,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   183,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   185,     2,   186,     2,     2,     2,     2,
+       2,     2,     2,   186,     2,   187,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -810,7 +813,7 @@ static const yytype_uint8 yytranslate[] =
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181
+     175,   176,   177,   178,   179,   180,   181,   182
 };
 
 #if YYDEBUG
@@ -822,144 +825,145 @@ 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,    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,   472,   475,   478,   481,   485,   487,   490,   493,
-     496,   499,   503,   506,   508,   510,   512,   514,   516,   518,
-     520,   522,   524,   526,   529,   530,   535,   537,   538,   539,
-     542,   545,   548,   551,   553,   555,   559,   563,   565,   567,
-     569,   571,   573,   575,   577,   579,   581,   584,   587,   589,
-     591,   593,   595,   597,   599,   601,   603,   606,   608,   611,
-     613,   615,   617,   623,   626,   628,   631,   633,   635,   637,
-     639,   641,   643,   649,   651,   655,   658,   662,   664,   666,
-     669,   671,   677,   682,   686,   689,   691,   698,   702,   705,
-     709,   711,   713,   715,   717
+      85,    87,    89,    91,    93,    96,    99,   101,   103,   105,
+     107,   109,   111,   114,   116,   119,   121,   123,   125,   128,
+     131,   134,   137,   140,   143,   146,   149,   152,   155,   158,
+     159,   162,   165,   168,   170,   172,   174,   176,   178,   181,
+     184,   186,   189,   192,   195,   197,   199,   201,   203,   205,
+     207,   209,   211,   213,   215,   218,   221,   225,   228,   230,
+     232,   234,   236,   238,   240,   242,   244,   246,   247,   250,
+     253,   256,   258,   260,   262,   264,   266,   268,   270,   272,
+     274,   276,   278,   280,   282,   285,   288,   292,   298,   302,
+     307,   312,   316,   317,   320,   322,   324,   326,   328,   330,
+     332,   334,   336,   338,   340,   342,   344,   346,   348,   351,
+     353,   356,   358,   360,   362,   365,   367,   370,   372,   374,
+     376,   378,   380,   382,   384,   386,   390,   393,   395,   398,
+     401,   404,   407,   409,   411,   413,   415,   417,   419,   422,
+     425,   428,   430,   432,   434,   436,   438,   440,   442,   444,
+     446,   449,   452,   454,   457,   459,   461,   463,   465,   467,
+     469,   471,   473,   475,   478,   481,   484,   488,   490,   493,
+     496,   499,   502,   506,   509,   511,   513,   515,   517,   519,
+     521,   523,   525,   527,   529,   532,   533,   538,   540,   541,
+     542,   545,   548,   551,   554,   556,   558,   562,   566,   568,
+     570,   572,   574,   576,   578,   580,   582,   584,   587,   590,
+     592,   594,   596,   598,   600,   602,   604,   606,   609,   611,
+     614,   616,   618,   620,   626,   629,   631,   634,   636,   638,
+     640,   642,   644,   646,   652,   654,   658,   661,   665,   667,
+     669,   672,   674,   680,   685,   689,   692,   694,   701,   705,
+     708,   712,   714,   716,   718,   720
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     188,     0,    -1,   189,    -1,   189,   190,   171,    -1,   190,
-     171,    -1,     1,   171,    -1,    -1,   191,    -1,   204,    -1,
-     206,    -1,   207,    -1,   216,    -1,   224,    -1,   211,    -1,
-     233,    -1,   238,    -1,   242,    -1,   246,    -1,   272,    -1,
-     192,   193,   196,    -1,   138,    -1,   123,    -1,   118,    -1,
-      13,    -1,    80,    -1,   194,    -1,   195,   147,    -1,   147,
-      -1,    63,    -1,    65,    -1,    -1,   196,   197,    -1,   198,
-      -1,   200,    -1,   202,    -1,   199,    -1,     8,    -1,    16,
+     189,     0,    -1,   190,    -1,   190,   191,   172,    -1,   191,
+     172,    -1,     1,   172,    -1,    -1,   192,    -1,   205,    -1,
+     207,    -1,   208,    -1,   217,    -1,   225,    -1,   212,    -1,
+     234,    -1,   239,    -1,   243,    -1,   247,    -1,   273,    -1,
+     193,   194,   197,    -1,   138,    -1,   123,    -1,   118,    -1,
+      13,    -1,    80,    -1,   195,    -1,   196,   147,    -1,   147,
+      -1,    63,    -1,    65,    -1,    -1,   197,   198,    -1,   199,
+      -1,   201,    -1,   203,    -1,   200,    -1,     8,    -1,    16,
       -1,    50,    -1,   108,    -1,   125,    -1,   126,    -1,   158,
-      -1,   168,    -1,   201,    58,    -1,    67,    -1,    94,    -1,
-      88,    -1,   160,    -1,    96,    -1,   164,    -1,   203,   147,
-      -1,    51,    -1,   205,   193,    -1,   162,    -1,   163,    -1,
-      14,    -1,    81,   269,    -1,   100,   269,    -1,     9,    58,
-      -1,    21,    58,    -1,    22,   208,    -1,    68,   147,    -1,
-      69,   147,    -1,   133,    58,    -1,   136,    58,    -1,   159,
-     265,    -1,   114,   147,    -1,    -1,   208,   209,    -1,   210,
-     147,    -1,   136,    58,    -1,    48,    -1,    51,    -1,   128,
-      -1,   130,    -1,    27,    -1,   156,   212,    -1,   212,   213,
-      -1,   213,    -1,   214,    58,    -1,   215,   271,    -1,    20,
-     270,    -1,    18,    -1,    45,    -1,   115,    -1,   116,    -1,
-      95,    -1,    12,    -1,    92,    -1,    86,    -1,    90,    -1,
-      84,    -1,   141,   217,    -1,   143,   147,    -1,    39,   218,
-     219,    -1,   217,   218,    -1,   218,    -1,    19,    -1,    23,
-      -1,    78,    -1,   119,    -1,   131,    -1,   149,    -1,   154,
-      -1,   127,    -1,    -1,   219,   220,    -1,    38,   147,    -1,
-     161,   223,    -1,   221,    -1,   222,    -1,    74,    -1,   102,
-      -1,    35,    -1,    28,    -1,   104,    -1,   121,    -1,    25,
-      -1,   166,    -1,    98,    -1,   169,    -1,     3,    -1,    29,
-     227,    -1,    99,   230,    -1,   135,   193,   225,    -1,   135,
-     194,    82,   194,   225,    -1,   135,    26,   225,    -1,   135,
-      63,    26,   225,    -1,   135,    65,    26,   225,    -1,   135,
-     140,   225,    -1,    -1,   225,   226,    -1,    44,    -1,    52,
-      -1,    70,    -1,    71,    -1,    73,    -1,    79,    -1,   103,
-      -1,   106,    -1,   107,    -1,   109,    -1,   110,    -1,   111,
-      -1,   113,    -1,   164,    -1,   227,   228,    -1,   228,    -1,
-     229,    58,    -1,    10,    -1,    93,    -1,    97,    -1,   230,
-     231,    -1,   231,    -1,   232,    58,    -1,    53,    -1,    54,
-      -1,    55,    -1,    56,    -1,    83,    -1,    85,    -1,    87,
-      -1,    91,    -1,    47,   193,   234,    -1,   234,   235,    -1,
-     235,    -1,   236,   271,    -1,   237,   270,    -1,   146,    58,
-      -1,   132,   147,    -1,   151,    -1,   152,    -1,    40,    -1,
-      41,    -1,    42,    -1,    43,    -1,    35,   239,    -1,    28,
-     239,    -1,   239,   240,    -1,   240,    -1,   241,    -1,   142,
-      -1,     7,    -1,    11,    -1,    17,    -1,    66,    -1,    97,
-      -1,   112,    -1,   155,   243,    -1,   243,   244,    -1,   244,
-      -1,   245,   271,    -1,     5,    -1,    30,    -1,    46,    -1,
-      49,    -1,   117,    -1,   144,    -1,   145,    -1,   257,    -1,
-     261,    -1,   247,   271,    -1,   248,   147,    -1,   249,   147,
-      -1,    57,   147,   190,    -1,    36,    -1,    32,   250,    -1,
-      76,   255,    -1,   120,   268,    -1,   139,   251,    -1,   157,
-     194,   253,    -1,   160,   264,    -1,    15,    -1,   105,    -1,
-     150,    -1,    51,    -1,    72,    -1,   122,    -1,   129,    -1,
-      77,    -1,   137,    -1,   147,    -1,   147,    31,    -1,    -1,
-     147,   182,   147,   252,    -1,    26,    -1,    -1,    -1,   253,
-     254,    -1,   124,    58,    -1,    59,   194,    -1,   255,   256,
-      -1,   256,    -1,   147,    -1,   258,   260,   259,    -1,   258,
-     260,   147,    -1,    59,    -1,   101,    -1,     4,    -1,    62,
-      -1,    64,    -1,   167,    -1,    75,    -1,    52,    -1,    33,
-      -1,   134,   262,    -1,   262,   263,    -1,   263,    -1,     6,
-      -1,     7,    -1,    24,    -1,    61,    -1,    89,    -1,   148,
-      -1,   153,    -1,   264,    58,    -1,    58,    -1,   265,   266,
-      -1,   266,    -1,    58,    -1,   267,    -1,   183,    58,    34,
-      58,   184,    -1,   268,   147,    -1,   147,    -1,   269,   193,
-      -1,   193,    -1,    58,    -1,   158,    -1,    37,    -1,    58,
-      -1,    31,    -1,   273,   185,   274,   277,   186,    -1,   172,
-      -1,   274,   275,   171,    -1,   275,   171,    -1,   276,   182,
-     271,    -1,   173,    -1,   174,    -1,   277,   278,    -1,   278,
-      -1,   280,   185,   279,   281,   186,    -1,   175,   182,   271,
-     171,    -1,   138,   182,   193,    -1,   281,   282,    -1,   282,
-      -1,   176,   182,   271,   185,   283,   186,    -1,   283,   284,
-     171,    -1,   284,   171,    -1,   285,   182,   271,    -1,   177,
-      -1,   178,    -1,   179,    -1,   180,    -1,   181,    -1
+      -1,   169,    -1,   202,    58,    -1,   202,   162,    -1,    67,
+      -1,    94,    -1,    88,    -1,   160,    -1,    96,    -1,   165,
+      -1,   204,   147,    -1,    51,    -1,   206,   194,    -1,   163,
+      -1,   164,    -1,    14,    -1,    81,   270,    -1,   100,   270,
+      -1,     9,    58,    -1,    21,    58,    -1,    22,   209,    -1,
+      68,   147,    -1,    69,   147,    -1,   133,    58,    -1,   136,
+      58,    -1,   159,   266,    -1,   114,   147,    -1,    -1,   209,
+     210,    -1,   211,   147,    -1,   136,    58,    -1,    48,    -1,
+      51,    -1,   128,    -1,   130,    -1,    27,    -1,   156,   213,
+      -1,   213,   214,    -1,   214,    -1,   215,    58,    -1,   216,
+     272,    -1,    20,   271,    -1,    18,    -1,    45,    -1,   115,
+      -1,   116,    -1,    95,    -1,    12,    -1,    92,    -1,    86,
+      -1,    90,    -1,    84,    -1,   141,   218,    -1,   143,   147,
+      -1,    39,   219,   220,    -1,   218,   219,    -1,   219,    -1,
+      19,    -1,    23,    -1,    78,    -1,   119,    -1,   131,    -1,
+     149,    -1,   154,    -1,   127,    -1,    -1,   220,   221,    -1,
+      38,   147,    -1,   161,   224,    -1,   222,    -1,   223,    -1,
+      74,    -1,   102,    -1,    35,    -1,    28,    -1,   104,    -1,
+     121,    -1,    25,    -1,   167,    -1,    98,    -1,   170,    -1,
+       3,    -1,    29,   228,    -1,    99,   231,    -1,   135,   194,
+     226,    -1,   135,   195,    82,   195,   226,    -1,   135,    26,
+     226,    -1,   135,    63,    26,   226,    -1,   135,    65,    26,
+     226,    -1,   135,   140,   226,    -1,    -1,   226,   227,    -1,
+      44,    -1,    52,    -1,    70,    -1,    71,    -1,    73,    -1,
+      79,    -1,   103,    -1,   106,    -1,   107,    -1,   109,    -1,
+     110,    -1,   111,    -1,   113,    -1,   165,    -1,   228,   229,
+      -1,   229,    -1,   230,    58,    -1,    10,    -1,    93,    -1,
+      97,    -1,   231,   232,    -1,   232,    -1,   233,    58,    -1,
+      53,    -1,    54,    -1,    55,    -1,    56,    -1,    83,    -1,
+      85,    -1,    87,    -1,    91,    -1,    47,   194,   235,    -1,
+     235,   236,    -1,   236,    -1,   237,   272,    -1,   238,   271,
+      -1,   146,    58,    -1,   132,   147,    -1,   151,    -1,   152,
+      -1,    40,    -1,    41,    -1,    42,    -1,    43,    -1,    35,
+     240,    -1,    28,   240,    -1,   240,   241,    -1,   241,    -1,
+     242,    -1,   142,    -1,     7,    -1,    11,    -1,    17,    -1,
+      66,    -1,    97,    -1,   112,    -1,   155,   244,    -1,   244,
+     245,    -1,   245,    -1,   246,   272,    -1,     5,    -1,    30,
+      -1,    46,    -1,    49,    -1,   117,    -1,   144,    -1,   145,
+      -1,   258,    -1,   262,    -1,   248,   272,    -1,   249,   147,
+      -1,   250,   147,    -1,    57,   147,   191,    -1,    36,    -1,
+      32,   251,    -1,    76,   256,    -1,   120,   269,    -1,   139,
+     252,    -1,   157,   195,   254,    -1,   160,   265,    -1,    15,
+      -1,   105,    -1,   150,    -1,    51,    -1,    72,    -1,   122,
+      -1,   129,    -1,    77,    -1,   137,    -1,   147,    -1,   147,
+      31,    -1,    -1,   147,   183,   147,   253,    -1,    26,    -1,
+      -1,    -1,   254,   255,    -1,   124,    58,    -1,    59,   195,
+      -1,   256,   257,    -1,   257,    -1,   147,    -1,   259,   261,
+     260,    -1,   259,   261,   147,    -1,    59,    -1,   101,    -1,
+       4,    -1,    62,    -1,    64,    -1,   168,    -1,    75,    -1,
+      52,    -1,    33,    -1,   134,   263,    -1,   263,   264,    -1,
+     264,    -1,     6,    -1,     7,    -1,    24,    -1,    61,    -1,
+      89,    -1,   148,    -1,   153,    -1,   265,    58,    -1,    58,
+      -1,   266,   267,    -1,   267,    -1,    58,    -1,   268,    -1,
+     184,    58,    34,    58,   185,    -1,   269,   147,    -1,   147,
+      -1,   270,   194,    -1,   194,    -1,    58,    -1,   158,    -1,
+      37,    -1,    58,    -1,    31,    -1,   274,   186,   275,   278,
+     187,    -1,   173,    -1,   275,   276,   172,    -1,   276,   172,
+      -1,   277,   183,   272,    -1,   174,    -1,   175,    -1,   278,
+     279,    -1,   279,    -1,   281,   186,   280,   282,   187,    -1,
+     176,   183,   272,   172,    -1,   138,   183,   194,    -1,   282,
+     283,    -1,   283,    -1,   177,   183,   272,   186,   284,   187,
+      -1,   284,   285,   172,    -1,   285,   172,    -1,   286,   183,
+     272,    -1,   178,    -1,   179,    -1,   180,    -1,   181,    -1,
+     182,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   346,   346,   350,   351,   352,   366,   367,   368,   369,
-     370,   371,   372,   373,   374,   375,   376,   377,   378,   386,
-     396,   397,   398,   399,   400,   404,   405,   410,   415,   417,
-     423,   424,   432,   433,   434,   438,   443,   444,   445,   446,
-     447,   448,   449,   450,   454,   459,   460,   461,   462,   463,
-     464,   468,   473,   482,   492,   493,   503,   505,   507,   518,
-     525,   527,   532,   534,   536,   538,   540,   542,   548,   549,
-     557,   559,   571,   572,   573,   574,   575,   584,   589,   594,
-     602,   604,   606,   611,   612,   613,   614,   615,   616,   620,
-     621,   622,   623,   632,   634,   643,   653,   658,   666,   667,
-     668,   669,   670,   671,   672,   673,   678,   679,   687,   697,
-     706,   721,   726,   727,   731,   732,   736,   737,   738,   739,
-     740,   741,   742,   751,   755,   759,   767,   775,   783,   798,
-     813,   826,   827,   835,   836,   837,   838,   839,   840,   841,
-     842,   843,   844,   845,   846,   847,   848,   852,   857,   865,
-     870,   871,   872,   876,   881,   889,   894,   895,   896,   897,
-     898,   899,   900,   901,   909,   919,   924,   932,   934,   936,
-     938,   943,   944,   948,   949,   950,   951,   959,   961,   966,
-     971,   979,   981,   993,   994,   995,   996,   997,   998,  1006,
-    1011,  1016,  1024,  1029,  1030,  1031,  1032,  1033,  1034,  1035,
-    1044,  1045,  1046,  1053,  1060,  1076,  1095,  1100,  1102,  1104,
-    1106,  1108,  1115,  1120,  1121,  1122,  1126,  1127,  1128,  1129,
-    1133,  1134,  1138,  1145,  1155,  1164,  1169,  1171,  1176,  1177,
-    1185,  1187,  1195,  1200,  1208,  1233,  1240,  1250,  1251,  1255,
-    1256,  1257,  1258,  1262,  1263,  1264,  1268,  1273,  1278,  1286,
-    1287,  1288,  1289,  1290,  1291,  1292,  1302,  1307,  1315,  1320,
-    1328,  1330,  1334,  1339,  1344,  1352,  1357,  1365,  1374,  1375,
-    1379,  1380,  1389,  1407,  1411,  1416,  1424,  1429,  1430,  1434,
-    1439,  1447,  1452,  1457,  1462,  1467,  1475,  1480,  1485,  1493,
-    1498,  1499,  1500,  1501,  1502
+       0,   348,   348,   352,   353,   354,   368,   369,   370,   371,
+     372,   373,   374,   375,   376,   377,   378,   379,   380,   388,
+     398,   399,   400,   401,   402,   406,   407,   412,   417,   419,
+     425,   426,   434,   435,   436,   440,   445,   446,   447,   448,
+     449,   450,   451,   452,   456,   458,   463,   464,   465,   466,
+     467,   468,   472,   477,   486,   496,   497,   507,   509,   511,
+     522,   529,   531,   536,   538,   540,   542,   544,   546,   552,
+     553,   561,   563,   575,   576,   577,   578,   579,   588,   593,
+     598,   606,   608,   610,   615,   616,   617,   618,   619,   620,
+     624,   625,   626,   627,   636,   638,   647,   657,   662,   670,
+     671,   672,   673,   674,   675,   676,   677,   682,   683,   691,
+     701,   710,   725,   730,   731,   735,   736,   740,   741,   742,
+     743,   744,   745,   746,   755,   759,   763,   771,   779,   787,
+     802,   817,   830,   831,   839,   840,   841,   842,   843,   844,
+     845,   846,   847,   848,   849,   850,   851,   852,   856,   861,
+     869,   874,   875,   876,   880,   885,   893,   898,   899,   900,
+     901,   902,   903,   904,   905,   913,   923,   928,   936,   938,
+     940,   942,   947,   948,   952,   953,   954,   955,   963,   965,
+     970,   975,   983,   985,   997,   998,   999,  1000,  1001,  1002,
+    1010,  1015,  1020,  1028,  1033,  1034,  1035,  1036,  1037,  1038,
+    1039,  1048,  1049,  1050,  1057,  1064,  1080,  1099,  1104,  1106,
+    1108,  1110,  1112,  1119,  1124,  1125,  1126,  1130,  1131,  1132,
+    1133,  1137,  1138,  1142,  1149,  1159,  1168,  1173,  1175,  1180,
+    1181,  1189,  1191,  1199,  1204,  1212,  1237,  1244,  1254,  1255,
+    1259,  1260,  1261,  1262,  1266,  1267,  1268,  1272,  1277,  1282,
+    1290,  1291,  1292,  1293,  1294,  1295,  1296,  1306,  1311,  1319,
+    1324,  1332,  1334,  1338,  1343,  1348,  1356,  1361,  1369,  1378,
+    1379,  1383,  1384,  1393,  1411,  1415,  1420,  1428,  1433,  1434,
+    1438,  1443,  1451,  1456,  1461,  1466,  1471,  1479,  1484,  1489,
+    1497,  1502,  1503,  1504,  1505,  1506
 };
 #endif
 
@@ -998,7 +1002,7 @@ static const char *const yytname[] =
   "T_Stats", "T_Statsdir", "T_Step", "T_Stepout", "T_Stratum", "T_String",
   "T_Sys", "T_Sysstats", "T_Tick", "T_Time1", "T_Time2", "T_Timer",
   "T_Timingstats", "T_Tinker", "T_Tos", "T_Trap", "T_True", "T_Trustedkey",
-  "T_Ttl", "T_Type", "T_Unconfig", "T_Unpeer", "T_Version",
+  "T_Ttl", "T_Type", "T_U_int", "T_Unconfig", "T_Unpeer", "T_Version",
   "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave", "T_Year",
   "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay", "T_Sim_Duration",
   "T_Server_Offset", "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter",
@@ -1059,43 +1063,43 @@ static const yytype_uint16 yytoknum[] =
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-     435,   436,    61,    40,    41,   123,   125
+     435,   436,   437,    61,    40,    41,   123,   125
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   187,   188,   189,   189,   189,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   191,
-     192,   192,   192,   192,   192,   193,   193,   194,   195,   195,
-     196,   196,   197,   197,   197,   198,   199,   199,   199,   199,
-     199,   199,   199,   199,   200,   201,   201,   201,   201,   201,
-     201,   202,   203,   204,   205,   205,   206,   206,   206,   207,
-     207,   207,   207,   207,   207,   207,   207,   207,   208,   208,
-     209,   209,   210,   210,   210,   210,   210,   211,   212,   212,
-     213,   213,   213,   214,   214,   214,   214,   214,   214,   215,
-     215,   215,   215,   216,   216,   216,   217,   217,   218,   218,
-     218,   218,   218,   218,   218,   218,   219,   219,   220,   220,
-     220,   220,   221,   221,   222,   222,   223,   223,   223,   223,
-     223,   223,   223,   224,   224,   224,   224,   224,   224,   224,
-     224,   225,   225,   226,   226,   226,   226,   226,   226,   226,
-     226,   226,   226,   226,   226,   226,   226,   227,   227,   228,
-     229,   229,   229,   230,   230,   231,   232,   232,   232,   232,
-     232,   232,   232,   232,   233,   234,   234,   235,   235,   235,
-     235,   236,   236,   237,   237,   237,   237,   238,   238,   239,
-     239,   240,   240,   241,   241,   241,   241,   241,   241,   242,
-     243,   243,   244,   245,   245,   245,   245,   245,   245,   245,
-     246,   246,   246,   246,   246,   246,   246,   246,   246,   246,
-     246,   246,   246,   247,   247,   247,   248,   248,   248,   248,
-     249,   249,   250,   250,   250,   251,   252,   252,   253,   253,
-     254,   254,   255,   255,   256,   257,   257,   258,   258,   259,
-     259,   259,   259,   260,   260,   260,   261,   262,   262,   263,
-     263,   263,   263,   263,   263,   263,   264,   264,   265,   265,
-     266,   266,   267,   268,   268,   269,   269,   270,   270,   270,
-     271,   271,   272,   273,   274,   274,   275,   276,   276,   277,
-     277,   278,   279,   280,   281,   281,   282,   283,   283,   284,
-     285,   285,   285,   285,   285
+       0,   188,   189,   190,   190,   190,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   192,
+     193,   193,   193,   193,   193,   194,   194,   195,   196,   196,
+     197,   197,   198,   198,   198,   199,   200,   200,   200,   200,
+     200,   200,   200,   200,   201,   201,   202,   202,   202,   202,
+     202,   202,   203,   204,   205,   206,   206,   207,   207,   207,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   209,
+     209,   210,   210,   211,   211,   211,   211,   211,   212,   213,
+     213,   214,   214,   214,   215,   215,   215,   215,   215,   215,
+     216,   216,   216,   216,   217,   217,   217,   218,   218,   219,
+     219,   219,   219,   219,   219,   219,   219,   220,   220,   221,
+     221,   221,   221,   222,   222,   223,   223,   224,   224,   224,
+     224,   224,   224,   224,   225,   225,   225,   225,   225,   225,
+     225,   225,   226,   226,   227,   227,   227,   227,   227,   227,
+     227,   227,   227,   227,   227,   227,   227,   227,   228,   228,
+     229,   230,   230,   230,   231,   231,   232,   233,   233,   233,
+     233,   233,   233,   233,   233,   234,   235,   235,   236,   236,
+     236,   236,   237,   237,   238,   238,   238,   238,   239,   239,
+     240,   240,   241,   241,   242,   242,   242,   242,   242,   242,
+     243,   244,   244,   245,   246,   246,   246,   246,   246,   246,
+     246,   247,   247,   247,   247,   247,   247,   247,   247,   247,
+     247,   247,   247,   247,   248,   248,   248,   249,   249,   249,
+     249,   250,   250,   251,   251,   251,   252,   253,   253,   254,
+     254,   255,   255,   256,   256,   257,   258,   258,   259,   259,
+     260,   260,   260,   260,   261,   261,   261,   262,   263,   263,
+     264,   264,   264,   264,   264,   264,   264,   265,   265,   266,
+     266,   267,   267,   268,   269,   269,   270,   270,   271,   271,
+     271,   272,   272,   273,   274,   275,   275,   276,   277,   277,
+     278,   278,   279,   280,   281,   282,   282,   283,   284,   284,
+     285,   286,   286,   286,   286,   286
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1105,32 +1109,32 @@ 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,     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,
-       1,     1,     1,     2,     2,     3,     5,     3,     4,     4,
-       3,     0,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     2,     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,     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,     1,     2,     2,     2,     3,     1,     2,     2,
+       2,     2,     3,     2,     1,     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,     2,     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,     1,     2,     2,     2,     3,     1,     2,     2,     2,
-       2,     3,     2,     1,     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,     2,     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,     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
@@ -1138,46 +1142,46 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     0,     0,    23,    56,   213,     0,    68,     0,     0,
-     224,     0,   206,     0,     0,   216,     0,   237,     0,     0,
-     217,     0,   220,    24,     0,     0,     0,   238,   214,     0,
-      22,     0,   218,    21,   219,     0,     0,     0,     0,   221,
-      20,     0,     0,     0,   215,     0,     0,     0,     0,     0,
-      54,    55,   273,     0,     2,     0,     7,     0,     8,     0,
+       0,     0,     0,    23,    57,   214,     0,    69,     0,     0,
+     225,     0,   207,     0,     0,   217,     0,   238,     0,     0,
+     218,     0,   221,    24,     0,     0,     0,   239,   215,     0,
+      22,     0,   219,    21,   220,     0,     0,     0,     0,   222,
+      20,     0,     0,     0,   216,     0,     0,     0,     0,     0,
+      55,    56,   274,     0,     2,     0,     7,     0,     8,     0,
        9,    10,    13,    11,    12,    14,    15,    16,    17,     0,
-       0,     0,   200,     0,   201,    18,     0,     5,    59,    60,
-      61,   183,   184,   185,   186,   187,   188,   182,   178,   180,
-     181,   150,   151,   152,   123,   148,     0,   222,   207,   177,
-      98,    99,   100,   101,   105,   102,   103,   104,   106,    28,
-      29,    27,     0,    25,     0,     6,    62,    63,   234,   208,
-     233,   266,    57,   156,   157,   158,   159,   160,   161,   162,
-     163,   124,   154,     0,    58,    67,   264,   209,    64,   249,
-     250,   251,   252,   253,   254,   255,   246,   248,   131,    28,
-      29,   131,   131,    25,    65,     0,   210,    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,   228,   260,     0,    66,   259,
-     261,   257,   212,     1,     0,     4,    30,    53,   271,   270,
-     202,   203,   204,   245,   244,   243,     0,     0,    76,    72,
-      73,    74,    75,     0,    69,     0,   179,   147,   149,   223,
-      95,   173,   174,   175,   176,     0,     0,   171,   172,   164,
-     166,     0,     0,    26,   205,   232,   265,   153,   155,   263,
-     247,   127,   131,   131,   130,   125,     0,     0,    96,   190,
-     192,   269,   267,   268,    82,    78,    80,    81,   211,     0,
-     258,   256,     3,    19,   239,   240,   241,   236,   242,   235,
-     277,   278,     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,   227,
-       0,     0,   229,     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,   280,
-       0,   275,     0,   108,   122,   118,   120,   116,   117,   119,
-     121,   109,   126,   226,   225,   231,   230,     0,    44,    51,
-       0,   274,   272,   279,     0,   276,   262,   283,     0,     0,
-       0,     0,     0,   285,     0,     0,   281,   284,   282,     0,
-       0,   290,   291,   292,   293,   294,     0,     0,     0,   286,
-       0,   288,     0,   287,   289
+       0,     0,   201,     0,   202,    18,     0,     5,    60,    61,
+      62,   184,   185,   186,   187,   188,   189,   183,   179,   181,
+     182,   151,   152,   153,   124,   149,     0,   223,   208,   178,
+      99,   100,   101,   102,   106,   103,   104,   105,   107,    28,
+      29,    27,     0,    25,     0,     6,    63,    64,   235,   209,
+     234,   267,    58,   157,   158,   159,   160,   161,   162,   163,
+     164,   125,   155,     0,    59,    68,   265,   210,    65,   250,
+     251,   252,   253,   254,   255,   256,   247,   249,   132,    28,
+      29,   132,   132,    25,    66,     0,   211,    94,    98,    95,
+     194,   195,   196,   197,   198,   199,   200,   190,   192,     0,
+      89,    84,     0,    85,    93,    91,    92,    90,    88,    86,
+      87,    78,    80,     0,     0,   229,   261,     0,    67,   260,
+     262,   258,   213,     1,     0,     4,    30,    54,   272,   271,
+     203,   204,   205,   246,   245,   244,     0,     0,    77,    73,
+      74,    75,    76,     0,    70,     0,   180,   148,   150,   224,
+      96,   174,   175,   176,   177,     0,     0,   172,   173,   165,
+     167,     0,     0,    26,   206,   233,   266,   154,   156,   264,
+     248,   128,   132,   132,   131,   126,     0,     0,    97,   191,
+     193,   270,   268,   269,    83,    79,    81,    82,   212,     0,
+     259,   257,     3,    19,   240,   241,   242,   237,   243,   236,
+     278,   279,     0,     0,     0,    72,    71,   116,   115,     0,
+     113,   114,     0,   108,   111,   112,   171,   170,   166,   168,
+     169,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   133,   129,   130,   132,   228,
+       0,     0,   230,     0,    36,    37,    38,    53,    46,    48,
+      47,    50,    39,    40,    41,    42,    49,    51,    43,    31,
+      32,    35,    33,     0,    34,     0,     0,     0,     0,   281,
+       0,   276,     0,   109,   123,   119,   121,   117,   118,   120,
+     122,   110,   127,   227,   226,   232,   231,     0,    44,    45,
+      52,     0,   275,   273,   280,     0,   277,   263,   284,     0,
+       0,     0,     0,     0,   286,     0,     0,   282,   285,   283,
+       0,     0,   291,   292,   293,   294,   295,     0,     0,     0,
+     287,     0,   289,     0,   288,   290
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -1192,7 +1196,7 @@ static const yytype_int16 yydefgoto[] =
       69,    70,    71,    98,   156,   354,   258,   312,   119,   120,
       72,    73,   269,   206,    74,   146,   147,   192,   188,   189,
      190,   137,   122,   254,   200,    75,    76,   272,   273,   274,
-     338,   339,   369,   340,   372,   373,   386,   387,   388
+     338,   339,   370,   340,   373,   374,   387,   388,   389
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1200,61 +1204,61 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -168
 static const yytype_int16 yypact[] =
 {
-      26,  -151,   -20,  -168,  -168,  -168,   -16,  -168,   136,    -4,
-    -122,   136,  -168,     3,   -35,  -168,  -103,  -168,   -97,   -94,
-    -168,   -90,  -168,  -168,   -35,   332,   -35,  -168,  -168,   -84,
-    -168,   -76,  -168,  -168,  -168,    16,    25,   107,    18,  -168,
-    -168,   -67,     3,   -63,  -168,    67,   490,   -60,   -55,    30,
-    -168,  -168,  -168,    90,   192,   -80,  -168,   -35,  -168,   -35,
-    -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,   -24,
-     -51,   -48,  -168,     0,  -168,  -168,   -93,  -168,  -168,  -168,
-     208,  -168,  -168,  -168,  -168,  -168,  -168,  -168,   136,  -168,
-    -168,  -168,  -168,  -168,    -4,  -168,    46,    74,  -168,   136,
+      26,  -139,    -8,  -168,  -168,  -168,     2,  -168,   128,    18,
+     -88,   128,  -168,    69,   -43,  -168,   -84,  -168,   -80,   -78,
+    -168,   -77,  -168,  -168,   -43,   359,   -43,  -168,  -168,   -76,
+    -168,   -75,  -168,  -168,  -168,    23,    25,   -19,    24,  -168,
+    -168,   -71,    69,   -63,  -168,    88,   447,   -60,   -55,    31,
+    -168,  -168,  -168,    90,   199,   -81,  -168,   -43,  -168,   -43,
+    -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,    -2,
+     -51,   -50,  -168,     5,  -168,  -168,   -74,  -168,  -168,  -168,
+     188,  -168,  -168,  -168,  -168,  -168,  -168,  -168,   128,  -168,
+    -168,  -168,  -168,  -168,    18,  -168,    51,    85,  -168,   128,
     -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,  -168,   150,  -168,   -37,   344,  -168,  -168,  -168,   -90,
-    -168,  -168,   -35,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,   332,  -168,    53,   -35,  -168,  -168,   -30,  -168,  -168,
-    -168,  -168,  -168,  -168,  -168,  -168,    25,  -168,  -168,    92,
-      95,  -168,  -168,    41,  -168,   -58,  -168,     3,  -168,  -168,
-    -168,  -168,  -168,  -168,  -168,  -168,  -168,    67,  -168,   -24,
-    -168,  -168,   -21,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,   490,  -168,    71,   -24,  -168,  -168,    77,   -55,  -168,
-    -168,  -168,    78,  -168,   -32,  -168,  -168,  -168,  -168,  -168,
-    -168,  -168,  -168,  -168,  -168,  -168,     4,  -104,  -168,  -168,
-    -168,  -168,  -168,    83,  -168,    -5,  -168,  -168,  -168,  -168,
-     -23,  -168,  -168,  -168,  -168,    -2,    96,  -168,  -168,   150,
-    -168,   -24,   -21,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,   419,  -168,  -168,   419,   419,   -60,     9,  -168,  -168,
-    -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,   -46,   116,
-    -168,  -168,  -168,   273,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,  -168,  -114,   -13,    -8,  -168,  -168,  -168,  -168,    21,
-    -168,  -168,    11,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+    -168,  -168,   254,  -168,   -34,   352,  -168,  -168,  -168,   -77,
+    -168,  -168,   -43,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+    -168,   359,  -168,    59,   -43,  -168,  -168,   -28,  -168,  -168,
+    -168,  -168,  -168,  -168,  -168,  -168,    25,  -168,  -168,    97,
+      98,  -168,  -168,    48,  -168,   -47,  -168,    69,  -168,  -168,
+    -168,  -168,  -168,  -168,  -168,  -168,  -168,    88,  -168,    -2,
+    -168,  -168,   -16,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+    -168,   447,  -168,    74,    -2,  -168,  -168,    83,   -55,  -168,
+    -168,  -168,    92,  -168,   -29,  -168,  -168,  -168,  -168,  -168,
+    -168,  -168,  -168,  -168,  -168,  -168,     4,  -138,  -168,  -168,
+    -168,  -168,  -168,    94,  -168,     6,  -168,  -168,  -168,  -168,
+     -23,  -168,  -168,  -168,  -168,     7,    99,  -168,  -168,   254,
+    -168,    -2,   -16,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+    -168,   178,  -168,  -168,   178,   178,   -60,     9,  -168,  -168,
+    -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,   -46,   124,
+    -168,  -168,  -168,   388,  -168,  -168,  -168,  -168,  -168,  -168,
+    -168,  -168,  -122,     8,   -13,  -168,  -168,  -168,  -168,    27,
+    -168,  -168,     1,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
     -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,  -168,  -168,  -168,  -168,  -168,   419,   419,  -168,   153,
-     -60,   129,  -168,   137,  -168,  -168,  -168,  -168,  -168,  -168,
+    -168,  -168,  -168,  -168,  -168,  -168,   178,   178,  -168,   151,
+     -60,   121,  -168,   126,  -168,  -168,  -168,  -168,  -168,  -168,
     -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,  -168,  -168,   138,  -168,    47,    17,    29,  -119,  -168,
-      19,  -168,   -24,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,  -168,   419,  -168,  -168,  -168,  -168,    39,  -168,  -168,
-     -35,  -168,  -168,  -168,    34,  -168,  -168,  -168,    40,    50,
-     -24,    48,  -130,  -168,    58,   -24,  -168,  -168,  -168,    49,
-      38,  -168,  -168,  -168,  -168,  -168,   228,    61,    54,  -168,
-      66,  -168,   -24,  -168,  -168
+    -168,  -168,  -168,   -52,  -168,    40,    10,    19,  -113,  -168,
+      11,  -168,    -2,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+    -168,  -168,   178,  -168,  -168,  -168,  -168,    16,  -168,  -168,
+    -168,   -43,  -168,  -168,  -168,    30,  -168,  -168,  -168,    12,
+      15,    -2,    20,  -153,  -168,    35,    -2,  -168,  -168,  -168,
+      33,    63,  -168,  -168,  -168,  -168,  -168,    82,    39,    34,
+    -168,    44,  -168,    -2,  -168,  -168
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -168,  -168,  -168,   -33,  -168,  -168,   -14,   -36,  -168,  -168,
+    -168,  -168,  -168,   -40,  -168,  -168,   -14,   -36,  -168,  -168,
     -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-    -168,  -168,  -168,  -168,  -168,  -168,    57,  -168,  -168,  -168,
-    -168,   -38,  -168,  -168,  -168,  -168,  -168,  -168,  -142,  -168,
-    -168,   146,  -168,  -168,   110,  -168,  -168,  -168,    13,  -168,
-    -168,  -168,   233,   -70,  -168,  -168,  -168,    79,  -168,  -168,
-    -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,   126,
-    -168,  -168,  -168,  -168,  -168,  -168,   104,  -168,  -168,    64,
-    -168,  -168,   227,    23,  -167,  -168,  -168,  -168,   -15,  -168,
-    -168,   -75,  -168,  -168,  -168,  -110,  -168,  -128,  -168
+    -168,  -168,  -168,  -168,  -168,  -168,    21,  -168,  -168,  -168,
+    -168,   -24,  -168,  -168,  -168,  -168,  -168,  -168,  -142,  -168,
+    -168,   130,  -168,  -168,   106,  -168,  -168,  -168,     0,  -168,
+    -168,  -168,   236,   -69,  -168,  -168,  -168,    86,  -168,  -168,
+    -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,   133,
+    -168,  -168,  -168,  -168,  -168,  -168,   108,  -168,  -168,    67,
+    -168,  -168,   233,    41,  -167,  -168,  -168,  -168,    -7,  -168,
+    -168,   -72,  -168,  -168,  -168,  -101,  -168,  -110,  -168
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1264,132 +1268,124 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-     112,   153,   250,   186,   158,   277,    91,   198,   264,   244,
-     245,   185,   278,   310,   344,   279,   251,   257,   216,   336,
-      77,   194,   100,   152,   336,    97,   101,     1,   109,   216,
-     110,   139,   140,   203,   199,     2,   345,   252,    78,     3,
-       4,     5,    79,   196,   115,   197,   371,     6,     7,   141,
-     116,   280,   204,   117,     8,     9,   376,   118,    10,   270,
-     271,    11,    12,   135,   289,    13,   265,   362,   266,   270,
-     271,   136,   160,    14,   138,   205,   154,    15,   311,   281,
-     155,   102,   234,    16,   159,    17,   142,   111,   191,    92,
-     193,   195,   207,    93,    18,    19,   201,   161,    20,   202,
-     306,   307,    21,    22,   218,   219,    23,    24,   236,   346,
-     233,   238,   111,   162,   143,   347,   163,   239,   242,   248,
-     236,   243,   103,   246,   247,    25,    26,    27,   187,   256,
-     104,    28,   348,   148,   105,   259,   261,   253,   282,   262,
-      29,   275,   276,    81,    30,   286,    31,    82,    32,    33,
-     313,   267,   106,    83,   287,    34,   309,   107,   341,    35,
-      36,    37,    38,    39,    40,    41,   352,    42,   343,    43,
-     149,   268,   150,   144,   342,   365,    44,   349,   145,   353,
-     350,    45,    46,    47,   164,    48,    49,   356,    50,    51,
-     221,   222,   223,   224,   359,   357,   358,    -6,    52,   360,
-     361,     2,    84,   374,   364,     3,     4,     5,   379,   368,
-     308,   165,   166,     6,     7,   381,   382,   383,   384,   385,
-       8,     9,   370,   366,    10,   394,   371,    11,    12,   378,
-     375,    13,   391,    85,   380,   208,   392,   393,   255,    14,
-     217,   237,   288,    15,    99,   235,   249,   151,    86,    16,
-     240,    17,   260,   134,   111,   290,   209,   337,   390,   210,
-      18,    19,   377,   363,    20,     0,     0,     0,    21,    22,
-       0,     0,    23,    24,   355,     0,     0,     0,    87,     0,
-       0,   314,   225,     0,     0,     0,     0,     0,     0,   315,
-       0,    25,    26,    27,     0,     0,   226,    28,     0,     0,
-       0,   227,   228,     0,     0,     0,    29,     0,     0,     0,
-      30,     0,    31,     0,    32,    33,     0,     0,     0,     0,
-       0,    34,     0,   316,   317,    35,    36,    37,    38,    39,
-      40,    41,     0,    42,     0,    43,   211,     0,   212,     0,
-     318,     0,    44,     0,   213,     0,   367,    45,    46,    47,
-       0,    48,    49,     2,    50,    51,     0,     3,     4,     5,
-       0,   319,     0,    -6,    52,     6,     7,   320,     0,   321,
-       0,     0,     8,     9,     0,     0,    10,     0,     0,    11,
-      12,   322,     0,    13,     0,   123,   124,   125,   126,     0,
-       0,    14,     0,     0,     0,    15,     0,     0,   323,   324,
-       0,    16,     0,    17,     0,   381,   382,   383,   384,   385,
-       0,     0,    18,    19,   389,   127,    20,   128,     0,   129,
-      21,    22,     0,   130,    23,    24,     0,     0,     0,     0,
-       0,   325,     0,   326,     0,     0,     0,   327,     0,     0,
-       0,   328,     0,    25,    26,    27,     0,     0,     0,    28,
-       0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
-       0,     0,    30,   291,    31,     0,    32,    33,     0,     0,
-       0,   292,     0,    34,     0,     0,     0,    35,    36,    37,
-      38,    39,    40,    41,     0,    42,     0,    43,     0,   293,
-     294,     0,   295,     0,    44,     0,     0,     0,   296,    45,
-      46,    47,   170,    48,    49,     0,    50,    51,   171,     0,
-     172,     0,     0,     0,     0,     0,    52,     0,     0,     0,
-       0,     0,   297,     0,     0,   298,   299,     0,   300,   301,
-     302,     0,   303,     0,     0,   173,     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,
-       0,     0,     0,     0,   174,     0,   175,     0,     0,     0,
-     176,     0,   177,   304,     0,   178,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   179,   180
+     112,   153,   250,   186,   344,   277,   358,   148,   264,   244,
+     245,   185,   278,   310,   194,   279,   336,   257,   158,   216,
+     109,   251,   110,   152,   372,   336,   345,     1,    91,   198,
+     216,   139,   140,    77,   377,     2,   270,   271,   203,     3,
+       4,     5,   252,   196,   149,   197,   150,     6,     7,   141,
+      78,   280,   270,   271,     8,     9,   199,   204,    10,    97,
+      79,    11,    12,   115,   289,    13,   265,   116,   266,   117,
+     118,   135,   136,    14,   363,   234,   155,    15,   311,   281,
+     205,   138,   154,    16,   159,    17,   142,   111,   100,   191,
+     193,   195,   101,   160,    18,    19,   201,   202,    20,   346,
+     306,   307,    21,    22,   111,   347,    23,    24,   236,   218,
+     359,    92,   207,   233,   143,    93,   219,   238,   161,   239,
+     236,   151,   348,   242,   243,    25,    26,    27,   111,   187,
+     246,    28,   256,   248,   162,    81,   247,   163,   282,    82,
+      29,   259,   253,   262,    30,    83,    31,   102,    32,    33,
+     261,   267,   275,   276,   286,    34,   309,   287,   313,    35,
+      36,    37,    38,    39,    40,    41,   352,    42,   349,    43,
+     342,   350,   268,   144,   343,   366,    44,   353,   145,   356,
+     341,    45,    46,    47,   357,    48,    49,   360,   103,    50,
+      51,   362,   372,   361,    84,   371,   104,   365,    -6,    52,
+     105,   367,   255,   376,   375,   164,   369,   379,     2,   380,
+     308,   392,     3,     4,     5,   208,   394,   393,   106,   381,
+       6,     7,   291,   107,   217,    85,   395,     8,     9,   288,
+     292,    10,   165,   166,    11,    12,   209,   237,    13,   210,
+      86,   382,   383,   384,   385,   386,    14,    99,   293,   294,
+      15,   295,   235,   249,   240,   260,    16,   296,    17,   134,
+     382,   383,   384,   385,   386,   337,   364,    18,    19,   390,
+      87,    20,   378,   290,   355,    21,    22,   391,     0,    23,
+      24,   297,     0,     0,   298,   299,     0,   300,   301,   302,
+       0,   303,     0,     0,   221,   222,   223,   224,    25,    26,
+      27,     0,     0,     0,    28,     0,     0,     0,     0,     0,
+       0,     0,     0,    29,     0,     0,   211,    30,   212,    31,
+       0,    32,    33,     0,   213,     0,     0,     0,    34,     0,
+       0,     0,    35,    36,    37,    38,    39,    40,    41,     0,
+      42,     0,    43,   304,     0,     0,     0,   368,     0,    44,
+       0,     0,     0,     0,    45,    46,    47,     0,    48,    49,
+       0,     2,    50,    51,     0,     3,     4,     5,     0,     0,
+       0,    -6,    52,     6,     7,     0,     0,     0,     0,     0,
+       8,     9,     0,     0,    10,     0,   225,    11,    12,     0,
+       0,    13,     0,     0,     0,     0,   314,     0,     0,    14,
+     226,     0,     0,    15,   315,   227,   228,     0,     0,    16,
+       0,    17,   123,   124,   125,   126,     0,     0,     0,     0,
+      18,    19,     0,     0,    20,     0,     0,     0,    21,    22,
+       0,     0,    23,    24,     0,     0,     0,     0,   316,   317,
+       0,     0,   127,     0,   128,     0,   129,     0,     0,     0,
+     130,    25,    26,    27,     0,   318,     0,    28,     0,   170,
+       0,     0,     0,     0,     0,   171,    29,   172,     0,     0,
+      30,     0,    31,     0,    32,    33,   319,     0,     0,     0,
+       0,    34,   320,     0,   321,    35,    36,    37,    38,    39,
+      40,    41,   173,    42,     0,    43,   322,     0,     0,     0,
+       0,     0,    44,     0,     0,     0,     0,    45,    46,    47,
+       0,    48,    49,   323,   324,    50,    51,     0,     0,     0,
+       0,     0,     0,     0,     0,    52,     0,     0,     0,     0,
+       0,   174,     0,   175,     0,     0,     0,   176,     0,   177,
+       0,     0,   178,     0,     0,     0,   325,     0,   326,     0,
+       0,     0,     0,   327,     0,     0,     0,   328,     0,     0,
+       0,     0,   179,   180
 };
 
 static const yytype_int16 yycheck[] =
 {
-      14,    37,   169,    58,    42,    28,    10,    31,     4,   151,
-     152,    47,    35,    59,     3,    38,    37,   184,    88,   138,
-     171,    54,    19,    37,   138,   147,    23,     1,    63,    99,
-      65,     6,     7,    33,    58,     9,    25,    58,    58,    13,
-      14,    15,    58,    57,   147,    59,   176,    21,    22,    24,
-     147,    74,    52,   147,    28,    29,   186,   147,    32,   173,
-     174,    35,    36,   147,   231,    39,    62,   186,    64,   173,
-     174,   147,     5,    47,    58,    75,    58,    51,   124,   102,
-     147,    78,   115,    57,   147,    59,    61,   147,    58,    93,
-       0,   171,   185,    97,    68,    69,   147,    30,    72,   147,
-     242,   243,    76,    77,    58,    31,    80,    81,   122,    98,
-     147,    58,   147,    46,    89,   104,    49,   147,    26,   157,
-     134,    26,   119,    82,   182,    99,   100,   101,   183,    58,
-     127,   105,   121,    26,   131,    58,    58,   158,   161,   171,
-     114,    58,   147,     7,   118,   147,   120,    11,   122,   123,
-      34,   147,   149,    17,    58,   129,   147,   154,   171,   133,
-     134,   135,   136,   137,   138,   139,   308,   141,   147,   143,
-      63,   167,    65,   148,   182,   342,   150,   166,   153,    26,
-     169,   155,   156,   157,   117,   159,   160,    58,   162,   163,
-      40,    41,    42,    43,   147,    58,    58,   171,   172,   182,
-     171,     9,    66,   370,   185,    13,    14,    15,   375,   175,
-     246,   144,   145,    21,    22,   177,   178,   179,   180,   181,
-      28,    29,   182,   184,    32,   392,   176,    35,    36,   171,
-     182,    39,   171,    97,   185,    27,   182,   171,   181,    47,
-      94,   131,   229,    51,    11,   119,   167,   140,   112,    57,
-     146,    59,   188,    26,   147,   232,    48,   272,   386,    51,
-      68,    69,   372,   338,    72,    -1,    -1,    -1,    76,    77,
-      -1,    -1,    80,    81,   310,    -1,    -1,    -1,   142,    -1,
-      -1,     8,   132,    -1,    -1,    -1,    -1,    -1,    -1,    16,
-      -1,    99,   100,   101,    -1,    -1,   146,   105,    -1,    -1,
-      -1,   151,   152,    -1,    -1,    -1,   114,    -1,    -1,    -1,
-     118,    -1,   120,    -1,   122,   123,    -1,    -1,    -1,    -1,
-      -1,   129,    -1,    50,    51,   133,   134,   135,   136,   137,
-     138,   139,    -1,   141,    -1,   143,   128,    -1,   130,    -1,
-      67,    -1,   150,    -1,   136,    -1,   360,   155,   156,   157,
-      -1,   159,   160,     9,   162,   163,    -1,    13,    14,    15,
-      -1,    88,    -1,   171,   172,    21,    22,    94,    -1,    96,
-      -1,    -1,    28,    29,    -1,    -1,    32,    -1,    -1,    35,
-      36,   108,    -1,    39,    -1,    53,    54,    55,    56,    -1,
-      -1,    47,    -1,    -1,    -1,    51,    -1,    -1,   125,   126,
-      -1,    57,    -1,    59,    -1,   177,   178,   179,   180,   181,
-      -1,    -1,    68,    69,   186,    83,    72,    85,    -1,    87,
-      76,    77,    -1,    91,    80,    81,    -1,    -1,    -1,    -1,
-      -1,   158,    -1,   160,    -1,    -1,    -1,   164,    -1,    -1,
-      -1,   168,    -1,    99,   100,   101,    -1,    -1,    -1,   105,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
-      -1,    -1,   118,    44,   120,    -1,   122,   123,    -1,    -1,
-      -1,    52,    -1,   129,    -1,    -1,    -1,   133,   134,   135,
-     136,   137,   138,   139,    -1,   141,    -1,   143,    -1,    70,
-      71,    -1,    73,    -1,   150,    -1,    -1,    -1,    79,   155,
-     156,   157,    12,   159,   160,    -1,   162,   163,    18,    -1,
-      20,    -1,    -1,    -1,    -1,    -1,   172,    -1,    -1,    -1,
-      -1,    -1,   103,    -1,    -1,   106,   107,    -1,   109,   110,
-     111,    -1,   113,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    84,    -1,    86,    -1,    -1,    -1,
-      90,    -1,    92,   164,    -1,    95,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   115,   116
+      14,    37,   169,    58,     3,    28,    58,    26,     4,   151,
+     152,    47,    35,    59,    54,    38,   138,   184,    42,    88,
+      63,    37,    65,    37,   177,   138,    25,     1,    10,    31,
+      99,     6,     7,   172,   187,     9,   174,   175,    33,    13,
+      14,    15,    58,    57,    63,    59,    65,    21,    22,    24,
+      58,    74,   174,   175,    28,    29,    58,    52,    32,   147,
+      58,    35,    36,   147,   231,    39,    62,   147,    64,   147,
+     147,   147,   147,    47,   187,   115,   147,    51,   124,   102,
+      75,    58,    58,    57,   147,    59,    61,   147,    19,    58,
+       0,   172,    23,     5,    68,    69,   147,   147,    72,    98,
+     242,   243,    76,    77,   147,   104,    80,    81,   122,    58,
+     162,    93,   186,   147,    89,    97,    31,    58,    30,   147,
+     134,   140,   121,    26,    26,    99,   100,   101,   147,   184,
+      82,   105,    58,   157,    46,     7,   183,    49,   161,    11,
+     114,    58,   158,   172,   118,    17,   120,    78,   122,   123,
+      58,   147,    58,   147,   147,   129,   147,    58,    34,   133,
+     134,   135,   136,   137,   138,   139,   308,   141,   167,   143,
+     183,   170,   168,   148,   147,   342,   150,    26,   153,    58,
+     172,   155,   156,   157,    58,   159,   160,   147,   119,   163,
+     164,   172,   177,   183,    66,   183,   127,   186,   172,   173,
+     131,   185,   181,   183,   371,   117,   176,   172,     9,   376,
+     246,   172,    13,    14,    15,    27,   172,   183,   149,   186,
+      21,    22,    44,   154,    94,    97,   393,    28,    29,   229,
+      52,    32,   144,   145,    35,    36,    48,   131,    39,    51,
+     112,   178,   179,   180,   181,   182,    47,    11,    70,    71,
+      51,    73,   119,   167,   146,   188,    57,    79,    59,    26,
+     178,   179,   180,   181,   182,   272,   338,    68,    69,   187,
+     142,    72,   373,   232,   310,    76,    77,   387,    -1,    80,
+      81,   103,    -1,    -1,   106,   107,    -1,   109,   110,   111,
+      -1,   113,    -1,    -1,    40,    41,    42,    43,    99,   100,
+     101,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   114,    -1,    -1,   128,   118,   130,   120,
+      -1,   122,   123,    -1,   136,    -1,    -1,    -1,   129,    -1,
+      -1,    -1,   133,   134,   135,   136,   137,   138,   139,    -1,
+     141,    -1,   143,   165,    -1,    -1,    -1,   361,    -1,   150,
+      -1,    -1,    -1,    -1,   155,   156,   157,    -1,   159,   160,
+      -1,     9,   163,   164,    -1,    13,    14,    15,    -1,    -1,
+      -1,   172,   173,    21,    22,    -1,    -1,    -1,    -1,    -1,
+      28,    29,    -1,    -1,    32,    -1,   132,    35,    36,    -1,
+      -1,    39,    -1,    -1,    -1,    -1,     8,    -1,    -1,    47,
+     146,    -1,    -1,    51,    16,   151,   152,    -1,    -1,    57,
+      -1,    59,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
+      68,    69,    -1,    -1,    72,    -1,    -1,    -1,    76,    77,
+      -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    50,    51,
+      -1,    -1,    83,    -1,    85,    -1,    87,    -1,    -1,    -1,
+      91,    99,   100,   101,    -1,    67,    -1,   105,    -1,    12,
+      -1,    -1,    -1,    -1,    -1,    18,   114,    20,    -1,    -1,
+     118,    -1,   120,    -1,   122,   123,    88,    -1,    -1,    -1,
+      -1,   129,    94,    -1,    96,   133,   134,   135,   136,   137,
+     138,   139,    45,   141,    -1,   143,   108,    -1,    -1,    -1,
+      -1,    -1,   150,    -1,    -1,    -1,    -1,   155,   156,   157,
+      -1,   159,   160,   125,   126,   163,   164,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,
+      -1,    84,    -1,    86,    -1,    -1,    -1,    90,    -1,    92,
+      -1,    -1,    95,    -1,    -1,    -1,   158,    -1,   160,    -1,
+      -1,    -1,    -1,   165,    -1,    -1,    -1,   169,    -1,    -1,
+      -1,    -1,   115,   116
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1401,41 +1397,41 @@ static const yytype_uint16 yystos[] =
       72,    76,    77,    80,    81,    99,   100,   101,   105,   114,
      118,   120,   122,   123,   129,   133,   134,   135,   136,   137,
      138,   139,   141,   143,   150,   155,   156,   157,   159,   160,
-     162,   163,   172,   188,   189,   190,   191,   192,   204,   205,
-     206,   207,   211,   216,   224,   233,   238,   242,   246,   247,
-     248,   249,   257,   258,   261,   272,   273,   171,    58,    58,
-     208,     7,    11,    17,    66,    97,   112,   142,   239,   240,
-     241,    10,    93,    97,   227,   228,   229,   147,   250,   239,
-      19,    23,    78,   119,   127,   131,   149,   154,   218,    63,
-      65,   147,   193,   194,   195,   147,   147,   147,   147,   255,
-     256,   193,   269,    53,    54,    55,    56,    83,    85,    87,
-      91,   230,   231,   232,   269,   147,   147,   268,    58,     6,
-       7,    24,    61,    89,   148,   153,   262,   263,    26,    63,
-      65,   140,   193,   194,    58,   147,   251,   217,   218,   147,
-       5,    30,    46,    49,   117,   144,   145,   243,   244,   245,
+     163,   164,   173,   189,   190,   191,   192,   193,   205,   206,
+     207,   208,   212,   217,   225,   234,   239,   243,   247,   248,
+     249,   250,   258,   259,   262,   273,   274,   172,    58,    58,
+     209,     7,    11,    17,    66,    97,   112,   142,   240,   241,
+     242,    10,    93,    97,   228,   229,   230,   147,   251,   240,
+      19,    23,    78,   119,   127,   131,   149,   154,   219,    63,
+      65,   147,   194,   195,   196,   147,   147,   147,   147,   256,
+     257,   194,   270,    53,    54,    55,    56,    83,    85,    87,
+      91,   231,   232,   233,   270,   147,   147,   269,    58,     6,
+       7,    24,    61,    89,   148,   153,   263,   264,    26,    63,
+      65,   140,   194,   195,    58,   147,   252,   218,   219,   147,
+       5,    30,    46,    49,   117,   144,   145,   244,   245,   246,
       12,    18,    20,    45,    84,    86,    90,    92,    95,   115,
-     116,   212,   213,   214,   215,   194,    58,   183,   265,   266,
-     267,    58,   264,     0,   190,   171,   193,   193,    31,    58,
-     271,   147,   147,    33,    52,    75,   260,   185,    27,    48,
-      51,   128,   130,   136,   209,   210,   240,   228,    58,    31,
-     219,    40,    41,    42,    43,   132,   146,   151,   152,   234,
-     235,   236,   237,   147,   190,   256,   193,   231,    58,   147,
-     263,   225,    26,    26,   225,   225,    82,   182,   218,   244,
-     271,    37,    58,   158,   270,   213,    58,   271,   253,    58,
-     266,    58,   171,   196,     4,    62,    64,   147,   167,   259,
-     173,   174,   274,   275,   276,    58,   147,    28,    35,    38,
-      74,   102,   161,   220,   221,   222,   147,    58,   235,   271,
-     270,    44,    52,    70,    71,    73,    79,   103,   106,   107,
-     109,   110,   111,   113,   164,   226,   225,   225,   194,   147,
-      59,   124,   254,    34,     8,    16,    50,    51,    67,    88,
-      94,    96,   108,   125,   126,   158,   160,   164,   168,   197,
-     198,   199,   200,   201,   202,   203,   138,   275,   277,   278,
-     280,   171,   182,   147,     3,    25,    98,   104,   121,   166,
-     169,   223,   225,    26,   252,   194,    58,    58,    58,   147,
-     182,   171,   186,   278,   185,   271,   184,   193,   175,   279,
-     182,   176,   281,   282,   271,   182,   186,   282,   171,   271,
-     185,   177,   178,   179,   180,   181,   283,   284,   285,   186,
-     284,   171,   182,   171,   271
+     116,   213,   214,   215,   216,   195,    58,   184,   266,   267,
+     268,    58,   265,     0,   191,   172,   194,   194,    31,    58,
+     272,   147,   147,    33,    52,    75,   261,   186,    27,    48,
+      51,   128,   130,   136,   210,   211,   241,   229,    58,    31,
+     220,    40,    41,    42,    43,   132,   146,   151,   152,   235,
+     236,   237,   238,   147,   191,   257,   194,   232,    58,   147,
+     264,   226,    26,    26,   226,   226,    82,   183,   219,   245,
+     272,    37,    58,   158,   271,   214,    58,   272,   254,    58,
+     267,    58,   172,   197,     4,    62,    64,   147,   168,   260,
+     174,   175,   275,   276,   277,    58,   147,    28,    35,    38,
+      74,   102,   161,   221,   222,   223,   147,    58,   236,   272,
+     271,    44,    52,    70,    71,    73,    79,   103,   106,   107,
+     109,   110,   111,   113,   165,   227,   226,   226,   195,   147,
+      59,   124,   255,    34,     8,    16,    50,    51,    67,    88,
+      94,    96,   108,   125,   126,   158,   160,   165,   169,   198,
+     199,   200,   201,   202,   203,   204,   138,   276,   278,   279,
+     281,   172,   183,   147,     3,    25,    98,   104,   121,   167,
+     170,   224,   226,    26,   253,   195,    58,    58,    58,   162,
+     147,   183,   172,   187,   279,   186,   272,   185,   194,   176,
+     280,   183,   177,   282,   283,   272,   183,   187,   283,   172,
+     272,   186,   178,   179,   180,   181,   182,   284,   285,   286,
+     187,   285,   172,   183,   172,   272
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2258,7 +2254,7 @@ yyreduce:
         case 5:
 
 /* Line 1464 of yacc.c  */
-#line 353 "ntp_parser.y"
+#line 355 "ntp_parser.y"
     {
                        /* I will need to incorporate much more fine grained
                         * error messages. The following should suffice for
@@ -2275,7 +2271,7 @@ yyreduce:
   case 19:
 
 /* Line 1464 of yacc.c  */
-#line 387 "ntp_parser.y"
+#line 389 "ntp_parser.y"
     {
                        peer_node *my_node;
 
@@ -2287,42 +2283,42 @@ yyreduce:
   case 26:
 
 /* Line 1464 of yacc.c  */
-#line 406 "ntp_parser.y"
+#line 408 "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 411 "ntp_parser.y"
+#line 413 "ntp_parser.y"
     { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), AF_UNSPEC); }
     break;
 
   case 28:
 
 /* Line 1464 of yacc.c  */
-#line 416 "ntp_parser.y"
+#line 418 "ntp_parser.y"
     { (yyval.Integer) = AF_INET; }
     break;
 
   case 29:
 
 /* Line 1464 of yacc.c  */
-#line 418 "ntp_parser.y"
+#line 420 "ntp_parser.y"
     { (yyval.Integer) = AF_INET6; }
     break;
 
   case 30:
 
 /* Line 1464 of yacc.c  */
-#line 423 "ntp_parser.y"
+#line 425 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
   case 31:
 
 /* Line 1464 of yacc.c  */
-#line 425 "ntp_parser.y"
+#line 427 "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));
@@ -2332,28 +2328,35 @@ yyreduce:
   case 35:
 
 /* Line 1464 of yacc.c  */
-#line 439 "ntp_parser.y"
+#line 441 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
   case 44:
 
 /* Line 1464 of yacc.c  */
-#line 455 "ntp_parser.y"
+#line 457 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 51:
+  case 45:
+
+/* Line 1464 of yacc.c  */
+#line 459 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_uval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+    break;
+
+  case 52:
 
 /* Line 1464 of yacc.c  */
-#line 469 "ntp_parser.y"
+#line 473 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
-  case 53:
+  case 54:
 
 /* Line 1464 of yacc.c  */
-#line 483 "ntp_parser.y"
+#line 487 "ntp_parser.y"
     {
                        unpeer_node *my_node;
                        
@@ -2363,31 +2366,31 @@ yyreduce:
                }
     break;
 
-  case 56:
+  case 57:
 
 /* Line 1464 of yacc.c  */
-#line 504 "ntp_parser.y"
+#line 508 "ntp_parser.y"
     { cfgt.broadcastclient = 1; }
     break;
 
-  case 57:
+  case 58:
 
 /* Line 1464 of yacc.c  */
-#line 506 "ntp_parser.y"
+#line 510 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[(2) - (2)].Address_fifo)); }
     break;
 
-  case 58:
+  case 59:
 
 /* Line 1464 of yacc.c  */
-#line 508 "ntp_parser.y"
+#line 512 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[(2) - (2)].Address_fifo)); }
     break;
 
-  case 59:
+  case 60:
 
 /* Line 1464 of yacc.c  */
-#line 519 "ntp_parser.y"
+#line 523 "ntp_parser.y"
     {
                        attr_val *atrv;
                        
@@ -2396,93 +2399,93 @@ yyreduce:
                }
     break;
 
-  case 60:
+  case 61:
 
 /* Line 1464 of yacc.c  */
-#line 526 "ntp_parser.y"
+#line 530 "ntp_parser.y"
     { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 61:
+  case 62:
 
 /* Line 1464 of yacc.c  */
-#line 528 "ntp_parser.y"
+#line 532 "ntp_parser.y"
     { 
                        cfgt.auth.cryptosw++;
                        CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
     break;
 
-  case 62:
+  case 63:
 
 /* Line 1464 of yacc.c  */
-#line 533 "ntp_parser.y"
+#line 537 "ntp_parser.y"
     { cfgt.auth.keys = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 63:
+  case 64:
 
 /* Line 1464 of yacc.c  */
-#line 535 "ntp_parser.y"
+#line 539 "ntp_parser.y"
     { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 64:
+  case 65:
 
 /* Line 1464 of yacc.c  */
-#line 537 "ntp_parser.y"
+#line 541 "ntp_parser.y"
     { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 65:
+  case 66:
 
 /* Line 1464 of yacc.c  */
-#line 539 "ntp_parser.y"
+#line 543 "ntp_parser.y"
     { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); }
     break;
 
-  case 66:
+  case 67:
 
 /* Line 1464 of yacc.c  */
-#line 541 "ntp_parser.y"
+#line 545 "ntp_parser.y"
     { cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Attr_val_fifo); }
     break;
 
-  case 67:
+  case 68:
 
 /* Line 1464 of yacc.c  */
-#line 543 "ntp_parser.y"
+#line 547 "ntp_parser.y"
     { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
     break;
 
-  case 68:
+  case 69:
 
 /* Line 1464 of yacc.c  */
-#line 548 "ntp_parser.y"
+#line 552 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
-  case 69:
+  case 70:
 
 /* Line 1464 of yacc.c  */
-#line 550 "ntp_parser.y"
+#line 554 "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 70:
+  case 71:
 
 /* Line 1464 of yacc.c  */
-#line 558 "ntp_parser.y"
+#line 562 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
-  case 71:
+  case 72:
 
 /* Line 1464 of yacc.c  */
-#line 560 "ntp_parser.y"
+#line 564 "ntp_parser.y"
     {
                        (yyval.Attr_val) = NULL;
                        cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer);
@@ -2493,65 +2496,65 @@ yyreduce:
                }
     break;
 
-  case 77:
+  case 78:
 
 /* Line 1464 of yacc.c  */
-#line 585 "ntp_parser.y"
+#line 589 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 78:
+  case 79:
 
 /* Line 1464 of yacc.c  */
-#line 590 "ntp_parser.y"
+#line 594 "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 79:
+  case 80:
 
 /* Line 1464 of yacc.c  */
-#line 595 "ntp_parser.y"
+#line 599 "ntp_parser.y"
     {  
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 80:
+  case 81:
 
 /* Line 1464 of yacc.c  */
-#line 603 "ntp_parser.y"
+#line 607 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 81:
+  case 82:
 
 /* Line 1464 of yacc.c  */
-#line 605 "ntp_parser.y"
+#line 609 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 82:
+  case 83:
 
 /* Line 1464 of yacc.c  */
-#line 607 "ntp_parser.y"
+#line 611 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 93:
+  case 94:
 
 /* Line 1464 of yacc.c  */
-#line 633 "ntp_parser.y"
+#line 637 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[(2) - (2)].Int_fifo)); }
     break;
 
-  case 94:
+  case 95:
 
 /* Line 1464 of yacc.c  */
-#line 635 "ntp_parser.y"
+#line 639 "ntp_parser.y"
     {
                        if (input_from_file) {
                                cfgt.stats_dir = (yyvsp[(2) - (2)].String);
@@ -2562,10 +2565,10 @@ yyreduce:
                }
     break;
 
-  case 95:
+  case 96:
 
 /* Line 1464 of yacc.c  */
-#line 644 "ntp_parser.y"
+#line 648 "ntp_parser.y"
     {
                        filegen_node *fgn;
                        
@@ -2574,47 +2577,47 @@ yyreduce:
                }
     break;
 
-  case 96:
+  case 97:
 
 /* Line 1464 of yacc.c  */
-#line 654 "ntp_parser.y"
+#line 658 "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 97:
+  case 98:
 
 /* Line 1464 of yacc.c  */
-#line 659 "ntp_parser.y"
+#line 663 "ntp_parser.y"
     {
                        (yyval.Int_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
                }
     break;
 
-  case 106:
+  case 107:
 
 /* Line 1464 of yacc.c  */
-#line 678 "ntp_parser.y"
+#line 682 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
-  case 107:
+  case 108:
 
 /* Line 1464 of yacc.c  */
-#line 680 "ntp_parser.y"
+#line 684 "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 108:
+  case 109:
 
 /* Line 1464 of yacc.c  */
-#line 688 "ntp_parser.y"
+#line 692 "ntp_parser.y"
     {
                        if (input_from_file) {
                                (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
@@ -2626,10 +2629,10 @@ yyreduce:
                }
     break;
 
-  case 109:
+  case 110:
 
 /* Line 1464 of yacc.c  */
-#line 698 "ntp_parser.y"
+#line 702 "ntp_parser.y"
     {
                        if (input_from_file) {
                                (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
@@ -2640,10 +2643,10 @@ yyreduce:
                }
     break;
 
-  case 110:
+  case 111:
 
 /* Line 1464 of yacc.c  */
-#line 707 "ntp_parser.y"
+#line 711 "ntp_parser.y"
     {
                        const char *err;
                        
@@ -2660,35 +2663,35 @@ yyreduce:
                }
     break;
 
-  case 111:
+  case 112:
 
 /* Line 1464 of yacc.c  */
-#line 722 "ntp_parser.y"
+#line 726 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 123:
+  case 124:
 
 /* Line 1464 of yacc.c  */
-#line 752 "ntp_parser.y"
+#line 756 "ntp_parser.y"
     {
                        CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
     break;
 
-  case 124:
+  case 125:
 
 /* Line 1464 of yacc.c  */
-#line 756 "ntp_parser.y"
+#line 760 "ntp_parser.y"
     {
                        CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
     break;
 
-  case 125:
+  case 126:
 
 /* Line 1464 of yacc.c  */
-#line 760 "ntp_parser.y"
+#line 764 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2698,10 +2701,10 @@ yyreduce:
                }
     break;
 
-  case 126:
+  case 127:
 
 /* Line 1464 of yacc.c  */
-#line 768 "ntp_parser.y"
+#line 772 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2711,10 +2714,10 @@ yyreduce:
                }
     break;
 
-  case 127:
+  case 128:
 
 /* Line 1464 of yacc.c  */
-#line 776 "ntp_parser.y"
+#line 780 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2724,10 +2727,10 @@ yyreduce:
                }
     break;
 
-  case 128:
+  case 129:
 
 /* Line 1464 of yacc.c  */
-#line 784 "ntp_parser.y"
+#line 788 "ntp_parser.y"
     {
                        restrict_node *rn;
 
@@ -2744,10 +2747,10 @@ yyreduce:
                }
     break;
 
-  case 129:
+  case 130:
 
 /* Line 1464 of yacc.c  */
-#line 799 "ntp_parser.y"
+#line 803 "ntp_parser.y"
     {
                        restrict_node *rn;
                        
@@ -2764,10 +2767,10 @@ yyreduce:
                }
     break;
 
-  case 130:
+  case 131:
 
 /* Line 1464 of yacc.c  */
-#line 814 "ntp_parser.y"
+#line 818 "ntp_parser.y"
     {
                        restrict_node * rn;
 
@@ -2778,81 +2781,81 @@ yyreduce:
                }
     break;
 
-  case 131:
+  case 132:
 
 /* Line 1464 of yacc.c  */
-#line 826 "ntp_parser.y"
+#line 830 "ntp_parser.y"
     { (yyval.Int_fifo) = NULL; }
     break;
 
-  case 132:
+  case 133:
 
 /* Line 1464 of yacc.c  */
-#line 828 "ntp_parser.y"
+#line 832 "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 147:
+  case 148:
 
 /* Line 1464 of yacc.c  */
-#line 853 "ntp_parser.y"
+#line 857 "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 148:
+  case 149:
 
 /* Line 1464 of yacc.c  */
-#line 858 "ntp_parser.y"
+#line 862 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 149:
+  case 150:
 
 /* Line 1464 of yacc.c  */
-#line 866 "ntp_parser.y"
+#line 870 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 153:
+  case 154:
 
 /* Line 1464 of yacc.c  */
-#line 877 "ntp_parser.y"
+#line 881 "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 154:
+  case 155:
 
 /* Line 1464 of yacc.c  */
-#line 882 "ntp_parser.y"
+#line 886 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 155:
+  case 156:
 
 /* Line 1464 of yacc.c  */
-#line 890 "ntp_parser.y"
+#line 894 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 164:
+  case 165:
 
 /* Line 1464 of yacc.c  */
-#line 910 "ntp_parser.y"
+#line 914 "ntp_parser.y"
     {
                        addr_opts_node *aon;
                        
@@ -2861,99 +2864,99 @@ yyreduce:
                }
     break;
 
-  case 165:
+  case 166:
 
 /* Line 1464 of yacc.c  */
-#line 920 "ntp_parser.y"
+#line 924 "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 166:
+  case 167:
 
 /* Line 1464 of yacc.c  */
-#line 925 "ntp_parser.y"
+#line 929 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 167:
+  case 168:
 
 /* Line 1464 of yacc.c  */
-#line 933 "ntp_parser.y"
+#line 937 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 168:
+  case 169:
 
 /* Line 1464 of yacc.c  */
-#line 935 "ntp_parser.y"
+#line 939 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 169:
+  case 170:
 
 /* Line 1464 of yacc.c  */
-#line 937 "ntp_parser.y"
+#line 941 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 170:
+  case 171:
 
 /* Line 1464 of yacc.c  */
-#line 939 "ntp_parser.y"
+#line 943 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
-  case 177:
+  case 178:
 
 /* Line 1464 of yacc.c  */
-#line 960 "ntp_parser.y"
+#line 964 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 178:
+  case 179:
 
 /* Line 1464 of yacc.c  */
-#line 962 "ntp_parser.y"
+#line 966 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 179:
+  case 180:
 
 /* Line 1464 of yacc.c  */
-#line 967 "ntp_parser.y"
+#line 971 "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 180:
+  case 181:
 
 /* Line 1464 of yacc.c  */
-#line 972 "ntp_parser.y"
+#line 976 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 181:
+  case 182:
 
 /* Line 1464 of yacc.c  */
-#line 980 "ntp_parser.y"
+#line 984 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 182:
+  case 183:
 
 /* Line 1464 of yacc.c  */
-#line 982 "ntp_parser.y"
+#line 986 "ntp_parser.y"
     { 
                        if (input_from_file) {
                                (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
@@ -2964,44 +2967,44 @@ yyreduce:
                }
     break;
 
-  case 189:
+  case 190:
 
 /* Line 1464 of yacc.c  */
-#line 1007 "ntp_parser.y"
+#line 1011 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 190:
+  case 191:
 
 /* Line 1464 of yacc.c  */
-#line 1012 "ntp_parser.y"
+#line 1016 "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 191:
+  case 192:
 
 /* Line 1464 of yacc.c  */
-#line 1017 "ntp_parser.y"
+#line 1021 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 192:
+  case 193:
 
 /* Line 1464 of yacc.c  */
-#line 1025 "ntp_parser.y"
+#line 1029 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 202:
+  case 203:
 
 /* Line 1464 of yacc.c  */
-#line 1047 "ntp_parser.y"
+#line 1051 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3010,10 +3013,10 @@ yyreduce:
                }
     break;
 
-  case 203:
+  case 204:
 
 /* Line 1464 of yacc.c  */
-#line 1054 "ntp_parser.y"
+#line 1058 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3022,10 +3025,10 @@ yyreduce:
                }
     break;
 
-  case 204:
+  case 205:
 
 /* Line 1464 of yacc.c  */
-#line 1061 "ntp_parser.y"
+#line 1065 "ntp_parser.y"
     {
                        char error_text[64];
                        attr_val *av;
@@ -3043,10 +3046,10 @@ yyreduce:
                }
     break;
 
-  case 205:
+  case 206:
 
 /* Line 1464 of yacc.c  */
-#line 1077 "ntp_parser.y"
+#line 1081 "ntp_parser.y"
     {
                        if (!input_from_file) {
                                yyerror("remote includefile ignored");
@@ -3067,48 +3070,48 @@ yyreduce:
                }
     break;
 
-  case 206:
+  case 207:
 
 /* Line 1464 of yacc.c  */
-#line 1096 "ntp_parser.y"
+#line 1100 "ntp_parser.y"
     {
                        while (curr_include_level != -1)
                                FCLOSE(fp[curr_include_level--]);
                }
     break;
 
-  case 207:
+  case 208:
 
 /* Line 1464 of yacc.c  */
-#line 1101 "ntp_parser.y"
+#line 1105 "ntp_parser.y"
     { /* see drift_parm below for actions */ }
     break;
 
-  case 208:
+  case 209:
 
 /* Line 1464 of yacc.c  */
-#line 1103 "ntp_parser.y"
+#line 1107 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 209:
+  case 210:
 
 /* Line 1464 of yacc.c  */
-#line 1105 "ntp_parser.y"
+#line 1109 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[(2) - (2)].String_fifo)); }
     break;
 
-  case 210:
+  case 211:
 
 /* Line 1464 of yacc.c  */
-#line 1107 "ntp_parser.y"
+#line 1111 "ntp_parser.y"
     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); }
     break;
 
-  case 211:
+  case 212:
 
 /* Line 1464 of yacc.c  */
-#line 1109 "ntp_parser.y"
+#line 1113 "ntp_parser.y"
     {
                        addr_opts_node *aon;
                        
@@ -3117,17 +3120,17 @@ yyreduce:
                }
     break;
 
-  case 212:
+  case 213:
 
 /* Line 1464 of yacc.c  */
-#line 1116 "ntp_parser.y"
+#line 1120 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 222:
+  case 223:
 
 /* Line 1464 of yacc.c  */
-#line 1139 "ntp_parser.y"
+#line 1143 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3136,10 +3139,10 @@ yyreduce:
                }
     break;
 
-  case 223:
+  case 224:
 
 /* Line 1464 of yacc.c  */
-#line 1146 "ntp_parser.y"
+#line 1150 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3150,10 +3153,10 @@ yyreduce:
                }
     break;
 
-  case 224:
+  case 225:
 
 /* Line 1464 of yacc.c  */
-#line 1155 "ntp_parser.y"
+#line 1159 "ntp_parser.y"
     {
                        attr_val *av;
                        
@@ -3162,78 +3165,78 @@ yyreduce:
                }
     break;
 
-  case 225:
+  case 226:
 
 /* Line 1464 of yacc.c  */
-#line 1165 "ntp_parser.y"
+#line 1169 "ntp_parser.y"
     { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), (yyvsp[(4) - (4)].Integer)); }
     break;
 
-  case 227:
+  case 228:
 
 /* Line 1464 of yacc.c  */
-#line 1171 "ntp_parser.y"
+#line 1175 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 228:
+  case 229:
 
 /* Line 1464 of yacc.c  */
-#line 1176 "ntp_parser.y"
+#line 1180 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
-  case 229:
+  case 230:
 
 /* Line 1464 of yacc.c  */
-#line 1178 "ntp_parser.y"
+#line 1182 "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 230:
+  case 231:
 
 /* Line 1464 of yacc.c  */
-#line 1186 "ntp_parser.y"
+#line 1190 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 231:
+  case 232:
 
 /* Line 1464 of yacc.c  */
-#line 1188 "ntp_parser.y"
+#line 1192 "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 232:
+  case 233:
 
 /* Line 1464 of yacc.c  */
-#line 1196 "ntp_parser.y"
+#line 1200 "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 233:
+  case 234:
 
 /* Line 1464 of yacc.c  */
-#line 1201 "ntp_parser.y"
+#line 1205 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 234:
+  case 235:
 
 /* Line 1464 of yacc.c  */
-#line 1209 "ntp_parser.y"
+#line 1213 "ntp_parser.y"
     {
                        char    prefix;
                        char *  type;
@@ -3257,10 +3260,10 @@ yyreduce:
                }
     break;
 
-  case 235:
+  case 236:
 
 /* Line 1464 of yacc.c  */
-#line 1234 "ntp_parser.y"
+#line 1238 "ntp_parser.y"
     {
                        nic_rule_node *nrn;
                        
@@ -3269,10 +3272,10 @@ yyreduce:
                }
     break;
 
-  case 236:
+  case 237:
 
 /* Line 1464 of yacc.c  */
-#line 1241 "ntp_parser.y"
+#line 1245 "ntp_parser.y"
     {
                        nic_rule_node *nrn;
                        
@@ -3281,131 +3284,131 @@ yyreduce:
                }
     break;
 
-  case 246:
+  case 247:
 
 /* Line 1464 of yacc.c  */
-#line 1269 "ntp_parser.y"
+#line 1273 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[(2) - (2)].Int_fifo)); }
     break;
 
-  case 247:
+  case 248:
 
 /* Line 1464 of yacc.c  */
-#line 1274 "ntp_parser.y"
+#line 1278 "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 248:
+  case 249:
 
 /* Line 1464 of yacc.c  */
-#line 1279 "ntp_parser.y"
+#line 1283 "ntp_parser.y"
     {
                        (yyval.Int_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
                }
     break;
 
-  case 256:
+  case 257:
 
 /* Line 1464 of yacc.c  */
-#line 1303 "ntp_parser.y"
+#line 1307 "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 257:
+  case 258:
 
 /* Line 1464 of yacc.c  */
-#line 1308 "ntp_parser.y"
+#line 1312 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
                }
     break;
 
-  case 258:
+  case 259:
 
 /* Line 1464 of yacc.c  */
-#line 1316 "ntp_parser.y"
+#line 1320 "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 259:
+  case 260:
 
 /* Line 1464 of yacc.c  */
-#line 1321 "ntp_parser.y"
+#line 1325 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
     break;
 
-  case 260:
+  case 261:
 
 /* Line 1464 of yacc.c  */
-#line 1329 "ntp_parser.y"
+#line 1333 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 262:
+  case 263:
 
 /* Line 1464 of yacc.c  */
-#line 1335 "ntp_parser.y"
+#line 1339 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); }
     break;
 
-  case 263:
+  case 264:
 
 /* Line 1464 of yacc.c  */
-#line 1340 "ntp_parser.y"
+#line 1344 "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 264:
+  case 265:
 
 /* Line 1464 of yacc.c  */
-#line 1345 "ntp_parser.y"
+#line 1349 "ntp_parser.y"
     {
                        (yyval.String_fifo) = NULL;
                        APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(1) - (1)].String)));
                }
     break;
 
-  case 265:
+  case 266:
 
 /* Line 1464 of yacc.c  */
-#line 1353 "ntp_parser.y"
+#line 1357 "ntp_parser.y"
     {
                        (yyval.Address_fifo) = (yyvsp[(1) - (2)].Address_fifo);
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(2) - (2)].Address_node));
                }
     break;
 
-  case 266:
+  case 267:
 
 /* Line 1464 of yacc.c  */
-#line 1358 "ntp_parser.y"
+#line 1362 "ntp_parser.y"
     {
                        (yyval.Address_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(1) - (1)].Address_node));
                }
     break;
 
-  case 267:
+  case 268:
 
 /* Line 1464 of yacc.c  */
-#line 1366 "ntp_parser.y"
+#line 1370 "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");
@@ -3416,31 +3419,31 @@ yyreduce:
                }
     break;
 
-  case 268:
+  case 269:
 
 /* Line 1464 of yacc.c  */
-#line 1374 "ntp_parser.y"
+#line 1378 "ntp_parser.y"
     { (yyval.Integer) = 1; }
     break;
 
-  case 269:
+  case 270:
 
 /* Line 1464 of yacc.c  */
-#line 1375 "ntp_parser.y"
+#line 1379 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 270:
+  case 271:
 
 /* Line 1464 of yacc.c  */
-#line 1379 "ntp_parser.y"
+#line 1383 "ntp_parser.y"
     { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); }
     break;
 
-  case 272:
+  case 273:
 
 /* Line 1464 of yacc.c  */
-#line 1390 "ntp_parser.y"
+#line 1394 "ntp_parser.y"
     {
                        sim_node *sn;
                        
@@ -3452,139 +3455,139 @@ yyreduce:
                }
     break;
 
-  case 273:
+  case 274:
 
 /* Line 1464 of yacc.c  */
-#line 1407 "ntp_parser.y"
+#line 1411 "ntp_parser.y"
     { old_config_style = 0; }
     break;
 
-  case 274:
+  case 275:
 
 /* Line 1464 of yacc.c  */
-#line 1412 "ntp_parser.y"
+#line 1416 "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 275:
+  case 276:
 
 /* Line 1464 of yacc.c  */
-#line 1417 "ntp_parser.y"
+#line 1421 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
                }
     break;
 
-  case 276:
+  case 277:
 
 /* Line 1464 of yacc.c  */
-#line 1425 "ntp_parser.y"
+#line 1429 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 279:
+  case 280:
 
 /* Line 1464 of yacc.c  */
-#line 1435 "ntp_parser.y"
+#line 1439 "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 280:
+  case 281:
 
 /* Line 1464 of yacc.c  */
-#line 1440 "ntp_parser.y"
+#line 1444 "ntp_parser.y"
     {
                        (yyval.Sim_server_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(1) - (1)].Sim_server));
                }
     break;
 
-  case 281:
+  case 282:
 
 /* Line 1464 of yacc.c  */
-#line 1448 "ntp_parser.y"
+#line 1452 "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 282:
+  case 283:
 
 /* Line 1464 of yacc.c  */
-#line 1453 "ntp_parser.y"
+#line 1457 "ntp_parser.y"
     { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
     break;
 
-  case 283:
+  case 284:
 
 /* Line 1464 of yacc.c  */
-#line 1458 "ntp_parser.y"
+#line 1462 "ntp_parser.y"
     { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
     break;
 
-  case 284:
+  case 285:
 
 /* Line 1464 of yacc.c  */
-#line 1463 "ntp_parser.y"
+#line 1467 "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 285:
+  case 286:
 
 /* Line 1464 of yacc.c  */
-#line 1468 "ntp_parser.y"
+#line 1472 "ntp_parser.y"
     {
                        (yyval.Sim_script_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(1) - (1)].Sim_script));
                }
     break;
 
-  case 286:
+  case 287:
 
 /* Line 1464 of yacc.c  */
-#line 1476 "ntp_parser.y"
+#line 1480 "ntp_parser.y"
     { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Attr_val_fifo)); }
     break;
 
-  case 287:
+  case 288:
 
 /* Line 1464 of yacc.c  */
-#line 1481 "ntp_parser.y"
+#line 1485 "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 288:
+  case 289:
 
 /* Line 1464 of yacc.c  */
-#line 1486 "ntp_parser.y"
+#line 1490 "ntp_parser.y"
     {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
                }
     break;
 
-  case 289:
+  case 290:
 
 /* Line 1464 of yacc.c  */
-#line 1494 "ntp_parser.y"
+#line 1498 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
 
 
 /* Line 1464 of yacc.c  */
-#line 3588 "ntp_parser.c"
+#line 3591 "ntp_parser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3796,7 +3799,7 @@ yyreturn:
 
 
 /* Line 1684 of yacc.c  */
-#line 1505 "ntp_parser.y"
+#line 1509 "ntp_parser.y"
 
 
 void 
index fbc7655db7910a80a64a62816864b1ff66ee2d65..312e0d121d82c0b734480a454c26b5af5e6249fd 100644 (file)
      T_Trustedkey = 414,
      T_Ttl = 415,
      T_Type = 416,
-     T_Unconfig = 417,
-     T_Unpeer = 418,
-     T_Version = 419,
-     T_WanderThreshold = 420,
-     T_Week = 421,
-     T_Wildcard = 422,
-     T_Xleave = 423,
-     T_Year = 424,
-     T_Flag = 425,
-     T_EOC = 426,
-     T_Simulate = 427,
-     T_Beep_Delay = 428,
-     T_Sim_Duration = 429,
-     T_Server_Offset = 430,
-     T_Duration = 431,
-     T_Freq_Offset = 432,
-     T_Wander = 433,
-     T_Jitter = 434,
-     T_Prop_Delay = 435,
-     T_Proc_Delay = 436
+     T_U_int = 417,
+     T_Unconfig = 418,
+     T_Unpeer = 419,
+     T_Version = 420,
+     T_WanderThreshold = 421,
+     T_Week = 422,
+     T_Wildcard = 423,
+     T_Xleave = 424,
+     T_Year = 425,
+     T_Flag = 426,
+     T_EOC = 427,
+     T_Simulate = 428,
+     T_Beep_Delay = 429,
+     T_Sim_Duration = 430,
+     T_Server_Offset = 431,
+     T_Duration = 432,
+     T_Freq_Offset = 433,
+     T_Wander = 434,
+     T_Jitter = 435,
+     T_Prop_Delay = 436,
+     T_Proc_Delay = 437
    };
 #endif
 /* Tokens.  */
 #define T_Trustedkey 414
 #define T_Ttl 415
 #define T_Type 416
-#define T_Unconfig 417
-#define T_Unpeer 418
-#define T_Version 419
-#define T_WanderThreshold 420
-#define T_Week 421
-#define T_Wildcard 422
-#define T_Xleave 423
-#define T_Year 424
-#define T_Flag 425
-#define T_EOC 426
-#define T_Simulate 427
-#define T_Beep_Delay 428
-#define T_Sim_Duration 429
-#define T_Server_Offset 430
-#define T_Duration 431
-#define T_Freq_Offset 432
-#define T_Wander 433
-#define T_Jitter 434
-#define T_Prop_Delay 435
-#define T_Proc_Delay 436
+#define T_U_int 417
+#define T_Unconfig 418
+#define T_Unpeer 419
+#define T_Version 420
+#define T_WanderThreshold 421
+#define T_Week 422
+#define T_Wildcard 423
+#define T_Xleave 424
+#define T_Year 425
+#define T_Flag 426
+#define T_EOC 427
+#define T_Simulate 428
+#define T_Beep_Delay 429
+#define T_Sim_Duration 430
+#define T_Server_Offset 431
+#define T_Duration 432
+#define T_Freq_Offset 433
+#define T_Wander 434
+#define T_Jitter 435
+#define T_Prop_Delay 436
+#define T_Proc_Delay 437
 
 
 
@@ -413,6 +415,7 @@ typedef union YYSTYPE
        char *                  String;
        double                  Double;
        int                     Integer;
+       unsigned                U_int;
        gen_fifo *              Generic_fifo;
        attr_val *              Attr_val;
        attr_val_fifo *         Attr_val_fifo;
@@ -429,7 +432,7 @@ typedef union YYSTYPE
 
 
 /* Line 1685 of yacc.c  */
-#line 433 "ntp_parser.h"
+#line 436 "ntp_parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index eac205989722da7aa34773c1157c0b5f3725acac..57bc2496164159a67c7e502422fd8f02632a8470 100644 (file)
                                */
 
 
-  struct FILE_INFO *ip_file;   /* Pointer to the configuration file stream */
+  struct FILE_INFO *ip_file;   /* configuration file stream */
 
   #define YYMALLOC     emalloc
   #define YYFREE       free
   #define YYERROR_VERBOSE
-  #define YYMAXDEPTH   1000   /* stop the madness sooner */
+  #define YYMAXDEPTH   1000    /* stop the madness sooner */
   void yyerror(const char *msg);
-  extern int input_from_file;  /* 0=input from ntpq :config */
+  extern int input_from_file;  /* else from ntpq :config */
 %}
 
 /* 
@@ -50,6 +50,7 @@
        char *                  String;
        double                  Double;
        int                     Integer;
+       unsigned                U_int;
        gen_fifo *              Generic_fifo;
        attr_val *              Attr_val;
        attr_val_fifo *         Attr_val_fifo;
 %token <Integer>       T_Trustedkey
 %token <Integer>       T_Ttl
 %token <Integer>       T_Type
+%token <Integer>       T_U_int                 /* Not a token */
 %token <Integer>       T_Unconfig
 %token <Integer>       T_Unpeer
 %token <Integer>       T_Version
@@ -453,6 +455,8 @@ option_flag_keyword
 option_int
        :       option_int_keyword T_Integer
                        { $$ = create_attr_ival($1, $2); }
+       |       option_int_keyword T_U_int
+                       { $$ = create_attr_uval($1, $2); }
        ;
 
 option_int_keyword
index 12c3265b81072f3c008f008b6d456e97e4db531b..4b97ecd6a97f055d1da596de9e3d38ef8a3e07bc 100644 (file)
@@ -15,8 +15,8 @@
 #include <ntp_random.h>
 
 /*
- *                  Table of valid association combinations
- *                  ---------------------------------------
+ *                 Table of valid association combinations
+ *                 ---------------------------------------
  *
  *                             packet->mode
  * peer->mode      | UNSPEC  ACTIVE PASSIVE  CLIENT  SERVER  BCAST
@@ -532,7 +532,7 @@ peer_config(
        u_char          minpoll,
        u_char          maxpoll,
        u_int           flags,
-       u_char          ttl,
+       u_int32         ttl,
        keyid_t         key,
        const char *    ident           /* autokey group */
        )
@@ -634,7 +634,7 @@ peer_refresh_interface(
        niface = select_peerinterface(p, &p->srcadr, NULL);
 
        DPRINTF(4, (
-           "peer_refresh_interface: %s->%s mode %d vers %d poll %d %d flags 0x%x 0x%x ttl %d key %08x: new interface: ",
+           "peer_refresh_interface: %s->%s mode %d vers %d poll %d %d flags 0x%x 0x%x ttl %u key %08x: new interface: ",
            p->dstadr == NULL ? "<null>" :
            stoa(&p->dstadr->sin), stoa(&p->srcadr), p->hmode,
            p->version, p->minpoll, p->maxpoll, p->flags, p->cast_flags,
@@ -711,7 +711,7 @@ newpeer(
        u_char          maxpoll,
        u_int           flags,
        u_char          cast_flags,
-       u_char          ttl,
+       u_int32         ttl,
        keyid_t         key,
        const char *    ident
        )
@@ -841,7 +841,7 @@ newpeer(
        if (key > NTP_MAXKEY)
                peer->flags |= FLAG_SKEY;
 #endif /* AUTOKEY */
-       peer->ttl = (u_char)ttl;
+       peer->ttl = ttl;
        peer->keyid = key;
        if (ident != NULL)
                peer->ident = estrdup(ident);
index 7a258ea0f354beae5fde736ee7e59ca0bdc17f4e..e1bb7e2ac9673fd060d750dccb43642063132d02 100644 (file)
@@ -283,18 +283,63 @@ is_integer(
        char *lexeme
        )
 {
-       int i = 0;
+       int     i;
+       int     is_neg;
+       u_int   u_val;
+       
+       i = 0;
 
        /* Allow a leading minus sign */
-       if (lexeme[i] == '-')
-               ++i;
+       if (lexeme[i] == '-') {
+               i++;
+               is_neg = TRUE;
+       } else {
+               is_neg = FALSE;
+       }
 
        /* Check that all the remaining characters are digits */
-       for (; lexeme[i]; ++i) {
+       for (; lexeme[i] != '\0'; i++) {
                if (!isdigit(lexeme[i]))
-                       return 0;
+                       return FALSE;
        }
-       return 1;
+
+       if (is_neg)
+               return TRUE;
+
+       /* Reject numbers that fit in unsigned but not in signed int */
+       if (1 == sscanf(lexeme, "%u", &u_val))
+               return (u_val <= INT_MAX);
+       else
+               return FALSE;
+}
+
+
+/* U_int -- assumes is_integer() has returned FALSE */
+static int
+is_u_int(
+       char *lexeme
+       )
+{
+       int     i;
+       int     is_hex;
+       
+       i = 0;
+       if ('0' == lexeme[i] && 'x' == tolower(lexeme[i + 1])) {
+               i += 2;
+               is_hex = TRUE;
+       } else {
+               is_hex = FALSE;
+       }
+
+       /* Check that all the remaining characters are digits */
+       for (; lexeme[i] != '\0'; i++) {
+               if (is_hex && !isxdigit(lexeme[i]))
+                       return FALSE;
+               if (!is_hex && !isdigit(lexeme[i]))
+                       return FALSE;
+       }
+
+       return TRUE;
 }
 
 
@@ -437,11 +482,16 @@ yylex(
        void
        )
 {
-       int i, instring = 0;
-       int yylval_was_set = 0;
-       int token;              /* The return value/the recognized token */
-       int ch;
-       static follby followedby = FOLLBY_TOKEN;
+       static follby   followedby = FOLLBY_TOKEN;
+       int             i;
+       int             instring;
+       int             yylval_was_set;
+       int             converted;
+       int             token;          /* The return value */
+       int             ch;
+
+       instring = FALSE;
+       yylval_was_set = FALSE;
 
        do {
                /* Ignore whitespace at the beginning */
@@ -520,7 +570,7 @@ yylex(
                 * XXX - HMS: I'm not sure we want to assume the closing "
                 */
                if ('"' == ch) {
-                       instring = 1;
+                       instring = TRUE;
                        while (EOF != (ch = get_next_char()) &&
                               ch != '"' && ch != '\n') {
                                yytext[i++] = (char)ch;
@@ -569,23 +619,49 @@ yylex(
                        if (T_Server == token && !old_config_style)
                                followedby = FOLLBY_TOKEN;
                        goto normal_return;
-               }
-               else if (is_integer(yytext)) {
-                       yylval_was_set = 1;
+               } else if (is_integer(yytext)) {
+                       yylval_was_set = TRUE;
                        errno = 0;
                        if ((yylval.Integer = strtol(yytext, NULL, 10)) == 0
                            && ((errno == EINVAL) || (errno == ERANGE))) {
                                msyslog(LOG_ERR, 
                                        "Integer cannot be represented: %s",
                                        yytext);
-                               exit(1);
-                       } else {
-                               token = T_Integer;
-                               goto normal_return;
+                               if (input_from_file) {
+                                       exit(1);
+                               } else {
+                                       /* force end of parsing */
+                                       yylval.Integer = 0;
+                                       return 0;
+                               }
                        }
-               }
-               else if (is_double(yytext)) {
-                       yylval_was_set = 1;
+                       token = T_Integer;
+                       goto normal_return;
+               } else if (is_u_int(yytext)) {
+                       yylval_was_set = TRUE;
+                       if ('0' == yytext[0] &&
+                           'x' == tolower(yytext[1]))
+                               converted = sscanf(&yytext[2], "%x",
+                                                  &yylval.U_int);
+                       else
+                               converted = sscanf(yytext, "%u",
+                                                  &yylval.U_int);
+                       if (1 != converted) {
+                               msyslog(LOG_ERR, 
+                                       "U_int cannot be represented: %s",
+                                       yytext);
+                               if (input_from_file) {
+                                       exit(1);
+                               } else {
+                                       /* force end of parsing */
+                                       yylval.Integer = 0;
+                                       return 0;
+                               }
+                       }
+                       token = T_U_int;
+                       goto normal_return;
+               } else if (is_double(yytext)) {
+                       yylval_was_set = TRUE;
                        errno = 0;
                        if ((yylval.Double = atof(yytext)) == 0 && errno == ERANGE) {
                                msyslog(LOG_ERR,
@@ -598,7 +674,7 @@ yylex(
                        }
                } else {
                        /* Default: Everything is a string */
-                       yylval_was_set = 1;
+                       yylval_was_set = TRUE;
                        token = create_string_token(yytext);
                        goto normal_return;
                }
@@ -636,11 +712,11 @@ yylex(
                }
        }
 
-       instring = 0;
+       instring = FALSE;
        if (FOLLBY_STRING == followedby)
                followedby = FOLLBY_TOKEN;
 
-       yylval_was_set = 1;
+       yylval_was_set = TRUE;
        token = create_string_token(yytext);
 
 normal_return:
@@ -659,7 +735,8 @@ lex_too_long:
        yytext[min(sizeof(yytext) - 1, 50)] = 0;
        msyslog(LOG_ERR, 
                "configuration item on line %d longer than limit of %lu, began with '%s'",
-               ip_file->line_no, (u_long)(sizeof(yytext) - 1), yytext);
+               ip_file->line_no, (u_long)min(sizeof(yytext) - 1, 50),
+               yytext);
 
        /*
         * If we hit the length limit reading the startup configuration
index e65c9bbe25bc49b9f9665c014250a825e8e3f4fd..6d314387efa3ed2e9886e8aa275a4fab04204811 100644 (file)
@@ -819,7 +819,7 @@ sock_cb(
        }
 
        /* Read in the packet */
-       rpktl = recvdata(fd, &sender, &rbuf, sizeof(rbuf));
+       rpktl = recvdata(fd, &sender, &rbuf.pkt, sizeof(rbuf));
        if (rpktl < 0) {
                msyslog(LOG_DEBUG, "recvfrom error %m");
                return;