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

Harlan Stenn stenn at deacon.udel.edu
Mon Oct 31 19:12:59 UTC 2011


#### ChangeSet ####
2011-10-31 14:54:08+00:00, davehart at shiny.ad.hartbrothers.com
  use rand() twice to get about 32 bits of noise for mrulist.

==== ntpd/ntp_control.c ====
2011-10-31 14:54:05+00:00, davehart at shiny.ad.hartbrothers.com +3 -3
  use rand() twice to get about 32 bits of noise for mrulist.

--- 1.172/ntpd/ntp_control.c	2011-10-30 23:52:17 -04:00
+++ 1.173/ntpd/ntp_control.c	2011-10-31 10:54:05 -04:00
@@ -111,13 +111,13 @@ static const struct ctl_proc control_cod
 	{ CTL_OP_READCLOCK,	NOAUTH,	read_clockstatus },
 	{ CTL_OP_WRITECLOCK,	NOAUTH,	write_clockstatus },
 	{ CTL_OP_SETTRAP,	NOAUTH,	set_trap },
-	{ CTL_OP_SAVECONFIG,	AUTH,	save_config },
 	{ CTL_OP_CONFIGURE,	AUTH,	configure },
+	{ CTL_OP_SAVECONFIG,	AUTH,	save_config },
 	{ CTL_OP_READ_MRU,	NOAUTH,	read_mru_list },
 	{ CTL_OP_READ_IFSTATS,	AUTH,	read_ifstats },
 	{ CTL_OP_REQ_NONCE,	NOAUTH,	req_nonce },
 	{ CTL_OP_UNSETTRAP,	NOAUTH,	unset_trap },
-	{ NO_REQUEST,		0 }
+	{ NO_REQUEST,		0,	NULL }
 };
 
 /*
@@ -3429,7 +3429,7 @@ send_random_tag_value(
 	int	noise;
 	char	buf[32];
 
-	noise = rand();
+	noise = rand() | (rand() << 16);
 	buf[0] = 'a' + noise % 26;
 	noise >>= 5;
 	buf[1] = 'a' + noise % 26;

#### ChangeSet ####
2011-10-31 04:40:04+00:00, davehart at shiny.ad.hartbrothers.com
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

==== ChangeLog ====
2011-10-31 04:40:01+00:00, davehart at shiny.ad.hartbrothers.com +5 -0
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

--- 1.1039/ChangeLog	2011-10-30 23:52:17 -04:00
+++ 1.1040/ChangeLog	2011-10-31 00:40:01 -04:00
@@ -1,3 +1,8 @@
+* Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
+  believed to provide all functionality ntpdc did, and uses a less-
+  fragile protocol that's safer and easier to maintain.  If you do find
+  some management via ntpdc is needed, you can use "enable mode7" in the
+  ntpd configuration.
 * Directly limit the number of datagrams in a mrulist response, rather
   than limiting the number of entries returned to indirectly limit the
   datagram count.

==== include/ntp.h ====
2011-10-31 04:40:01+00:00, davehart at shiny.ad.hartbrothers.com +1 -0
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

--- 1.198/include/ntp.h	2011-10-30 23:52:17 -04:00
+++ 1.199/include/ntp.h	2011-10-31 00:40:01 -04:00
@@ -700,6 +700,7 @@ struct pkt {
 #define	PROTO_BEACON		25
 #define	PROTO_ORPHAN		26
 #define	PROTO_ORPHWAIT		27
+#define	PROTO_MODE7		28
 
 /*
  * Configuration items for the loop filter

==== ntpd/complete.conf ====
2011-10-31 04:40:01+00:00, davehart at shiny.ad.hartbrothers.com +1 -1
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

--- 1.19/ntpd/complete.conf	2011-08-12 13:17:51 -04:00
+++ 1.20/ntpd/complete.conf	2011-10-31 00:40:01 -04:00
@@ -22,7 +22,7 @@ trustedkey 1 2 3 4 5 6 7 8 9 10 11 12 (1
 controlkey 12
 requestkey 12
 enable auth ntp monitor
-disable bclient calibrate kernel
+disable bclient calibrate kernel mode7
 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

==== ntpd/keyword-gen-utd ====
2011-10-31 04:40:01+00:00, davehart at shiny.ad.hartbrothers.com +1 -1
  derived from ntp_keyword.h

--- 1.14/ntpd/keyword-gen-utd	2011-07-25 20:18:27 -04:00
+++ 1.15/ntpd/keyword-gen-utd	2011-10-31 00:40:01 -04:00
@@ -1 +1 @@
- *	 Generated 2011-07-26 00:04:53 UTC	  diff_ignore_line
+ *	 Generated 2011-10-31 04:35:06 UTC	  diff_ignore_line

==== ntpd/keyword-gen.c ====
2011-10-31 04:40:01+00:00, davehart at shiny.ad.hartbrothers.com +1 -0
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

--- 1.19/ntpd/keyword-gen.c	2011-07-16 11:26:10 -04:00
+++ 1.20/ntpd/keyword-gen.c	2011-10-31 00:40:01 -04:00
@@ -194,6 +194,7 @@ struct key_tok ntp_keywords[] = {
 { "calibrate",		T_Calibrate,		FOLLBY_TOKEN },
 { "kernel",		T_Kernel,		FOLLBY_TOKEN },
 { "ntp",		T_Ntp,			FOLLBY_TOKEN },
+{ "mode7",		T_Mode7,		FOLLBY_TOKEN },
 { "stats",		T_Stats,		FOLLBY_TOKEN },
 /* tinker_option */
 { "step",		T_Step,			FOLLBY_TOKEN },

==== ntpd/ntp_config.c ====
2011-10-31 04:40:01+00:00, davehart at shiny.ad.hartbrothers.com +5 -1
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

--- 1.293/ntpd/ntp_config.c	2011-08-09 01:22:27 -04:00
+++ 1.294/ntpd/ntp_config.c	2011-10-31 00:40:01 -04:00
@@ -108,7 +108,7 @@ typedef struct peer_resolved_ctx_tag {
 	u_char		version;
 	u_char		minpoll;
 	u_char		maxpoll;
-	u_char		ttl;
+	u_int32		ttl;
 	const char *	group;
 } peer_resolved_ctx;
 
@@ -2798,6 +2798,10 @@ apply_enable_disable(
 
 		case T_Ntp:
 			proto_config(PROTO_NTP, enable, 0., NULL);
+			break;
+
+		case T_Mode7:
+			proto_config(PROTO_MODE7, enable, 0., NULL);
 			break;
 
 		case T_Stats:

==== ntpd/ntp_keyword.h ====
2011-10-31 04:40:02+00:00, davehart at shiny.ad.hartbrothers.com +545 -543
  keyword-gen output

--- 1.16/ntpd/ntp_keyword.h	2011-07-25 20:18:27 -04:00
+++ 1.17/ntpd/ntp_keyword.h	2011-10-31 00:40:02 -04:00
@@ -2,7 +2,7 @@
  * ntp_keyword.h
  * 
  * NOTE: edit this file with caution, it is generated by keyword-gen.c
- *	 Generated 2011-07-26 00:04:53 UTC	  diff_ignore_line
+ *	 Generated 2011-10-31 04:35:06 UTC	  diff_ignore_line
  *
  */
 #include "ntp_scanner.h"
@@ -10,7 +10,7 @@
 
 #define LOWEST_KEYWORD_ID 258
 
-const char * const keyword_text[180] = {
+const char * const keyword_text[181] = {
 	/* 0       258                T_Age */	"age",
 	/* 1       259                T_All */	"all",
 	/* 2       260              T_Allan */	"allan",
@@ -105,97 +105,98 @@ const char * const keyword_text[180] = {
 	/* 91      349            T_Minpoll */	"minpoll",
 	/* 92      350            T_Minsane */	"minsane",
 	/* 93      351               T_Mode */	"mode",
-	/* 94      352            T_Monitor */	"monitor",
-	/* 95      353              T_Month */	"month",
-	/* 96      354                T_Mru */	"mru",
-	/* 97      355    T_Multicastclient */	"multicastclient",
-	/* 98      356                T_Nic */	"nic",
-	/* 99      357             T_Nolink */	"nolink",
-	/* 100     358           T_Nomodify */	"nomodify",
-	/* 101     359               T_None */	"none",
-	/* 102     360        T_Nonvolatile */	"nonvolatile",
-	/* 103     361             T_Nopeer */	"nopeer",
-	/* 104     362            T_Noquery */	"noquery",
-	/* 105     363           T_Noselect */	"noselect",
-	/* 106     364            T_Noserve */	"noserve",
-	/* 107     365             T_Notrap */	"notrap",
-	/* 108     366            T_Notrust */	"notrust",
-	/* 109     367                T_Ntp */	"ntp",
-	/* 110     368            T_Ntpport */	"ntpport",
-	/* 111     369     T_NtpSignDsocket */	"ntpsigndsocket",
-	/* 112     370             T_Orphan */	"orphan",
-	/* 113     371         T_Orphanwait */	"orphanwait",
-	/* 114     372              T_Panic */	"panic",
-	/* 115     373               T_Peer */	"peer",
-	/* 116     374          T_Peerstats */	"peerstats",
-	/* 117     375              T_Phone */	"phone",
-	/* 118     376                T_Pid */	"pid",
-	/* 119     377            T_Pidfile */	"pidfile",
-	/* 120     378               T_Pool */	"pool",
-	/* 121     379               T_Port */	"port",
-	/* 122     380            T_Preempt */	"preempt",
-	/* 123     381             T_Prefer */	"prefer",
-	/* 124     382         T_Protostats */	"protostats",
-	/* 125     383                 T_Pw */	"pw",
-	/* 126     384                T_Qos */	"qos",
-	/* 127     385           T_Randfile */	"randfile",
-	/* 128     386           T_Rawstats */	"rawstats",
-	/* 129     387              T_Refid */	"refid",
-	/* 130     388         T_Requestkey */	"requestkey",
-	/* 131     389              T_Reset */	"reset",
-	/* 132     390           T_Restrict */	"restrict",
-	/* 133     391             T_Revoke */	"revoke",
-	/* 134     392      T_Saveconfigdir */	"saveconfigdir",
-	/* 135     393             T_Server */	"server",
-	/* 136     394             T_Setvar */	"setvar",
-	/* 137     395             T_Source */	"source",
-	/* 138     396         T_Statistics */	"statistics",
-	/* 139     397              T_Stats */	"stats",
-	/* 140     398           T_Statsdir */	"statsdir",
-	/* 141     399               T_Step */	"step",
-	/* 142     400            T_Stepout */	"stepout",
-	/* 143     401            T_Stratum */	"stratum",
-	/* 144     402             T_String */	NULL,
-	/* 145     403                T_Sys */	"sys",
-	/* 146     404           T_Sysstats */	"sysstats",
-	/* 147     405               T_Tick */	"tick",
-	/* 148     406              T_Time1 */	"time1",
-	/* 149     407              T_Time2 */	"time2",
-	/* 150     408              T_Timer */	"timer",
-	/* 151     409        T_Timingstats */	"timingstats",
-	/* 152     410             T_Tinker */	"tinker",
-	/* 153     411                T_Tos */	"tos",
-	/* 154     412               T_Trap */	"trap",
-	/* 155     413               T_True */	"true",
-	/* 156     414         T_Trustedkey */	"trustedkey",
-	/* 157     415                T_Ttl */	"ttl",
-	/* 158     416               T_Type */	"type",
-	/* 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"
+	/* 94      352              T_Mode7 */	"mode7",
+	/* 95      353            T_Monitor */	"monitor",
+	/* 96      354              T_Month */	"month",
+	/* 97      355                T_Mru */	"mru",
+	/* 98      356    T_Multicastclient */	"multicastclient",
+	/* 99      357                T_Nic */	"nic",
+	/* 100     358             T_Nolink */	"nolink",
+	/* 101     359           T_Nomodify */	"nomodify",
+	/* 102     360               T_None */	"none",
+	/* 103     361        T_Nonvolatile */	"nonvolatile",
+	/* 104     362             T_Nopeer */	"nopeer",
+	/* 105     363            T_Noquery */	"noquery",
+	/* 106     364           T_Noselect */	"noselect",
+	/* 107     365            T_Noserve */	"noserve",
+	/* 108     366             T_Notrap */	"notrap",
+	/* 109     367            T_Notrust */	"notrust",
+	/* 110     368                T_Ntp */	"ntp",
+	/* 111     369            T_Ntpport */	"ntpport",
+	/* 112     370     T_NtpSignDsocket */	"ntpsigndsocket",
+	/* 113     371             T_Orphan */	"orphan",
+	/* 114     372         T_Orphanwait */	"orphanwait",
+	/* 115     373              T_Panic */	"panic",
+	/* 116     374               T_Peer */	"peer",
+	/* 117     375          T_Peerstats */	"peerstats",
+	/* 118     376              T_Phone */	"phone",
+	/* 119     377                T_Pid */	"pid",
+	/* 120     378            T_Pidfile */	"pidfile",
+	/* 121     379               T_Pool */	"pool",
+	/* 122     380               T_Port */	"port",
+	/* 123     381            T_Preempt */	"preempt",
+	/* 124     382             T_Prefer */	"prefer",
+	/* 125     383         T_Protostats */	"protostats",
+	/* 126     384                 T_Pw */	"pw",
+	/* 127     385                T_Qos */	"qos",
+	/* 128     386           T_Randfile */	"randfile",
+	/* 129     387           T_Rawstats */	"rawstats",
+	/* 130     388              T_Refid */	"refid",
+	/* 131     389         T_Requestkey */	"requestkey",
+	/* 132     390              T_Reset */	"reset",
+	/* 133     391           T_Restrict */	"restrict",
+	/* 134     392             T_Revoke */	"revoke",
+	/* 135     393      T_Saveconfigdir */	"saveconfigdir",
+	/* 136     394             T_Server */	"server",
+	/* 137     395             T_Setvar */	"setvar",
+	/* 138     396             T_Source */	"source",
+	/* 139     397         T_Statistics */	"statistics",
+	/* 140     398              T_Stats */	"stats",
+	/* 141     399           T_Statsdir */	"statsdir",
+	/* 142     400               T_Step */	"step",
+	/* 143     401            T_Stepout */	"stepout",
+	/* 144     402            T_Stratum */	"stratum",
+	/* 145     403             T_String */	NULL,
+	/* 146     404                T_Sys */	"sys",
+	/* 147     405           T_Sysstats */	"sysstats",
+	/* 148     406               T_Tick */	"tick",
+	/* 149     407              T_Time1 */	"time1",
+	/* 150     408              T_Time2 */	"time2",
+	/* 151     409              T_Timer */	"timer",
+	/* 152     410        T_Timingstats */	"timingstats",
+	/* 153     411             T_Tinker */	"tinker",
+	/* 154     412                T_Tos */	"tos",
+	/* 155     413               T_Trap */	"trap",
+	/* 156     414               T_True */	"true",
+	/* 157     415         T_Trustedkey */	"trustedkey",
+	/* 158     416                T_Ttl */	"ttl",
+	/* 159     417               T_Type */	"type",
+	/* 160     418              T_U_int */	NULL,
+	/* 161     419           T_Unconfig */	"unconfig",
+	/* 162     420             T_Unpeer */	"unpeer",
+	/* 163     421            T_Version */	"version",
+	/* 164     422    T_WanderThreshold */	NULL,
+	/* 165     423               T_Week */	"week",
+	/* 166     424           T_Wildcard */	"wildcard",
+	/* 167     425             T_Xleave */	"xleave",
+	/* 168     426               T_Year */	"year",
+	/* 169     427               T_Flag */	NULL,
+	/* 170     428                T_EOC */	NULL,
+	/* 171     429           T_Simulate */	"simulate",
+	/* 172     430         T_Beep_Delay */	"beep_delay",
+	/* 173     431       T_Sim_Duration */	"simulation_duration",
+	/* 174     432      T_Server_Offset */	"server_offset",
+	/* 175     433           T_Duration */	"duration",
+	/* 176     434        T_Freq_Offset */	"freq_offset",
+	/* 177     435             T_Wander */	"wander",
+	/* 178     436             T_Jitter */	"jitter",
+	/* 179     437         T_Prop_Delay */	"prop_delay",
+	/* 180     438         T_Proc_Delay */	"proc_delay"
 };
 
-#define SCANNER_INIT_S 795
+#define SCANNER_INIT_S 796
 
-const scan_state sst[798] = {
+const scan_state sst[799] = {
 /*SS_T( ch,	f-by, match, other ),				 */
   0,				      /*     0                   */
   S_ST( '-',	3,      320,     0 ), /*     1                   */
@@ -237,7 +238,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,      429,     0 ), /*    40 beep_del          */
+  S_ST( 'a',	3,      430,     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               */
@@ -335,7 +336,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,      432,     0 ), /*   138 durati            */
+  S_ST( 'o',	3,      433,     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                */
@@ -359,7 +360,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,      433,     0 ), /*   162 freq_offs         */
+  S_ST( 'e',	3,      434,     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               */
@@ -419,7 +420,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,      435,     0 ), /*   222 jitt              */
+  S_ST( 'e',	3,      436,     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                */
@@ -444,7 +445,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,      417,   238 ), /*   247 l                 */
+  S_ST( 'o',	3,      418,   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              */
@@ -512,7 +513,7 @@ const scan_state sst[798] = {
   S_ST( 'e',	1,        0,     0 ), /*   312 T_Includefile     */
   S_ST( 't',	3,      315,     0 ), /*   313 loops             */
   S_ST( 'e',	0,        0,     0 ), /*   314 T_Interface       */
-  S_ST( 'a',	3,      402,     0 ), /*   315 loopst            */
+  S_ST( 'a',	3,      403,     0 ), /*   315 loopst            */
   S_ST( 'o',	0,        0,   187 ), /*   316 T_Io              */
   S_ST( '4',	0,        0,     0 ), /*   317 T_Ipv4            */
   S_ST( '4',	0,        0,     0 ), /*   318 T_Ipv4_flag       */
@@ -548,452 +549,453 @@ const scan_state sst[798] = {
   S_ST( 'm',	0,        0,     0 ), /*   348 T_Minimum         */
   S_ST( 'l',	0,        0,     0 ), /*   349 T_Minpoll         */
   S_ST( 'e',	0,        0,     0 ), /*   350 T_Minsane         */
-  S_ST( 'e',	0,        0,     0 ), /*   351 T_Mode            */
-  S_ST( 'r',	0,        0,     0 ), /*   352 T_Monitor         */
-  S_ST( 'h',	0,        0,     0 ), /*   353 T_Month           */
-  S_ST( 'u',	0,        0,     0 ), /*   354 T_Mru             */
-  S_ST( 't',	2,        0,     0 ), /*   355 T_Multicastclient */
-  S_ST( 'c',	0,        0,     0 ), /*   356 T_Nic             */
-  S_ST( 'k',	0,        0,     0 ), /*   357 T_Nolink          */
-  S_ST( 'y',	0,        0,     0 ), /*   358 T_Nomodify        */
-  S_ST( 'e',	0,        0,     0 ), /*   359 T_None            */
-  S_ST( 'e',	0,        0,     0 ), /*   360 T_Nonvolatile     */
-  S_ST( 'r',	0,        0,     0 ), /*   361 T_Nopeer          */
-  S_ST( 'y',	0,        0,     0 ), /*   362 T_Noquery         */
-  S_ST( 't',	0,        0,     0 ), /*   363 T_Noselect        */
-  S_ST( 'e',	0,        0,     0 ), /*   364 T_Noserve         */
-  S_ST( 'p',	0,        0,     0 ), /*   365 T_Notrap          */
-  S_ST( 't',	0,        0,     0 ), /*   366 T_Notrust         */
-  S_ST( 'p',	0,      568,     0 ), /*   367 T_Ntp             */
-  S_ST( 't',	0,        0,     0 ), /*   368 T_Ntpport         */
-  S_ST( 't',	1,        0,     0 ), /*   369 T_NtpSignDsocket  */
-  S_ST( 'n',	0,      583,     0 ), /*   370 T_Orphan          */
-  S_ST( 't',	0,        0,     0 ), /*   371 T_Orphanwait      */
-  S_ST( 'c',	0,        0,     0 ), /*   372 T_Panic           */
-  S_ST( 'r',	1,      592,     0 ), /*   373 T_Peer            */
-  S_ST( 's',	0,        0,     0 ), /*   374 T_Peerstats       */
-  S_ST( 'e',	2,        0,     0 ), /*   375 T_Phone           */
-  S_ST( 'd',	0,      600,     0 ), /*   376 T_Pid             */
-  S_ST( 'e',	1,        0,     0 ), /*   377 T_Pidfile         */
-  S_ST( 'l',	1,        0,     0 ), /*   378 T_Pool            */
-  S_ST( 't',	0,        0,     0 ), /*   379 T_Port            */
-  S_ST( 't',	0,        0,     0 ), /*   380 T_Preempt         */
-  S_ST( 'r',	0,        0,     0 ), /*   381 T_Prefer          */
-  S_ST( 's',	0,        0,     0 ), /*   382 T_Protostats      */
-  S_ST( 'w',	1,        0,   606 ), /*   383 T_Pw              */
-  S_ST( 's',	0,        0,     0 ), /*   384 T_Qos             */
-  S_ST( 'e',	1,        0,     0 ), /*   385 T_Randfile        */
-  S_ST( 's',	0,        0,     0 ), /*   386 T_Rawstats        */
-  S_ST( 'd',	1,        0,     0 ), /*   387 T_Refid           */
-  S_ST( 'y',	0,        0,     0 ), /*   388 T_Requestkey      */
-  S_ST( 't',	0,        0,     0 ), /*   389 T_Reset           */
-  S_ST( 't',	0,        0,     0 ), /*   390 T_Restrict        */
-  S_ST( 'e',	0,        0,     0 ), /*   391 T_Revoke          */
-  S_ST( 'r',	1,        0,     0 ), /*   392 T_Saveconfigdir   */
-  S_ST( 'r',	1,      681,     0 ), /*   393 T_Server          */
-  S_ST( 'r',	1,        0,     0 ), /*   394 T_Setvar          */
-  S_ST( 'e',	0,        0,     0 ), /*   395 T_Source          */
-  S_ST( 's',	0,        0,     0 ), /*   396 T_Statistics      */
-  S_ST( 's',	0,      719,   714 ), /*   397 T_Stats           */
-  S_ST( 'r',	1,        0,     0 ), /*   398 T_Statsdir        */
-  S_ST( 'p',	0,      722,     0 ), /*   399 T_Step            */
-  S_ST( 't',	0,        0,     0 ), /*   400 T_Stepout         */
-  S_ST( 'm',	0,        0,     0 ), /*   401 T_Stratum         */
-  S_ST( 't',	3,      333,     0 ), /*   402 loopsta           */
-  S_ST( 's',	0,      729,     0 ), /*   403 T_Sys             */
-  S_ST( 's',	0,        0,     0 ), /*   404 T_Sysstats        */
-  S_ST( 'k',	0,        0,     0 ), /*   405 T_Tick            */
-  S_ST( '1',	0,        0,     0 ), /*   406 T_Time1           */
-  S_ST( '2',	0,        0,   406 ), /*   407 T_Time2           */
-  S_ST( 'r',	0,        0,   407 ), /*   408 T_Timer           */
-  S_ST( 's',	0,        0,     0 ), /*   409 T_Timingstats     */
-  S_ST( 'r',	0,        0,     0 ), /*   410 T_Tinker          */
-  S_ST( 's',	0,        0,     0 ), /*   411 T_Tos             */
-  S_ST( 'p',	1,        0,     0 ), /*   412 T_Trap            */
-  S_ST( 'e',	0,        0,     0 ), /*   413 T_True            */
-  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( '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          */
-  S_ST( 'a',	3,      334,     0 ), /*   441 lowpriotr         */
-  S_ST( 'm',	3,      513,   231 ), /*   442                   */
-  S_ST( 'a',	3,      461,     0 ), /*   443 m                 */
-  S_ST( 'n',	3,      445,     0 ), /*   444 ma                */
-  S_ST( 'y',	3,      446,     0 ), /*   445 man               */
-  S_ST( 'c',	3,      447,     0 ), /*   446 many              */
-  S_ST( 'a',	3,      448,     0 ), /*   447 manyc             */
-  S_ST( 's',	3,      449,     0 ), /*   448 manyca            */
-  S_ST( 't',	3,      455,     0 ), /*   449 manycas           */
-  S_ST( 'c',	3,      451,     0 ), /*   450 manycast          */
-  S_ST( 'l',	3,      452,     0 ), /*   451 manycastc         */
-  S_ST( 'i',	3,      453,     0 ), /*   452 manycastcl        */
-  S_ST( 'e',	3,      454,     0 ), /*   453 manycastcli       */
-  S_ST( 'n',	3,      335,     0 ), /*   454 manycastclie      */
-  S_ST( 's',	3,      456,   450 ), /*   455 manycast          */
-  S_ST( 'e',	3,      457,     0 ), /*   456 manycasts         */
-  S_ST( 'r',	3,      458,     0 ), /*   457 manycastse        */
-  S_ST( 'v',	3,      459,     0 ), /*   458 manycastser       */
-  S_ST( 'e',	3,      336,     0 ), /*   459 manycastserv      */
-  S_ST( 's',	3,      337,   444 ), /*   460 ma                */
-  S_ST( 'x',	3,      476,   460 ), /*   461 ma                */
-  S_ST( 'a',	3,      463,     0 ), /*   462 max               */
-  S_ST( 'g',	3,      338,     0 ), /*   463 maxa              */
-  S_ST( 'c',	3,      465,   462 ), /*   464 max               */
-  S_ST( 'l',	3,      466,     0 ), /*   465 maxc              */
-  S_ST( 'o',	3,      467,     0 ), /*   466 maxcl             */
-  S_ST( 'c',	3,      339,     0 ), /*   467 maxclo            */
-  S_ST( 'd',	3,      472,   464 ), /*   468 max               */
-  S_ST( 'e',	3,      470,     0 ), /*   469 maxd              */
-  S_ST( 'p',	3,      471,     0 ), /*   470 maxde             */
-  S_ST( 't',	3,      340,     0 ), /*   471 maxdep            */
-  S_ST( 'i',	3,      473,   469 ), /*   472 maxd              */
-  S_ST( 's',	3,      341,     0 ), /*   473 maxdi             */
-  S_ST( 'm',	3,      475,   468 ), /*   474 max               */
-  S_ST( 'e',	3,      342,     0 ), /*   475 maxm              */
-  S_ST( 'p',	3,      477,   474 ), /*   476 max               */
-  S_ST( 'o',	3,      478,     0 ), /*   477 maxp              */
-  S_ST( 'l',	3,      343,     0 ), /*   478 maxpo             */
-  S_ST( 'e',	3,      344,   443 ), /*   479 m                 */
-  S_ST( 'i',	3,      481,   479 ), /*   480 m                 */
-  S_ST( 'n',	3,      498,     0 ), /*   481 mi                */
-  S_ST( 'c',	3,      483,     0 ), /*   482 min               */
-  S_ST( 'l',	3,      484,     0 ), /*   483 minc              */
-  S_ST( 'o',	3,      485,     0 ), /*   484 mincl             */
-  S_ST( 'c',	3,      345,     0 ), /*   485 minclo            */
-  S_ST( 'd',	3,      490,   482 ), /*   486 min               */
-  S_ST( 'e',	3,      488,     0 ), /*   487 mind              */
-  S_ST( 'p',	3,      489,     0 ), /*   488 minde             */
-  S_ST( 't',	3,      346,     0 ), /*   489 mindep            */
-  S_ST( 'i',	3,      491,   487 ), /*   490 mind              */
-  S_ST( 's',	3,      347,     0 ), /*   491 mindi             */
-  S_ST( 'i',	3,      493,   486 ), /*   492 min               */
-  S_ST( 'm',	3,      494,     0 ), /*   493 mini              */
-  S_ST( 'u',	3,      348,     0 ), /*   494 minim             */
-  S_ST( 'p',	3,      496,   492 ), /*   495 min               */
-  S_ST( 'o',	3,      497,     0 ), /*   496 minp              */
-  S_ST( 'l',	3,      349,     0 ), /*   497 minpo             */
-  S_ST( 's',	3,      499,   495 ), /*   498 min               */
-  S_ST( 'a',	3,      500,     0 ), /*   499 mins              */
-  S_ST( 'n',	3,      350,     0 ), /*   500 minsa             */
-  S_ST( 'o',	3,      503,   480 ), /*   501 m                 */
-  S_ST( 'd',	3,      351,     0 ), /*   502 mo                */
-  S_ST( 'n',	3,      507,   502 ), /*   503 mo                */
-  S_ST( 'i',	3,      505,     0 ), /*   504 mon               */
-  S_ST( 't',	3,      506,     0 ), /*   505 moni              */
-  S_ST( 'o',	3,      352,     0 ), /*   506 monit             */
-  S_ST( 't',	3,      353,   504 ), /*   507 mon               */
-  S_ST( 'r',	3,      354,   501 ), /*   508 m                 */
-  S_ST( 's',	3,      510,   508 ), /*   509 m                 */
-  S_ST( 's',	3,      511,     0 ), /*   510 ms                */
-  S_ST( 'n',	3,      512,     0 ), /*   511 mss               */
-  S_ST( 't',	3,      326,     0 ), /*   512 mssn              */
-  S_ST( 'u',	3,      514,   509 ), /*   513 m                 */
-  S_ST( 'l',	3,      515,     0 ), /*   514 mu                */
-  S_ST( 't',	3,      516,     0 ), /*   515 mul               */
-  S_ST( 'i',	3,      517,     0 ), /*   516 mult              */
-  S_ST( 'c',	3,      518,     0 ), /*   517 multi             */
-  S_ST( 'a',	3,      519,     0 ), /*   518 multic            */
-  S_ST( 's',	3,      520,     0 ), /*   519 multica           */
-  S_ST( 't',	3,      521,     0 ), /*   520 multicas          */
-  S_ST( 'c',	3,      522,     0 ), /*   521 multicast         */
-  S_ST( 'l',	3,      523,     0 ), /*   522 multicastc        */
-  S_ST( 'i',	3,      524,     0 ), /*   523 multicastcl       */
-  S_ST( 'e',	3,      525,     0 ), /*   524 multicastcli      */
-  S_ST( 'n',	3,      355,     0 ), /*   525 multicastclie     */
-  S_ST( 'n',	3,      564,   442 ), /*   526                   */
-  S_ST( 'i',	3,      356,     0 ), /*   527 n                 */
-  S_ST( 'o',	3,      559,   527 ), /*   528 n                 */
-  S_ST( 'l',	3,      530,     0 ), /*   529 no                */
-  S_ST( 'i',	3,      531,     0 ), /*   530 nol               */
-  S_ST( 'n',	3,      357,     0 ), /*   531 noli              */
-  S_ST( 'm',	3,      533,   529 ), /*   532 no                */
-  S_ST( 'o',	3,      534,     0 ), /*   533 nom               */
-  S_ST( 'd',	3,      535,     0 ), /*   534 nomo              */
-  S_ST( 'i',	3,      536,     0 ), /*   535 nomod             */
-  S_ST( 'f',	3,      358,     0 ), /*   536 nomodi            */
-  S_ST( 'n',	3,      538,   532 ), /*   537 no                */
-  S_ST( 'v',	3,      539,   359 ), /*   538 non               */
-  S_ST( 'o',	3,      540,     0 ), /*   539 nonv              */
-  S_ST( 'l',	3,      541,     0 ), /*   540 nonvo             */
-  S_ST( 'a',	3,      542,     0 ), /*   541 nonvol            */
-  S_ST( 't',	3,      543,     0 ), /*   542 nonvola           */
-  S_ST( 'i',	3,      544,     0 ), /*   543 nonvolat          */
-  S_ST( 'l',	3,      360,     0 ), /*   544 nonvolati         */
-  S_ST( 'p',	3,      546,   537 ), /*   545 no                */
-  S_ST( 'e',	3,      547,     0 ), /*   546 nop               */
-  S_ST( 'e',	3,      361,     0 ), /*   547 nope              */
-  S_ST( 'q',	3,      549,   545 ), /*   548 no                */
-  S_ST( 'u',	3,      550,     0 ), /*   549 noq               */
-  S_ST( 'e',	3,      551,     0 ), /*   550 noqu              */
-  S_ST( 'r',	3,      362,     0 ), /*   551 noque             */
-  S_ST( 's',	3,      553,   548 ), /*   552 no                */
-  S_ST( 'e',	3,      557,     0 ), /*   553 nos               */
-  S_ST( 'l',	3,      555,     0 ), /*   554 nose              */
-  S_ST( 'e',	3,      556,     0 ), /*   555 nosel             */
-  S_ST( 'c',	3,      363,     0 ), /*   556 nosele            */
-  S_ST( 'r',	3,      558,   554 ), /*   557 nose              */
-  S_ST( 'v',	3,      364,     0 ), /*   558 noser             */
-  S_ST( 't',	3,      560,   552 ), /*   559 no                */
-  S_ST( 'r',	3,      562,     0 ), /*   560 not               */
-  S_ST( 'a',	3,      365,     0 ), /*   561 notr              */
-  S_ST( 'u',	3,      563,   561 ), /*   562 notr              */
-  S_ST( 's',	3,      366,     0 ), /*   563 notru             */
-  S_ST( 't',	3,      367,   528 ), /*   564 n                 */
-  S_ST( 'p',	3,      566,     0 ), /*   565 ntp               */
-  S_ST( 'o',	3,      567,     0 ), /*   566 ntpp              */
-  S_ST( 'r',	3,      368,     0 ), /*   567 ntppo             */
-  S_ST( 's',	3,      569,   565 ), /*   568 ntp               */
-  S_ST( 'i',	3,      570,     0 ), /*   569 ntps              */
-  S_ST( 'g',	3,      571,     0 ), /*   570 ntpsi             */
-  S_ST( 'n',	3,      572,     0 ), /*   571 ntpsig            */
-  S_ST( 'd',	3,      573,     0 ), /*   572 ntpsign           */
-  S_ST( 's',	3,      574,     0 ), /*   573 ntpsignd          */
-  S_ST( 'o',	3,      575,     0 ), /*   574 ntpsignds         */
-  S_ST( 'c',	3,      576,     0 ), /*   575 ntpsigndso        */
-  S_ST( 'k',	3,      577,     0 ), /*   576 ntpsigndsoc       */
-  S_ST( 'e',	3,      369,     0 ), /*   577 ntpsigndsock      */
-  S_ST( 'o',	3,      579,   526 ), /*   578                   */
-  S_ST( 'r',	3,      580,     0 ), /*   579 o                 */
-  S_ST( 'p',	3,      581,     0 ), /*   580 or                */
-  S_ST( 'h',	3,      582,     0 ), /*   581 orp               */
-  S_ST( 'a',	3,      370,     0 ), /*   582 orph              */
-  S_ST( 'w',	3,      584,     0 ), /*   583 orphan            */
-  S_ST( 'a',	3,      585,     0 ), /*   584 orphanw           */
-  S_ST( 'i',	3,      371,     0 ), /*   585 orphanwa          */
-  S_ST( 'p',	3,      383,   578 ), /*   586                   */
-  S_ST( 'a',	3,      588,     0 ), /*   587 p                 */
-  S_ST( 'n',	3,      589,     0 ), /*   588 pa                */
-  S_ST( 'i',	3,      372,     0 ), /*   589 pan               */
-  S_ST( 'e',	3,      591,   587 ), /*   590 p                 */
-  S_ST( 'e',	3,      373,     0 ), /*   591 pe                */
-  S_ST( 's',	3,      593,     0 ), /*   592 peer              */
-  S_ST( 't',	3,      594,     0 ), /*   593 peers             */
-  S_ST( 'a',	3,      595,     0 ), /*   594 peerst            */
-  S_ST( 't',	3,      374,     0 ), /*   595 peersta           */
-  S_ST( 'h',	3,      597,   590 ), /*   596 p                 */
-  S_ST( 'o',	3,      598,     0 ), /*   597 ph                */
-  S_ST( 'n',	3,      375,     0 ), /*   598 pho               */
-  S_ST( 'i',	3,      376,   596 ), /*   599 p                 */
-  S_ST( 'f',	3,      601,     0 ), /*   600 pid               */
-  S_ST( 'i',	3,      602,     0 ), /*   601 pidf              */
-  S_ST( 'l',	3,      377,     0 ), /*   602 pidfi             */
-  S_ST( 'o',	3,      605,   599 ), /*   603 p                 */
-  S_ST( 'o',	3,      378,     0 ), /*   604 po                */
-  S_ST( 'r',	3,      379,   604 ), /*   605 po                */
-  S_ST( 'r',	3,      613,   603 ), /*   606 p                 */
-  S_ST( 'e',	3,      611,     0 ), /*   607 pr                */
-  S_ST( 'e',	3,      609,     0 ), /*   608 pre               */
-  S_ST( 'm',	3,      610,     0 ), /*   609 pree              */
-  S_ST( 'p',	3,      380,     0 ), /*   610 preem             */
-  S_ST( 'f',	3,      612,   608 ), /*   611 pre               */
-  S_ST( 'e',	3,      381,     0 ), /*   612 pref              */
-  S_ST( 'o',	3,      626,   607 ), /*   613 pr                */
-  S_ST( 'c',	3,      615,     0 ), /*   614 pro               */
-  S_ST( '_',	3,      616,     0 ), /*   615 proc              */
-  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,      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,      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             */
-  S_ST( 't',	3,      630,     0 ), /*   629 protos            */
-  S_ST( 'a',	3,      631,     0 ), /*   630 protost           */
-  S_ST( 't',	3,      382,     0 ), /*   631 protosta          */
-  S_ST( 'q',	3,      633,   586 ), /*   632                   */
-  S_ST( 'o',	3,      384,     0 ), /*   633 q                 */
-  S_ST( 'r',	3,      646,   632 ), /*   634                   */
-  S_ST( 'a',	3,      641,     0 ), /*   635 r                 */
-  S_ST( 'n',	3,      637,     0 ), /*   636 ra                */
-  S_ST( 'd',	3,      638,     0 ), /*   637 ran               */
-  S_ST( 'f',	3,      639,     0 ), /*   638 rand              */
-  S_ST( 'i',	3,      640,     0 ), /*   639 randf             */
-  S_ST( 'l',	3,      385,     0 ), /*   640 randfi            */
-  S_ST( 'w',	3,      642,   636 ), /*   641 ra                */
-  S_ST( 's',	3,      643,     0 ), /*   642 raw               */
-  S_ST( 't',	3,      644,     0 ), /*   643 raws              */
-  S_ST( 'a',	3,      645,     0 ), /*   644 rawst             */
-  S_ST( 't',	3,      386,     0 ), /*   645 rawsta            */
-  S_ST( 'e',	3,      662,   635 ), /*   646 r                 */
-  S_ST( 'f',	3,      648,     0 ), /*   647 re                */
-  S_ST( 'i',	3,      387,     0 ), /*   648 ref               */
-  S_ST( 'q',	3,      650,   647 ), /*   649 re                */
-  S_ST( 'u',	3,      651,     0 ), /*   650 req               */
-  S_ST( 'e',	3,      652,     0 ), /*   651 requ              */
-  S_ST( 's',	3,      653,     0 ), /*   652 reque             */
-  S_ST( 't',	3,      654,     0 ), /*   653 reques            */
-  S_ST( 'k',	3,      655,     0 ), /*   654 request           */
-  S_ST( 'e',	3,      388,     0 ), /*   655 requestk          */
-  S_ST( 's',	3,      658,   649 ), /*   656 re                */
-  S_ST( 'e',	3,      389,     0 ), /*   657 res               */
-  S_ST( 't',	3,      659,   657 ), /*   658 res               */
-  S_ST( 'r',	3,      660,     0 ), /*   659 rest              */
-  S_ST( 'i',	3,      661,     0 ), /*   660 restr             */
-  S_ST( 'c',	3,      390,     0 ), /*   661 restri            */
-  S_ST( 'v',	3,      663,   656 ), /*   662 re                */
-  S_ST( 'o',	3,      664,     0 ), /*   663 rev               */
-  S_ST( 'k',	3,      391,     0 ), /*   664 revo              */
-  S_ST( 's',	3,      728,   634 ), /*   665                   */
-  S_ST( 'a',	3,      667,     0 ), /*   666 s                 */
-  S_ST( 'v',	3,      668,     0 ), /*   667 sa                */
-  S_ST( 'e',	3,      669,     0 ), /*   668 sav               */
-  S_ST( 'c',	3,      670,     0 ), /*   669 save              */
-  S_ST( 'o',	3,      671,     0 ), /*   670 savec             */
-  S_ST( 'n',	3,      672,     0 ), /*   671 saveco            */
-  S_ST( 'f',	3,      673,     0 ), /*   672 savecon           */
-  S_ST( 'i',	3,      674,     0 ), /*   673 saveconf          */
-  S_ST( 'g',	3,      675,     0 ), /*   674 saveconfi         */
-  S_ST( 'd',	3,      676,     0 ), /*   675 saveconfig        */
-  S_ST( 'i',	3,      392,     0 ), /*   676 saveconfigd       */
-  S_ST( 'e',	3,      687,   666 ), /*   677 s                 */
-  S_ST( 'r',	3,      679,     0 ), /*   678 se                */
-  S_ST( 'v',	3,      680,     0 ), /*   679 ser               */
-  S_ST( 'e',	3,      393,     0 ), /*   680 serv              */
-  S_ST( '_',	3,      682,     0 ), /*   681 server            */
-  S_ST( 'o',	3,      683,     0 ), /*   682 server_           */
-  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,      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              */
-  S_ST( 'i',	3,      691,   677 ), /*   690 s                 */
-  S_ST( 'm',	3,      692,     0 ), /*   691 si                */
-  S_ST( 'u',	3,      693,     0 ), /*   692 sim               */
-  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,   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        */
-  S_ST( 'd',	3,      701,     0 ), /*   700 simulation_       */
-  S_ST( 'u',	3,      702,     0 ), /*   701 simulation_d      */
-  S_ST( 'r',	3,      703,     0 ), /*   702 simulation_du     */
-  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,      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               */
-  S_ST( 'c',	3,      395,     0 ), /*   710 sour              */
-  S_ST( 't',	3,      724,   707 ), /*   711 s                 */
-  S_ST( 'a',	3,      713,     0 ), /*   712 st                */
-  S_ST( 't',	3,      397,     0 ), /*   713 sta               */
-  S_ST( 'i',	3,      715,     0 ), /*   714 stat              */
-  S_ST( 's',	3,      716,     0 ), /*   715 stati             */
-  S_ST( 't',	3,      717,     0 ), /*   716 statis            */
-  S_ST( 'i',	3,      718,     0 ), /*   717 statist           */
-  S_ST( 'c',	3,      396,     0 ), /*   718 statisti          */
-  S_ST( 'd',	3,      720,     0 ), /*   719 stats             */
-  S_ST( 'i',	3,      398,     0 ), /*   720 statsd            */
-  S_ST( 'e',	3,      399,   712 ), /*   721 st                */
-  S_ST( 'o',	3,      723,     0 ), /*   722 step              */
-  S_ST( 'u',	3,      400,     0 ), /*   723 stepo             */
-  S_ST( 'r',	3,      725,   721 ), /*   724 st                */
-  S_ST( 'a',	3,      726,     0 ), /*   725 str               */
-  S_ST( 't',	3,      727,     0 ), /*   726 stra              */
-  S_ST( 'u',	3,      401,     0 ), /*   727 strat             */
-  S_ST( 'y',	3,      403,   711 ), /*   728 s                 */
-  S_ST( 's',	3,      730,     0 ), /*   729 sys               */
-  S_ST( 't',	3,      731,     0 ), /*   730 syss              */
-  S_ST( 'a',	3,      732,     0 ), /*   731 sysst             */
-  S_ST( 't',	3,      404,     0 ), /*   732 syssta            */
-  S_ST( 't',	3,      759,   665 ), /*   733                   */
-  S_ST( 'i',	3,      745,     0 ), /*   734 t                 */
-  S_ST( 'c',	3,      405,     0 ), /*   735 ti                */
-  S_ST( 'm',	3,      738,   735 ), /*   736 ti                */
-  S_ST( 'e',	3,      408,     0 ), /*   737 tim               */
-  S_ST( 'i',	3,      739,   737 ), /*   738 tim               */
-  S_ST( 'n',	3,      740,     0 ), /*   739 timi              */
-  S_ST( 'g',	3,      741,     0 ), /*   740 timin             */
-  S_ST( 's',	3,      742,     0 ), /*   741 timing            */
-  S_ST( 't',	3,      743,     0 ), /*   742 timings           */
-  S_ST( 'a',	3,      744,     0 ), /*   743 timingst          */
-  S_ST( 't',	3,      409,     0 ), /*   744 timingsta         */
-  S_ST( 'n',	3,      746,   736 ), /*   745 ti                */
-  S_ST( 'k',	3,      747,     0 ), /*   746 tin               */
-  S_ST( 'e',	3,      410,     0 ), /*   747 tink              */
-  S_ST( 'o',	3,      411,   734 ), /*   748 t                 */
-  S_ST( 'r',	3,      751,   748 ), /*   749 t                 */
-  S_ST( 'a',	3,      412,     0 ), /*   750 tr                */
-  S_ST( 'u',	3,      752,   750 ), /*   751 tr                */
-  S_ST( 's',	3,      753,   413 ), /*   752 tru               */
-  S_ST( 't',	3,      754,     0 ), /*   753 trus              */
-  S_ST( 'e',	3,      755,     0 ), /*   754 trust             */
-  S_ST( 'd',	3,      756,     0 ), /*   755 truste            */
-  S_ST( 'k',	3,      757,     0 ), /*   756 trusted           */
-  S_ST( 'e',	3,      414,     0 ), /*   757 trustedk          */
-  S_ST( 't',	3,      415,   749 ), /*   758 t                 */
-  S_ST( 'y',	3,      760,   758 ), /*   759 t                 */
-  S_ST( 'p',	3,      416,     0 ), /*   760 ty                */
-  S_ST( 'u',	3,      762,   733 ), /*   761                   */
-  S_ST( 'n',	3,      768,     0 ), /*   762 u                 */
-  S_ST( 'c',	3,      764,     0 ), /*   763 un                */
-  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,      418,     0 ), /*   767 unconf            */
-  S_ST( 'p',	3,      769,   763 ), /*   768 un                */
-  S_ST( 'e',	3,      770,     0 ), /*   769 unp               */
-  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,      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,      434,     0 ), /*   781 wand              */
-  S_ST( 'e',	3,      783,   778 ), /*   782 w                 */
-  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,      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,      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,      425,     0 )  /*   797 ye                */
+  S_ST( 'e',	0,      352,     0 ), /*   351 T_Mode            */
+  S_ST( '7',	0,        0,     0 ), /*   352 T_Mode7           */
+  S_ST( 'r',	0,        0,     0 ), /*   353 T_Monitor         */
+  S_ST( 'h',	0,        0,     0 ), /*   354 T_Month           */
+  S_ST( 'u',	0,        0,     0 ), /*   355 T_Mru             */
+  S_ST( 't',	2,        0,     0 ), /*   356 T_Multicastclient */
+  S_ST( 'c',	0,        0,     0 ), /*   357 T_Nic             */
+  S_ST( 'k',	0,        0,     0 ), /*   358 T_Nolink          */
+  S_ST( 'y',	0,        0,     0 ), /*   359 T_Nomodify        */
+  S_ST( 'e',	0,        0,     0 ), /*   360 T_None            */
+  S_ST( 'e',	0,        0,     0 ), /*   361 T_Nonvolatile     */
+  S_ST( 'r',	0,        0,     0 ), /*   362 T_Nopeer          */
+  S_ST( 'y',	0,        0,     0 ), /*   363 T_Noquery         */
+  S_ST( 't',	0,        0,     0 ), /*   364 T_Noselect        */
+  S_ST( 'e',	0,        0,     0 ), /*   365 T_Noserve         */
+  S_ST( 'p',	0,        0,     0 ), /*   366 T_Notrap          */
+  S_ST( 't',	0,        0,     0 ), /*   367 T_Notrust         */
+  S_ST( 'p',	0,      569,     0 ), /*   368 T_Ntp             */
+  S_ST( 't',	0,        0,     0 ), /*   369 T_Ntpport         */
+  S_ST( 't',	1,        0,     0 ), /*   370 T_NtpSignDsocket  */
+  S_ST( 'n',	0,      584,     0 ), /*   371 T_Orphan          */
+  S_ST( 't',	0,        0,     0 ), /*   372 T_Orphanwait      */
+  S_ST( 'c',	0,        0,     0 ), /*   373 T_Panic           */
+  S_ST( 'r',	1,      593,     0 ), /*   374 T_Peer            */
+  S_ST( 's',	0,        0,     0 ), /*   375 T_Peerstats       */
+  S_ST( 'e',	2,        0,     0 ), /*   376 T_Phone           */
+  S_ST( 'd',	0,      601,     0 ), /*   377 T_Pid             */
+  S_ST( 'e',	1,        0,     0 ), /*   378 T_Pidfile         */
+  S_ST( 'l',	1,        0,     0 ), /*   379 T_Pool            */
+  S_ST( 't',	0,        0,     0 ), /*   380 T_Port            */
+  S_ST( 't',	0,        0,     0 ), /*   381 T_Preempt         */
+  S_ST( 'r',	0,        0,     0 ), /*   382 T_Prefer          */
+  S_ST( 's',	0,        0,     0 ), /*   383 T_Protostats      */
+  S_ST( 'w',	1,        0,   607 ), /*   384 T_Pw              */
+  S_ST( 's',	0,        0,     0 ), /*   385 T_Qos             */
+  S_ST( 'e',	1,        0,     0 ), /*   386 T_Randfile        */
+  S_ST( 's',	0,        0,     0 ), /*   387 T_Rawstats        */
+  S_ST( 'd',	1,        0,     0 ), /*   388 T_Refid           */
+  S_ST( 'y',	0,        0,     0 ), /*   389 T_Requestkey      */
+  S_ST( 't',	0,        0,     0 ), /*   390 T_Reset           */
+  S_ST( 't',	0,        0,     0 ), /*   391 T_Restrict        */
+  S_ST( 'e',	0,        0,     0 ), /*   392 T_Revoke          */
+  S_ST( 'r',	1,        0,     0 ), /*   393 T_Saveconfigdir   */
+  S_ST( 'r',	1,      682,     0 ), /*   394 T_Server          */
+  S_ST( 'r',	1,        0,     0 ), /*   395 T_Setvar          */
+  S_ST( 'e',	0,        0,     0 ), /*   396 T_Source          */
+  S_ST( 's',	0,        0,     0 ), /*   397 T_Statistics      */
+  S_ST( 's',	0,      720,   715 ), /*   398 T_Stats           */
+  S_ST( 'r',	1,        0,     0 ), /*   399 T_Statsdir        */
+  S_ST( 'p',	0,      723,     0 ), /*   400 T_Step            */
+  S_ST( 't',	0,        0,     0 ), /*   401 T_Stepout         */
+  S_ST( 'm',	0,        0,     0 ), /*   402 T_Stratum         */
+  S_ST( 't',	3,      333,     0 ), /*   403 loopsta           */
+  S_ST( 's',	0,      730,     0 ), /*   404 T_Sys             */
+  S_ST( 's',	0,        0,     0 ), /*   405 T_Sysstats        */
+  S_ST( 'k',	0,        0,     0 ), /*   406 T_Tick            */
+  S_ST( '1',	0,        0,     0 ), /*   407 T_Time1           */
+  S_ST( '2',	0,        0,   407 ), /*   408 T_Time2           */
+  S_ST( 'r',	0,        0,   408 ), /*   409 T_Timer           */
+  S_ST( 's',	0,        0,     0 ), /*   410 T_Timingstats     */
+  S_ST( 'r',	0,        0,     0 ), /*   411 T_Tinker          */
+  S_ST( 's',	0,        0,     0 ), /*   412 T_Tos             */
+  S_ST( 'p',	1,        0,     0 ), /*   413 T_Trap            */
+  S_ST( 'e',	0,        0,     0 ), /*   414 T_True            */
+  S_ST( 'y',	0,        0,     0 ), /*   415 T_Trustedkey      */
+  S_ST( 'l',	0,        0,     0 ), /*   416 T_Ttl             */
+  S_ST( 'e',	0,        0,     0 ), /*   417 T_Type            */
+  S_ST( 'w',	3,      422,   257 ), /*   418 lo                */
+  S_ST( 'g',	1,        0,     0 ), /*   419 T_Unconfig        */
+  S_ST( 'r',	1,        0,     0 ), /*   420 T_Unpeer          */
+  S_ST( 'n',	0,        0,     0 ), /*   421 T_Version         */
+  S_ST( 'p',	3,      427,     0 ), /*   422 low               */
+  S_ST( 'k',	0,        0,     0 ), /*   423 T_Week            */
+  S_ST( 'd',	0,        0,     0 ), /*   424 T_Wildcard        */
+  S_ST( 'e',	0,        0,     0 ), /*   425 T_Xleave          */
+  S_ST( 'r',	0,        0,     0 ), /*   426 T_Year            */
+  S_ST( 'r',	3,      428,     0 ), /*   427 lowp              */
+  S_ST( 'i',	3,      439,     0 ), /*   428 lowpr             */
+  S_ST( 'e',	0,        0,     0 ), /*   429 T_Simulate        */
+  S_ST( 'y',	0,        0,     0 ), /*   430 T_Beep_Delay      */
+  S_ST( 'n',	0,        0,     0 ), /*   431 T_Sim_Duration    */
+  S_ST( 't',	0,        0,     0 ), /*   432 T_Server_Offset   */
+  S_ST( 'n',	0,        0,     0 ), /*   433 T_Duration        */
+  S_ST( 't',	0,        0,     0 ), /*   434 T_Freq_Offset     */
+  S_ST( 'r',	0,        0,     0 ), /*   435 T_Wander          */
+  S_ST( 'r',	0,        0,     0 ), /*   436 T_Jitter          */
+  S_ST( 'y',	0,        0,     0 ), /*   437 T_Prop_Delay      */
+  S_ST( 'y',	0,        0,     0 ), /*   438 T_Proc_Delay      */
+  S_ST( 'o',	3,      440,     0 ), /*   439 lowpri            */
+  S_ST( 't',	3,      441,     0 ), /*   440 lowprio           */
+  S_ST( 'r',	3,      442,     0 ), /*   441 lowpriot          */
+  S_ST( 'a',	3,      334,     0 ), /*   442 lowpriotr         */
+  S_ST( 'm',	3,      514,   231 ), /*   443                   */
+  S_ST( 'a',	3,      462,     0 ), /*   444 m                 */
+  S_ST( 'n',	3,      446,     0 ), /*   445 ma                */
+  S_ST( 'y',	3,      447,     0 ), /*   446 man               */
+  S_ST( 'c',	3,      448,     0 ), /*   447 many              */
+  S_ST( 'a',	3,      449,     0 ), /*   448 manyc             */
+  S_ST( 's',	3,      450,     0 ), /*   449 manyca            */
+  S_ST( 't',	3,      456,     0 ), /*   450 manycas           */
+  S_ST( 'c',	3,      452,     0 ), /*   451 manycast          */
+  S_ST( 'l',	3,      453,     0 ), /*   452 manycastc         */
+  S_ST( 'i',	3,      454,     0 ), /*   453 manycastcl        */
+  S_ST( 'e',	3,      455,     0 ), /*   454 manycastcli       */
+  S_ST( 'n',	3,      335,     0 ), /*   455 manycastclie      */
+  S_ST( 's',	3,      457,   451 ), /*   456 manycast          */
+  S_ST( 'e',	3,      458,     0 ), /*   457 manycasts         */
+  S_ST( 'r',	3,      459,     0 ), /*   458 manycastse        */
+  S_ST( 'v',	3,      460,     0 ), /*   459 manycastser       */
+  S_ST( 'e',	3,      336,     0 ), /*   460 manycastserv      */
+  S_ST( 's',	3,      337,   445 ), /*   461 ma                */
+  S_ST( 'x',	3,      477,   461 ), /*   462 ma                */
+  S_ST( 'a',	3,      464,     0 ), /*   463 max               */
+  S_ST( 'g',	3,      338,     0 ), /*   464 maxa              */
+  S_ST( 'c',	3,      466,   463 ), /*   465 max               */
+  S_ST( 'l',	3,      467,     0 ), /*   466 maxc              */
+  S_ST( 'o',	3,      468,     0 ), /*   467 maxcl             */
+  S_ST( 'c',	3,      339,     0 ), /*   468 maxclo            */
+  S_ST( 'd',	3,      473,   465 ), /*   469 max               */
+  S_ST( 'e',	3,      471,     0 ), /*   470 maxd              */
+  S_ST( 'p',	3,      472,     0 ), /*   471 maxde             */
+  S_ST( 't',	3,      340,     0 ), /*   472 maxdep            */
+  S_ST( 'i',	3,      474,   470 ), /*   473 maxd              */
+  S_ST( 's',	3,      341,     0 ), /*   474 maxdi             */
+  S_ST( 'm',	3,      476,   469 ), /*   475 max               */
+  S_ST( 'e',	3,      342,     0 ), /*   476 maxm              */
+  S_ST( 'p',	3,      478,   475 ), /*   477 max               */
+  S_ST( 'o',	3,      479,     0 ), /*   478 maxp              */
+  S_ST( 'l',	3,      343,     0 ), /*   479 maxpo             */
+  S_ST( 'e',	3,      344,   444 ), /*   480 m                 */
+  S_ST( 'i',	3,      482,   480 ), /*   481 m                 */
+  S_ST( 'n',	3,      499,     0 ), /*   482 mi                */
+  S_ST( 'c',	3,      484,     0 ), /*   483 min               */
+  S_ST( 'l',	3,      485,     0 ), /*   484 minc              */
+  S_ST( 'o',	3,      486,     0 ), /*   485 mincl             */
+  S_ST( 'c',	3,      345,     0 ), /*   486 minclo            */
+  S_ST( 'd',	3,      491,   483 ), /*   487 min               */
+  S_ST( 'e',	3,      489,     0 ), /*   488 mind              */
+  S_ST( 'p',	3,      490,     0 ), /*   489 minde             */
+  S_ST( 't',	3,      346,     0 ), /*   490 mindep            */
+  S_ST( 'i',	3,      492,   488 ), /*   491 mind              */
+  S_ST( 's',	3,      347,     0 ), /*   492 mindi             */
+  S_ST( 'i',	3,      494,   487 ), /*   493 min               */
+  S_ST( 'm',	3,      495,     0 ), /*   494 mini              */
+  S_ST( 'u',	3,      348,     0 ), /*   495 minim             */
+  S_ST( 'p',	3,      497,   493 ), /*   496 min               */
+  S_ST( 'o',	3,      498,     0 ), /*   497 minp              */
+  S_ST( 'l',	3,      349,     0 ), /*   498 minpo             */
+  S_ST( 's',	3,      500,   496 ), /*   499 min               */
+  S_ST( 'a',	3,      501,     0 ), /*   500 mins              */
+  S_ST( 'n',	3,      350,     0 ), /*   501 minsa             */
+  S_ST( 'o',	3,      504,   481 ), /*   502 m                 */
+  S_ST( 'd',	3,      351,     0 ), /*   503 mo                */
+  S_ST( 'n',	3,      508,   503 ), /*   504 mo                */
+  S_ST( 'i',	3,      506,     0 ), /*   505 mon               */
+  S_ST( 't',	3,      507,     0 ), /*   506 moni              */
+  S_ST( 'o',	3,      353,     0 ), /*   507 monit             */
+  S_ST( 't',	3,      354,   505 ), /*   508 mon               */
+  S_ST( 'r',	3,      355,   502 ), /*   509 m                 */
+  S_ST( 's',	3,      511,   509 ), /*   510 m                 */
+  S_ST( 's',	3,      512,     0 ), /*   511 ms                */
+  S_ST( 'n',	3,      513,     0 ), /*   512 mss               */
+  S_ST( 't',	3,      326,     0 ), /*   513 mssn              */
+  S_ST( 'u',	3,      515,   510 ), /*   514 m                 */
+  S_ST( 'l',	3,      516,     0 ), /*   515 mu                */
+  S_ST( 't',	3,      517,     0 ), /*   516 mul               */
+  S_ST( 'i',	3,      518,     0 ), /*   517 mult              */
+  S_ST( 'c',	3,      519,     0 ), /*   518 multi             */
+  S_ST( 'a',	3,      520,     0 ), /*   519 multic            */
+  S_ST( 's',	3,      521,     0 ), /*   520 multica           */
+  S_ST( 't',	3,      522,     0 ), /*   521 multicas          */
+  S_ST( 'c',	3,      523,     0 ), /*   522 multicast         */
+  S_ST( 'l',	3,      524,     0 ), /*   523 multicastc        */
+  S_ST( 'i',	3,      525,     0 ), /*   524 multicastcl       */
+  S_ST( 'e',	3,      526,     0 ), /*   525 multicastcli      */
+  S_ST( 'n',	3,      356,     0 ), /*   526 multicastclie     */
+  S_ST( 'n',	3,      565,   443 ), /*   527                   */
+  S_ST( 'i',	3,      357,     0 ), /*   528 n                 */
+  S_ST( 'o',	3,      560,   528 ), /*   529 n                 */
+  S_ST( 'l',	3,      531,     0 ), /*   530 no                */
+  S_ST( 'i',	3,      532,     0 ), /*   531 nol               */
+  S_ST( 'n',	3,      358,     0 ), /*   532 noli              */
+  S_ST( 'm',	3,      534,   530 ), /*   533 no                */
+  S_ST( 'o',	3,      535,     0 ), /*   534 nom               */
+  S_ST( 'd',	3,      536,     0 ), /*   535 nomo              */
+  S_ST( 'i',	3,      537,     0 ), /*   536 nomod             */
+  S_ST( 'f',	3,      359,     0 ), /*   537 nomodi            */
+  S_ST( 'n',	3,      539,   533 ), /*   538 no                */
+  S_ST( 'v',	3,      540,   360 ), /*   539 non               */
+  S_ST( 'o',	3,      541,     0 ), /*   540 nonv              */
+  S_ST( 'l',	3,      542,     0 ), /*   541 nonvo             */
+  S_ST( 'a',	3,      543,     0 ), /*   542 nonvol            */
+  S_ST( 't',	3,      544,     0 ), /*   543 nonvola           */
+  S_ST( 'i',	3,      545,     0 ), /*   544 nonvolat          */
+  S_ST( 'l',	3,      361,     0 ), /*   545 nonvolati         */
+  S_ST( 'p',	3,      547,   538 ), /*   546 no                */
+  S_ST( 'e',	3,      548,     0 ), /*   547 nop               */
+  S_ST( 'e',	3,      362,     0 ), /*   548 nope              */
+  S_ST( 'q',	3,      550,   546 ), /*   549 no                */
+  S_ST( 'u',	3,      551,     0 ), /*   550 noq               */
+  S_ST( 'e',	3,      552,     0 ), /*   551 noqu              */
+  S_ST( 'r',	3,      363,     0 ), /*   552 noque             */
+  S_ST( 's',	3,      554,   549 ), /*   553 no                */
+  S_ST( 'e',	3,      558,     0 ), /*   554 nos               */
+  S_ST( 'l',	3,      556,     0 ), /*   555 nose              */
+  S_ST( 'e',	3,      557,     0 ), /*   556 nosel             */
+  S_ST( 'c',	3,      364,     0 ), /*   557 nosele            */
+  S_ST( 'r',	3,      559,   555 ), /*   558 nose              */
+  S_ST( 'v',	3,      365,     0 ), /*   559 noser             */
+  S_ST( 't',	3,      561,   553 ), /*   560 no                */
+  S_ST( 'r',	3,      563,     0 ), /*   561 not               */
+  S_ST( 'a',	3,      366,     0 ), /*   562 notr              */
+  S_ST( 'u',	3,      564,   562 ), /*   563 notr              */
+  S_ST( 's',	3,      367,     0 ), /*   564 notru             */
+  S_ST( 't',	3,      368,   529 ), /*   565 n                 */
+  S_ST( 'p',	3,      567,     0 ), /*   566 ntp               */
+  S_ST( 'o',	3,      568,     0 ), /*   567 ntpp              */
+  S_ST( 'r',	3,      369,     0 ), /*   568 ntppo             */
+  S_ST( 's',	3,      570,   566 ), /*   569 ntp               */
+  S_ST( 'i',	3,      571,     0 ), /*   570 ntps              */
+  S_ST( 'g',	3,      572,     0 ), /*   571 ntpsi             */
+  S_ST( 'n',	3,      573,     0 ), /*   572 ntpsig            */
+  S_ST( 'd',	3,      574,     0 ), /*   573 ntpsign           */
+  S_ST( 's',	3,      575,     0 ), /*   574 ntpsignd          */
+  S_ST( 'o',	3,      576,     0 ), /*   575 ntpsignds         */
+  S_ST( 'c',	3,      577,     0 ), /*   576 ntpsigndso        */
+  S_ST( 'k',	3,      578,     0 ), /*   577 ntpsigndsoc       */
+  S_ST( 'e',	3,      370,     0 ), /*   578 ntpsigndsock      */
+  S_ST( 'o',	3,      580,   527 ), /*   579                   */
+  S_ST( 'r',	3,      581,     0 ), /*   580 o                 */
+  S_ST( 'p',	3,      582,     0 ), /*   581 or                */
+  S_ST( 'h',	3,      583,     0 ), /*   582 orp               */
+  S_ST( 'a',	3,      371,     0 ), /*   583 orph              */
+  S_ST( 'w',	3,      585,     0 ), /*   584 orphan            */
+  S_ST( 'a',	3,      586,     0 ), /*   585 orphanw           */
+  S_ST( 'i',	3,      372,     0 ), /*   586 orphanwa          */
+  S_ST( 'p',	3,      384,   579 ), /*   587                   */
+  S_ST( 'a',	3,      589,     0 ), /*   588 p                 */
+  S_ST( 'n',	3,      590,     0 ), /*   589 pa                */
+  S_ST( 'i',	3,      373,     0 ), /*   590 pan               */
+  S_ST( 'e',	3,      592,   588 ), /*   591 p                 */
+  S_ST( 'e',	3,      374,     0 ), /*   592 pe                */
+  S_ST( 's',	3,      594,     0 ), /*   593 peer              */
+  S_ST( 't',	3,      595,     0 ), /*   594 peers             */
+  S_ST( 'a',	3,      596,     0 ), /*   595 peerst            */
+  S_ST( 't',	3,      375,     0 ), /*   596 peersta           */
+  S_ST( 'h',	3,      598,   591 ), /*   597 p                 */
+  S_ST( 'o',	3,      599,     0 ), /*   598 ph                */
+  S_ST( 'n',	3,      376,     0 ), /*   599 pho               */
+  S_ST( 'i',	3,      377,   597 ), /*   600 p                 */
+  S_ST( 'f',	3,      602,     0 ), /*   601 pid               */
+  S_ST( 'i',	3,      603,     0 ), /*   602 pidf              */
+  S_ST( 'l',	3,      378,     0 ), /*   603 pidfi             */
+  S_ST( 'o',	3,      606,   600 ), /*   604 p                 */
+  S_ST( 'o',	3,      379,     0 ), /*   605 po                */
+  S_ST( 'r',	3,      380,   605 ), /*   606 po                */
+  S_ST( 'r',	3,      614,   604 ), /*   607 p                 */
+  S_ST( 'e',	3,      612,     0 ), /*   608 pr                */
+  S_ST( 'e',	3,      610,     0 ), /*   609 pre               */
+  S_ST( 'm',	3,      611,     0 ), /*   610 pree              */
+  S_ST( 'p',	3,      381,     0 ), /*   611 preem             */
+  S_ST( 'f',	3,      613,   609 ), /*   612 pre               */
+  S_ST( 'e',	3,      382,     0 ), /*   613 pref              */
+  S_ST( 'o',	3,      627,   608 ), /*   614 pr                */
+  S_ST( 'c',	3,      616,     0 ), /*   615 pro               */
+  S_ST( '_',	3,      617,     0 ), /*   616 proc              */
+  S_ST( 'd',	3,      618,     0 ), /*   617 proc_             */
+  S_ST( 'e',	3,      619,     0 ), /*   618 proc_d            */
+  S_ST( 'l',	3,      620,     0 ), /*   619 proc_de           */
+  S_ST( 'a',	3,      438,     0 ), /*   620 proc_del          */
+  S_ST( 'p',	3,      622,   615 ), /*   621 pro               */
+  S_ST( '_',	3,      623,     0 ), /*   622 prop              */
+  S_ST( 'd',	3,      624,     0 ), /*   623 prop_             */
+  S_ST( 'e',	3,      625,     0 ), /*   624 prop_d            */
+  S_ST( 'l',	3,      626,     0 ), /*   625 prop_de           */
+  S_ST( 'a',	3,      437,     0 ), /*   626 prop_del          */
+  S_ST( 't',	3,      628,   621 ), /*   627 pro               */
+  S_ST( 'o',	3,      629,     0 ), /*   628 prot              */
+  S_ST( 's',	3,      630,     0 ), /*   629 proto             */
+  S_ST( 't',	3,      631,     0 ), /*   630 protos            */
+  S_ST( 'a',	3,      632,     0 ), /*   631 protost           */
+  S_ST( 't',	3,      383,     0 ), /*   632 protosta          */
+  S_ST( 'q',	3,      634,   587 ), /*   633                   */
+  S_ST( 'o',	3,      385,     0 ), /*   634 q                 */
+  S_ST( 'r',	3,      647,   633 ), /*   635                   */
+  S_ST( 'a',	3,      642,     0 ), /*   636 r                 */
+  S_ST( 'n',	3,      638,     0 ), /*   637 ra                */
+  S_ST( 'd',	3,      639,     0 ), /*   638 ran               */
+  S_ST( 'f',	3,      640,     0 ), /*   639 rand              */
+  S_ST( 'i',	3,      641,     0 ), /*   640 randf             */
+  S_ST( 'l',	3,      386,     0 ), /*   641 randfi            */
+  S_ST( 'w',	3,      643,   637 ), /*   642 ra                */
+  S_ST( 's',	3,      644,     0 ), /*   643 raw               */
+  S_ST( 't',	3,      645,     0 ), /*   644 raws              */
+  S_ST( 'a',	3,      646,     0 ), /*   645 rawst             */
+  S_ST( 't',	3,      387,     0 ), /*   646 rawsta            */
+  S_ST( 'e',	3,      663,   636 ), /*   647 r                 */
+  S_ST( 'f',	3,      649,     0 ), /*   648 re                */
+  S_ST( 'i',	3,      388,     0 ), /*   649 ref               */
+  S_ST( 'q',	3,      651,   648 ), /*   650 re                */
+  S_ST( 'u',	3,      652,     0 ), /*   651 req               */
+  S_ST( 'e',	3,      653,     0 ), /*   652 requ              */
+  S_ST( 's',	3,      654,     0 ), /*   653 reque             */
+  S_ST( 't',	3,      655,     0 ), /*   654 reques            */
+  S_ST( 'k',	3,      656,     0 ), /*   655 request           */
+  S_ST( 'e',	3,      389,     0 ), /*   656 requestk          */
+  S_ST( 's',	3,      659,   650 ), /*   657 re                */
+  S_ST( 'e',	3,      390,     0 ), /*   658 res               */
+  S_ST( 't',	3,      660,   658 ), /*   659 res               */
+  S_ST( 'r',	3,      661,     0 ), /*   660 rest              */
+  S_ST( 'i',	3,      662,     0 ), /*   661 restr             */
+  S_ST( 'c',	3,      391,     0 ), /*   662 restri            */
+  S_ST( 'v',	3,      664,   657 ), /*   663 re                */
+  S_ST( 'o',	3,      665,     0 ), /*   664 rev               */
+  S_ST( 'k',	3,      392,     0 ), /*   665 revo              */
+  S_ST( 's',	3,      729,   635 ), /*   666                   */
+  S_ST( 'a',	3,      668,     0 ), /*   667 s                 */
+  S_ST( 'v',	3,      669,     0 ), /*   668 sa                */
+  S_ST( 'e',	3,      670,     0 ), /*   669 sav               */
+  S_ST( 'c',	3,      671,     0 ), /*   670 save              */
+  S_ST( 'o',	3,      672,     0 ), /*   671 savec             */
+  S_ST( 'n',	3,      673,     0 ), /*   672 saveco            */
+  S_ST( 'f',	3,      674,     0 ), /*   673 savecon           */
+  S_ST( 'i',	3,      675,     0 ), /*   674 saveconf          */
+  S_ST( 'g',	3,      676,     0 ), /*   675 saveconfi         */
+  S_ST( 'd',	3,      677,     0 ), /*   676 saveconfig        */
+  S_ST( 'i',	3,      393,     0 ), /*   677 saveconfigd       */
+  S_ST( 'e',	3,      688,   667 ), /*   678 s                 */
+  S_ST( 'r',	3,      680,     0 ), /*   679 se                */
+  S_ST( 'v',	3,      681,     0 ), /*   680 ser               */
+  S_ST( 'e',	3,      394,     0 ), /*   681 serv              */
+  S_ST( '_',	3,      683,     0 ), /*   682 server            */
+  S_ST( 'o',	3,      684,     0 ), /*   683 server_           */
+  S_ST( 'f',	3,      685,     0 ), /*   684 server_o          */
+  S_ST( 'f',	3,      686,     0 ), /*   685 server_of         */
+  S_ST( 's',	3,      687,     0 ), /*   686 server_off        */
+  S_ST( 'e',	3,      432,     0 ), /*   687 server_offs       */
+  S_ST( 't',	3,      689,   679 ), /*   688 se                */
+  S_ST( 'v',	3,      690,     0 ), /*   689 set               */
+  S_ST( 'a',	3,      395,     0 ), /*   690 setv              */
+  S_ST( 'i',	3,      692,   678 ), /*   691 s                 */
+  S_ST( 'm',	3,      693,     0 ), /*   692 si                */
+  S_ST( 'u',	3,      694,     0 ), /*   693 sim               */
+  S_ST( 'l',	3,      695,     0 ), /*   694 simu              */
+  S_ST( 'a',	3,      696,     0 ), /*   695 simul             */
+  S_ST( 't',	3,      697,     0 ), /*   696 simula            */
+  S_ST( 'i',	3,      698,   429 ), /*   697 simulat           */
+  S_ST( 'o',	3,      699,     0 ), /*   698 simulati          */
+  S_ST( 'n',	3,      700,     0 ), /*   699 simulatio         */
+  S_ST( '_',	3,      701,     0 ), /*   700 simulation        */
+  S_ST( 'd',	3,      702,     0 ), /*   701 simulation_       */
+  S_ST( 'u',	3,      703,     0 ), /*   702 simulation_d      */
+  S_ST( 'r',	3,      704,     0 ), /*   703 simulation_du     */
+  S_ST( 'a',	3,      705,     0 ), /*   704 simulation_dur    */
+  S_ST( 't',	3,      706,     0 ), /*   705 simulation_dura   */
+  S_ST( 'i',	3,      707,     0 ), /*   706 simulation_durat  */
+  S_ST( 'o',	3,      431,     0 ), /*   707 simulation_durati */
+  S_ST( 'o',	3,      709,   691 ), /*   708 s                 */
+  S_ST( 'u',	3,      710,     0 ), /*   709 so                */
+  S_ST( 'r',	3,      711,     0 ), /*   710 sou               */
+  S_ST( 'c',	3,      396,     0 ), /*   711 sour              */
+  S_ST( 't',	3,      725,   708 ), /*   712 s                 */
+  S_ST( 'a',	3,      714,     0 ), /*   713 st                */
+  S_ST( 't',	3,      398,     0 ), /*   714 sta               */
+  S_ST( 'i',	3,      716,     0 ), /*   715 stat              */
+  S_ST( 's',	3,      717,     0 ), /*   716 stati             */
+  S_ST( 't',	3,      718,     0 ), /*   717 statis            */
+  S_ST( 'i',	3,      719,     0 ), /*   718 statist           */
+  S_ST( 'c',	3,      397,     0 ), /*   719 statisti          */
+  S_ST( 'd',	3,      721,     0 ), /*   720 stats             */
+  S_ST( 'i',	3,      399,     0 ), /*   721 statsd            */
+  S_ST( 'e',	3,      400,   713 ), /*   722 st                */
+  S_ST( 'o',	3,      724,     0 ), /*   723 step              */
+  S_ST( 'u',	3,      401,     0 ), /*   724 stepo             */
+  S_ST( 'r',	3,      726,   722 ), /*   725 st                */
+  S_ST( 'a',	3,      727,     0 ), /*   726 str               */
+  S_ST( 't',	3,      728,     0 ), /*   727 stra              */
+  S_ST( 'u',	3,      402,     0 ), /*   728 strat             */
+  S_ST( 'y',	3,      404,   712 ), /*   729 s                 */
+  S_ST( 's',	3,      731,     0 ), /*   730 sys               */
+  S_ST( 't',	3,      732,     0 ), /*   731 syss              */
+  S_ST( 'a',	3,      733,     0 ), /*   732 sysst             */
+  S_ST( 't',	3,      405,     0 ), /*   733 syssta            */
+  S_ST( 't',	3,      760,   666 ), /*   734                   */
+  S_ST( 'i',	3,      746,     0 ), /*   735 t                 */
+  S_ST( 'c',	3,      406,     0 ), /*   736 ti                */
+  S_ST( 'm',	3,      739,   736 ), /*   737 ti                */
+  S_ST( 'e',	3,      409,     0 ), /*   738 tim               */
+  S_ST( 'i',	3,      740,   738 ), /*   739 tim               */
+  S_ST( 'n',	3,      741,     0 ), /*   740 timi              */
+  S_ST( 'g',	3,      742,     0 ), /*   741 timin             */
+  S_ST( 's',	3,      743,     0 ), /*   742 timing            */
+  S_ST( 't',	3,      744,     0 ), /*   743 timings           */
+  S_ST( 'a',	3,      745,     0 ), /*   744 timingst          */
+  S_ST( 't',	3,      410,     0 ), /*   745 timingsta         */
+  S_ST( 'n',	3,      747,   737 ), /*   746 ti                */
+  S_ST( 'k',	3,      748,     0 ), /*   747 tin               */
+  S_ST( 'e',	3,      411,     0 ), /*   748 tink              */
+  S_ST( 'o',	3,      412,   735 ), /*   749 t                 */
+  S_ST( 'r',	3,      752,   749 ), /*   750 t                 */
+  S_ST( 'a',	3,      413,     0 ), /*   751 tr                */
+  S_ST( 'u',	3,      753,   751 ), /*   752 tr                */
+  S_ST( 's',	3,      754,   414 ), /*   753 tru               */
+  S_ST( 't',	3,      755,     0 ), /*   754 trus              */
+  S_ST( 'e',	3,      756,     0 ), /*   755 trust             */
+  S_ST( 'd',	3,      757,     0 ), /*   756 truste            */
+  S_ST( 'k',	3,      758,     0 ), /*   757 trusted           */
+  S_ST( 'e',	3,      415,     0 ), /*   758 trustedk          */
+  S_ST( 't',	3,      416,   750 ), /*   759 t                 */
+  S_ST( 'y',	3,      761,   759 ), /*   760 t                 */
+  S_ST( 'p',	3,      417,     0 ), /*   761 ty                */
+  S_ST( 'u',	3,      763,   734 ), /*   762                   */
+  S_ST( 'n',	3,      769,     0 ), /*   763 u                 */
+  S_ST( 'c',	3,      765,     0 ), /*   764 un                */
+  S_ST( 'o',	3,      766,     0 ), /*   765 unc               */
+  S_ST( 'n',	3,      767,     0 ), /*   766 unco              */
+  S_ST( 'f',	3,      768,     0 ), /*   767 uncon             */
+  S_ST( 'i',	3,      419,     0 ), /*   768 unconf            */
+  S_ST( 'p',	3,      770,   764 ), /*   769 un                */
+  S_ST( 'e',	3,      771,     0 ), /*   770 unp               */
+  S_ST( 'e',	3,      420,     0 ), /*   771 unpe              */
+  S_ST( 'v',	3,      773,   762 ), /*   772                   */
+  S_ST( 'e',	3,      774,     0 ), /*   773 v                 */
+  S_ST( 'r',	3,      775,     0 ), /*   774 ve                */
+  S_ST( 's',	3,      776,     0 ), /*   775 ver               */
+  S_ST( 'i',	3,      777,     0 ), /*   776 vers              */
+  S_ST( 'o',	3,      421,     0 ), /*   777 versi             */
+  S_ST( 'w',	3,      785,   772 ), /*   778                   */
+  S_ST( 'a',	3,      780,     0 ), /*   779 w                 */
+  S_ST( 'n',	3,      781,     0 ), /*   780 wa                */
+  S_ST( 'd',	3,      782,     0 ), /*   781 wan               */
+  S_ST( 'e',	3,      435,     0 ), /*   782 wand              */
+  S_ST( 'e',	3,      784,   779 ), /*   783 w                 */
+  S_ST( 'e',	3,      423,     0 ), /*   784 we                */
+  S_ST( 'i',	3,      786,   783 ), /*   785 w                 */
+  S_ST( 'l',	3,      787,     0 ), /*   786 wi                */
+  S_ST( 'd',	3,      788,     0 ), /*   787 wil               */
+  S_ST( 'c',	3,      789,     0 ), /*   788 wild              */
+  S_ST( 'a',	3,      790,     0 ), /*   789 wildc             */
+  S_ST( 'r',	3,      424,     0 ), /*   790 wildca            */
+  S_ST( 'x',	3,      792,   778 ), /*   791                   */
+  S_ST( 'l',	3,      793,     0 ), /*   792 x                 */
+  S_ST( 'e',	3,      794,     0 ), /*   793 xl                */
+  S_ST( 'a',	3,      795,     0 ), /*   794 xle               */
+  S_ST( 'v',	3,      425,     0 ), /*   795 xlea              */
+  S_ST( 'y',	3,      797,   791 ), /*   796 [initial state]   */
+  S_ST( 'e',	3,      798,     0 ), /*   797 y                 */
+  S_ST( 'a',	3,      426,     0 )  /*   798 ye                */
 };
 

==== ntpd/ntp_parser.c ====
2011-10-31 04:40:02+00:00, davehart at shiny.ad.hartbrothers.com +831 -823
  Bison output

--- 1.76/ntpd/ntp_parser.c	2011-07-25 20:18:27 -04:00
+++ 1.77/ntpd/ntp_parser.c	2011-10-31 00:40:02 -04:00
@@ -222,92 +222,93 @@
      T_Minpoll = 349,
      T_Minsane = 350,
      T_Mode = 351,
-     T_Monitor = 352,
-     T_Month = 353,
-     T_Mru = 354,
-     T_Multicastclient = 355,
-     T_Nic = 356,
-     T_Nolink = 357,
-     T_Nomodify = 358,
-     T_None = 359,
-     T_Nonvolatile = 360,
-     T_Nopeer = 361,
-     T_Noquery = 362,
-     T_Noselect = 363,
-     T_Noserve = 364,
-     T_Notrap = 365,
-     T_Notrust = 366,
-     T_Ntp = 367,
-     T_Ntpport = 368,
-     T_NtpSignDsocket = 369,
-     T_Orphan = 370,
-     T_Orphanwait = 371,
-     T_Panic = 372,
-     T_Peer = 373,
-     T_Peerstats = 374,
-     T_Phone = 375,
-     T_Pid = 376,
-     T_Pidfile = 377,
-     T_Pool = 378,
-     T_Port = 379,
-     T_Preempt = 380,
-     T_Prefer = 381,
-     T_Protostats = 382,
-     T_Pw = 383,
-     T_Qos = 384,
-     T_Randfile = 385,
-     T_Rawstats = 386,
-     T_Refid = 387,
-     T_Requestkey = 388,
-     T_Reset = 389,
-     T_Restrict = 390,
-     T_Revoke = 391,
-     T_Saveconfigdir = 392,
-     T_Server = 393,
-     T_Setvar = 394,
-     T_Source = 395,
-     T_Statistics = 396,
-     T_Stats = 397,
-     T_Statsdir = 398,
-     T_Step = 399,
-     T_Stepout = 400,
-     T_Stratum = 401,
-     T_String = 402,
-     T_Sys = 403,
-     T_Sysstats = 404,
-     T_Tick = 405,
-     T_Time1 = 406,
-     T_Time2 = 407,
-     T_Timer = 408,
-     T_Timingstats = 409,
-     T_Tinker = 410,
-     T_Tos = 411,
-     T_Trap = 412,
-     T_True = 413,
-     T_Trustedkey = 414,
-     T_Ttl = 415,
-     T_Type = 416,
-     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
+     T_Mode7 = 352,
+     T_Monitor = 353,
+     T_Month = 354,
+     T_Mru = 355,
+     T_Multicastclient = 356,
+     T_Nic = 357,
+     T_Nolink = 358,
+     T_Nomodify = 359,
+     T_None = 360,
+     T_Nonvolatile = 361,
+     T_Nopeer = 362,
+     T_Noquery = 363,
+     T_Noselect = 364,
+     T_Noserve = 365,
+     T_Notrap = 366,
+     T_Notrust = 367,
+     T_Ntp = 368,
+     T_Ntpport = 369,
+     T_NtpSignDsocket = 370,
+     T_Orphan = 371,
+     T_Orphanwait = 372,
+     T_Panic = 373,
+     T_Peer = 374,
+     T_Peerstats = 375,
+     T_Phone = 376,
+     T_Pid = 377,
+     T_Pidfile = 378,
+     T_Pool = 379,
+     T_Port = 380,
+     T_Preempt = 381,
+     T_Prefer = 382,
+     T_Protostats = 383,
+     T_Pw = 384,
+     T_Qos = 385,
+     T_Randfile = 386,
+     T_Rawstats = 387,
+     T_Refid = 388,
+     T_Requestkey = 389,
+     T_Reset = 390,
+     T_Restrict = 391,
+     T_Revoke = 392,
+     T_Saveconfigdir = 393,
+     T_Server = 394,
+     T_Setvar = 395,
+     T_Source = 396,
+     T_Statistics = 397,
+     T_Stats = 398,
+     T_Statsdir = 399,
+     T_Step = 400,
+     T_Stepout = 401,
+     T_Stratum = 402,
+     T_String = 403,
+     T_Sys = 404,
+     T_Sysstats = 405,
+     T_Tick = 406,
+     T_Time1 = 407,
+     T_Time2 = 408,
+     T_Timer = 409,
+     T_Timingstats = 410,
+     T_Tinker = 411,
+     T_Tos = 412,
+     T_Trap = 413,
+     T_True = 414,
+     T_Trustedkey = 415,
+     T_Ttl = 416,
+     T_Type = 417,
+     T_U_int = 418,
+     T_Unconfig = 419,
+     T_Unpeer = 420,
+     T_Version = 421,
+     T_WanderThreshold = 422,
+     T_Week = 423,
+     T_Wildcard = 424,
+     T_Xleave = 425,
+     T_Year = 426,
+     T_Flag = 427,
+     T_EOC = 428,
+     T_Simulate = 429,
+     T_Beep_Delay = 430,
+     T_Sim_Duration = 431,
+     T_Server_Offset = 432,
+     T_Duration = 433,
+     T_Freq_Offset = 434,
+     T_Wander = 435,
+     T_Jitter = 436,
+     T_Prop_Delay = 437,
+     T_Proc_Delay = 438
    };
 #endif
 /* Tokens.  */
@@ -405,92 +406,93 @@
 #define T_Minpoll 349
 #define T_Minsane 350
 #define T_Mode 351
-#define T_Monitor 352
-#define T_Month 353
-#define T_Mru 354
-#define T_Multicastclient 355
-#define T_Nic 356
-#define T_Nolink 357
-#define T_Nomodify 358
-#define T_None 359
-#define T_Nonvolatile 360
-#define T_Nopeer 361
-#define T_Noquery 362
-#define T_Noselect 363
-#define T_Noserve 364
-#define T_Notrap 365
-#define T_Notrust 366
-#define T_Ntp 367
-#define T_Ntpport 368
-#define T_NtpSignDsocket 369
-#define T_Orphan 370
-#define T_Orphanwait 371
-#define T_Panic 372
-#define T_Peer 373
-#define T_Peerstats 374
-#define T_Phone 375
-#define T_Pid 376
-#define T_Pidfile 377
-#define T_Pool 378
-#define T_Port 379
-#define T_Preempt 380
-#define T_Prefer 381
-#define T_Protostats 382
-#define T_Pw 383
-#define T_Qos 384
-#define T_Randfile 385
-#define T_Rawstats 386
-#define T_Refid 387
-#define T_Requestkey 388
-#define T_Reset 389
-#define T_Restrict 390
-#define T_Revoke 391
-#define T_Saveconfigdir 392
-#define T_Server 393
-#define T_Setvar 394
-#define T_Source 395
-#define T_Statistics 396
-#define T_Stats 397
-#define T_Statsdir 398
-#define T_Step 399
-#define T_Stepout 400
-#define T_Stratum 401
-#define T_String 402
-#define T_Sys 403
-#define T_Sysstats 404
-#define T_Tick 405
-#define T_Time1 406
-#define T_Time2 407
-#define T_Timer 408
-#define T_Timingstats 409
-#define T_Tinker 410
-#define T_Tos 411
-#define T_Trap 412
-#define T_True 413
-#define T_Trustedkey 414
-#define T_Ttl 415
-#define T_Type 416
-#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
+#define T_Mode7 352
+#define T_Monitor 353
+#define T_Month 354
+#define T_Mru 355
+#define T_Multicastclient 356
+#define T_Nic 357
+#define T_Nolink 358
+#define T_Nomodify 359
+#define T_None 360
+#define T_Nonvolatile 361
+#define T_Nopeer 362
+#define T_Noquery 363
+#define T_Noselect 364
+#define T_Noserve 365
+#define T_Notrap 366
+#define T_Notrust 367
+#define T_Ntp 368
+#define T_Ntpport 369
+#define T_NtpSignDsocket 370
+#define T_Orphan 371
+#define T_Orphanwait 372
+#define T_Panic 373
+#define T_Peer 374
+#define T_Peerstats 375
+#define T_Phone 376
+#define T_Pid 377
+#define T_Pidfile 378
+#define T_Pool 379
+#define T_Port 380
+#define T_Preempt 381
+#define T_Prefer 382
+#define T_Protostats 383
+#define T_Pw 384
+#define T_Qos 385
+#define T_Randfile 386
+#define T_Rawstats 387
+#define T_Refid 388
+#define T_Requestkey 389
+#define T_Reset 390
+#define T_Restrict 391
+#define T_Revoke 392
+#define T_Saveconfigdir 393
+#define T_Server 394
+#define T_Setvar 395
+#define T_Source 396
+#define T_Statistics 397
+#define T_Stats 398
+#define T_Statsdir 399
+#define T_Step 400
+#define T_Stepout 401
+#define T_Stratum 402
+#define T_String 403
+#define T_Sys 404
+#define T_Sysstats 405
+#define T_Tick 406
+#define T_Time1 407
+#define T_Time2 408
+#define T_Timer 409
+#define T_Timingstats 410
+#define T_Tinker 411
+#define T_Tos 412
+#define T_Trap 413
+#define T_True 414
+#define T_Trustedkey 415
+#define T_Ttl 416
+#define T_Type 417
+#define T_U_int 418
+#define T_Unconfig 419
+#define T_Unpeer 420
+#define T_Version 421
+#define T_WanderThreshold 422
+#define T_Week 423
+#define T_Wildcard 424
+#define T_Xleave 425
+#define T_Year 426
+#define T_Flag 427
+#define T_EOC 428
+#define T_Simulate 429
+#define T_Beep_Delay 430
+#define T_Sim_Duration 431
+#define T_Server_Offset 432
+#define T_Duration 433
+#define T_Freq_Offset 434
+#define T_Wander 435
+#define T_Jitter 436
+#define T_Prop_Delay 437
+#define T_Proc_Delay 438
 
 
 
@@ -522,7 +524,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 526 "ntp_parser.c"
+#line 528 "ntp_parser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -534,7 +536,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 538 "ntp_parser.c"
+#line 540 "ntp_parser.c"
 
 #ifdef short
 # undef short
@@ -747,22 +749,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  193
+#define YYFINAL  195
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   563
+#define YYLAST   560
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  188
+#define YYNTOKENS  189
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  99
+#define YYNNTS  100
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  295
+#define YYNRULES  297
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  396
+#define YYNSTATES  398
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   437
+#define YYMAXUTOK   438
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -774,15 +776,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,
-     184,   185,     2,     2,     2,     2,     2,     2,     2,     2,
+     185,   186,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   183,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   184,     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,   186,     2,   187,     2,     2,     2,     2,
+       2,     2,     2,   187,     2,   188,     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,
@@ -813,7 +815,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,   182
+     175,   176,   177,   178,   179,   180,   181,   182,   183
 };
 
 #if YYDEBUG
@@ -840,130 +842,130 @@ static const yytype_uint16 yyprhs[] =
      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
+     446,   448,   450,   453,   456,   458,   461,   463,   465,   467,
+     469,   471,   473,   475,   477,   479,   482,   485,   488,   492,
+     494,   497,   500,   503,   506,   510,   513,   515,   517,   519,
+     521,   523,   525,   527,   529,   531,   533,   536,   537,   542,
+     544,   545,   546,   549,   552,   555,   558,   560,   562,   566,
+     570,   572,   574,   576,   578,   580,   582,   584,   586,   588,
+     591,   594,   596,   598,   600,   602,   604,   606,   608,   610,
+     613,   615,   618,   620,   622,   624,   630,   633,   635,   638,
+     640,   642,   644,   646,   648,   650,   656,   658,   662,   665,
+     669,   671,   673,   676,   678,   684,   689,   693,   696,   698,
+     705,   709,   712,   716,   718,   720,   722,   724
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     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,   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,
+     190,     0,    -1,   191,    -1,   191,   192,   173,    -1,   192,
+     173,    -1,     1,   173,    -1,    -1,   193,    -1,   206,    -1,
+     208,    -1,   209,    -1,   218,    -1,   226,    -1,   213,    -1,
+     235,    -1,   240,    -1,   245,    -1,   249,    -1,   275,    -1,
+     194,   195,   198,    -1,   139,    -1,   124,    -1,   119,    -1,
+      13,    -1,    80,    -1,   196,    -1,   197,   148,    -1,   148,
+      -1,    63,    -1,    65,    -1,    -1,   198,   199,    -1,   200,
+      -1,   202,    -1,   204,    -1,   201,    -1,     8,    -1,    16,
+      -1,    50,    -1,   109,    -1,   126,    -1,   127,    -1,   159,
+      -1,   170,    -1,   203,    58,    -1,   203,   163,    -1,    67,
+      -1,    94,    -1,    88,    -1,   161,    -1,    96,    -1,   166,
+      -1,   205,   148,    -1,    51,    -1,   207,   195,    -1,   164,
+      -1,   165,    -1,    14,    -1,    81,   272,    -1,   101,   272,
+      -1,     9,    58,    -1,    21,    58,    -1,    22,   210,    -1,
+      68,   148,    -1,    69,   148,    -1,   134,    58,    -1,   137,
+      58,    -1,   160,   268,    -1,   115,   148,    -1,    -1,   210,
+     211,    -1,   212,   148,    -1,   137,    58,    -1,    48,    -1,
+      51,    -1,   129,    -1,   131,    -1,    27,    -1,   157,   214,
+      -1,   214,   215,    -1,   215,    -1,   216,    58,    -1,   217,
+     274,    -1,    20,   273,    -1,    18,    -1,    45,    -1,   116,
+      -1,   117,    -1,    95,    -1,    12,    -1,    92,    -1,    86,
+      -1,    90,    -1,    84,    -1,   142,   219,    -1,   144,   148,
+      -1,    39,   220,   221,    -1,   219,   220,    -1,   220,    -1,
+      19,    -1,    23,    -1,    78,    -1,   120,    -1,   132,    -1,
+     150,    -1,   155,    -1,   128,    -1,    -1,   221,   222,    -1,
+      38,   148,    -1,   162,   225,    -1,   223,    -1,   224,    -1,
+      74,    -1,   103,    -1,    35,    -1,    28,    -1,   105,    -1,
+     122,    -1,    25,    -1,   168,    -1,    99,    -1,   171,    -1,
+       3,    -1,    29,   229,    -1,   100,   232,    -1,   136,   195,
+     227,    -1,   136,   196,    82,   196,   227,    -1,   136,    26,
+     227,    -1,   136,    63,    26,   227,    -1,   136,    65,    26,
+     227,    -1,   136,   141,   227,    -1,    -1,   227,   228,    -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,
+      79,    -1,   104,    -1,   107,    -1,   108,    -1,   110,    -1,
+     111,    -1,   112,    -1,   114,    -1,   166,    -1,   229,   230,
+      -1,   230,    -1,   231,    58,    -1,    10,    -1,    93,    -1,
+      98,    -1,   232,   233,    -1,   233,    -1,   234,    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,
+      85,    -1,    87,    -1,    91,    -1,    47,   195,   236,    -1,
+     236,   237,    -1,   237,    -1,   238,   274,    -1,   239,   273,
+      -1,   147,    58,    -1,   133,   148,    -1,   152,    -1,   153,
       -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
+     241,    -1,    28,   241,    -1,   241,   242,    -1,   242,    -1,
+     243,    -1,   244,    -1,     7,    -1,    11,    -1,    17,    -1,
+      66,    -1,    98,    -1,   113,    -1,    97,    -1,   143,    -1,
+     156,   246,    -1,   246,   247,    -1,   247,    -1,   248,   274,
+      -1,     5,    -1,    30,    -1,    46,    -1,    49,    -1,   118,
+      -1,   145,    -1,   146,    -1,   260,    -1,   264,    -1,   250,
+     274,    -1,   251,   148,    -1,   252,   148,    -1,    57,   148,
+     192,    -1,    36,    -1,    32,   253,    -1,    76,   258,    -1,
+     121,   271,    -1,   140,   254,    -1,   158,   196,   256,    -1,
+     161,   267,    -1,    15,    -1,   106,    -1,   151,    -1,    51,
+      -1,    72,    -1,   123,    -1,   130,    -1,    77,    -1,   138,
+      -1,   148,    -1,   148,    31,    -1,    -1,   148,   184,   148,
+     255,    -1,    26,    -1,    -1,    -1,   256,   257,    -1,   125,
+      58,    -1,    59,   196,    -1,   258,   259,    -1,   259,    -1,
+     148,    -1,   261,   263,   262,    -1,   261,   263,   148,    -1,
+      59,    -1,   102,    -1,     4,    -1,    62,    -1,    64,    -1,
+     169,    -1,    75,    -1,    52,    -1,    33,    -1,   135,   265,
+      -1,   265,   266,    -1,   266,    -1,     6,    -1,     7,    -1,
+      24,    -1,    61,    -1,    89,    -1,   149,    -1,   154,    -1,
+     267,    58,    -1,    58,    -1,   268,   269,    -1,   269,    -1,
+      58,    -1,   270,    -1,   185,    58,    34,    58,   186,    -1,
+     271,   148,    -1,   148,    -1,   272,   195,    -1,   195,    -1,
+      58,    -1,   159,    -1,    37,    -1,    58,    -1,    31,    -1,
+     276,   187,   277,   280,   188,    -1,   174,    -1,   277,   278,
+     173,    -1,   278,   173,    -1,   279,   184,   274,    -1,   175,
+      -1,   176,    -1,   280,   281,    -1,   281,    -1,   283,   187,
+     282,   284,   188,    -1,   177,   184,   274,   173,    -1,   139,
+     184,   195,    -1,   284,   285,    -1,   285,    -1,   178,   184,
+     274,   187,   286,   188,    -1,   286,   287,   173,    -1,   287,
+     173,    -1,   288,   184,   274,    -1,   179,    -1,   180,    -1,
+     181,    -1,   182,    -1,   183,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       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
+       0,   350,   350,   354,   355,   356,   370,   371,   372,   373,
+     374,   375,   376,   377,   378,   379,   380,   381,   382,   390,
+     400,   401,   402,   403,   404,   408,   409,   414,   419,   421,
+     427,   428,   436,   437,   438,   442,   447,   448,   449,   450,
+     451,   452,   453,   454,   458,   460,   465,   466,   467,   468,
+     469,   470,   474,   479,   488,   498,   499,   509,   511,   513,
+     524,   531,   533,   538,   540,   542,   544,   546,   548,   554,
+     555,   563,   565,   577,   578,   579,   580,   581,   590,   595,
+     600,   608,   610,   612,   617,   618,   619,   620,   621,   622,
+     626,   627,   628,   629,   638,   640,   649,   659,   664,   672,
+     673,   674,   675,   676,   677,   678,   679,   684,   685,   693,
+     703,   712,   727,   732,   733,   737,   738,   742,   743,   744,
+     745,   746,   747,   748,   757,   761,   765,   773,   781,   789,
+     804,   819,   832,   833,   841,   842,   843,   844,   845,   846,
+     847,   848,   849,   850,   851,   852,   853,   854,   858,   863,
+     871,   876,   877,   878,   882,   887,   895,   900,   901,   902,
+     903,   904,   905,   906,   907,   915,   925,   930,   938,   940,
+     942,   944,   949,   950,   954,   955,   956,   957,   965,   967,
+     972,   977,   985,   987,  1004,  1005,  1006,  1007,  1008,  1009,
+    1013,  1014,  1022,  1027,  1032,  1040,  1045,  1046,  1047,  1048,
+    1049,  1050,  1051,  1060,  1061,  1062,  1069,  1076,  1092,  1111,
+    1116,  1118,  1120,  1122,  1124,  1131,  1136,  1137,  1138,  1142,
+    1143,  1144,  1145,  1149,  1150,  1154,  1161,  1171,  1180,  1185,
+    1187,  1192,  1193,  1201,  1203,  1211,  1216,  1224,  1249,  1256,
+    1266,  1267,  1271,  1272,  1273,  1274,  1278,  1279,  1280,  1284,
+    1289,  1294,  1302,  1303,  1304,  1305,  1306,  1307,  1308,  1318,
+    1323,  1331,  1336,  1344,  1346,  1350,  1355,  1360,  1368,  1373,
+    1381,  1390,  1391,  1395,  1396,  1405,  1423,  1427,  1432,  1440,
+    1445,  1446,  1450,  1455,  1463,  1468,  1473,  1478,  1483,  1491,
+    1496,  1501,  1509,  1514,  1515,  1516,  1517,  1518
 };
 #endif
 
@@ -990,39 +992,40 @@ static const char *const yytname[] =
   "T_Manycastclient", "T_Manycastserver", "T_Mask", "T_Maxage",
   "T_Maxclock", "T_Maxdepth", "T_Maxdist", "T_Maxmem", "T_Maxpoll",
   "T_Mem", "T_Minclock", "T_Mindepth", "T_Mindist", "T_Minimum",
-  "T_Minpoll", "T_Minsane", "T_Mode", "T_Monitor", "T_Month", "T_Mru",
-  "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify", "T_None",
-  "T_Nonvolatile", "T_Nopeer", "T_Noquery", "T_Noselect", "T_Noserve",
-  "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport", "T_NtpSignDsocket",
-  "T_Orphan", "T_Orphanwait", "T_Panic", "T_Peer", "T_Peerstats",
-  "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port", "T_Preempt",
-  "T_Prefer", "T_Protostats", "T_Pw", "T_Qos", "T_Randfile", "T_Rawstats",
-  "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict", "T_Revoke",
-  "T_Saveconfigdir", "T_Server", "T_Setvar", "T_Source", "T_Statistics",
-  "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_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",
-  "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'",
-  "$accept", "configuration", "command_list", "command", "server_command",
-  "client_type", "address", "ip_address", "address_fam", "option_list",
-  "option", "option_flag", "option_flag_keyword", "option_int",
-  "option_int_keyword", "option_str", "option_str_keyword",
-  "unpeer_command", "unpeer_keyword", "other_mode_command",
-  "authentication_command", "crypto_command_list", "crypto_command",
-  "crypto_str_keyword", "orphan_mode_command", "tos_option_list",
-  "tos_option", "tos_option_int_keyword", "tos_option_dbl_keyword",
-  "monitoring_command", "stats_list", "stat", "filegen_option_list",
-  "filegen_option", "link_nolink", "enable_disable", "filegen_type",
-  "access_control_command", "ac_flag_list", "access_control_flag",
-  "discard_option_list", "discard_option", "discard_option_keyword",
-  "mru_option_list", "mru_option", "mru_option_keyword", "fudge_command",
-  "fudge_factor_list", "fudge_factor", "fudge_factor_dbl_keyword",
-  "fudge_factor_bool_keyword", "system_option_command",
-  "system_option_list", "system_option", "system_option_flag_keyword",
+  "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7", "T_Monitor", "T_Month",
+  "T_Mru", "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify",
+  "T_None", "T_Nonvolatile", "T_Nopeer", "T_Noquery", "T_Noselect",
+  "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport",
+  "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_Panic", "T_Peer",
+  "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port",
+  "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Qos", "T_Randfile",
+  "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict",
+  "T_Revoke", "T_Saveconfigdir", "T_Server", "T_Setvar", "T_Source",
+  "T_Statistics", "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_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", "T_Prop_Delay", "T_Proc_Delay", "'='", "'('",
+  "')'", "'{'", "'}'", "$accept", "configuration", "command_list",
+  "command", "server_command", "client_type", "address", "ip_address",
+  "address_fam", "option_list", "option", "option_flag",
+  "option_flag_keyword", "option_int", "option_int_keyword", "option_str",
+  "option_str_keyword", "unpeer_command", "unpeer_keyword",
+  "other_mode_command", "authentication_command", "crypto_command_list",
+  "crypto_command", "crypto_str_keyword", "orphan_mode_command",
+  "tos_option_list", "tos_option", "tos_option_int_keyword",
+  "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
+  "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
+  "filegen_type", "access_control_command", "ac_flag_list",
+  "access_control_flag", "discard_option_list", "discard_option",
+  "discard_option_keyword", "mru_option_list", "mru_option",
+  "mru_option_keyword", "fudge_command", "fudge_factor_list",
+  "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
+  "system_option_command", "system_option_list", "system_option",
+  "system_option_flag_keyword", "system_option_local_flag_keyword",
   "tinker_command", "tinker_option_list", "tinker_option",
   "tinker_option_keyword", "miscellaneous_command", "misc_cmd_dbl_keyword",
   "misc_cmd_str_keyword", "misc_cmd_str_lcl_keyword", "drift_parm",
@@ -1063,43 +1066,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,   437,    61,    40,    41,   123,   125
+     435,   436,   437,   438,    61,    40,    41,   123,   125
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       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
+       0,   189,   190,   191,   191,   191,   192,   192,   192,   192,
+     192,   192,   192,   192,   192,   192,   192,   192,   192,   193,
+     194,   194,   194,   194,   194,   195,   195,   196,   197,   197,
+     198,   198,   199,   199,   199,   200,   201,   201,   201,   201,
+     201,   201,   201,   201,   202,   202,   203,   203,   203,   203,
+     203,   203,   204,   205,   206,   207,   207,   208,   208,   208,
+     209,   209,   209,   209,   209,   209,   209,   209,   209,   210,
+     210,   211,   211,   212,   212,   212,   212,   212,   213,   214,
+     214,   215,   215,   215,   216,   216,   216,   216,   216,   216,
+     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
+     220,   220,   220,   220,   220,   220,   220,   221,   221,   222,
+     222,   222,   222,   223,   223,   224,   224,   225,   225,   225,
+     225,   225,   225,   225,   226,   226,   226,   226,   226,   226,
+     226,   226,   227,   227,   228,   228,   228,   228,   228,   228,
+     228,   228,   228,   228,   228,   228,   228,   228,   229,   229,
+     230,   231,   231,   231,   232,   232,   233,   234,   234,   234,
+     234,   234,   234,   234,   234,   235,   236,   236,   237,   237,
+     237,   237,   238,   238,   239,   239,   239,   239,   240,   240,
+     241,   241,   242,   242,   243,   243,   243,   243,   243,   243,
+     244,   244,   245,   246,   246,   247,   248,   248,   248,   248,
+     248,   248,   248,   249,   249,   249,   249,   249,   249,   249,
+     249,   249,   249,   249,   249,   249,   250,   250,   250,   251,
+     251,   251,   251,   252,   252,   253,   253,   253,   254,   255,
+     255,   256,   256,   257,   257,   258,   258,   259,   260,   260,
+     261,   261,   262,   262,   262,   262,   263,   263,   263,   264,
+     265,   265,   266,   266,   266,   266,   266,   266,   266,   267,
+     267,   268,   268,   269,   269,   270,   271,   271,   272,   272,
+     273,   273,   273,   274,   274,   275,   276,   277,   277,   278,
+     279,   279,   280,   280,   281,   282,   283,   284,   284,   285,
+     286,   286,   287,   288,   288,   288,   288,   288
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1124,17 +1127,17 @@ static const yytype_uint8 yyr2[] =
        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,     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
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1142,123 +1145,123 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       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,
+       0,     0,     0,    23,    57,   216,     0,    69,     0,     0,
+     227,     0,   209,     0,     0,   219,     0,   240,     0,     0,
+     220,     0,   223,    24,     0,     0,     0,   241,   217,     0,
+      22,     0,   221,    21,   222,     0,     0,     0,     0,   224,
+      20,     0,     0,     0,   218,     0,     0,     0,     0,     0,
+      55,    56,   276,     0,     2,     0,     7,     0,     8,     0,
        9,    10,    13,    11,    12,    14,    15,    16,    17,     0,
-       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
+       0,     0,   203,     0,   204,    18,     0,     5,    60,    61,
+      62,   184,   185,   186,   187,   190,   188,   189,   191,   179,
+     181,   182,   183,   151,   152,   153,   124,   149,     0,   225,
+     210,   178,    99,   100,   101,   102,   106,   103,   104,   105,
+     107,    28,    29,    27,     0,    25,     0,     6,    63,    64,
+     237,   211,   236,   269,    58,   157,   158,   159,   160,   161,
+     162,   163,   164,   125,   155,     0,    59,    68,   267,   212,
+      65,   252,   253,   254,   255,   256,   257,   258,   249,   251,
+     132,    28,    29,   132,   132,    25,    66,     0,   213,    94,
+      98,    95,   196,   197,   198,   199,   200,   201,   202,   192,
+     194,     0,    89,    84,     0,    85,    93,    91,    92,    90,
+      88,    86,    87,    78,    80,     0,     0,   231,   263,     0,
+      67,   262,   264,   260,   215,     1,     0,     4,    30,    54,
+     274,   273,   205,   206,   207,   248,   247,   246,     0,     0,
+      77,    73,    74,    75,    76,     0,    70,     0,   180,   148,
+     150,   226,    96,   174,   175,   176,   177,     0,     0,   172,
+     173,   165,   167,     0,     0,    26,   208,   235,   268,   154,
+     156,   266,   250,   128,   132,   132,   131,   126,     0,     0,
+      97,   193,   195,   272,   270,   271,    83,    79,    81,    82,
+     214,     0,   261,   259,     3,    19,   242,   243,   244,   239,
+     245,   238,   280,   281,     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,   230,     0,     0,   232,     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,   283,     0,   278,     0,   109,   123,   119,   121,   117,
+     118,   120,   122,   110,   127,   229,   228,   234,   233,     0,
+      44,    45,    52,     0,   277,   275,   282,     0,   279,   265,
+     286,     0,     0,     0,     0,     0,   288,     0,     0,   284,
+     287,   285,     0,     0,   293,   294,   295,   296,   297,     0,
+       0,     0,   289,     0,   291,     0,   290,   292
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    53,    54,    55,    56,    57,   121,   113,   114,   263,
-     329,   330,   331,   332,   333,   334,   335,    58,    59,    60,
-      61,    80,   214,   215,    62,   181,   182,   183,   184,    63,
-     157,   108,   220,   283,   284,   285,   351,    64,   241,   305,
-      94,    95,    96,   131,   132,   133,    65,   229,   230,   231,
-     232,    66,    88,    89,    90,    67,   167,   168,   169,    68,
-      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,   370,   340,   373,   374,   387,   388,   389
+      -1,    53,    54,    55,    56,    57,   123,   115,   116,   265,
+     331,   332,   333,   334,   335,   336,   337,    58,    59,    60,
+      61,    80,   216,   217,    62,   183,   184,   185,   186,    63,
+     159,   110,   222,   285,   286,   287,   353,    64,   243,   307,
+      96,    97,    98,   133,   134,   135,    65,   231,   232,   233,
+     234,    66,    89,    90,    91,    92,    67,   169,   170,   171,
+      68,    69,    70,    71,   100,   158,   356,   260,   314,   121,
+     122,    72,    73,   271,   208,    74,   148,   149,   194,   190,
+     191,   192,   139,   124,   256,   202,    75,    76,   274,   275,
+     276,   340,   341,   372,   342,   375,   376,   389,   390,   391
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -168
+#define YYPACT_NINF -170
 static const yytype_int16 yypact[] =
 {
-      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,   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,   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,   -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
+      12,  -144,   -20,  -170,  -170,  -170,   -16,  -170,   123,     8,
+     -98,   123,  -170,   -11,    -7,  -170,   -96,  -170,   -95,   -94,
+    -170,   -91,  -170,  -170,    -7,   467,    -7,  -170,  -170,   -72,
+    -170,   -71,  -170,  -170,  -170,    -3,    54,    40,    27,  -170,
+    -170,   -62,   -11,   -61,  -170,    19,   419,   -58,   -53,    33,
+    -170,  -170,  -170,    96,   178,   -75,  -170,    -7,  -170,    -7,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,    39,
+     -49,   -48,  -170,   -13,  -170,  -170,   -83,  -170,  -170,  -170,
+     241,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,   123,
+    -170,  -170,  -170,  -170,  -170,  -170,     8,  -170,    49,    80,
+    -170,   123,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,   264,  -170,   -32,   332,  -170,  -170,
+    -170,   -91,  -170,  -170,    -7,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,   467,  -170,    61,    -7,  -170,  -170,   -25,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,    54,  -170,
+    -170,   100,   102,  -170,  -170,    47,  -170,   -39,  -170,   -11,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,    19,
+    -170,    39,  -170,  -170,   -21,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,   419,  -170,    95,    39,  -170,  -170,    97,
+     -53,  -170,  -170,  -170,    99,  -170,   -12,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,    10,  -140,
+    -170,  -170,  -170,  -170,  -170,   101,  -170,    14,  -170,  -170,
+    -170,  -170,   195,  -170,  -170,  -170,  -170,    18,   109,  -170,
+    -170,   264,  -170,    39,   -21,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,   311,  -170,  -170,   311,   311,   -58,    30,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,
+     -50,   146,  -170,  -170,  -170,   390,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,   -93,     9,    -1,  -170,  -170,  -170,
+    -170,    36,  -170,  -170,     3,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,   311,   311,
+    -170,   164,   -58,   143,  -170,   144,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,  -170,   -43,  -170,    57,    31,    38,
+    -109,  -170,    29,  -170,    39,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,   311,  -170,  -170,  -170,  -170,    32,
+    -170,  -170,  -170,    -7,  -170,  -170,  -170,    42,  -170,  -170,
+    -170,    43,    44,    39,    48,  -156,  -170,    51,    39,  -170,
+    -170,  -170,    41,    15,  -170,  -170,  -170,  -170,  -170,    60,
+      58,    50,  -170,    65,  -170,    39,  -170,  -170
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -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,    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
+    -170,  -170,  -170,   -44,  -170,  -170,   -14,   -36,  -170,  -170,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,
+    -170,  -170,  -170,  -170,  -170,  -170,    62,  -170,  -170,  -170,
+    -170,   -35,  -170,  -170,  -170,  -170,  -170,  -170,  -150,  -170,
+    -170,   148,  -170,  -170,   116,  -170,  -170,  -170,    20,  -170,
+    -170,  -170,   242,   -70,  -170,  -170,  -170,  -170,    83,  -170,
+    -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,  -170,
+     135,  -170,  -170,  -170,  -170,  -170,  -170,   112,  -170,  -170,
+      67,  -170,  -170,   235,    28,  -169,  -170,  -170,  -170,   -10,
+    -170,  -170,   -77,  -170,  -170,  -170,  -110,  -170,  -122,  -170
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1268,124 +1271,124 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-     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,
+     114,   155,   252,   246,   247,   188,   346,   160,   102,   312,
+     196,   187,   103,     1,   266,   360,   253,   259,    93,   218,
+     205,     2,   374,   154,   162,     3,     4,     5,   347,    77,
+     338,   218,   379,     6,     7,   272,   273,   254,    78,   206,
+       8,     9,    79,   198,    10,   199,   338,    11,    12,   163,
+      99,    13,   117,   118,   119,   140,   111,   120,   112,    14,
+     141,   142,   207,    15,   291,   164,   150,   104,   165,    16,
+     200,    17,   267,   236,   268,   313,   137,   138,   143,   365,
+      18,    19,   272,   273,    20,   156,   157,   161,    21,    22,
+     113,   193,    23,    24,   308,   309,   195,   201,   197,   203,
+     204,    94,   348,   151,   209,   152,    95,   220,   349,   105,
+     238,   221,    25,    26,    27,   144,   235,   106,    28,   240,
+     361,   107,   238,   241,   250,   350,   244,    29,   245,   248,
+      81,    30,   189,    31,    82,    32,    33,   166,   255,   108,
+      83,   113,    34,   145,   109,   249,    35,    36,    37,    38,
+      39,    40,    41,   258,    42,   261,    43,   263,   269,   277,
+     354,   264,   278,    44,   167,   168,   288,   289,    45,    46,
+      47,   351,    48,    49,   352,   368,    50,    51,   311,   270,
+     315,   153,   343,   344,   345,    -6,    52,     2,   113,    84,
+     355,     3,     4,     5,   384,   385,   386,   387,   388,     6,
+       7,   358,   359,   146,   377,   362,     8,     9,   147,   382,
+      10,   364,   310,    11,    12,   363,   367,    13,   369,   371,
+      85,    86,   374,   279,   381,    14,   397,   373,   383,    15,
+     280,   394,   378,   281,   395,    16,    87,    17,   396,   384,
+     385,   386,   387,   388,   219,   257,    18,    19,   392,   239,
+      20,   290,   251,   101,    21,    22,   237,   262,    23,    24,
+     242,   136,   292,   366,   339,   380,    88,   393,   210,   282,
+       0,     0,     0,     0,     0,     0,   357,     0,    25,    26,
+      27,     0,     0,     0,    28,     0,     0,     0,     0,   211,
+       0,     0,   212,    29,     0,     0,     0,    30,   283,    31,
+       0,    32,    33,     0,   223,   224,   225,   226,    34,     0,
        0,     0,    35,    36,    37,    38,    39,    40,    41,     0,
-      42,     0,    43,   304,     0,     0,     0,   368,     0,    44,
+      42,     0,    43,     0,     0,     0,     0,     0,     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
+       0,     2,    50,    51,     0,     3,     4,     5,     0,   370,
+       0,    -6,    52,     6,     7,   293,     0,   284,     0,     0,
+       8,     9,     0,   294,    10,     0,     0,    11,    12,     0,
+     213,    13,   214,     0,     0,     0,     0,     0,   215,    14,
+       0,   295,   296,    15,   297,     0,     0,     0,     0,    16,
+     298,    17,     0,     0,     0,     0,     0,   227,   316,     0,
+      18,    19,     0,     0,    20,     0,   317,     0,    21,    22,
+       0,   228,    23,    24,     0,   299,   229,   230,   300,   301,
+       0,   302,   303,   304,     0,   305,     0,     0,     0,     0,
+       0,   172,    25,    26,    27,     0,     0,   173,    28,   174,
+     318,   319,     0,     0,     0,     0,     0,    29,     0,     0,
+       0,    30,     0,    31,     0,    32,    33,   320,     0,     0,
+       0,     0,    34,     0,   175,     0,    35,    36,    37,    38,
+      39,    40,    41,     0,    42,     0,    43,   306,   321,     0,
+       0,     0,     0,    44,   322,     0,   323,     0,    45,    46,
+      47,     0,    48,    49,     0,     0,    50,    51,     0,   324,
+       0,     0,     0,   176,     0,   177,    52,     0,     0,   178,
+       0,   179,     0,     0,   180,     0,   325,   326,     0,     0,
+     125,   126,   127,   128,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   181,   182,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   327,
+     129,   328,   130,     0,   131,     0,   329,     0,   132,     0,
+     330
 };
 
 static const yytype_int16 yycheck[] =
 {
-      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
+      14,    37,   171,   153,   154,    58,     3,    42,    19,    59,
+      54,    47,    23,     1,     4,    58,    37,   186,    10,    89,
+      33,     9,   178,    37,     5,    13,    14,    15,    25,   173,
+     139,   101,   188,    21,    22,   175,   176,    58,    58,    52,
+      28,    29,    58,    57,    32,    59,   139,    35,    36,    30,
+     148,    39,   148,   148,   148,    58,    63,   148,    65,    47,
+       6,     7,    75,    51,   233,    46,    26,    78,    49,    57,
+      31,    59,    62,   117,    64,   125,   148,   148,    24,   188,
+      68,    69,   175,   176,    72,    58,   148,   148,    76,    77,
+     148,    58,    80,    81,   244,   245,     0,    58,   173,   148,
+     148,    93,    99,    63,   187,    65,    98,    58,   105,   120,
+     124,    31,   100,   101,   102,    61,   148,   128,   106,    58,
+     163,   132,   136,   148,   159,   122,    26,   115,    26,    82,
+       7,   119,   185,   121,    11,   123,   124,   118,   159,   150,
+      17,   148,   130,    89,   155,   184,   134,   135,   136,   137,
+     138,   139,   140,    58,   142,    58,   144,    58,   148,    58,
+     310,   173,   148,   151,   145,   146,   148,    58,   156,   157,
+     158,   168,   160,   161,   171,   344,   164,   165,   148,   169,
+      34,   141,   173,   184,   148,   173,   174,     9,   148,    66,
+      26,    13,    14,    15,   179,   180,   181,   182,   183,    21,
+      22,    58,    58,   149,   373,   148,    28,    29,   154,   378,
+      32,   173,   248,    35,    36,   184,   187,    39,   186,   177,
+      97,    98,   178,    28,   173,    47,   395,   184,   187,    51,
+      35,   173,   184,    38,   184,    57,   113,    59,   173,   179,
+     180,   181,   182,   183,    96,   183,    68,    69,   188,   133,
+      72,   231,   169,    11,    76,    77,   121,   190,    80,    81,
+     148,    26,   234,   340,   274,   375,   143,   389,    27,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,   312,    -1,   100,   101,
+     102,    -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,    48,
+      -1,    -1,    51,   115,    -1,    -1,    -1,   119,   103,   121,
+      -1,   123,   124,    -1,    40,    41,    42,    43,   130,    -1,
+      -1,    -1,   134,   135,   136,   137,   138,   139,   140,    -1,
+     142,    -1,   144,    -1,    -1,    -1,    -1,    -1,    -1,   151,
+      -1,    -1,    -1,    -1,   156,   157,   158,    -1,   160,   161,
+      -1,     9,   164,   165,    -1,    13,    14,    15,    -1,   363,
+      -1,   173,   174,    21,    22,    44,    -1,   162,    -1,    -1,
+      28,    29,    -1,    52,    32,    -1,    -1,    35,    36,    -1,
+     129,    39,   131,    -1,    -1,    -1,    -1,    -1,   137,    47,
+      -1,    70,    71,    51,    73,    -1,    -1,    -1,    -1,    57,
+      79,    59,    -1,    -1,    -1,    -1,    -1,   133,     8,    -1,
+      68,    69,    -1,    -1,    72,    -1,    16,    -1,    76,    77,
+      -1,   147,    80,    81,    -1,   104,   152,   153,   107,   108,
+      -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,    -1,
+      -1,    12,   100,   101,   102,    -1,    -1,    18,   106,    20,
+      50,    51,    -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,
+      -1,   119,    -1,   121,    -1,   123,   124,    67,    -1,    -1,
+      -1,    -1,   130,    -1,    45,    -1,   134,   135,   136,   137,
+     138,   139,   140,    -1,   142,    -1,   144,   166,    88,    -1,
+      -1,    -1,    -1,   151,    94,    -1,    96,    -1,   156,   157,
+     158,    -1,   160,   161,    -1,    -1,   164,   165,    -1,   109,
+      -1,    -1,    -1,    84,    -1,    86,   174,    -1,    -1,    90,
+      -1,    92,    -1,    -1,    95,    -1,   126,   127,    -1,    -1,
+      53,    54,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   116,   117,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,
+      83,   161,    85,    -1,    87,    -1,   166,    -1,    91,    -1,
+     170
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1394,44 +1397,44 @@ static const yytype_uint16 yystos[] =
 {
        0,     1,     9,    13,    14,    15,    21,    22,    28,    29,
       32,    35,    36,    39,    47,    51,    57,    59,    68,    69,
-      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,
-     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,   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
+      72,    76,    77,    80,    81,   100,   101,   102,   106,   115,
+     119,   121,   123,   124,   130,   134,   135,   136,   137,   138,
+     139,   140,   142,   144,   151,   156,   157,   158,   160,   161,
+     164,   165,   174,   190,   191,   192,   193,   194,   206,   207,
+     208,   209,   213,   218,   226,   235,   240,   245,   249,   250,
+     251,   252,   260,   261,   264,   275,   276,   173,    58,    58,
+     210,     7,    11,    17,    66,    97,    98,   113,   143,   241,
+     242,   243,   244,    10,    93,    98,   229,   230,   231,   148,
+     253,   241,    19,    23,    78,   120,   128,   132,   150,   155,
+     220,    63,    65,   148,   195,   196,   197,   148,   148,   148,
+     148,   258,   259,   195,   272,    53,    54,    55,    56,    83,
+      85,    87,    91,   232,   233,   234,   272,   148,   148,   271,
+      58,     6,     7,    24,    61,    89,   149,   154,   265,   266,
+      26,    63,    65,   141,   195,   196,    58,   148,   254,   219,
+     220,   148,     5,    30,    46,    49,   118,   145,   146,   246,
+     247,   248,    12,    18,    20,    45,    84,    86,    90,    92,
+      95,   116,   117,   214,   215,   216,   217,   196,    58,   185,
+     268,   269,   270,    58,   267,     0,   192,   173,   195,   195,
+      31,    58,   274,   148,   148,    33,    52,    75,   263,   187,
+      27,    48,    51,   129,   131,   137,   211,   212,   242,   230,
+      58,    31,   221,    40,    41,    42,    43,   133,   147,   152,
+     153,   236,   237,   238,   239,   148,   192,   259,   195,   233,
+      58,   148,   266,   227,    26,    26,   227,   227,    82,   184,
+     220,   247,   274,    37,    58,   159,   273,   215,    58,   274,
+     256,    58,   269,    58,   173,   198,     4,    62,    64,   148,
+     169,   262,   175,   176,   277,   278,   279,    58,   148,    28,
+      35,    38,    74,   103,   162,   222,   223,   224,   148,    58,
+     237,   274,   273,    44,    52,    70,    71,    73,    79,   104,
+     107,   108,   110,   111,   112,   114,   166,   228,   227,   227,
+     196,   148,    59,   125,   257,    34,     8,    16,    50,    51,
+      67,    88,    94,    96,   109,   126,   127,   159,   161,   166,
+     170,   199,   200,   201,   202,   203,   204,   205,   139,   278,
+     280,   281,   283,   173,   184,   148,     3,    25,    99,   105,
+     122,   168,   171,   225,   227,    26,   255,   196,    58,    58,
+      58,   163,   148,   184,   173,   188,   281,   187,   274,   186,
+     195,   177,   282,   184,   178,   284,   285,   274,   184,   188,
+     285,   173,   274,   187,   179,   180,   181,   182,   183,   286,
+     287,   288,   188,   287,   173,   184,   173,   274
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2254,7 +2257,7 @@ yyreduce:
         case 5:
 
 /* Line 1464 of yacc.c  */
-#line 355 "ntp_parser.y"
+#line 357 "ntp_parser.y"
     {
 			/* I will need to incorporate much more fine grained
 			 * error messages. The following should suffice for
@@ -2271,7 +2274,7 @@ yyreduce:
   case 19:
 
 /* Line 1464 of yacc.c  */
-#line 389 "ntp_parser.y"
+#line 391 "ntp_parser.y"
     {
 			peer_node *my_node;
 
@@ -2283,42 +2286,42 @@ yyreduce:
   case 26:
 
 /* Line 1464 of yacc.c  */
-#line 408 "ntp_parser.y"
+#line 410 "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 413 "ntp_parser.y"
+#line 415 "ntp_parser.y"
     { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), AF_UNSPEC); }
     break;
 
   case 28:
 
 /* Line 1464 of yacc.c  */
-#line 418 "ntp_parser.y"
+#line 420 "ntp_parser.y"
     { (yyval.Integer) = AF_INET; }
     break;
 
   case 29:
 
 /* Line 1464 of yacc.c  */
-#line 420 "ntp_parser.y"
+#line 422 "ntp_parser.y"
     { (yyval.Integer) = AF_INET6; }
     break;
 
   case 30:
 
 /* Line 1464 of yacc.c  */
-#line 425 "ntp_parser.y"
+#line 427 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
   case 31:
 
 /* Line 1464 of yacc.c  */
-#line 427 "ntp_parser.y"
+#line 429 "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));
@@ -2328,35 +2331,35 @@ yyreduce:
   case 35:
 
 /* Line 1464 of yacc.c  */
-#line 441 "ntp_parser.y"
+#line 443 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
   case 44:
 
 /* Line 1464 of yacc.c  */
-#line 457 "ntp_parser.y"
+#line 459 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 45:
 
 /* Line 1464 of yacc.c  */
-#line 459 "ntp_parser.y"
+#line 461 "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 473 "ntp_parser.y"
+#line 475 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
   case 54:
 
 /* Line 1464 of yacc.c  */
-#line 487 "ntp_parser.y"
+#line 489 "ntp_parser.y"
     {
 			unpeer_node *my_node;
 			
@@ -2369,28 +2372,28 @@ yyreduce:
   case 57:
 
 /* Line 1464 of yacc.c  */
-#line 508 "ntp_parser.y"
+#line 510 "ntp_parser.y"
     { cfgt.broadcastclient = 1; }
     break;
 
   case 58:
 
 /* Line 1464 of yacc.c  */
-#line 510 "ntp_parser.y"
+#line 512 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[(2) - (2)].Address_fifo)); }
     break;
 
   case 59:
 
 /* Line 1464 of yacc.c  */
-#line 512 "ntp_parser.y"
+#line 514 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[(2) - (2)].Address_fifo)); }
     break;
 
   case 60:
 
 /* Line 1464 of yacc.c  */
-#line 523 "ntp_parser.y"
+#line 525 "ntp_parser.y"
     {
 			attr_val *atrv;
 			
@@ -2402,14 +2405,14 @@ yyreduce:
   case 61:
 
 /* Line 1464 of yacc.c  */
-#line 530 "ntp_parser.y"
+#line 532 "ntp_parser.y"
     { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
   case 62:
 
 /* Line 1464 of yacc.c  */
-#line 532 "ntp_parser.y"
+#line 534 "ntp_parser.y"
     { 
 			cfgt.auth.cryptosw++;
 			CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Attr_val_fifo));
@@ -2419,56 +2422,56 @@ yyreduce:
   case 63:
 
 /* Line 1464 of yacc.c  */
-#line 537 "ntp_parser.y"
+#line 539 "ntp_parser.y"
     { cfgt.auth.keys = (yyvsp[(2) - (2)].String); }
     break;
 
   case 64:
 
 /* Line 1464 of yacc.c  */
-#line 539 "ntp_parser.y"
+#line 541 "ntp_parser.y"
     { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); }
     break;
 
   case 65:
 
 /* Line 1464 of yacc.c  */
-#line 541 "ntp_parser.y"
+#line 543 "ntp_parser.y"
     { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
   case 66:
 
 /* Line 1464 of yacc.c  */
-#line 543 "ntp_parser.y"
+#line 545 "ntp_parser.y"
     { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); }
     break;
 
   case 67:
 
 /* Line 1464 of yacc.c  */
-#line 545 "ntp_parser.y"
+#line 547 "ntp_parser.y"
     { cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Attr_val_fifo); }
     break;
 
   case 68:
 
 /* Line 1464 of yacc.c  */
-#line 547 "ntp_parser.y"
+#line 549 "ntp_parser.y"
     { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
     break;
 
   case 69:
 
 /* Line 1464 of yacc.c  */
-#line 552 "ntp_parser.y"
+#line 554 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
   case 70:
 
 /* Line 1464 of yacc.c  */
-#line 554 "ntp_parser.y"
+#line 556 "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));
@@ -2478,14 +2481,14 @@ yyreduce:
   case 71:
 
 /* Line 1464 of yacc.c  */
-#line 562 "ntp_parser.y"
+#line 564 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
   case 72:
 
 /* Line 1464 of yacc.c  */
-#line 564 "ntp_parser.y"
+#line 566 "ntp_parser.y"
     {
 			(yyval.Attr_val) = NULL;
 			cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer);
@@ -2499,14 +2502,14 @@ yyreduce:
   case 78:
 
 /* Line 1464 of yacc.c  */
-#line 589 "ntp_parser.y"
+#line 591 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
   case 79:
 
 /* Line 1464 of yacc.c  */
-#line 594 "ntp_parser.y"
+#line 596 "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));
@@ -2516,7 +2519,7 @@ yyreduce:
   case 80:
 
 /* Line 1464 of yacc.c  */
-#line 599 "ntp_parser.y"
+#line 601 "ntp_parser.y"
     {	
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
@@ -2526,35 +2529,35 @@ yyreduce:
   case 81:
 
 /* Line 1464 of yacc.c  */
-#line 607 "ntp_parser.y"
+#line 609 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 82:
 
 /* Line 1464 of yacc.c  */
-#line 609 "ntp_parser.y"
+#line 611 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 83:
 
 /* Line 1464 of yacc.c  */
-#line 611 "ntp_parser.y"
+#line 613 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 94:
 
 /* Line 1464 of yacc.c  */
-#line 637 "ntp_parser.y"
+#line 639 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[(2) - (2)].Int_fifo)); }
     break;
 
   case 95:
 
 /* Line 1464 of yacc.c  */
-#line 639 "ntp_parser.y"
+#line 641 "ntp_parser.y"
     {
 			if (input_from_file) {
 				cfgt.stats_dir = (yyvsp[(2) - (2)].String);
@@ -2568,7 +2571,7 @@ yyreduce:
   case 96:
 
 /* Line 1464 of yacc.c  */
-#line 648 "ntp_parser.y"
+#line 650 "ntp_parser.y"
     {
 			filegen_node *fgn;
 			
@@ -2580,7 +2583,7 @@ yyreduce:
   case 97:
 
 /* Line 1464 of yacc.c  */
-#line 658 "ntp_parser.y"
+#line 660 "ntp_parser.y"
     {
 			(yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
@@ -2590,7 +2593,7 @@ yyreduce:
   case 98:
 
 /* Line 1464 of yacc.c  */
-#line 663 "ntp_parser.y"
+#line 665 "ntp_parser.y"
     {
 			(yyval.Int_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
@@ -2600,14 +2603,14 @@ yyreduce:
   case 107:
 
 /* Line 1464 of yacc.c  */
-#line 682 "ntp_parser.y"
+#line 684 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
   case 108:
 
 /* Line 1464 of yacc.c  */
-#line 684 "ntp_parser.y"
+#line 686 "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));
@@ -2617,7 +2620,7 @@ yyreduce:
   case 109:
 
 /* Line 1464 of yacc.c  */
-#line 692 "ntp_parser.y"
+#line 694 "ntp_parser.y"
     {
 			if (input_from_file) {
 				(yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
@@ -2632,7 +2635,7 @@ yyreduce:
   case 110:
 
 /* Line 1464 of yacc.c  */
-#line 702 "ntp_parser.y"
+#line 704 "ntp_parser.y"
     {
 			if (input_from_file) {
 				(yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
@@ -2646,7 +2649,7 @@ yyreduce:
   case 111:
 
 /* Line 1464 of yacc.c  */
-#line 711 "ntp_parser.y"
+#line 713 "ntp_parser.y"
     {
 			const char *err;
 			
@@ -2666,14 +2669,14 @@ yyreduce:
   case 112:
 
 /* Line 1464 of yacc.c  */
-#line 726 "ntp_parser.y"
+#line 728 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
   case 124:
 
 /* Line 1464 of yacc.c  */
-#line 756 "ntp_parser.y"
+#line 758 "ntp_parser.y"
     {
 			CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
 		}
@@ -2682,7 +2685,7 @@ yyreduce:
   case 125:
 
 /* Line 1464 of yacc.c  */
-#line 760 "ntp_parser.y"
+#line 762 "ntp_parser.y"
     {
 			CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
 		}
@@ -2691,7 +2694,7 @@ yyreduce:
   case 126:
 
 /* Line 1464 of yacc.c  */
-#line 764 "ntp_parser.y"
+#line 766 "ntp_parser.y"
     {
 			restrict_node *rn;
 
@@ -2704,7 +2707,7 @@ yyreduce:
   case 127:
 
 /* Line 1464 of yacc.c  */
-#line 772 "ntp_parser.y"
+#line 774 "ntp_parser.y"
     {
 			restrict_node *rn;
 
@@ -2717,7 +2720,7 @@ yyreduce:
   case 128:
 
 /* Line 1464 of yacc.c  */
-#line 780 "ntp_parser.y"
+#line 782 "ntp_parser.y"
     {
 			restrict_node *rn;
 
@@ -2730,7 +2733,7 @@ yyreduce:
   case 129:
 
 /* Line 1464 of yacc.c  */
-#line 788 "ntp_parser.y"
+#line 790 "ntp_parser.y"
     {
 			restrict_node *rn;
 
@@ -2750,7 +2753,7 @@ yyreduce:
   case 130:
 
 /* Line 1464 of yacc.c  */
-#line 803 "ntp_parser.y"
+#line 805 "ntp_parser.y"
     {
 			restrict_node *rn;
 			
@@ -2770,7 +2773,7 @@ yyreduce:
   case 131:
 
 /* Line 1464 of yacc.c  */
-#line 818 "ntp_parser.y"
+#line 820 "ntp_parser.y"
     {
 			restrict_node *	rn;
 
@@ -2784,14 +2787,14 @@ yyreduce:
   case 132:
 
 /* Line 1464 of yacc.c  */
-#line 830 "ntp_parser.y"
+#line 832 "ntp_parser.y"
     { (yyval.Int_fifo) = NULL; }
     break;
 
   case 133:
 
 /* Line 1464 of yacc.c  */
-#line 832 "ntp_parser.y"
+#line 834 "ntp_parser.y"
     {
 			(yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
@@ -2801,7 +2804,7 @@ yyreduce:
   case 148:
 
 /* Line 1464 of yacc.c  */
-#line 857 "ntp_parser.y"
+#line 859 "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));
@@ -2811,7 +2814,7 @@ yyreduce:
   case 149:
 
 /* Line 1464 of yacc.c  */
-#line 862 "ntp_parser.y"
+#line 864 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
@@ -2821,14 +2824,14 @@ yyreduce:
   case 150:
 
 /* Line 1464 of yacc.c  */
-#line 870 "ntp_parser.y"
+#line 872 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 154:
 
 /* Line 1464 of yacc.c  */
-#line 881 "ntp_parser.y"
+#line 883 "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));
@@ -2838,7 +2841,7 @@ yyreduce:
   case 155:
 
 /* Line 1464 of yacc.c  */
-#line 886 "ntp_parser.y"
+#line 888 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
@@ -2848,14 +2851,14 @@ yyreduce:
   case 156:
 
 /* Line 1464 of yacc.c  */
-#line 894 "ntp_parser.y"
+#line 896 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 165:
 
 /* Line 1464 of yacc.c  */
-#line 914 "ntp_parser.y"
+#line 916 "ntp_parser.y"
     {
 			addr_opts_node *aon;
 			
@@ -2867,7 +2870,7 @@ yyreduce:
   case 166:
 
 /* Line 1464 of yacc.c  */
-#line 924 "ntp_parser.y"
+#line 926 "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));
@@ -2877,7 +2880,7 @@ yyreduce:
   case 167:
 
 /* Line 1464 of yacc.c  */
-#line 929 "ntp_parser.y"
+#line 931 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
@@ -2887,49 +2890,49 @@ yyreduce:
   case 168:
 
 /* Line 1464 of yacc.c  */
-#line 937 "ntp_parser.y"
+#line 939 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 169:
 
 /* Line 1464 of yacc.c  */
-#line 939 "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:
 
 /* Line 1464 of yacc.c  */
-#line 941 "ntp_parser.y"
+#line 943 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 171:
 
 /* Line 1464 of yacc.c  */
-#line 943 "ntp_parser.y"
+#line 945 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
     break;
 
   case 178:
 
 /* Line 1464 of yacc.c  */
-#line 964 "ntp_parser.y"
+#line 966 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
   case 179:
 
 /* Line 1464 of yacc.c  */
-#line 966 "ntp_parser.y"
+#line 968 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
   case 180:
 
 /* Line 1464 of yacc.c  */
-#line 971 "ntp_parser.y"
+#line 973 "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));
@@ -2939,7 +2942,7 @@ yyreduce:
   case 181:
 
 /* Line 1464 of yacc.c  */
-#line 976 "ntp_parser.y"
+#line 978 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
@@ -2949,62 +2952,67 @@ yyreduce:
   case 182:
 
 /* Line 1464 of yacc.c  */
-#line 984 "ntp_parser.y"
+#line 986 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
     break;
 
   case 183:
 
 /* Line 1464 of yacc.c  */
-#line 986 "ntp_parser.y"
+#line 988 "ntp_parser.y"
     { 
 			if (input_from_file) {
 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
 			} else {
+				char err_str[128];
+				
 				(yyval.Attr_val) = NULL;
-				yyerror("enable/disable stats remote configuration ignored");
+				snprintf(err_str, sizeof(err_str),
+					 "enable/disable %s remote configuration ignored",
+					 keyword((yyvsp[(1) - (1)].Integer)));
+				yyerror(err_str);
 			}
 		}
     break;
 
-  case 190:
+  case 192:
 
 /* Line 1464 of yacc.c  */
-#line 1011 "ntp_parser.y"
+#line 1023 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 191:
+  case 193:
 
 /* Line 1464 of yacc.c  */
-#line 1016 "ntp_parser.y"
+#line 1028 "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 192:
+  case 194:
 
 /* Line 1464 of yacc.c  */
-#line 1021 "ntp_parser.y"
+#line 1033 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 		}
     break;
 
-  case 193:
+  case 195:
 
 /* Line 1464 of yacc.c  */
-#line 1029 "ntp_parser.y"
+#line 1041 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
     break;
 
-  case 203:
+  case 205:
 
 /* Line 1464 of yacc.c  */
-#line 1051 "ntp_parser.y"
+#line 1063 "ntp_parser.y"
     {
 			attr_val *av;
 			
@@ -3013,10 +3021,10 @@ yyreduce:
 		}
     break;
 
-  case 204:
+  case 206:
 
 /* Line 1464 of yacc.c  */
-#line 1058 "ntp_parser.y"
+#line 1070 "ntp_parser.y"
     {
 			attr_val *av;
 			
@@ -3025,10 +3033,10 @@ yyreduce:
 		}
     break;
 
-  case 205:
+  case 207:
 
 /* Line 1464 of yacc.c  */
-#line 1065 "ntp_parser.y"
+#line 1077 "ntp_parser.y"
     {
 			char error_text[64];
 			attr_val *av;
@@ -3046,10 +3054,10 @@ yyreduce:
 		}
     break;
 
-  case 206:
+  case 208:
 
 /* Line 1464 of yacc.c  */
-#line 1081 "ntp_parser.y"
+#line 1093 "ntp_parser.y"
     {
 			if (!input_from_file) {
 				yyerror("remote includefile ignored");
@@ -3070,48 +3078,48 @@ yyreduce:
 		}
     break;
 
-  case 207:
+  case 209:
 
 /* Line 1464 of yacc.c  */
-#line 1100 "ntp_parser.y"
+#line 1112 "ntp_parser.y"
     {
 			while (curr_include_level != -1)
 				FCLOSE(fp[curr_include_level--]);
 		}
     break;
 
-  case 208:
+  case 210:
 
 /* Line 1464 of yacc.c  */
-#line 1105 "ntp_parser.y"
+#line 1117 "ntp_parser.y"
     { /* see drift_parm below for actions */ }
     break;
 
-  case 209:
+  case 211:
 
 /* Line 1464 of yacc.c  */
-#line 1107 "ntp_parser.y"
+#line 1119 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 210:
+  case 212:
 
 /* Line 1464 of yacc.c  */
-#line 1109 "ntp_parser.y"
+#line 1121 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[(2) - (2)].String_fifo)); }
     break;
 
-  case 211:
+  case 213:
 
 /* Line 1464 of yacc.c  */
-#line 1111 "ntp_parser.y"
+#line 1123 "ntp_parser.y"
     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); }
     break;
 
-  case 212:
+  case 214:
 
 /* Line 1464 of yacc.c  */
-#line 1113 "ntp_parser.y"
+#line 1125 "ntp_parser.y"
     {
 			addr_opts_node *aon;
 			
@@ -3120,17 +3128,17 @@ yyreduce:
 		}
     break;
 
-  case 213:
+  case 215:
 
 /* Line 1464 of yacc.c  */
-#line 1120 "ntp_parser.y"
+#line 1132 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[(2) - (2)].Attr_val_fifo)); }
     break;
 
-  case 223:
+  case 225:
 
 /* Line 1464 of yacc.c  */
-#line 1143 "ntp_parser.y"
+#line 1155 "ntp_parser.y"
     {
 			attr_val *av;
 			
@@ -3139,10 +3147,10 @@ yyreduce:
 		}
     break;
 
-  case 224:
+  case 226:
 
 /* Line 1464 of yacc.c  */
-#line 1150 "ntp_parser.y"
+#line 1162 "ntp_parser.y"
     {
 			attr_val *av;
 			
@@ -3153,10 +3161,10 @@ yyreduce:
 		}
     break;
 
-  case 225:
+  case 227:
 
 /* Line 1464 of yacc.c  */
-#line 1159 "ntp_parser.y"
+#line 1171 "ntp_parser.y"
     {
 			attr_val *av;
 			
@@ -3165,78 +3173,78 @@ yyreduce:
 		}
     break;
 
-  case 226:
+  case 228:
 
 /* Line 1464 of yacc.c  */
-#line 1169 "ntp_parser.y"
+#line 1181 "ntp_parser.y"
     { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), (yyvsp[(4) - (4)].Integer)); }
     break;
 
-  case 228:
+  case 230:
 
 /* Line 1464 of yacc.c  */
-#line 1175 "ntp_parser.y"
+#line 1187 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 229:
+  case 231:
 
 /* Line 1464 of yacc.c  */
-#line 1180 "ntp_parser.y"
+#line 1192 "ntp_parser.y"
     { (yyval.Attr_val_fifo) = NULL; }
     break;
 
-  case 230:
+  case 232:
 
 /* Line 1464 of yacc.c  */
-#line 1182 "ntp_parser.y"
+#line 1194 "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 231:
+  case 233:
 
 /* Line 1464 of yacc.c  */
-#line 1190 "ntp_parser.y"
+#line 1202 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
     break;
 
-  case 232:
+  case 234:
 
 /* Line 1464 of yacc.c  */
-#line 1192 "ntp_parser.y"
+#line 1204 "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 233:
+  case 235:
 
 /* Line 1464 of yacc.c  */
-#line 1200 "ntp_parser.y"
+#line 1212 "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 234:
+  case 236:
 
 /* Line 1464 of yacc.c  */
-#line 1205 "ntp_parser.y"
+#line 1217 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 		}
     break;
 
-  case 235:
+  case 237:
 
 /* Line 1464 of yacc.c  */
-#line 1213 "ntp_parser.y"
+#line 1225 "ntp_parser.y"
     {
 			char	prefix;
 			char *	type;
@@ -3260,10 +3268,10 @@ yyreduce:
 		}
     break;
 
-  case 236:
+  case 238:
 
 /* Line 1464 of yacc.c  */
-#line 1238 "ntp_parser.y"
+#line 1250 "ntp_parser.y"
     {
 			nic_rule_node *nrn;
 			
@@ -3272,10 +3280,10 @@ yyreduce:
 		}
     break;
 
-  case 237:
+  case 239:
 
 /* Line 1464 of yacc.c  */
-#line 1245 "ntp_parser.y"
+#line 1257 "ntp_parser.y"
     {
 			nic_rule_node *nrn;
 			
@@ -3284,131 +3292,131 @@ yyreduce:
 		}
     break;
 
-  case 247:
+  case 249:
 
 /* Line 1464 of yacc.c  */
-#line 1273 "ntp_parser.y"
+#line 1285 "ntp_parser.y"
     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[(2) - (2)].Int_fifo)); }
     break;
 
-  case 248:
+  case 250:
 
 /* Line 1464 of yacc.c  */
-#line 1278 "ntp_parser.y"
+#line 1290 "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 249:
+  case 251:
 
 /* Line 1464 of yacc.c  */
-#line 1283 "ntp_parser.y"
+#line 1295 "ntp_parser.y"
     {
 			(yyval.Int_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
 		}
     break;
 
-  case 257:
+  case 259:
 
 /* Line 1464 of yacc.c  */
-#line 1307 "ntp_parser.y"
+#line 1319 "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 258:
+  case 260:
 
 /* Line 1464 of yacc.c  */
-#line 1312 "ntp_parser.y"
+#line 1324 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
 		}
     break;
 
-  case 259:
+  case 261:
 
 /* Line 1464 of yacc.c  */
-#line 1320 "ntp_parser.y"
+#line 1332 "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 260:
+  case 262:
 
 /* Line 1464 of yacc.c  */
-#line 1325 "ntp_parser.y"
+#line 1337 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 		}
     break;
 
-  case 261:
+  case 263:
 
 /* Line 1464 of yacc.c  */
-#line 1333 "ntp_parser.y"
+#line 1345 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[(1) - (1)].Integer)); }
     break;
 
-  case 263:
+  case 265:
 
 /* Line 1464 of yacc.c  */
-#line 1339 "ntp_parser.y"
+#line 1351 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); }
     break;
 
-  case 264:
+  case 266:
 
 /* Line 1464 of yacc.c  */
-#line 1344 "ntp_parser.y"
+#line 1356 "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 265:
+  case 267:
 
 /* Line 1464 of yacc.c  */
-#line 1349 "ntp_parser.y"
+#line 1361 "ntp_parser.y"
     {
 			(yyval.String_fifo) = NULL;
 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(1) - (1)].String)));
 		}
     break;
 
-  case 266:
+  case 268:
 
 /* Line 1464 of yacc.c  */
-#line 1357 "ntp_parser.y"
+#line 1369 "ntp_parser.y"
     {
 			(yyval.Address_fifo) = (yyvsp[(1) - (2)].Address_fifo);
 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(2) - (2)].Address_node));
 		}
     break;
 
-  case 267:
+  case 269:
 
 /* Line 1464 of yacc.c  */
-#line 1362 "ntp_parser.y"
+#line 1374 "ntp_parser.y"
     {
 			(yyval.Address_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(1) - (1)].Address_node));
 		}
     break;
 
-  case 268:
+  case 270:
 
 /* Line 1464 of yacc.c  */
-#line 1370 "ntp_parser.y"
+#line 1382 "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");
@@ -3419,31 +3427,31 @@ yyreduce:
 		}
     break;
 
-  case 269:
+  case 271:
 
 /* Line 1464 of yacc.c  */
-#line 1378 "ntp_parser.y"
+#line 1390 "ntp_parser.y"
     { (yyval.Integer) = 1; }
     break;
 
-  case 270:
+  case 272:
 
 /* Line 1464 of yacc.c  */
-#line 1379 "ntp_parser.y"
+#line 1391 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 271:
+  case 273:
 
 /* Line 1464 of yacc.c  */
-#line 1383 "ntp_parser.y"
+#line 1395 "ntp_parser.y"
     { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); }
     break;
 
-  case 273:
+  case 275:
 
 /* Line 1464 of yacc.c  */
-#line 1394 "ntp_parser.y"
+#line 1406 "ntp_parser.y"
     {
 			sim_node *sn;
 			
@@ -3455,139 +3463,139 @@ yyreduce:
 		}
     break;
 
-  case 274:
+  case 276:
 
 /* Line 1464 of yacc.c  */
-#line 1411 "ntp_parser.y"
+#line 1423 "ntp_parser.y"
     { old_config_style = 0; }
     break;
 
-  case 275:
+  case 277:
 
 /* Line 1464 of yacc.c  */
-#line 1416 "ntp_parser.y"
+#line 1428 "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 276:
+  case 278:
 
 /* Line 1464 of yacc.c  */
-#line 1421 "ntp_parser.y"
+#line 1433 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
 		}
     break;
 
-  case 277:
+  case 279:
 
 /* Line 1464 of yacc.c  */
-#line 1429 "ntp_parser.y"
+#line 1441 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
-  case 280:
+  case 282:
 
 /* Line 1464 of yacc.c  */
-#line 1439 "ntp_parser.y"
+#line 1451 "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 281:
+  case 283:
 
 /* Line 1464 of yacc.c  */
-#line 1444 "ntp_parser.y"
+#line 1456 "ntp_parser.y"
     {
 			(yyval.Sim_server_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(1) - (1)].Sim_server));
 		}
     break;
 
-  case 282:
+  case 284:
 
 /* Line 1464 of yacc.c  */
-#line 1452 "ntp_parser.y"
+#line 1464 "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 283:
+  case 285:
 
 /* Line 1464 of yacc.c  */
-#line 1457 "ntp_parser.y"
+#line 1469 "ntp_parser.y"
     { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
     break;
 
-  case 284:
+  case 286:
 
 /* Line 1464 of yacc.c  */
-#line 1462 "ntp_parser.y"
+#line 1474 "ntp_parser.y"
     { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
     break;
 
-  case 285:
+  case 287:
 
 /* Line 1464 of yacc.c  */
-#line 1467 "ntp_parser.y"
+#line 1479 "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 286:
+  case 288:
 
 /* Line 1464 of yacc.c  */
-#line 1472 "ntp_parser.y"
+#line 1484 "ntp_parser.y"
     {
 			(yyval.Sim_script_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(1) - (1)].Sim_script));
 		}
     break;
 
-  case 287:
+  case 289:
 
 /* Line 1464 of yacc.c  */
-#line 1480 "ntp_parser.y"
+#line 1492 "ntp_parser.y"
     { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Attr_val_fifo)); }
     break;
 
-  case 288:
+  case 290:
 
 /* Line 1464 of yacc.c  */
-#line 1485 "ntp_parser.y"
+#line 1497 "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 289:
+  case 291:
 
 /* Line 1464 of yacc.c  */
-#line 1490 "ntp_parser.y"
+#line 1502 "ntp_parser.y"
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
 		}
     break;
 
-  case 290:
+  case 292:
 
 /* Line 1464 of yacc.c  */
-#line 1498 "ntp_parser.y"
+#line 1510 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
     break;
 
 
 
 /* Line 1464 of yacc.c  */
-#line 3591 "ntp_parser.c"
+#line 3599 "ntp_parser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3799,7 +3807,7 @@ yyreturn:
 
 
 /* Line 1684 of yacc.c  */
-#line 1509 "ntp_parser.y"
+#line 1521 "ntp_parser.y"
 
 
 void 

==== ntpd/ntp_parser.h ====
2011-10-31 04:40:02+00:00, davehart at shiny.ad.hartbrothers.com +175 -173
  Bison output

--- 1.43/ntpd/ntp_parser.h	2011-07-25 20:18:28 -04:00
+++ 1.44/ntpd/ntp_parser.h	2011-10-31 00:40:02 -04:00
@@ -132,92 +132,93 @@
      T_Minpoll = 349,
      T_Minsane = 350,
      T_Mode = 351,
-     T_Monitor = 352,
-     T_Month = 353,
-     T_Mru = 354,
-     T_Multicastclient = 355,
-     T_Nic = 356,
-     T_Nolink = 357,
-     T_Nomodify = 358,
-     T_None = 359,
-     T_Nonvolatile = 360,
-     T_Nopeer = 361,
-     T_Noquery = 362,
-     T_Noselect = 363,
-     T_Noserve = 364,
-     T_Notrap = 365,
-     T_Notrust = 366,
-     T_Ntp = 367,
-     T_Ntpport = 368,
-     T_NtpSignDsocket = 369,
-     T_Orphan = 370,
-     T_Orphanwait = 371,
-     T_Panic = 372,
-     T_Peer = 373,
-     T_Peerstats = 374,
-     T_Phone = 375,
-     T_Pid = 376,
-     T_Pidfile = 377,
-     T_Pool = 378,
-     T_Port = 379,
-     T_Preempt = 380,
-     T_Prefer = 381,
-     T_Protostats = 382,
-     T_Pw = 383,
-     T_Qos = 384,
-     T_Randfile = 385,
-     T_Rawstats = 386,
-     T_Refid = 387,
-     T_Requestkey = 388,
-     T_Reset = 389,
-     T_Restrict = 390,
-     T_Revoke = 391,
-     T_Saveconfigdir = 392,
-     T_Server = 393,
-     T_Setvar = 394,
-     T_Source = 395,
-     T_Statistics = 396,
-     T_Stats = 397,
-     T_Statsdir = 398,
-     T_Step = 399,
-     T_Stepout = 400,
-     T_Stratum = 401,
-     T_String = 402,
-     T_Sys = 403,
-     T_Sysstats = 404,
-     T_Tick = 405,
-     T_Time1 = 406,
-     T_Time2 = 407,
-     T_Timer = 408,
-     T_Timingstats = 409,
-     T_Tinker = 410,
-     T_Tos = 411,
-     T_Trap = 412,
-     T_True = 413,
-     T_Trustedkey = 414,
-     T_Ttl = 415,
-     T_Type = 416,
-     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
+     T_Mode7 = 352,
+     T_Monitor = 353,
+     T_Month = 354,
+     T_Mru = 355,
+     T_Multicastclient = 356,
+     T_Nic = 357,
+     T_Nolink = 358,
+     T_Nomodify = 359,
+     T_None = 360,
+     T_Nonvolatile = 361,
+     T_Nopeer = 362,
+     T_Noquery = 363,
+     T_Noselect = 364,
+     T_Noserve = 365,
+     T_Notrap = 366,
+     T_Notrust = 367,
+     T_Ntp = 368,
+     T_Ntpport = 369,
+     T_NtpSignDsocket = 370,
+     T_Orphan = 371,
+     T_Orphanwait = 372,
+     T_Panic = 373,
+     T_Peer = 374,
+     T_Peerstats = 375,
+     T_Phone = 376,
+     T_Pid = 377,
+     T_Pidfile = 378,
+     T_Pool = 379,
+     T_Port = 380,
+     T_Preempt = 381,
+     T_Prefer = 382,
+     T_Protostats = 383,
+     T_Pw = 384,
+     T_Qos = 385,
+     T_Randfile = 386,
+     T_Rawstats = 387,
+     T_Refid = 388,
+     T_Requestkey = 389,
+     T_Reset = 390,
+     T_Restrict = 391,
+     T_Revoke = 392,
+     T_Saveconfigdir = 393,
+     T_Server = 394,
+     T_Setvar = 395,
+     T_Source = 396,
+     T_Statistics = 397,
+     T_Stats = 398,
+     T_Statsdir = 399,
+     T_Step = 400,
+     T_Stepout = 401,
+     T_Stratum = 402,
+     T_String = 403,
+     T_Sys = 404,
+     T_Sysstats = 405,
+     T_Tick = 406,
+     T_Time1 = 407,
+     T_Time2 = 408,
+     T_Timer = 409,
+     T_Timingstats = 410,
+     T_Tinker = 411,
+     T_Tos = 412,
+     T_Trap = 413,
+     T_True = 414,
+     T_Trustedkey = 415,
+     T_Ttl = 416,
+     T_Type = 417,
+     T_U_int = 418,
+     T_Unconfig = 419,
+     T_Unpeer = 420,
+     T_Version = 421,
+     T_WanderThreshold = 422,
+     T_Week = 423,
+     T_Wildcard = 424,
+     T_Xleave = 425,
+     T_Year = 426,
+     T_Flag = 427,
+     T_EOC = 428,
+     T_Simulate = 429,
+     T_Beep_Delay = 430,
+     T_Sim_Duration = 431,
+     T_Server_Offset = 432,
+     T_Duration = 433,
+     T_Freq_Offset = 434,
+     T_Wander = 435,
+     T_Jitter = 436,
+     T_Prop_Delay = 437,
+     T_Proc_Delay = 438
    };
 #endif
 /* Tokens.  */
@@ -315,92 +316,93 @@
 #define T_Minpoll 349
 #define T_Minsane 350
 #define T_Mode 351
-#define T_Monitor 352
-#define T_Month 353
-#define T_Mru 354
-#define T_Multicastclient 355
-#define T_Nic 356
-#define T_Nolink 357
-#define T_Nomodify 358
-#define T_None 359
-#define T_Nonvolatile 360
-#define T_Nopeer 361
-#define T_Noquery 362
-#define T_Noselect 363
-#define T_Noserve 364
-#define T_Notrap 365
-#define T_Notrust 366
-#define T_Ntp 367
-#define T_Ntpport 368
-#define T_NtpSignDsocket 369
-#define T_Orphan 370
-#define T_Orphanwait 371
-#define T_Panic 372
-#define T_Peer 373
-#define T_Peerstats 374
-#define T_Phone 375
-#define T_Pid 376
-#define T_Pidfile 377
-#define T_Pool 378
-#define T_Port 379
-#define T_Preempt 380
-#define T_Prefer 381
-#define T_Protostats 382
-#define T_Pw 383
-#define T_Qos 384
-#define T_Randfile 385
-#define T_Rawstats 386
-#define T_Refid 387
-#define T_Requestkey 388
-#define T_Reset 389
-#define T_Restrict 390
-#define T_Revoke 391
-#define T_Saveconfigdir 392
-#define T_Server 393
-#define T_Setvar 394
-#define T_Source 395
-#define T_Statistics 396
-#define T_Stats 397
-#define T_Statsdir 398
-#define T_Step 399
-#define T_Stepout 400
-#define T_Stratum 401
-#define T_String 402
-#define T_Sys 403
-#define T_Sysstats 404
-#define T_Tick 405
-#define T_Time1 406
-#define T_Time2 407
-#define T_Timer 408
-#define T_Timingstats 409
-#define T_Tinker 410
-#define T_Tos 411
-#define T_Trap 412
-#define T_True 413
-#define T_Trustedkey 414
-#define T_Ttl 415
-#define T_Type 416
-#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
+#define T_Mode7 352
+#define T_Monitor 353
+#define T_Month 354
+#define T_Mru 355
+#define T_Multicastclient 356
+#define T_Nic 357
+#define T_Nolink 358
+#define T_Nomodify 359
+#define T_None 360
+#define T_Nonvolatile 361
+#define T_Nopeer 362
+#define T_Noquery 363
+#define T_Noselect 364
+#define T_Noserve 365
+#define T_Notrap 366
+#define T_Notrust 367
+#define T_Ntp 368
+#define T_Ntpport 369
+#define T_NtpSignDsocket 370
+#define T_Orphan 371
+#define T_Orphanwait 372
+#define T_Panic 373
+#define T_Peer 374
+#define T_Peerstats 375
+#define T_Phone 376
+#define T_Pid 377
+#define T_Pidfile 378
+#define T_Pool 379
+#define T_Port 380
+#define T_Preempt 381
+#define T_Prefer 382
+#define T_Protostats 383
+#define T_Pw 384
+#define T_Qos 385
+#define T_Randfile 386
+#define T_Rawstats 387
+#define T_Refid 388
+#define T_Requestkey 389
+#define T_Reset 390
+#define T_Restrict 391
+#define T_Revoke 392
+#define T_Saveconfigdir 393
+#define T_Server 394
+#define T_Setvar 395
+#define T_Source 396
+#define T_Statistics 397
+#define T_Stats 398
+#define T_Statsdir 399
+#define T_Step 400
+#define T_Stepout 401
+#define T_Stratum 402
+#define T_String 403
+#define T_Sys 404
+#define T_Sysstats 405
+#define T_Tick 406
+#define T_Time1 407
+#define T_Time2 408
+#define T_Timer 409
+#define T_Timingstats 410
+#define T_Tinker 411
+#define T_Tos 412
+#define T_Trap 413
+#define T_True 414
+#define T_Trustedkey 415
+#define T_Ttl 416
+#define T_Type 417
+#define T_U_int 418
+#define T_Unconfig 419
+#define T_Unpeer 420
+#define T_Version 421
+#define T_WanderThreshold 422
+#define T_Week 423
+#define T_Wildcard 424
+#define T_Xleave 425
+#define T_Year 426
+#define T_Flag 427
+#define T_EOC 428
+#define T_Simulate 429
+#define T_Beep_Delay 430
+#define T_Sim_Duration 431
+#define T_Server_Offset 432
+#define T_Duration 433
+#define T_Freq_Offset 434
+#define T_Wander 435
+#define T_Jitter 436
+#define T_Prop_Delay 437
+#define T_Proc_Delay 438
 
 
 
@@ -432,7 +434,7 @@ typedef union YYSTYPE
 
 
 /* Line 1685 of yacc.c  */
-#line 436 "ntp_parser.h"
+#line 438 "ntp_parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */

==== ntpd/ntp_parser.y ====
2011-10-31 04:40:02+00:00, davehart at shiny.ad.hartbrothers.com +14 -2
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

--- 1.70/ntpd/ntp_parser.y	2011-07-25 20:18:28 -04:00
+++ 1.71/ntpd/ntp_parser.y	2011-10-31 00:40:02 -04:00
@@ -160,6 +160,7 @@
 %token	<Integer>	T_Minpoll
 %token	<Integer>	T_Minsane
 %token	<Integer>	T_Mode
+%token	<Integer>	T_Mode7
 %token	<Integer>	T_Monitor
 %token	<Integer>	T_Month
 %token	<Integer>	T_Mru
@@ -309,6 +310,7 @@
 %type	<String_fifo>	string_list
 %type	<Attr_val>	system_option
 %type	<Integer>	system_option_flag_keyword
+%type	<Integer>	system_option_local_flag_keyword
 %type	<Attr_val_fifo>	system_option_list
 %type	<Integer>	t_default_or_zero
 %type	<Integer>	tinker_option_keyword
@@ -982,13 +984,18 @@ system_option_list
 system_option
 	:	system_option_flag_keyword
 			{ $$ = create_attr_ival(T_Flag, $1); }
-	|	T_Stats
+	|	system_option_local_flag_keyword
 		{ 
 			if (input_from_file) {
 				$$ = create_attr_ival(T_Flag, $1);
 			} else {
+				char err_str[128];
+				
 				$$ = NULL;
-				yyerror("enable/disable stats remote configuration ignored");
+				snprintf(err_str, sizeof(err_str),
+					 "enable/disable %s remote configuration ignored",
+					 keyword($1));
+				yyerror(err_str);
 			}
 		}
 	;
@@ -1000,6 +1007,11 @@ system_option_flag_keyword
 	|	T_Kernel
 	|	T_Monitor
 	|	T_Ntp
+	;
+
+system_option_local_flag_keyword
+	:	T_Mode7
+	|	T_Stats
 	;
 
 /* Tinker Commands

==== ntpd/ntp_proto.c ====
2011-10-31 04:40:02+00:00, davehart at shiny.ad.hartbrothers.com +7 -2
  Disable mode 7 (ntpdc) query processing in ntpd by default.  ntpq is
    believed to provide all functionality ntpdc did, and uses a less-
    fragile protocol that's safer and easier to maintain.  If you do find
    some management via ntpdc is needed, you can use "enable mode7" in the
    ntpd configuration.

--- 1.323/ntpd/ntp_proto.c	2011-10-09 01:08:20 -04:00
+++ 1.324/ntpd/ntp_proto.c	2011-10-31 00:40:02 -04:00
@@ -88,6 +88,7 @@ u_long	leap_expire;		/* leap information
 static int leap_vote;		/* leap consensus */
 keyid_t	sys_private;		/* private value for session seed */
 int	sys_manycastserver;	/* respond to manycast client pkts */
+int	ntp_mode7;		/* respond to ntpdc (mode7) */
 int	peer_ntpdate;		/* active peers in ntpdate mode */
 int	sys_survivors;		/* truest of the truechimers */
 char	*sys_ident = NULL;	/* identity scheme */
@@ -191,7 +192,7 @@ transmit(
 			peer_xmit(peer);
 		} else if (sys_survivors < sys_minclock ||
 		    peer_associations < sys_maxclock) {
-			if (peer->ttl < sys_ttlmax)
+			if (peer->ttl < (u_int32)sys_ttlmax)
 				peer->ttl++;
 			peer_xmit(peer);
 		}
@@ -400,7 +401,7 @@ receive(
 		return;				/* ignore everything */
 	}
 	if (hismode == MODE_PRIVATE) {
-		if (restrict_mask & RES_NOQUERY) {
+		if (!ntp_mode7 || (restrict_mask & RES_NOQUERY)) {
 			sys_restricted++;
 			return;			/* no query private */
 		}
@@ -3878,6 +3879,10 @@ proto_config(
 
 	case PROTO_NTP:		/* NTP discipline (ntp) */
 		ntp_enable = value;
+		break;
+
+	case PROTO_MODE7:	/* mode7 management (ntpdc) */
+		ntp_mode7 = value;
 		break;
 
 	case PROTO_PPS:		/* PPS discipline (pps) */

#### ChangeSet ####
2011-10-31 03:52:23+00:00, davehart at shiny.ad.hartbrothers.com
  Directly limit the number of datagrams in a mrulist response, rather
    than limiting the number of entries returned to indirectly limit the
    datagram count.

==== ChangeLog ====
2011-10-31 03:52:17+00:00, davehart at shiny.ad.hartbrothers.com +3 -0
  Directly limit the number of datagrams in a mrulist response, rather
    than limiting the number of entries returned to indirectly limit the
    datagram count.

--- 1.1038/ChangeLog	2011-10-25 20:22:49 -04:00
+++ 1.1039/ChangeLog	2011-10-30 23:52:17 -04:00
@@ -1,3 +1,6 @@
+* Directly limit the number of datagrams in a mrulist response, rather
+  than limiting the number of entries returned to indirectly limit the
+  datagram count.
 (4.2.7p229) 2011/10/26 Released by Harlan Stenn <stenn at ntp.org>
 * [Bug 1995] fix wrong use of ZERO() macro in 'ntp_calendar.c'
 (4.2.7p228) 2011/10/23 Released by Harlan Stenn <stenn at ntp.org>

==== include/ntp.h ====
2011-10-31 03:52:17+00:00, davehart at shiny.ad.hartbrothers.com +2 -0
  Directly limit the number of datagrams in a mrulist response, rather
    than limiting the number of entries returned to indirectly limit the
    datagram count.

--- 1.197/include/ntp.h	2011-10-04 17:34:31 -04:00
+++ 1.198/include/ntp.h	2011-10-30 23:52:17 -04:00
@@ -880,4 +880,6 @@ struct endpoint {
 
 /* ntpq -c mrulist rows per request limit in ntpd */
 #define MRU_ROW_LIMIT	256
+/* similar datagrams per response limit for ntpd */
+#define MRU_FRAGS_LIMIT	128
 #endif /* NTP_H */

==== libntp/ntp_random.c ====
2011-10-31 03:52:17+00:00, davehart at shiny.ad.hartbrothers.com +8 -5
  Seed rand() while seeding ntp_random(), so that code needing low-grade
    random numbers can use the former.

--- 1.8/libntp/ntp_random.c	2011-02-20 15:22:33 -05:00
+++ 1.9/libntp/ntp_random.c	2011-10-30 23:52:17 -04:00
@@ -45,7 +45,7 @@ static char sccsid[] = "@(#)random.c	8.2
 #endif
 #include <stdio.h>
 
-#include <ntp_types.h>
+#include <l_stdlib.h>
 #include <ntp_random.h>
 #include <ntp_unixtime.h>
 
@@ -261,19 +261,22 @@ ntp_srandom(
 	unsigned long x
 	)
 {
-	register long i;
+	long i;
 
-	if (rand_type == TYPE_0)
+	if (rand_type == TYPE_0) {
 		state[0] = x;
-	else {
+	} else {
 		state[0] = x;
 		for (i = 1; i < rand_deg; i++)
 			state[i] = good_rand(state[i - 1]);
 		fptr = &state[rand_sep];
 		rptr = &state[0];
 		for (i = 0; i < 10 * rand_deg; i++)
-			(void)ntp_random();
+			x = ntp_random();
 	}
+
+	/* seed the likely faster (and poorer) rand() as well */
+	srand((u_int)x);
 }
 
 /*

==== ntpd/ntp_control.c ====
2011-10-31 03:52:17+00:00, davehart at shiny.ad.hartbrothers.com +53 -28
  Directly limit the number of datagrams in a mrulist response, rather
    than limiting the number of entries returned to indirectly limit the
    datagram count.

--- 1.171/ntpd/ntp_control.c	2011-10-02 04:47:55 -04:00
+++ 1.172/ntpd/ntp_control.c	2011-10-30 23:52:17 -04:00
@@ -764,7 +764,8 @@ static struct ntp_control rpkt;
 static u_char	res_version;
 static u_char	res_opcode;
 static associd_t res_associd;
-static int	res_offset;
+static u_short	res_frags;	/* datagrams in this response */
+static int	res_offset;	/* offset of payload in response */
 static u_char * datapt;
 static u_char * dataend;
 static int	datalinelen;
@@ -778,7 +779,7 @@ static keyid_t	res_keyid;
 
 #define MAXDATALINELEN	(72)
 
-static u_char	res_async;	/* set to 1 if this is async trap response */
+static u_char	res_async;	/* sending async trap response? */
 
 /*
  * Pointers for saving state when decoding request packets
@@ -1035,14 +1036,15 @@ process_control(
 	rpkt.sequence = pkt->sequence;
 	rpkt.associd = pkt->associd;
 	rpkt.status = 0;
+	res_frags = 1;
 	res_offset = 0;
 	res_associd = htons(pkt->associd);
-	res_async = 0;
-	res_authenticate = 0;
+	res_async = FALSE;
+	res_authenticate = FALSE;
 	res_keyid = 0;
-	res_authokay = 0;
+	res_authokay = FALSE;
 	req_count = (int)ntohs(pkt->count);
-	datanotbinflag = 0;
+	datanotbinflag = FALSE;
 	datalinelen = 0;
 	datapt = rpkt.u.data;
 	dataend = &rpkt.u.data[CTL_MAX_DATA_LEN];
@@ -1070,7 +1072,7 @@ process_control(
 	if ((rbufp->recv_length & 3) == 0 &&
 	    maclen >= MIN_MAC_LEN && maclen <= MAX_MAC_LEN &&
 	    sys_authenticate) {
-		res_authenticate = 1;
+		res_authenticate = TRUE;
 		pkid = (void *)((char *)pkt + properlen);
 		res_keyid = ntohl(*pkid);
 		DPRINTF(3, ("recv_len %d, properlen %d, wants auth with keyid %08x, MAC length=%d\n",
@@ -1082,7 +1084,7 @@ process_control(
 		else if (authdecrypt(res_keyid, (u_int32 *)pkt,
 				     rbufp->recv_length - maclen,
 				     maclen)) {
-			res_authokay = 1;
+			res_authokay = TRUE;
 			DPRINTF(3, ("authenticated okay\n"));
 		} else {
 			res_keyid = 0;
@@ -1266,9 +1268,10 @@ ctl_flushpkt(
 					     (u_int32 *)&rpkt, totlen);
 			sendpkt(rmt_addr, lcl_inter, -5,
 				(struct pkt *)&rpkt, totlen + maclen);
-		} else
+		} else {
 			sendpkt(rmt_addr, lcl_inter, -6,
 				(struct pkt *)&rpkt, sendlen);
+		}
 		if (more)
 			numctlfrags++;
 		else
@@ -1278,6 +1281,7 @@ ctl_flushpkt(
 	/*
 	 * Set us up for another go around.
 	 */
+	res_frags++;
 	res_offset += dlen;
 	datapt = rpkt.u.data;
 }
@@ -1298,7 +1302,7 @@ ctl_putdata(
 
 	overhead = 0;
 	if (!bin) {
-		datanotbinflag = 1;
+		datanotbinflag = TRUE;
 		overhead = 3;
 		if (datapt != rpkt.u.data) {
 			*datapt++ = ',';
@@ -3414,17 +3418,18 @@ send_mru_entry(
  * and ifstats responses, the first and last rows are spiced with
  * randomly-generated tag names with correct .# index.
  * Make it three characters knowing that none of the currently-used
- * tags have that length, avoiding the need to test for tag collision.
+ * subscripted tags have that length, avoiding the need to test for
+ * tag collision.
  */
 static void
 send_random_tag_value(
 	int	indx
 	)
 {
-	u_long	noise;
+	int	noise;
 	char	buf[32];
 
-	noise = ntp_random();
+	noise = rand();
 	buf[0] = 'a' + noise % 26;
 	noise >>= 5;
 	buf[1] = 'a' + noise % 26;
@@ -3472,14 +3477,18 @@ send_random_tag_value(
  *	nonce=		Regurgitated nonce retrieved by the client
  *			previously using CTL_OP_REQ_NONCE, demonstrating
  *			ability to receive traffic sent to its address.
- *	limit=		Limit on MRU entries returned.  This is the sole
- *			required input parameter.  [1...256]
+ *	frags=		Limit on datagrams (fragments) in response.  Used
+ *			by newer ntpq versions instead of limit= when
+ *			retrieving multiple entries.
+ *	limit=		Limit on MRU entries returned.  One of frags= or
+ *			limit= must be provided.
  *			limit=1 is a special case:  Instead of fetching
  *			beginning with the supplied starting point's
  *			newer neighbor, fetch the supplied entry, and
  *			in that case the #.last timestamp can be zero.
  *			This enables fetching a single entry by IP
- *			address.
+ *			address.  When limit is not one and frags= is
+ *			provided, the fragment limit controls.
  *	mincount=	(decimal) Return entries with count >= mincount.
  *	laddr=		Return entries associated with the server's IP
  *			address given.  No port specification is needed,
@@ -3554,6 +3563,7 @@ static void read_mru_list(
 	)
 {
 	const char		nonce_text[] =		"nonce";
+	const char		frags_text[] =		"frags";
 	const char		limit_text[] =		"limit";
 	const char		mincount_text[] =	"mincount";
 	const char		resall_text[] =		"resall";
@@ -3562,6 +3572,7 @@ static void read_mru_list(
 	const char		laddr_text[] =		"laddr";
 	const char		resaxx_fmt[] =		"0x%hx";
 	u_int			limit;
+	u_short			frags;
 	u_short			resall;
 	u_short			resany;
 	int			mincount;
@@ -3592,6 +3603,7 @@ static void read_mru_list(
 	 */
 	in_parms = NULL;
 	set_var(&in_parms, nonce_text, sizeof(nonce_text), 0);
+	set_var(&in_parms, frags_text, sizeof(frags_text), 0);
 	set_var(&in_parms, limit_text, sizeof(limit_text), 0);
 	set_var(&in_parms, mincount_text, sizeof(mincount_text), 0);
 	set_var(&in_parms, resall_text, sizeof(resall_text), 0);
@@ -3607,6 +3619,7 @@ static void read_mru_list(
 
 	/* decode input parms */
 	pnonce = NULL;
+	frags = 0;
 	limit = 0;
 	mincount = 0;
 	resall = 0;
@@ -3624,19 +3637,21 @@ static void read_mru_list(
 			if (NULL != pnonce)
 				free(pnonce);
 			pnonce = estrdup(val);
-		} else if (!strcmp(limit_text, v->text))
+		} else if (!strcmp(frags_text, v->text)) {
+			sscanf(val, "%hu", &frags);
+		} else if (!strcmp(limit_text, v->text)) {
 			sscanf(val, "%u", &limit);
-		else if (!strcmp(mincount_text, v->text)) {
+		} else if (!strcmp(mincount_text, v->text)) {
 			if (1 != sscanf(val, "%d", &mincount) ||
 			    mincount < 0)
 				mincount = 0;
-		} else if (!strcmp(resall_text, v->text))
+		} else if (!strcmp(resall_text, v->text)) {
 			sscanf(val, resaxx_fmt, &resall);
-		else if (!strcmp(resany_text, v->text))
+		} else if (!strcmp(resany_text, v->text)) {
 			sscanf(val, resaxx_fmt, &resany);
-		else if (!strcmp(maxlstint_text, v->text))
+		} else if (!strcmp(maxlstint_text, v->text)) {
 			sscanf(val, "%u", &maxlstint);
-		else if (!strcmp(laddr_text, v->text)) {
+		} else if (!strcmp(laddr_text, v->text)) {
 			if (decodenetnum(val, &laddr))
 				lcladr = getinterface(&laddr, 0);
 		} else if (1 == sscanf(v->text, last_fmt, &i) &&
@@ -3668,12 +3683,21 @@ static void read_mru_list(
 	if (!nonce_valid)
 		return;
 
-	if (!(0 < limit && limit <= MRU_ROW_LIMIT)) {
+	if ((0 == frags && !(0 < limit && limit <= MRU_ROW_LIMIT)) ||
+	    frags > MRU_FRAGS_LIMIT) {
 		ctl_error(CERR_BADVALUE);
 		return;
 	}
 
 	/*
+	 * If either frags or limit is not given, use the max.
+	 */
+	if (0 != frags && 0 == limit)
+		limit = UINT_MAX;
+	else if (0 != limit && 0 == frags)
+		frags = MRU_FRAGS_LIMIT;
+
+	/*
 	 * Find the starting point if one was provided.
 	 */
 	mon = NULL;
@@ -3711,18 +3735,19 @@ static void read_mru_list(
 		 */
 		if (limit > 1)
 			mon = PREV_DLIST(mon_mru_list, mon, mru);
-	} else		/* start with the oldest */
+	} else {	/* start with the oldest */
 		mon = TAIL_DLIST(mon_mru_list, mru);
+	}
 	
 	/*
-	 * send up to limit= entries
+	 * send up to limit= entries in up to frags= datagrams
 	 */
 	get_systime(&now);
 	generate_nonce(rbufp, buf, sizeof(buf));
 	ctl_putunqstr("nonce", buf, strlen(buf));
 	prior_mon = NULL;
 	for (count = 0;
-	     count < limit && mon != NULL;
+	     mon != NULL && res_frags < frags && count < limit;
 	     mon = PREV_DLIST(mon_mru_list, mon, mru)) {
 
 		if (mon->count < mincount)
@@ -4381,8 +4406,8 @@ report_event(
 	 */
 	res_opcode = CTL_OP_ASYNCMSG;
 	res_offset = 0;
-	res_async = 1;
-	res_authenticate = 0;
+	res_async = TRUE;
+	res_authenticate = FALSE;
 	datapt = rpkt.u.data;
 	dataend = &rpkt.u.data[CTL_MAX_DATA_LEN];
 	if (!(err & PEER_EVENT)) {

==== ntpq/ntpq-subs.c ====
2011-10-31 03:52:18+00:00, davehart at shiny.ad.hartbrothers.com +53 -21
  Directly limit the number of datagrams in a mrulist response, rather
    than limiting the number of entries returned to indirectly limit the
    datagram count.

--- 1.90/ntpq/ntpq-subs.c	2011-10-18 02:33:04 -04:00
+++ 1.91/ntpq/ntpq-subs.c	2011-10-30 23:52:18 -04:00
@@ -2249,6 +2249,8 @@ collect_mru_list(
 	int rsize;
 	const char *rdata;
 	int limit;
+	int frags;
+	int cap_frags;
 	char *tag;
 	char *val;
 	int si;		/* server index in response */
@@ -2280,6 +2282,7 @@ collect_mru_list(
 	c_mru_l_rc = FALSE;
 	list_complete = FALSE;
 	have_now = FALSE;
+	cap_frags = TRUE;
 	got = 0;
 	ri = 0;
 	cb = sizeof(*mon);
@@ -2294,8 +2297,9 @@ collect_mru_list(
 	next_report = time(NULL) + MRU_REPORT_SECS;
 
 	limit = min(3 * MAXFRAGS, ntpd_row_limit);
-	snprintf(req_buf, sizeof(req_buf), "nonce=%s, limit=%d%s",
-		 nonce, limit, parms);
+	frags = MAXFRAGS;
+	snprintf(req_buf, sizeof(req_buf), "nonce=%s, frags=%d%s",
+		 nonce, frags, parms);
 	nonce_uses++;
 
 	while (TRUE) {
@@ -2349,24 +2353,39 @@ collect_mru_list(
 				"CERR_UNKNOWNVAR from ntpd but no priors given.\n");
 			goto cleanup_return;
 		} else if (CERR_BADVALUE == qres) {
-			/* ntpd has lower cap on row limit */
-			ntpd_row_limit--;
-			limit = min(limit, ntpd_row_limit);
-			if (debug)
-				fprintf(stderr,
-					"Row limit reduced to %d following CERR_BADVALUE.\n",
-				        limit);
+			if (cap_frags) {
+				cap_frags = FALSE;
+				if (debug)
+					fprintf(stderr,
+						"Reverted to row limit from fragments limit.\n");
+			} else {
+				/* ntpd has lower cap on row limit */
+				ntpd_row_limit--;
+				limit = min(limit, ntpd_row_limit);
+				if (debug)
+					fprintf(stderr,
+						"Row limit reduced to %d following CERR_BADVALUE.\n",
+						limit);
+			}
 		} else if (ERR_INCOMPLETE == qres ||
 			   ERR_TIMEOUT == qres) {
 			/*
-			 * Reduce the number of rows to minimize effect
-			 * of single lost packets.
+			 * Reduce the number of rows/frags requested by
+			 * half to recover from lost response fragments.
 			 */
-			limit = max(2, limit / 2);
-			if (debug)
-				fprintf(stderr,
-					"Row limit reduced to %d following incomplete response.\n",
-					limit);
+			if (cap_frags) {
+				frags = max(2, frags / 2);
+				if (debug)
+					fprintf(stderr,
+						"Frag limit reduced to %d following incomplete response.\n",
+						frags);
+			} else {
+				limit = max(2, limit / 2);
+				if (debug)
+					fprintf(stderr,
+						"Row limit reduced to %d following incomplete response.\n",
+						limit);
+			}
 		} else if (qres) {
 			show_error_msg(qres, 0);
 			goto cleanup_return;
@@ -2595,9 +2614,16 @@ collect_mru_list(
 		 * no less than 3 rows fit in each packet, capped at 
 		 * our best guess at the server's row limit.
 		 */
-		if (!qres)
-			limit = min3(3 * MAXFRAGS, ntpd_row_limit,
-				     max(limit + 1, limit * 33 / 32));
+		if (!qres) {
+			if (cap_frags) {
+				frags = min(MAXFRAGS, frags + 1);
+			} else {
+				limit = min3(3 * MAXFRAGS,
+					     ntpd_row_limit,
+					     max(limit + 1,
+					         limit * 33 / 32));
+			}
+		}
 		/*
 		 * prepare next query with as many address and last-seen
 		 * timestamps as will fit in a single packet.
@@ -2605,8 +2631,14 @@ collect_mru_list(
 		req = req_buf;
 		req_end = req_buf + sizeof(req_buf);
 #define REQ_ROOM	(req_end - req)
-		snprintf(req, REQ_ROOM, "nonce=%s, limit=%d%s", nonce,
-			 limit, parms);
+		snprintf(req, REQ_ROOM, "nonce=%s, %s=%d%s", nonce,
+			 (cap_frags)
+			     ? "frags"
+			     : "limit",
+			 (cap_frags)
+			     ? frags
+			     : limit,
+			 parms);
 		req += strlen(req);
 		nonce_uses++;
 		if (nonce_uses >= 4) {

==== util/ntp-keygen.c ====
2011-10-31 03:52:18+00:00, davehart at shiny.ad.hartbrothers.com +1 -1
  Use a better random seed for ntp-keygen (tv_sec + tv_usec)

--- 1.86/util/ntp-keygen.c	2011-10-02 18:12:46 -04:00
+++ 1.87/util/ntp-keygen.c	2011-10-30 23:52:18 -04:00
@@ -347,6 +347,7 @@ main(
 	passwd1 = hostbuf;
 	passwd2 = NULL;
 	GETTIMEOFDAY(&tv, NULL);
+	ntp_srandom((u_long)(tv.tv_sec + tv.tv_usec));
 	epoch = tv.tv_sec;
 	fstamp = (u_int)(epoch + JAN_1970);
 
@@ -817,7 +818,6 @@ gen_md5(
 #endif	/* OPENSSL */
 
 	str = fheader("MD5key", id, groupname);
-	ntp_srandom((u_long)epoch);
 	for (i = 1; i <= MD5KEYS; i++) {
 		for (j = 0; j < MD5SIZE; j++) {
 			int temp;


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