]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Added restrict keyword "mssntp" for Samba4 DC operation, by Dave Mills
authorHarlan Stenn <stenn@ntp.org>
Sat, 11 Jul 2009 05:37:42 +0000 (01:37 -0400)
committerHarlan Stenn <stenn@ntp.org>
Sat, 11 Jul 2009 05:37:42 +0000 (01:37 -0400)
bk: 4a582526vUb5mt-aS7e29YDHzoMZCQ

ChangeLog
html/accopt.html
include/ntp.h
ntpd/ntp_config.c
ntpd/ntp_parser.c
ntpd/ntp_parser.h
ntpd/ntp_parser.y
ntpd/ntp_proto.c

index d15907295a89b207f6ed27b9c3374e325553e9c7..83c4fdbbd1fb186a09dd5093d9ed9a7e2457cd78 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+* Added restrict keyword "mssntp" for Samba4 DC operation, by Dave Mills.
+* [Bug 1242] Remove --enable-wintime, symmetric workaround is now
+  always enabled.
 (4.2.5p186) 2009/07/08 Released by Harlan Stenn <stenn@ntp.org>
 * ntp_proto.c cleanup from Dave Mills.
 (4.2.5p185) 2009/07/01 Released by Harlan Stenn <stenn@ntp.org>
index 73b4943a0cd65bcdf24d75ce0b7bd39df8bb80bd..98cc734886bfca246224c7568e29e38bc786aa36 100644 (file)
@@ -16,7 +16,7 @@
 
 <p>The skunk watches for intruders and sprays.</p>
 <p>Last update: 
-<!-- #BeginDate format:En2m -->09-May-2009  20:23<!-- #EndDate -->
+<!-- #BeginDate format:En2m -->10-Jul-2009  14:53<!-- #EndDate -->
                UTC</p>
 <br clear="left">
 
@@ -113,17 +113,18 @@ time) in log<sub>2</sub> s with default 3.</dd>
 <dt><tt>notrust</tt></dt>
 <dd>Deny packets that are not cryptographically authenticated.</dd>
 
-<dt><tt>ntpport</tt></dt>
-<dt><tt>non-ntpport</tt></dt>
-<dd>This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both <tt>ntpport</tt> and <tt>non-ntpport</tt> may be specified. The <tt>ntpport</tt> is considered more specific and is sorted later in the list.</dd>
-
-<dt><tt>version</tt></dt>
-<dd>Deny packets that do not match the current NTP version.</dd>
-
-</dl></dd>
-
+<dt><tt>mssntp</tt></dt>
+<dd>Enable Windows Active Directory authentication. See the <a href="authopt.html">Authentication Options
+       page.</a></dd>
+
+               <dt><tt>ntpport</tt></dt>
+                       <dt><tt>non-ntpport</tt></dt>
+                       <dd>This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both <tt>ntpport</tt> and <tt>non-ntpport</tt> may be specified. The <tt>ntpport</tt> is considered more specific and is sorted later in the list.</dd>
+                       <dt><tt>version</tt></dt>
+                       <dd>Deny packets that do not match the current NTP version.</dd>
+               </dl>
+</dd>
 <dd>Default restriction list entries with the flags <tt>ignore, ntpport</tt>, for each of the local host's interface addresses are inserted into the table at startup to prevent the server from attempting to synchronize to its own time. A default entry is also always present, though if it is otherwise unconfigured; no flags are associated with the default entry (i.e., everything besides your own NTP server is unrestricted).</dd>
-
 </dl>
 
 <hr>
@@ -131,4 +132,4 @@ time) in log<sub>2</sub> s with default 3.</dd>
 
 </body>
 
-</html>
\ No newline at end of file
+</html>
index 120a3e01df997f9a9d3710496418ae541ee02730..e9d428fb2129ee6d7b671d71b64a63c70f71369c 100644 (file)
@@ -450,7 +450,6 @@ struct peer {
 #ifdef OPENSSL
 #define FLAG_ASSOC     0x8000  /* autokey request */
 #endif /* OPENSSL */
-#define FLAG_ADKEY      0x10000      /* Authenticated (or wants reply to be authenticated) using AD authentication */
 
 /*
  * Definitions for the clear() routine.  We use memset() to clear
@@ -794,29 +793,29 @@ struct restrictlist6 {
 /*
  * Access flags
  */
-#define        RES_IGNORE              0x001   /* ignore packet */
-#define        RES_DONTSERVE           0x002   /* access denied */
-#define        RES_DONTTRUST           0x004   /* authentication required */
-#define        RES_VERSION             0x008   /* version mismatch */
-#define        RES_NOPEER              0x010   /* new association denied */
-#define RES_LIMITED            0x020   /* packet rate exceeded */
-
+#define        RES_IGNORE              0x0001  /* ignore packet */
+#define        RES_DONTSERVE           0x0002  /* access denied */
+#define        RES_DONTTRUST           0x0004  /* authentication required */
+#define        RES_VERSION             0x0008  /* version mismatch */
+#define        RES_NOPEER              0x0010  /* new association denied */
+#define RES_LIMITED            0x0020  /* packet rate exceeded */
 #define RES_FLAGS              (RES_IGNORE | RES_DONTSERVE |\
                                    RES_DONTTRUST | RES_VERSION |\
                                    RES_NOPEER | RES_LIMITED)
 
-#define        RES_NOQUERY             0x040   /* mode 6/7 packet denied */
-#define        RES_NOMODIFY            0x080   /* mode 6/7 modify denied */
-#define        RES_NOTRAP              0x100   /* mode 6/7 set trap denied */
-#define        RES_LPTRAP              0x200   /* mode 6/7 low priority trap */
+#define        RES_NOQUERY             0x0040  /* mode 6/7 packet denied */
+#define        RES_NOMODIFY            0x0080  /* mode 6/7 modify denied */
+#define        RES_NOTRAP              0x0100  /* mode 6/7 set trap denied */
+#define        RES_LPTRAP              0x0200  /* mode 6/7 low priority trap */
 
-#define RES_KOD                        0x400   /* send kiss of death packet */
-#define RES_TIMEOUT            0x800   /* timeout this entry */
+#define RES_KOD                        0x0400  /* send kiss of death packet */
+#define        RES_MSSNTP              0x0800  /* enable MS-SNTP authentication */
+#define RES_TIMEOUT            0x1000  /* timeout this entry */
 
 #define        RES_ALLFLAGS            (RES_FLAGS | RES_NOQUERY |\
                                    RES_NOMODIFY | RES_NOTRAP |\
                                    RES_LPTRAP | RES_KOD |\
-                                   RES_TIMEOUT)
+                                   RES_MSSNTP | RES_TIMEOUT)
 
 /*
  * Match flags
index caa1444a64b674169ddd90c6c878a5ee1f8689ef..b1e377debe9e6074b1c3236d748d512059972f16 100644 (file)
@@ -1006,6 +1006,7 @@ struct key_tok keyword_list[] = {
        { "flake",              T_Flake,           NO_ARG },
        { "ignore",             T_Ignore,          NO_ARG },
        { "limited",            T_Limited,         NO_ARG },
+       { "mssntp",             T_Mssntp,          NO_ARG },
        { "kod",                T_Kod,             NO_ARG },
        { "lowpriotrap",        T_Lowpriotrap,     NO_ARG },
        { "mask",               T_Mask,            NO_ARG },
index 13cee59af93b1a32b71d6f2e1ab061799a903a68..c7df92d27692ea35f28c9bc2d320aad3739c70f0 100644 (file)
 
 
 /* Line 189 of yacc.c  */
-#line 107 "ntp_parser.c"
+#line 107 "../../ntpd/ntp_parser.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
      T_Keys = 311,
      T_Keysdir = 312,
      T_Kod = 313,
-     T_Leap = 314,
-     T_Leapfile = 315,
-     T_Limited = 316,
-     T_Link = 317,
-     T_Logconfig = 318,
-     T_Logfile = 319,
-     T_Loopstats = 320,
-     T_Lowpriotrap = 321,
-     T_Manycastclient = 322,
-     T_Manycastserver = 323,
-     T_Mask = 324,
-     T_Maxclock = 325,
-     T_Maxdist = 326,
-     T_Maxhop = 327,
-     T_Maxpoll = 328,
-     T_Minclock = 329,
-     T_Mindist = 330,
-     T_Minimum = 331,
-     T_Minpoll = 332,
-     T_Minsane = 333,
-     T_Mode = 334,
-     T_Monitor = 335,
-     T_Month = 336,
-     T_Multicastclient = 337,
-     T_Nolink = 338,
-     T_Nomodify = 339,
-     T_None = 340,
-     T_Nopeer = 341,
-     T_Noquery = 342,
-     T_Noselect = 343,
-     T_Noserve = 344,
-     T_Notrap = 345,
-     T_Notrust = 346,
-     T_Novolley = 347,
-     T_Ntp = 348,
-     T_Ntpport = 349,
-     T_NtpSignDsocket = 350,
-     T_Orphan = 351,
-     T_Panic = 352,
-     T_Peer = 353,
-     T_Peerstats = 354,
-     T_Phone = 355,
-     T_Pid = 356,
-     T_Pidfile = 357,
-     T_Pool = 358,
-     T_Port = 359,
-     T_Pps = 360,
-     T_Preempt = 361,
-     T_Prefer = 362,
-     T_Protostats = 363,
-     T_Pw = 364,
-     T_Qos = 365,
-     T_RandFile = 366,
-     T_Rawstats = 367,
-     T_Refid = 368,
-     T_Requestkey = 369,
-     T_Restrict = 370,
-     T_Revoke = 371,
-     T_Server = 372,
-     T_Setvar = 373,
-     T_Sign = 374,
-     T_Statistics = 375,
-     T_Stats = 376,
-     T_Statsdir = 377,
-     T_Step = 378,
-     T_Stepout = 379,
-     T_Stratum = 380,
-     T_String = 381,
-     T_Sysstats = 382,
-     T_Tick = 383,
-     T_Time1 = 384,
-     T_Time2 = 385,
-     T_Timingstats = 386,
-     T_Tinker = 387,
-     T_Tos = 388,
-     T_Trap = 389,
-     T_True = 390,
-     T_Trustedkey = 391,
-     T_Ttl = 392,
-     T_Type = 393,
-     T_Unconfig = 394,
-     T_Unpeer = 395,
-     T_Version = 396,
-     T_WanderThreshold = 397,
-     T_Week = 398,
-     T_Xleave = 399,
-     T_Year = 400,
-     T_Flag = 401,
-     T_Void = 402,
-     T_EOC = 403,
-     T_Simulate = 404,
-     T_Beep_Delay = 405,
-     T_Sim_Duration = 406,
-     T_Server_Offset = 407,
-     T_Duration = 408,
-     T_Freq_Offset = 409,
-     T_Wander = 410,
-     T_Jitter = 411,
-     T_Prop_Delay = 412,
-     T_Proc_Delay = 413
+     T_Mssntp = 314,
+     T_Leap = 315,
+     T_Leapfile = 316,
+     T_Limited = 317,
+     T_Link = 318,
+     T_Logconfig = 319,
+     T_Logfile = 320,
+     T_Loopstats = 321,
+     T_Lowpriotrap = 322,
+     T_Manycastclient = 323,
+     T_Manycastserver = 324,
+     T_Mask = 325,
+     T_Maxclock = 326,
+     T_Maxdist = 327,
+     T_Maxhop = 328,
+     T_Maxpoll = 329,
+     T_Minclock = 330,
+     T_Mindist = 331,
+     T_Minimum = 332,
+     T_Minpoll = 333,
+     T_Minsane = 334,
+     T_Mode = 335,
+     T_Monitor = 336,
+     T_Month = 337,
+     T_Multicastclient = 338,
+     T_Nolink = 339,
+     T_Nomodify = 340,
+     T_None = 341,
+     T_Nopeer = 342,
+     T_Noquery = 343,
+     T_Noselect = 344,
+     T_Noserve = 345,
+     T_Notrap = 346,
+     T_Notrust = 347,
+     T_Novolley = 348,
+     T_Ntp = 349,
+     T_Ntpport = 350,
+     T_NtpSignDsocket = 351,
+     T_Orphan = 352,
+     T_Panic = 353,
+     T_Peer = 354,
+     T_Peerstats = 355,
+     T_Phone = 356,
+     T_Pid = 357,
+     T_Pidfile = 358,
+     T_Pool = 359,
+     T_Port = 360,
+     T_Pps = 361,
+     T_Preempt = 362,
+     T_Prefer = 363,
+     T_Protostats = 364,
+     T_Pw = 365,
+     T_Qos = 366,
+     T_RandFile = 367,
+     T_Rawstats = 368,
+     T_Refid = 369,
+     T_Requestkey = 370,
+     T_Restrict = 371,
+     T_Revoke = 372,
+     T_Server = 373,
+     T_Setvar = 374,
+     T_Sign = 375,
+     T_Statistics = 376,
+     T_Stats = 377,
+     T_Statsdir = 378,
+     T_Step = 379,
+     T_Stepout = 380,
+     T_Stratum = 381,
+     T_String = 382,
+     T_Sysstats = 383,
+     T_Tick = 384,
+     T_Time1 = 385,
+     T_Time2 = 386,
+     T_Timingstats = 387,
+     T_Tinker = 388,
+     T_Tos = 389,
+     T_Trap = 390,
+     T_True = 391,
+     T_Trustedkey = 392,
+     T_Ttl = 393,
+     T_Type = 394,
+     T_Unconfig = 395,
+     T_Unpeer = 396,
+     T_Version = 397,
+     T_WanderThreshold = 398,
+     T_Week = 399,
+     T_Xleave = 400,
+     T_Year = 401,
+     T_Flag = 402,
+     T_Void = 403,
+     T_EOC = 404,
+     T_Simulate = 405,
+     T_Beep_Delay = 406,
+     T_Sim_Duration = 407,
+     T_Server_Offset = 408,
+     T_Duration = 409,
+     T_Freq_Offset = 410,
+     T_Wander = 411,
+     T_Jitter = 412,
+     T_Prop_Delay = 413,
+     T_Proc_Delay = 414
    };
 #endif
 /* Tokens.  */
 #define T_Keys 311
 #define T_Keysdir 312
 #define T_Kod 313
-#define T_Leap 314
-#define T_Leapfile 315
-#define T_Limited 316
-#define T_Link 317
-#define T_Logconfig 318
-#define T_Logfile 319
-#define T_Loopstats 320
-#define T_Lowpriotrap 321
-#define T_Manycastclient 322
-#define T_Manycastserver 323
-#define T_Mask 324
-#define T_Maxclock 325
-#define T_Maxdist 326
-#define T_Maxhop 327
-#define T_Maxpoll 328
-#define T_Minclock 329
-#define T_Mindist 330
-#define T_Minimum 331
-#define T_Minpoll 332
-#define T_Minsane 333
-#define T_Mode 334
-#define T_Monitor 335
-#define T_Month 336
-#define T_Multicastclient 337
-#define T_Nolink 338
-#define T_Nomodify 339
-#define T_None 340
-#define T_Nopeer 341
-#define T_Noquery 342
-#define T_Noselect 343
-#define T_Noserve 344
-#define T_Notrap 345
-#define T_Notrust 346
-#define T_Novolley 347
-#define T_Ntp 348
-#define T_Ntpport 349
-#define T_NtpSignDsocket 350
-#define T_Orphan 351
-#define T_Panic 352
-#define T_Peer 353
-#define T_Peerstats 354
-#define T_Phone 355
-#define T_Pid 356
-#define T_Pidfile 357
-#define T_Pool 358
-#define T_Port 359
-#define T_Pps 360
-#define T_Preempt 361
-#define T_Prefer 362
-#define T_Protostats 363
-#define T_Pw 364
-#define T_Qos 365
-#define T_RandFile 366
-#define T_Rawstats 367
-#define T_Refid 368
-#define T_Requestkey 369
-#define T_Restrict 370
-#define T_Revoke 371
-#define T_Server 372
-#define T_Setvar 373
-#define T_Sign 374
-#define T_Statistics 375
-#define T_Stats 376
-#define T_Statsdir 377
-#define T_Step 378
-#define T_Stepout 379
-#define T_Stratum 380
-#define T_String 381
-#define T_Sysstats 382
-#define T_Tick 383
-#define T_Time1 384
-#define T_Time2 385
-#define T_Timingstats 386
-#define T_Tinker 387
-#define T_Tos 388
-#define T_Trap 389
-#define T_True 390
-#define T_Trustedkey 391
-#define T_Ttl 392
-#define T_Type 393
-#define T_Unconfig 394
-#define T_Unpeer 395
-#define T_Version 396
-#define T_WanderThreshold 397
-#define T_Week 398
-#define T_Xleave 399
-#define T_Year 400
-#define T_Flag 401
-#define T_Void 402
-#define T_EOC 403
-#define T_Simulate 404
-#define T_Beep_Delay 405
-#define T_Sim_Duration 406
-#define T_Server_Offset 407
-#define T_Duration 408
-#define T_Freq_Offset 409
-#define T_Wander 410
-#define T_Jitter 411
-#define T_Prop_Delay 412
-#define T_Proc_Delay 413
+#define T_Mssntp 314
+#define T_Leap 315
+#define T_Leapfile 316
+#define T_Limited 317
+#define T_Link 318
+#define T_Logconfig 319
+#define T_Logfile 320
+#define T_Loopstats 321
+#define T_Lowpriotrap 322
+#define T_Manycastclient 323
+#define T_Manycastserver 324
+#define T_Mask 325
+#define T_Maxclock 326
+#define T_Maxdist 327
+#define T_Maxhop 328
+#define T_Maxpoll 329
+#define T_Minclock 330
+#define T_Mindist 331
+#define T_Minimum 332
+#define T_Minpoll 333
+#define T_Minsane 334
+#define T_Mode 335
+#define T_Monitor 336
+#define T_Month 337
+#define T_Multicastclient 338
+#define T_Nolink 339
+#define T_Nomodify 340
+#define T_None 341
+#define T_Nopeer 342
+#define T_Noquery 343
+#define T_Noselect 344
+#define T_Noserve 345
+#define T_Notrap 346
+#define T_Notrust 347
+#define T_Novolley 348
+#define T_Ntp 349
+#define T_Ntpport 350
+#define T_NtpSignDsocket 351
+#define T_Orphan 352
+#define T_Panic 353
+#define T_Peer 354
+#define T_Peerstats 355
+#define T_Phone 356
+#define T_Pid 357
+#define T_Pidfile 358
+#define T_Pool 359
+#define T_Port 360
+#define T_Pps 361
+#define T_Preempt 362
+#define T_Prefer 363
+#define T_Protostats 364
+#define T_Pw 365
+#define T_Qos 366
+#define T_RandFile 367
+#define T_Rawstats 368
+#define T_Refid 369
+#define T_Requestkey 370
+#define T_Restrict 371
+#define T_Revoke 372
+#define T_Server 373
+#define T_Setvar 374
+#define T_Sign 375
+#define T_Statistics 376
+#define T_Stats 377
+#define T_Statsdir 378
+#define T_Step 379
+#define T_Stepout 380
+#define T_Stratum 381
+#define T_String 382
+#define T_Sysstats 383
+#define T_Tick 384
+#define T_Time1 385
+#define T_Time2 386
+#define T_Timingstats 387
+#define T_Tinker 388
+#define T_Tos 389
+#define T_Trap 390
+#define T_True 391
+#define T_Trustedkey 392
+#define T_Ttl 393
+#define T_Type 394
+#define T_Unconfig 395
+#define T_Unpeer 396
+#define T_Version 397
+#define T_WanderThreshold 398
+#define T_Week 399
+#define T_Xleave 400
+#define T_Year 401
+#define T_Flag 402
+#define T_Void 403
+#define T_EOC 404
+#define T_Simulate 405
+#define T_Beep_Delay 406
+#define T_Sim_Duration 407
+#define T_Server_Offset 408
+#define T_Duration 409
+#define T_Freq_Offset 410
+#define T_Wander 411
+#define T_Jitter 412
+#define T_Prop_Delay 413
+#define T_Proc_Delay 414
 
 
 
@@ -472,7 +474,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 476 "ntp_parser.c"
+#line 478 "../../ntpd/ntp_parser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -484,7 +486,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 488 "ntp_parser.c"
+#line 490 "../../ntpd/ntp_parser.c"
 
 #ifdef short
 # undef short
@@ -699,20 +701,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  168
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   638
+#define YYLAST   635
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  162
+#define YYNTOKENS  163
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  64
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  231
+#define YYNRULES  232
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  368
+#define YYNSTATES  369
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   413
+#define YYMAXUTOK   414
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -726,13 +728,13 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   159,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   160,     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,   160,     2,   161,     2,     2,     2,     2,
+       2,     2,     2,   161,     2,   162,     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,
@@ -761,7 +763,7 @@ static const yytype_uint8 yytranslate[] =
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158
+     155,   156,   157,   158,   159
 };
 
 #if YYDEBUG
@@ -782,114 +784,115 @@ static const yytype_uint16 yyprhs[] =
      252,   254,   257,   260,   262,   264,   266,   268,   270,   272,
      274,   276,   278,   280,   282,   285,   289,   293,   298,   303,
      309,   310,   313,   315,   317,   319,   321,   323,   325,   327,
-     329,   331,   333,   335,   337,   339,   342,   344,   347,   350,
-     353,   357,   360,   362,   365,   368,   371,   374,   377,   380,
-     383,   386,   389,   392,   395,   397,   399,   401,   403,   405,
-     407,   409,   411,   414,   417,   419,   422,   425,   428,   431,
-     434,   437,   440,   444,   446,   449,   452,   455,   458,   461,
-     464,   467,   470,   473,   476,   479,   483,   486,   489,   491,
-     494,   495,   500,   504,   507,   509,   512,   515,   518,   520,
-     522,   525,   527,   530,   532,   535,   537,   539,   541,   543,
-     545,   547,   553,   555,   559,   562,   566,   570,   573,   575,
-     581,   586,   590,   593,   595,   602,   606,   609,   613,   617,
-     621,   625
+     329,   331,   333,   335,   337,   339,   341,   344,   346,   349,
+     352,   355,   359,   362,   364,   367,   370,   373,   376,   379,
+     382,   385,   388,   391,   394,   397,   399,   401,   403,   405,
+     407,   409,   411,   413,   416,   419,   421,   424,   427,   430,
+     433,   436,   439,   442,   446,   448,   451,   454,   457,   460,
+     463,   466,   469,   472,   475,   478,   481,   485,   488,   491,
+     493,   496,   497,   502,   506,   509,   511,   514,   517,   520,
+     522,   524,   527,   529,   532,   534,   537,   539,   541,   543,
+     545,   547,   549,   555,   557,   561,   564,   568,   572,   575,
+     577,   583,   588,   592,   595,   597,   604,   608,   611,   615,
+     619,   623,   627
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     163,     0,    -1,   164,    -1,   164,   165,   148,    -1,   165,
-     148,    -1,     1,   148,    -1,    -1,   166,    -1,   172,    -1,
-     174,    -1,   175,    -1,   182,    -1,   188,    -1,   179,    -1,
-     193,    -1,   196,    -1,   199,    -1,   202,    -1,   214,    -1,
-     167,   168,   170,    -1,   167,   168,    -1,   117,    -1,   103,
-      -1,    98,    -1,    12,    -1,    67,    -1,   169,    -1,    52,
-     126,    -1,    53,   126,    -1,   126,    -1,   170,   171,    -1,
-     171,    -1,     6,    -1,    11,   213,    -1,    15,    -1,    46,
-      -1,    55,    50,    -1,    77,    50,    -1,    73,    50,    -1,
-      88,    -1,   106,    -1,   107,    -1,   135,    -1,   144,    -1,
-     137,    50,    -1,    79,    50,    -1,   141,    50,    -1,   173,
-     168,    -1,   139,    -1,   140,    -1,    13,    -1,    13,    92,
-      -1,    68,   211,    -1,    82,   211,    -1,     6,    50,    -1,
-      21,    50,    -1,    22,   176,    -1,    56,   126,    -1,    57,
-     126,    -1,   114,    50,    -1,   136,   209,    -1,    95,   126,
-      -1,   177,    -1,    -1,   177,   178,    -1,   178,    -1,    44,
-     126,    -1,    47,   126,    -1,   109,   126,    -1,   111,   126,
-      -1,   116,    50,    -1,   119,   126,    -1,   133,   180,    -1,
-     180,   181,    -1,   181,    -1,    18,    50,    -1,    41,    50,
-      -1,    20,   212,    -1,    96,    50,    -1,    75,   213,    -1,
-      71,   213,    -1,    74,   213,    -1,    70,   213,    -1,    78,
-      50,    -1,    10,    50,    -1,    72,    50,    -1,   120,   183,
-      -1,   122,   126,    -1,    35,   184,   185,    -1,   183,   184,
-      -1,   184,    -1,    19,    -1,    23,    -1,    65,    -1,    99,
-      -1,   112,    -1,   127,    -1,   131,    -1,   108,    -1,   185,
-     186,    -1,   186,    -1,    34,   126,    -1,   138,   187,    -1,
-      62,    -1,    83,    -1,    31,    -1,    26,    -1,    85,    -1,
-     101,    -1,    24,    -1,   143,    -1,    81,    -1,   145,    -1,
-       3,    -1,    27,   191,    -1,   115,   168,   189,    -1,   115,
-      25,   189,    -1,   115,    52,    25,   189,    -1,   115,    53,
-      25,   189,    -1,   115,   169,    69,   169,   189,    -1,    -1,
-     189,   190,    -1,    40,    -1,    48,    -1,    58,    -1,    61,
-      -1,    66,    -1,    84,    -1,    86,    -1,    87,    -1,    89,
-      -1,    90,    -1,    91,    -1,    94,    -1,   141,    -1,   191,
-     192,    -1,   192,    -1,     8,    50,    -1,    76,    50,    -1,
-      80,    50,    -1,    43,   168,   194,    -1,   194,   195,    -1,
-     195,    -1,   129,   213,    -1,   130,   213,    -1,   125,    50,
-      -1,   113,   126,    -1,    36,   212,    -1,    37,   212,    -1,
-      38,   212,    -1,    39,   212,    -1,    31,   197,    -1,    26,
-     197,    -1,   197,   198,    -1,   198,    -1,     5,    -1,     9,
-      -1,    16,    -1,    54,    -1,    80,    -1,    93,    -1,   121,
-      -1,   132,   200,    -1,   200,   201,    -1,   201,    -1,     4,
-     213,    -1,    28,   213,    -1,    42,   213,    -1,    45,   213,
-      -1,    97,   213,    -1,   123,   213,    -1,   124,   213,    -1,
-      49,   126,   165,    -1,    32,    -1,    14,   213,    -1,    17,
-      50,    -1,   128,   213,    -1,    30,   203,    -1,    60,   126,
-      -1,   102,   126,    -1,    64,   126,    -1,     7,    50,    -1,
-      63,   207,    -1,   100,   210,    -1,   118,   204,    -1,   134,
-     169,   205,    -1,   137,   209,    -1,   110,   126,    -1,   126,
-      -1,   126,    29,    -1,    -1,   126,   159,   126,    25,    -1,
-     126,   159,   126,    -1,   205,   206,    -1,   206,    -1,   104,
-      50,    -1,    51,   169,    -1,   207,   208,    -1,   208,    -1,
-     126,    -1,   209,    50,    -1,    50,    -1,   210,   126,    -1,
-     126,    -1,   211,   168,    -1,   168,    -1,    50,    -1,   135,
-      -1,    33,    -1,    50,    -1,    29,    -1,   215,   160,   216,
-     218,   161,    -1,   149,    -1,   216,   217,   148,    -1,   217,
-     148,    -1,   150,   159,   213,    -1,   151,   159,   213,    -1,
-     218,   219,    -1,   219,    -1,   221,   160,   220,   222,   161,
-      -1,   152,   159,   213,   148,    -1,   117,   159,   168,    -1,
-     222,   223,    -1,   223,    -1,   153,   159,   213,   160,   224,
-     161,    -1,   224,   225,   148,    -1,   225,   148,    -1,   154,
-     159,   213,    -1,   155,   159,   213,    -1,   156,   159,   213,
-      -1,   157,   159,   213,    -1,   158,   159,   213,    -1
+     164,     0,    -1,   165,    -1,   165,   166,   149,    -1,   166,
+     149,    -1,     1,   149,    -1,    -1,   167,    -1,   173,    -1,
+     175,    -1,   176,    -1,   183,    -1,   189,    -1,   180,    -1,
+     194,    -1,   197,    -1,   200,    -1,   203,    -1,   215,    -1,
+     168,   169,   171,    -1,   168,   169,    -1,   118,    -1,   104,
+      -1,    99,    -1,    12,    -1,    68,    -1,   170,    -1,    52,
+     127,    -1,    53,   127,    -1,   127,    -1,   171,   172,    -1,
+     172,    -1,     6,    -1,    11,   214,    -1,    15,    -1,    46,
+      -1,    55,    50,    -1,    78,    50,    -1,    74,    50,    -1,
+      89,    -1,   107,    -1,   108,    -1,   136,    -1,   145,    -1,
+     138,    50,    -1,    80,    50,    -1,   142,    50,    -1,   174,
+     169,    -1,   140,    -1,   141,    -1,    13,    -1,    13,    93,
+      -1,    69,   212,    -1,    83,   212,    -1,     6,    50,    -1,
+      21,    50,    -1,    22,   177,    -1,    56,   127,    -1,    57,
+     127,    -1,   115,    50,    -1,   137,   210,    -1,    96,   127,
+      -1,   178,    -1,    -1,   178,   179,    -1,   179,    -1,    44,
+     127,    -1,    47,   127,    -1,   110,   127,    -1,   112,   127,
+      -1,   117,    50,    -1,   120,   127,    -1,   134,   181,    -1,
+     181,   182,    -1,   182,    -1,    18,    50,    -1,    41,    50,
+      -1,    20,   213,    -1,    97,    50,    -1,    76,   214,    -1,
+      72,   214,    -1,    75,   214,    -1,    71,   214,    -1,    79,
+      50,    -1,    10,    50,    -1,    73,    50,    -1,   121,   184,
+      -1,   123,   127,    -1,    35,   185,   186,    -1,   184,   185,
+      -1,   185,    -1,    19,    -1,    23,    -1,    66,    -1,   100,
+      -1,   113,    -1,   128,    -1,   132,    -1,   109,    -1,   186,
+     187,    -1,   187,    -1,    34,   127,    -1,   139,   188,    -1,
+      63,    -1,    84,    -1,    31,    -1,    26,    -1,    86,    -1,
+     102,    -1,    24,    -1,   144,    -1,    82,    -1,   146,    -1,
+       3,    -1,    27,   192,    -1,   116,   169,   190,    -1,   116,
+      25,   190,    -1,   116,    52,    25,   190,    -1,   116,    53,
+      25,   190,    -1,   116,   170,    70,   170,   190,    -1,    -1,
+     190,   191,    -1,    40,    -1,    48,    -1,    58,    -1,    59,
+      -1,    62,    -1,    67,    -1,    85,    -1,    87,    -1,    88,
+      -1,    90,    -1,    91,    -1,    92,    -1,    95,    -1,   142,
+      -1,   192,   193,    -1,   193,    -1,     8,    50,    -1,    77,
+      50,    -1,    81,    50,    -1,    43,   169,   195,    -1,   195,
+     196,    -1,   196,    -1,   130,   214,    -1,   131,   214,    -1,
+     126,    50,    -1,   114,   127,    -1,    36,   213,    -1,    37,
+     213,    -1,    38,   213,    -1,    39,   213,    -1,    31,   198,
+      -1,    26,   198,    -1,   198,   199,    -1,   199,    -1,     5,
+      -1,     9,    -1,    16,    -1,    54,    -1,    81,    -1,    94,
+      -1,   122,    -1,   133,   201,    -1,   201,   202,    -1,   202,
+      -1,     4,   214,    -1,    28,   214,    -1,    42,   214,    -1,
+      45,   214,    -1,    98,   214,    -1,   124,   214,    -1,   125,
+     214,    -1,    49,   127,   166,    -1,    32,    -1,    14,   214,
+      -1,    17,    50,    -1,   129,   214,    -1,    30,   204,    -1,
+      61,   127,    -1,   103,   127,    -1,    65,   127,    -1,     7,
+      50,    -1,    64,   208,    -1,   101,   211,    -1,   119,   205,
+      -1,   135,   170,   206,    -1,   138,   210,    -1,   111,   127,
+      -1,   127,    -1,   127,    29,    -1,    -1,   127,   160,   127,
+      25,    -1,   127,   160,   127,    -1,   206,   207,    -1,   207,
+      -1,   105,    50,    -1,    51,   170,    -1,   208,   209,    -1,
+     209,    -1,   127,    -1,   210,    50,    -1,    50,    -1,   211,
+     127,    -1,   127,    -1,   212,   169,    -1,   169,    -1,    50,
+      -1,   136,    -1,    33,    -1,    50,    -1,    29,    -1,   216,
+     161,   217,   219,   162,    -1,   150,    -1,   217,   218,   149,
+      -1,   218,   149,    -1,   151,   160,   214,    -1,   152,   160,
+     214,    -1,   219,   220,    -1,   220,    -1,   222,   161,   221,
+     223,   162,    -1,   153,   160,   214,   149,    -1,   118,   160,
+     169,    -1,   223,   224,    -1,   224,    -1,   154,   160,   214,
+     161,   225,   162,    -1,   225,   226,   149,    -1,   226,   149,
+      -1,   155,   160,   214,    -1,   156,   160,   214,    -1,   157,
+     160,   214,    -1,   158,   160,   214,    -1,   159,   160,   214,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   280,   280,   284,   285,   286,   307,   308,   309,   310,
-     311,   312,   313,   314,   315,   316,   317,   318,   319,   327,
-     333,   342,   343,   344,   345,   346,   350,   351,   352,   356,
-     360,   361,   365,   366,   367,   368,   369,   370,   371,   372,
-     373,   374,   375,   376,   377,   378,   379,   388,   396,   397,
-     407,   409,   411,   413,   424,   426,   428,   436,   438,   440,
-     442,   444,   449,   451,   455,   456,   460,   462,   464,   466,
-     468,   470,   480,   485,   486,   490,   492,   494,   496,   498,
-     500,   502,   504,   506,   508,   510,   520,   522,   524,   532,
-     533,   537,   539,   541,   543,   545,   547,   549,   551,   556,
-     557,   561,   563,   565,   566,   567,   568,   572,   573,   574,
-     575,   576,   577,   578,   587,   591,   596,   601,   614,   627,
-     635,   636,   640,   641,   642,   643,   644,   645,   646,   647,
-     648,   649,   650,   651,   652,   656,   657,   661,   662,   663,
-     671,   676,   677,   681,   683,   685,   687,   689,   691,   693,
-     695,   704,   706,   711,   712,   716,   717,   718,   719,   720,
-     721,   723,   731,   735,   736,   740,   741,   742,   743,   744,
-     745,   746,   754,   770,   776,   778,   780,   782,   784,   787,
-     789,   791,   794,   796,   798,   800,   802,   804,   808,   810,
-     814,   818,   820,   826,   827,   831,   832,   837,   838,   842,
-     861,   862,   866,   867,   871,   872,   876,   885,   886,   890,
-     891,   899,   914,   918,   919,   923,   924,   928,   929,   933,
-     938,   942,   946,   947,   951,   956,   957,   961,   963,   965,
-     967,   969
+       0,   281,   281,   285,   286,   287,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   328,
+     334,   343,   344,   345,   346,   347,   351,   352,   353,   357,
+     361,   362,   366,   367,   368,   369,   370,   371,   372,   373,
+     374,   375,   376,   377,   378,   379,   380,   389,   397,   398,
+     408,   410,   412,   414,   425,   427,   429,   437,   439,   441,
+     443,   445,   450,   452,   456,   457,   461,   463,   465,   467,
+     469,   471,   481,   486,   487,   491,   493,   495,   497,   499,
+     501,   503,   505,   507,   509,   511,   521,   523,   525,   533,
+     534,   538,   540,   542,   544,   546,   548,   550,   552,   557,
+     558,   562,   564,   566,   567,   568,   569,   573,   574,   575,
+     576,   577,   578,   579,   588,   592,   597,   602,   615,   628,
+     636,   637,   641,   642,   643,   644,   645,   646,   647,   648,
+     649,   650,   651,   652,   653,   654,   658,   659,   663,   664,
+     665,   673,   678,   679,   683,   685,   687,   689,   691,   693,
+     695,   697,   706,   708,   713,   714,   718,   719,   720,   721,
+     722,   723,   725,   733,   737,   738,   742,   743,   744,   745,
+     746,   747,   748,   756,   772,   778,   780,   782,   784,   786,
+     789,   791,   793,   796,   798,   800,   802,   804,   806,   810,
+     812,   816,   820,   822,   828,   829,   833,   834,   839,   840,
+     844,   863,   864,   868,   869,   873,   874,   878,   887,   888,
+     892,   893,   901,   916,   920,   921,   925,   926,   930,   931,
+     935,   940,   944,   948,   949,   953,   958,   959,   963,   965,
+     967,   969,   971
 };
 #endif
 
@@ -909,7 +912,7 @@ static const char *const yytname[] =
   "T_Fudge", "T_Host", "T_Huffpuff", "T_Iburst", "T_Ident", "T_Ignore",
   "T_Includefile", "T_Integer", "T_Interface", "T_IPv4_flag",
   "T_IPv6_flag", "T_Kernel", "T_Key", "T_Keys", "T_Keysdir", "T_Kod",
-  "T_Leap", "T_Leapfile", "T_Limited", "T_Link", "T_Logconfig",
+  "T_Mssntp", "T_Leap", "T_Leapfile", "T_Limited", "T_Link", "T_Logconfig",
   "T_Logfile", "T_Loopstats", "T_Lowpriotrap", "T_Manycastclient",
   "T_Manycastserver", "T_Mask", "T_Maxclock", "T_Maxdist", "T_Maxhop",
   "T_Maxpoll", "T_Minclock", "T_Mindist", "T_Minimum", "T_Minpoll",
@@ -970,38 +973,38 @@ static const yytype_uint16 yytoknum[] =
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,    61,
-     123,   125
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+      61,   123,   125
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   162,   163,   164,   164,   164,   165,   165,   165,   165,
-     165,   165,   165,   165,   165,   165,   165,   165,   165,   166,
-     166,   167,   167,   167,   167,   167,   168,   168,   168,   169,
-     170,   170,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   172,   173,   173,
-     174,   174,   174,   174,   175,   175,   175,   175,   175,   175,
-     175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
-     178,   178,   179,   180,   180,   181,   181,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   182,   182,   182,   183,
-     183,   184,   184,   184,   184,   184,   184,   184,   184,   185,
-     185,   186,   186,   186,   186,   186,   186,   187,   187,   187,
-     187,   187,   187,   187,   188,   188,   188,   188,   188,   188,
-     189,   189,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   190,   190,   190,   191,   191,   192,   192,   192,
-     193,   194,   194,   195,   195,   195,   195,   195,   195,   195,
-     195,   196,   196,   197,   197,   198,   198,   198,   198,   198,
-     198,   198,   199,   200,   200,   201,   201,   201,   201,   201,
-     201,   201,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   203,   203,
-     203,   204,   204,   205,   205,   206,   206,   207,   207,   208,
-     209,   209,   210,   210,   211,   211,   212,   212,   212,   213,
-     213,   214,   215,   216,   216,   217,   217,   218,   218,   219,
-     220,   221,   222,   222,   223,   224,   224,   225,   225,   225,
-     225,   225
+       0,   163,   164,   165,   165,   165,   166,   166,   166,   166,
+     166,   166,   166,   166,   166,   166,   166,   166,   166,   167,
+     167,   168,   168,   168,   168,   168,   169,   169,   169,   170,
+     171,   171,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   173,   174,   174,
+     175,   175,   175,   175,   176,   176,   176,   176,   176,   176,
+     176,   176,   177,   177,   178,   178,   179,   179,   179,   179,
+     179,   179,   180,   181,   181,   182,   182,   182,   182,   182,
+     182,   182,   182,   182,   182,   182,   183,   183,   183,   184,
+     184,   185,   185,   185,   185,   185,   185,   185,   185,   186,
+     186,   187,   187,   187,   187,   187,   187,   188,   188,   188,
+     188,   188,   188,   188,   189,   189,   189,   189,   189,   189,
+     190,   190,   191,   191,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   192,   192,   193,   193,
+     193,   194,   195,   195,   196,   196,   196,   196,   196,   196,
+     196,   196,   197,   197,   198,   198,   199,   199,   199,   199,
+     199,   199,   199,   200,   201,   201,   202,   202,   202,   202,
+     202,   202,   202,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   204,
+     204,   204,   205,   205,   206,   206,   207,   207,   208,   208,
+     209,   210,   210,   211,   211,   212,   212,   213,   213,   213,
+     214,   214,   215,   216,   217,   217,   218,   218,   219,   219,
+     220,   221,   222,   223,   223,   224,   225,   225,   226,   226,
+     226,   226,   226
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1020,17 +1023,17 @@ static const yytype_uint8 yyr2[] =
        1,     2,     2,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     2,     3,     3,     4,     4,     5,
        0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     1,     2,     2,     2,
-       3,     2,     1,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     1,     2,     2,     2,     2,     2,
-       2,     2,     3,     1,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     2,     2,     1,     2,
-       0,     4,     3,     2,     1,     2,     2,     2,     1,     1,
-       2,     1,     2,     1,     2,     1,     1,     1,     1,     1,
-       1,     5,     1,     3,     2,     3,     3,     2,     1,     5,
-       4,     3,     2,     1,     6,     3,     2,     3,     3,     3,
-       3,     3
+       1,     1,     1,     1,     1,     1,     2,     1,     2,     2,
+       2,     3,     2,     1,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     2,     1,     2,     2,     2,     2,
+       2,     2,     2,     3,     1,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     3,     2,     2,     1,
+       2,     0,     4,     3,     2,     1,     2,     2,     2,     1,
+       1,     2,     1,     2,     1,     2,     1,     1,     1,     1,
+       1,     1,     5,     1,     3,     2,     3,     3,     2,     1,
+       5,     4,     3,     2,     1,     6,     3,     2,     3,     3,
+       3,     3,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1039,42 +1042,42 @@ static const yytype_uint8 yyr2[] =
 static const yytype_uint8 yydefact[] =
 {
        0,     0,     0,     0,    24,    50,     0,     0,     0,    63,
-       0,     0,   190,     0,   173,     0,     0,     0,     0,     0,
+       0,     0,   191,     0,   174,     0,     0,     0,     0,     0,
        0,     0,     0,    25,     0,     0,     0,    23,     0,     0,
       22,     0,     0,     0,    21,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    48,    49,   212,     0,     2,     0,
+       0,     0,     0,     0,    48,    49,   213,     0,     2,     0,
        7,     0,     8,     0,     9,    10,    13,    11,    12,    14,
-      15,    16,    17,    18,     0,     5,    54,   181,    51,   210,
-     209,   174,   175,    55,     0,     0,     0,     0,     0,     0,
-      56,    62,    65,   155,   156,   157,   158,   159,   160,   161,
-     152,   154,     0,     0,     0,   114,   136,   188,   177,   151,
+      15,    16,    17,    18,     0,     5,    54,   182,    51,   211,
+     210,   175,   176,    55,     0,     0,     0,     0,     0,     0,
+      56,    62,    65,   156,   157,   158,   159,   160,   161,   162,
+     153,   155,     0,     0,     0,   114,   137,   189,   178,   152,
       91,    92,    93,    94,    98,    95,    96,    97,     0,     0,
-       0,    29,     0,    26,     6,    57,    58,   178,   199,   182,
-     198,   180,   205,    52,    53,    61,   203,   183,   179,   187,
-      59,   120,     0,     0,   120,    26,     0,   184,    86,    90,
-      87,   176,     0,     0,     0,     0,     0,     0,     0,   162,
-     164,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    72,    74,     0,   201,    60,   186,     1,     0,
+       0,    29,     0,    26,     6,    57,    58,   179,   200,   183,
+     199,   181,   206,    52,    53,    61,   204,   184,   180,   188,
+      59,   120,     0,     0,   120,    26,     0,   185,    86,    90,
+      87,   177,     0,     0,     0,     0,     0,     0,     0,   163,
+     165,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    72,    74,     0,   202,    60,   187,     1,     0,
        4,    20,    47,     0,    66,    67,    68,    69,    70,    71,
-      64,   153,   137,   138,   139,   135,   189,   106,   105,     0,
+      64,   154,   138,   139,   140,   136,   190,   106,   105,     0,
      103,   104,     0,    88,   100,    27,    28,     0,     0,     0,
-       0,     0,     0,     0,     0,   140,   142,   172,   197,   204,
-     202,   116,   120,   120,   115,     0,     0,    89,   165,   166,
-     167,   168,   169,   170,   171,   163,    84,    75,   208,   206,
-     207,    77,    76,    82,    80,    85,    81,    79,    83,    78,
-      73,     0,     0,   185,   194,   200,     3,    32,     0,    34,
+       0,     0,     0,     0,     0,   141,   143,   173,   198,   205,
+     203,   116,   120,   120,   115,     0,     0,    89,   166,   167,
+     168,   169,   170,   171,   172,   164,    84,    75,   209,   207,
+     208,    77,    76,    82,    80,    85,    81,    79,    83,    78,
+      73,     0,     0,   186,   195,   201,     3,    32,     0,    34,
       35,     0,     0,     0,     0,    39,    40,    41,    42,     0,
        0,    43,    19,    31,     0,     0,     0,     0,   101,   113,
-     109,   111,   107,   108,   110,   112,   102,    99,   147,   148,
-     149,   150,   146,   145,   143,   144,   141,   122,   123,   124,
+     109,   111,   107,   108,   110,   112,   102,    99,   148,   149,
+     150,   151,   147,   146,   144,   145,   142,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     121,   117,   118,   120,   192,   196,   195,   193,    33,    36,
-      38,    37,    45,    44,    46,    30,     0,     0,     0,     0,
-       0,   218,     0,   214,   119,   191,   215,   216,     0,   213,
-     211,   217,     0,   221,     0,     0,     0,     0,     0,   223,
-       0,     0,   219,   222,   220,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   224,
-       0,   226,   227,   228,   229,   230,   231,   225
+     135,   121,   117,   118,   120,   193,   197,   196,   194,    33,
+      36,    38,    37,    45,    44,    46,    30,     0,     0,     0,
+       0,     0,   219,     0,   215,   119,   192,   216,   217,     0,
+     214,   212,   218,     0,   222,     0,     0,     0,     0,     0,
+     224,     0,     0,   220,   223,   221,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     225,     0,   227,   228,   229,   230,   231,   232,   226
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -1082,67 +1085,67 @@ static const yytype_int16 yydefgoto[] =
 {
       -1,    47,    48,    49,    50,    51,   122,   113,   262,   263,
       52,    53,    54,    55,    80,    81,    82,    56,   162,   163,
-      57,   138,   108,   193,   194,   276,    58,   211,   300,    95,
+      57,   138,   108,   193,   194,   276,    58,   211,   301,    95,
       96,    59,   205,   206,    60,    90,    91,    61,   149,   150,
       62,    98,   137,   243,   244,   119,   120,   166,   127,   123,
-     231,    71,    63,    64,   266,   267,   320,   321,   335,   322,
-     338,   339,   352,   353
+     231,    71,    63,    64,   266,   267,   321,   322,   336,   323,
+     339,   340,   353,   354
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -133
+#define YYPACT_NINF -143
 static const yytype_int16 yypact[] =
 {
-     118,  -118,    -8,    -7,  -133,   -46,    -6,    -3,     1,   -26,
-       8,    19,   -77,     8,  -133,   157,   -48,   -73,   -72,   -69,
-     -68,   -67,   -65,  -133,   -48,   -48,   -62,  -133,   -61,   -56,
-    -133,   -55,    29,   -15,  -133,   -44,   157,   -40,    -6,     3,
-     542,   -39,    34,    34,  -133,  -133,  -133,    89,   279,   -57,
-    -133,   -48,  -133,   -48,  -133,  -133,  -133,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,   -66,  -133,  -133,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,   -29,   -28,   -24,   -13,    53,     7,
-    -133,   -26,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
-       8,  -133,    66,    84,    86,    19,  -133,   108,  -133,     8,
-    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,   -23,    12,
-      20,  -133,    30,  -133,   417,  -133,  -133,  -133,  -133,   -67,
-    -133,  -133,  -133,   -48,   -48,  -133,  -133,    21,  -133,  -133,
-    -133,  -133,    15,    16,  -133,    82,    -2,  -133,   157,  -133,
-    -133,  -133,    -6,    -6,    -6,    -6,    -6,    -6,    -6,     3,
-    -133,   102,   112,   -21,   113,    -6,    -6,   114,    -6,    -6,
-     119,   120,   542,  -133,   -31,  -133,   122,   122,  -133,    10,
-    -133,   492,  -133,  -117,  -133,  -133,  -133,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,    42,
-    -133,  -133,    11,   -23,  -133,  -133,  -133,   -21,   -21,   -21,
-     -21,    47,   127,    -6,    -6,    30,  -133,  -133,  -133,  -133,
-    -133,   301,  -133,  -133,   301,   -39,    58,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
-    -133,   -39,   129,   -31,  -133,  -133,  -133,  -133,    -6,  -133,
-    -133,   142,   143,   151,   152,  -133,  -133,  -133,  -133,   153,
-     154,  -133,   492,  -133,    46,    48,   -95,    60,  -133,  -133,
-    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
-    -133,   301,   301,  -133,   181,  -133,  -133,  -133,  -133,  -133,
-    -133,  -133,  -133,  -133,  -133,  -133,    -6,    -6,    52,    64,
-     -98,  -133,    54,  -133,   301,  -133,  -133,  -133,   -48,  -133,
-    -133,  -133,    63,  -133,    65,    70,    -6,    67,  -125,  -133,
-      69,    -6,  -133,  -133,  -133,    59,    41,    68,    71,    72,
-      75,    78,    33,    77,    -6,    -6,    -6,    -6,    -6,  -133,
-      81,  -133,  -133,  -133,  -133,  -133,  -133,  -133
+     124,  -125,   -21,   -15,  -143,   -56,    -6,    -9,     1,   -26,
+      17,     8,   -78,    17,  -143,    69,   -49,   -67,   -66,   -57,
+     -54,   -52,   -51,  -143,   -49,   -49,   -50,  -143,   -48,   -45,
+    -143,   -44,    12,   -13,  -143,   -37,    69,   -34,    -6,     3,
+     314,   -30,    37,    37,  -143,  -143,  -143,    95,   280,   -47,
+    -143,   -49,  -143,   -49,  -143,  -143,  -143,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,   -62,  -143,  -143,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,   -24,    -3,     2,     7,    62,    13,
+    -143,   -26,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,
+      17,  -143,    76,    83,    92,     8,  -143,   114,  -143,    17,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,   -20,    20,
+      21,  -143,   212,  -143,   419,  -143,  -143,  -143,  -143,   -52,
+    -143,  -143,  -143,   -49,   -49,  -143,  -143,    22,  -143,  -143,
+    -143,  -143,   -12,     5,  -143,    82,    -7,  -143,    69,  -143,
+    -143,  -143,    -6,    -6,    -6,    -6,    -6,    -6,    -6,     3,
+    -143,   107,   111,   -23,   112,    -6,    -6,   113,    -6,    -6,
+     118,   120,   314,  -143,   -46,  -143,   121,   121,  -143,    15,
+    -143,   490,  -143,  -105,  -143,  -143,  -143,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,    47,
+    -143,  -143,    14,   -20,  -143,  -143,  -143,   -23,   -23,   -23,
+     -23,    48,   126,    -6,    -6,   212,  -143,  -143,  -143,  -143,
+    -143,   146,  -143,  -143,   146,   -30,    50,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,
+    -143,   -30,   129,   -46,  -143,  -143,  -143,  -143,    -6,  -143,
+    -143,   134,   137,   140,   141,  -143,  -143,  -143,  -143,   145,
+     148,  -143,   490,  -143,    36,    39,   -98,    51,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,  -143,
+    -143,  -143,   146,   146,  -143,   177,  -143,  -143,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,  -143,    -6,    -6,    43,
+      57,   -99,  -143,    58,  -143,   146,  -143,  -143,  -143,   -49,
+    -143,  -143,  -143,    68,  -143,    52,    70,    -6,    66,  -126,
+    -143,    73,    -6,  -143,  -143,  -143,    71,    59,    84,    86,
+      94,    96,   100,   -90,    80,    -6,    -6,    -6,    -6,    -6,
+    -143,    81,  -143,  -143,  -143,  -143,  -143,  -143,  -143
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -133,  -133,  -133,   -42,  -133,  -133,    -1,   -32,  -133,   -20,
-    -133,  -133,  -133,  -133,  -133,  -133,   158,  -133,  -133,    79,
-    -133,  -133,   -10,  -133,    50,  -133,  -133,  -132,  -133,  -133,
-     149,  -133,  -133,    40,  -133,   234,   -74,  -133,  -133,    99,
-    -133,  -133,  -133,  -133,     6,  -133,   134,   216,  -133,   235,
-    -123,   -38,  -133,  -133,  -133,    -5,  -133,   -58,  -133,  -133,
-    -133,   -75,  -133,   -88
+    -143,  -143,  -143,   -40,  -143,  -143,    -1,   -32,  -143,   -10,
+    -143,  -143,  -143,  -143,  -143,  -143,   130,  -143,  -143,    93,
+    -143,  -143,     6,  -143,    74,  -143,  -143,  -132,  -143,  -143,
+     168,  -143,  -143,    61,  -143,   255,   -65,  -143,  -143,   122,
+    -143,  -143,  -143,  -143,    26,  -143,   151,   229,  -143,   250,
+    -142,   -38,  -143,  -143,  -143,    10,  -143,   -43,  -143,  -143,
+    -143,   -58,  -143,   -76
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1152,138 +1155,138 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-     141,   135,   214,   187,   109,   110,   169,   142,   188,   164,
-     131,   189,   228,    83,   269,   112,   181,    84,    74,   318,
-     241,    75,   318,    69,    85,   181,   139,    92,   337,   229,
-      65,   143,   134,   264,   265,   270,   342,   132,   133,   190,
-     212,   213,    66,    67,    70,   144,    68,    72,   145,    97,
-     171,    73,   172,   114,   115,   264,   265,   116,   117,   118,
-     191,   121,    86,   330,   125,   126,   197,   198,   199,   200,
-     128,   129,   207,   242,   278,   279,   280,   281,   111,   130,
-     301,   302,   136,    76,   165,    77,   140,   111,    87,   168,
-      78,   170,   271,    79,   173,    93,   272,   174,   175,    94,
-     146,    88,   176,   178,   218,   219,   220,   221,   222,   223,
-     224,   111,   273,   177,   230,   192,   182,   233,   234,     1,
-     236,   237,   209,   209,     2,     3,   147,   148,   217,    89,
-       4,     5,     6,   179,   183,     7,   184,   186,   195,     8,
-       9,   195,   196,   201,    10,    11,   196,   210,    12,    13,
-      14,   215,   226,    15,   274,   202,   275,   216,   246,   203,
-     204,    16,   227,   232,   235,   284,   285,    17,   268,   238,
-     239,   324,   245,   282,    18,    19,   100,   283,    20,   306,
-     101,    21,    22,   303,   304,    23,    24,   347,   348,   349,
-     350,   351,   309,   310,   359,   347,   348,   349,   350,   351,
-      25,   311,   312,   313,   314,   316,   325,   317,   323,   305,
-     308,   328,   329,    26,   332,   334,    27,   344,    28,   346,
-      29,    30,   102,   337,   336,   361,   341,   354,    31,   367,
-     355,   356,    32,    33,   357,    34,    35,   358,    36,   180,
-      37,   240,   315,   277,   185,   286,    38,    99,   225,   307,
-      39,    40,    41,   208,    42,    43,   103,    44,    45,   167,
-     124,   319,   331,   343,   360,   104,    -6,    46,     0,   105,
-       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
-       0,     0,     0,     0,   106,     2,     3,     0,   107,     0,
-       0,     4,     5,     6,     0,     0,     7,     0,   340,     0,
-       8,     9,     0,   345,     0,    10,    11,     0,     0,    12,
-      13,    14,     0,     0,    15,     0,   362,   363,   364,   365,
-     366,     0,    16,     0,     0,     0,     0,   333,    17,     0,
-       0,     0,     0,     0,     0,    18,    19,     0,     0,    20,
-       0,   287,    21,    22,     0,     0,    23,    24,     0,   288,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
-       0,    25,   290,     0,     0,     0,     0,   291,     0,     0,
-       0,     0,     0,     0,    26,     0,     0,    27,     0,    28,
-       0,    29,    30,     0,     0,   292,     0,   293,   294,    31,
-     295,   296,   297,    32,    33,   298,    34,    35,     0,    36,
-       0,    37,     0,     0,     0,     0,     0,    38,     0,     0,
-       0,    39,    40,    41,     0,    42,    43,     0,    44,    45,
-       0,     0,     0,     2,     3,     0,     0,    -6,    46,     4,
-       5,     6,     0,     0,     7,     0,     0,     0,     8,     9,
-       0,     0,   299,    10,    11,     0,     0,    12,    13,    14,
-       0,     0,    15,     0,     0,     0,     0,     0,     0,     0,
-      16,     0,     0,     0,     0,     0,    17,     0,     0,     0,
-       0,     0,     0,    18,    19,     0,     0,    20,     0,     0,
-      21,    22,     0,     0,    23,    24,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   247,    25,
-       0,     0,     0,   248,     0,     0,     0,   249,     0,     0,
-       0,     0,    26,     0,     0,    27,     0,    28,     0,    29,
-      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,    32,    33,     0,    34,    35,     0,    36,   250,    37,
-       0,     0,     0,     0,     0,    38,     0,   251,     0,    39,
-      40,    41,   151,    42,    43,     0,    44,    45,     0,     0,
-     152,     0,   153,     0,     0,   252,    46,     0,     0,   253,
-       0,   254,     0,     0,     0,     0,     0,     0,     0,     0,
-     255,     0,     0,   154,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   256,   257,
+     141,   135,   214,   109,   110,   241,   187,   142,   169,   164,
+     228,   188,   131,   212,   189,   112,    92,   269,    74,   319,
+     319,    75,    83,    69,    65,   181,    84,   229,   338,    66,
+     213,   143,   134,    85,   181,    67,   343,    68,   270,   132,
+     133,    72,   139,   190,    70,   144,   264,   265,   145,    97,
+     171,    73,   172,   264,   265,   278,   279,   280,   281,   242,
+     114,   115,   130,   331,   191,   348,   349,   350,   351,   352,
+     116,    86,   360,   117,   207,   118,   121,   125,   111,   126,
+     302,   303,   128,   129,    76,    93,    77,   165,   100,    94,
+     136,    78,   101,   140,    79,   168,   271,   111,    87,   173,
+     272,   146,   170,   174,   218,   219,   220,   221,   222,   223,
+     224,    88,   178,   230,   111,   195,   273,   233,   234,   192,
+     236,   237,   209,   209,   175,     1,   182,   147,   148,   176,
+       2,     3,   196,   183,   177,   102,     4,     5,     6,    89,
+     179,     7,   184,   186,   217,     8,     9,   195,   196,   210,
+      10,    11,   215,   216,    12,    13,    14,   226,   274,    15,
+     275,   227,   232,   235,   246,   284,   285,    16,   238,   103,
+     239,   245,   325,    17,   268,   282,   283,   305,   104,   307,
+      18,    19,   105,   304,   310,    20,   287,   311,    21,    22,
+     312,   313,    23,    24,   288,   314,   317,   106,   315,   318,
+     324,   107,   326,   329,   289,   290,   330,    25,   291,   306,
+     309,   180,   337,   292,   348,   349,   350,   351,   352,   333,
+      26,   335,   345,    27,   338,    28,   342,    29,    30,   362,
+     368,   293,   347,   294,   295,    31,   296,   297,   298,    32,
+      33,   299,    34,    35,   355,    36,   356,    37,   197,   198,
+     199,   200,   316,    38,   357,   240,   358,    39,    40,    41,
+     359,    42,    43,   185,    44,    45,   286,   277,    99,   308,
+     208,   225,   167,    -6,    46,   124,   320,   361,   332,   327,
+     328,   344,     0,     0,     0,     0,     2,     3,   300,     0,
+       0,     0,     4,     5,     6,     0,     0,     7,     0,   341,
+       0,     8,     9,     0,   346,     0,    10,    11,     0,     0,
+      12,    13,    14,     0,     0,    15,     0,   363,   364,   365,
+     366,   367,     0,    16,   151,     0,   201,     0,   334,    17,
+       0,     0,   152,     0,   153,     0,    18,    19,   202,     0,
+       0,    20,   203,   204,    21,    22,     0,     0,    23,    24,
+       0,     0,     0,     0,     0,   154,     0,     0,     0,     0,
+       0,     0,     0,    25,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    26,     0,     0,    27,
+       0,    28,     0,    29,    30,   155,   156,   157,     0,   158,
+     159,    31,     0,   160,     0,    32,    33,     0,    34,    35,
+       0,    36,     0,    37,     0,     0,     0,     0,     0,    38,
+       0,   161,     0,    39,    40,    41,     0,    42,    43,     0,
+      44,    45,     0,     0,     0,     2,     3,     0,     0,    -6,
+      46,     4,     5,     6,     0,     0,     7,     0,     0,     0,
+       8,     9,     0,     0,     0,    10,    11,     0,     0,    12,
+      13,    14,     0,     0,    15,     0,     0,     0,     0,     0,
+       0,     0,    16,     0,     0,     0,     0,     0,    17,     0,
+       0,     0,     0,     0,     0,    18,    19,     0,     0,     0,
+      20,     0,     0,    21,    22,     0,     0,    23,    24,     0,
+       0,     0,     0,     0,     0,     0,   247,     0,     0,     0,
+       0,   248,    25,     0,     0,   249,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    26,     0,     0,    27,     0,
+      28,     0,    29,    30,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,    32,    33,   250,    34,    35,     0,
+      36,     0,    37,     0,     0,   251,     0,     0,    38,     0,
+       0,     0,    39,    40,    41,     0,    42,    43,     0,    44,
+      45,     0,     0,     0,   252,     0,     0,     0,   253,    46,
+     254,     0,     0,     0,     0,     0,     0,     0,     0,   255,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   256,   257,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   155,   156,   157,     0,   158,   159,     0,     0,
-     160,     0,     0,     0,     0,     0,     0,   258,     0,   259,
-       0,     0,     0,   260,     0,     0,   261,     0,   161
+       0,     0,     0,     0,     0,     0,   258,     0,   259,     0,
+       0,     0,   260,     0,     0,   261
 };
 
 static const yytype_int16 yycheck[] =
 {
-      38,    33,   134,    26,    52,    53,    48,     4,    31,    41,
-      25,    34,    33,     5,     3,    16,    90,     9,    44,   117,
-      51,    47,   117,    29,    16,    99,    36,     8,   153,    50,
-     148,    28,    33,   150,   151,    24,   161,    52,    53,    62,
-      25,    25,    50,    50,    50,    42,    92,    50,    45,   126,
-      51,    50,    53,   126,   126,   150,   151,   126,   126,   126,
-      83,   126,    54,   161,   126,   126,    36,    37,    38,    39,
-     126,   126,   114,   104,   197,   198,   199,   200,   126,    50,
-     212,   213,   126,   109,    50,   111,   126,   126,    80,     0,
-     116,   148,    81,   119,   160,    76,    85,   126,   126,    80,
-      97,    93,   126,    50,   142,   143,   144,   145,   146,   147,
-     148,   126,   101,   126,   135,   138,    50,   155,   156,     1,
-     158,   159,   123,   124,     6,     7,   123,   124,   138,   121,
-      12,    13,    14,   126,    50,    17,    50,    29,   126,    21,
-      22,   126,   126,   113,    26,    27,   126,   126,    30,    31,
-      32,    69,    50,    35,   143,   125,   145,   159,   148,   129,
-     130,    43,    50,    50,    50,   203,   204,    49,   126,    50,
-      50,   303,    50,   126,    56,    57,    19,    50,    60,    50,
-      23,    63,    64,   215,   126,    67,    68,   154,   155,   156,
-     157,   158,    50,    50,   161,   154,   155,   156,   157,   158,
-      82,    50,    50,    50,    50,   159,    25,   159,   148,   241,
-     248,   159,   148,    95,   160,   152,    98,   148,   100,   160,
-     102,   103,    65,   153,   159,   148,   159,   159,   110,   148,
-     159,   159,   114,   115,   159,   117,   118,   159,   120,    81,
-     122,   162,   262,   193,    95,   205,   128,    13,   149,   243,
-     132,   133,   134,   119,   136,   137,    99,   139,   140,    43,
-      25,   266,   320,   338,   352,   108,   148,   149,    -1,   112,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   316,   317,
-      -1,    -1,    -1,    -1,   127,     6,     7,    -1,   131,    -1,
-      -1,    12,    13,    14,    -1,    -1,    17,    -1,   336,    -1,
-      21,    22,    -1,   341,    -1,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    35,    -1,   354,   355,   356,   357,
-     358,    -1,    43,    -1,    -1,    -1,    -1,   328,    49,    -1,
-      -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    -1,    60,
-      -1,    40,    63,    64,    -1,    -1,    67,    68,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
-      -1,    82,    61,    -1,    -1,    -1,    -1,    66,    -1,    -1,
-      -1,    -1,    -1,    -1,    95,    -1,    -1,    98,    -1,   100,
-      -1,   102,   103,    -1,    -1,    84,    -1,    86,    87,   110,
-      89,    90,    91,   114,   115,    94,   117,   118,    -1,   120,
-      -1,   122,    -1,    -1,    -1,    -1,    -1,   128,    -1,    -1,
-      -1,   132,   133,   134,    -1,   136,   137,    -1,   139,   140,
-      -1,    -1,    -1,     6,     7,    -1,    -1,   148,   149,    12,
-      13,    14,    -1,    -1,    17,    -1,    -1,    -1,    21,    22,
-      -1,    -1,   141,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      43,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,
-      -1,    -1,    -1,    56,    57,    -1,    -1,    60,    -1,    -1,
-      63,    64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     6,    82,
-      -1,    -1,    -1,    11,    -1,    -1,    -1,    15,    -1,    -1,
-      -1,    -1,    95,    -1,    -1,    98,    -1,   100,    -1,   102,
-     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
-      -1,   114,   115,    -1,   117,   118,    -1,   120,    46,   122,
-      -1,    -1,    -1,    -1,    -1,   128,    -1,    55,    -1,   132,
-     133,   134,    10,   136,   137,    -1,   139,   140,    -1,    -1,
-      18,    -1,    20,    -1,    -1,    73,   149,    -1,    -1,    77,
-      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,
+      38,    33,   134,    52,    53,    51,    26,     4,    48,    41,
+      33,    31,    25,    25,    34,    16,     8,     3,    44,   118,
+     118,    47,     5,    29,   149,    90,     9,    50,   154,    50,
+      25,    28,    33,    16,    99,    50,   162,    93,    24,    52,
+      53,    50,    36,    63,    50,    42,   151,   152,    45,   127,
+      51,    50,    53,   151,   152,   197,   198,   199,   200,   105,
+     127,   127,    50,   162,    84,   155,   156,   157,   158,   159,
+     127,    54,   162,   127,   114,   127,   127,   127,   127,   127,
+     212,   213,   127,   127,   110,    77,   112,    50,    19,    81,
+     127,   117,    23,   127,   120,     0,    82,   127,    81,   161,
+      86,    98,   149,   127,   142,   143,   144,   145,   146,   147,
+     148,    94,    50,   136,   127,   127,   102,   155,   156,   139,
+     158,   159,   123,   124,   127,     1,    50,   124,   125,   127,
+       6,     7,   127,    50,   127,    66,    12,    13,    14,   122,
+     127,    17,    50,    29,   138,    21,    22,   127,   127,   127,
+      26,    27,    70,   160,    30,    31,    32,    50,   144,    35,
+     146,    50,    50,    50,   149,   203,   204,    43,    50,   100,
+      50,    50,   304,    49,   127,   127,    50,   127,   109,    50,
+      56,    57,   113,   215,    50,    61,    40,    50,    64,    65,
+      50,    50,    68,    69,    48,    50,   160,   128,    50,   160,
+     149,   132,    25,   160,    58,    59,   149,    83,    62,   241,
+     248,    81,   160,    67,   155,   156,   157,   158,   159,   161,
+      96,   153,   149,    99,   154,   101,   160,   103,   104,   149,
+     149,    85,   161,    87,    88,   111,    90,    91,    92,   115,
+     116,    95,   118,   119,   160,   121,   160,   123,    36,    37,
+      38,    39,   262,   129,   160,   162,   160,   133,   134,   135,
+     160,   137,   138,    95,   140,   141,   205,   193,    13,   243,
+     119,   149,    43,   149,   150,    25,   266,   353,   321,   317,
+     318,   339,    -1,    -1,    -1,    -1,     6,     7,   142,    -1,
+      -1,    -1,    12,    13,    14,    -1,    -1,    17,    -1,   337,
+      -1,    21,    22,    -1,   342,    -1,    26,    27,    -1,    -1,
+      30,    31,    32,    -1,    -1,    35,    -1,   355,   356,   357,
+     358,   359,    -1,    43,    10,    -1,   114,    -1,   329,    49,
+      -1,    -1,    18,    -1,    20,    -1,    56,    57,   126,    -1,
+      -1,    61,   130,   131,    64,    65,    -1,    -1,    68,    69,
+      -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,
+      -1,   101,    -1,   103,   104,    71,    72,    73,    -1,    75,
+      76,   111,    -1,    79,    -1,   115,   116,    -1,   118,   119,
+      -1,   121,    -1,   123,    -1,    -1,    -1,    -1,    -1,   129,
+      -1,    97,    -1,   133,   134,   135,    -1,   137,   138,    -1,
+     140,   141,    -1,    -1,    -1,     6,     7,    -1,    -1,   149,
+     150,    12,    13,    14,    -1,    -1,    17,    -1,    -1,    -1,
+      21,    22,    -1,    -1,    -1,    26,    27,    -1,    -1,    30,
+      31,    32,    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
+      61,    -1,    -1,    64,    65,    -1,    -1,    68,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     6,    -1,    -1,    -1,
+      -1,    11,    83,    -1,    -1,    15,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,
+     101,    -1,   103,   104,    -1,    -1,    -1,    -1,    -1,    -1,
+     111,    -1,    -1,    -1,   115,   116,    46,   118,   119,    -1,
+     121,    -1,   123,    -1,    -1,    55,    -1,    -1,   129,    -1,
+      -1,    -1,   133,   134,   135,    -1,   137,   138,    -1,   140,
+     141,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,   150,
+      80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    70,    71,    72,    -1,    74,    75,    -1,    -1,
-      78,    -1,    -1,    -1,    -1,    -1,    -1,   135,    -1,   137,
-      -1,    -1,    -1,   141,    -1,    -1,   144,    -1,    96
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,   138,    -1,
+      -1,    -1,   142,    -1,    -1,   145
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1292,41 +1295,41 @@ static const yytype_uint8 yystos[] =
 {
        0,     1,     6,     7,    12,    13,    14,    17,    21,    22,
       26,    27,    30,    31,    32,    35,    43,    49,    56,    57,
-      60,    63,    64,    67,    68,    82,    95,    98,   100,   102,
-     103,   110,   114,   115,   117,   118,   120,   122,   128,   132,
-     133,   134,   136,   137,   139,   140,   149,   163,   164,   165,
-     166,   167,   172,   173,   174,   175,   179,   182,   188,   193,
-     196,   199,   202,   214,   215,   148,    50,    50,    92,    29,
-      50,   213,    50,    50,    44,    47,   109,   111,   116,   119,
-     176,   177,   178,     5,     9,    16,    54,    80,    93,   121,
-     197,   198,     8,    76,    80,   191,   192,   126,   203,   197,
-      19,    23,    65,    99,   108,   112,   127,   131,   184,    52,
-      53,   126,   168,   169,   126,   126,   126,   126,   126,   207,
-     208,   126,   168,   211,   211,   126,   126,   210,   126,   126,
-      50,    25,    52,    53,   168,   169,   126,   204,   183,   184,
-     126,   213,     4,    28,    42,    45,    97,   123,   124,   200,
-     201,    10,    18,    20,    41,    70,    71,    72,    74,    75,
-      78,    96,   180,   181,   169,    50,   209,   209,     0,   165,
-     148,   168,   168,   160,   126,   126,   126,   126,    50,   126,
-     178,   198,    50,    50,    50,   192,    29,    26,    31,    34,
-      62,    83,   138,   185,   186,   126,   126,    36,    37,    38,
-      39,   113,   125,   129,   130,   194,   195,   165,   208,   168,
-     126,   189,    25,    25,   189,    69,   159,   184,   213,   213,
-     213,   213,   213,   213,   213,   201,    50,    50,    33,    50,
-     135,   212,    50,   213,   213,    50,   213,   213,    50,    50,
-     181,    51,   104,   205,   206,    50,   148,     6,    11,    15,
-      46,    55,    73,    77,    79,    88,   106,   107,   135,   137,
-     141,   144,   170,   171,   150,   151,   216,   217,   126,     3,
-      24,    81,    85,   101,   143,   145,   187,   186,   212,   212,
-     212,   212,   126,    50,   213,   213,   195,    40,    48,    58,
-      61,    66,    84,    86,    87,    89,    90,    91,    94,   141,
-     190,   189,   189,   169,   126,   169,    50,   206,   213,    50,
-      50,    50,    50,    50,    50,   171,   159,   159,   117,   217,
-     218,   219,   221,   148,   189,    25,   213,   213,   159,   148,
-     161,   219,   160,   168,   152,   220,   159,   153,   222,   223,
-     213,   159,   161,   223,   148,   213,   160,   154,   155,   156,
-     157,   158,   224,   225,   159,   159,   159,   159,   159,   161,
-     225,   148,   213,   213,   213,   213,   213,   148
+      61,    64,    65,    68,    69,    83,    96,    99,   101,   103,
+     104,   111,   115,   116,   118,   119,   121,   123,   129,   133,
+     134,   135,   137,   138,   140,   141,   150,   164,   165,   166,
+     167,   168,   173,   174,   175,   176,   180,   183,   189,   194,
+     197,   200,   203,   215,   216,   149,    50,    50,    93,    29,
+      50,   214,    50,    50,    44,    47,   110,   112,   117,   120,
+     177,   178,   179,     5,     9,    16,    54,    81,    94,   122,
+     198,   199,     8,    77,    81,   192,   193,   127,   204,   198,
+      19,    23,    66,   100,   109,   113,   128,   132,   185,    52,
+      53,   127,   169,   170,   127,   127,   127,   127,   127,   208,
+     209,   127,   169,   212,   212,   127,   127,   211,   127,   127,
+      50,    25,    52,    53,   169,   170,   127,   205,   184,   185,
+     127,   214,     4,    28,    42,    45,    98,   124,   125,   201,
+     202,    10,    18,    20,    41,    71,    72,    73,    75,    76,
+      79,    97,   181,   182,   170,    50,   210,   210,     0,   166,
+     149,   169,   169,   161,   127,   127,   127,   127,    50,   127,
+     179,   199,    50,    50,    50,   193,    29,    26,    31,    34,
+      63,    84,   139,   186,   187,   127,   127,    36,    37,    38,
+      39,   114,   126,   130,   131,   195,   196,   166,   209,   169,
+     127,   190,    25,    25,   190,    70,   160,   185,   214,   214,
+     214,   214,   214,   214,   214,   202,    50,    50,    33,    50,
+     136,   213,    50,   214,   214,    50,   214,   214,    50,    50,
+     182,    51,   105,   206,   207,    50,   149,     6,    11,    15,
+      46,    55,    74,    78,    80,    89,   107,   108,   136,   138,
+     142,   145,   171,   172,   151,   152,   217,   218,   127,     3,
+      24,    82,    86,   102,   144,   146,   188,   187,   213,   213,
+     213,   213,   127,    50,   214,   214,   196,    40,    48,    58,
+      59,    62,    67,    85,    87,    88,    90,    91,    92,    95,
+     142,   191,   190,   190,   170,   127,   170,    50,   207,   214,
+      50,    50,    50,    50,    50,    50,   172,   160,   160,   118,
+     218,   219,   220,   222,   149,   190,    25,   214,   214,   160,
+     149,   162,   220,   161,   169,   153,   221,   160,   154,   223,
+     224,   214,   160,   162,   224,   149,   214,   161,   155,   156,
+     157,   158,   159,   225,   226,   160,   160,   160,   160,   160,
+     162,   226,   149,   214,   214,   214,   214,   214,   149
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2140,7 +2143,7 @@ yyreduce:
         case 5:
 
 /* Line 1455 of yacc.c  */
-#line 287 "ntp_parser.y"
+#line 288 "ntp_parser.y"
     {
                        /* I will need to incorporate much more fine grained
                         * error messages. The following should suffice for
@@ -2164,7 +2167,7 @@ yyreduce:
   case 19:
 
 /* Line 1455 of yacc.c  */
-#line 328 "ntp_parser.y"
+#line 329 "ntp_parser.y"
     {
                        struct peer_node *my_node =  create_peer_node((yyvsp[(1) - (3)].Integer), (yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue));
                        if (my_node)
@@ -2175,7 +2178,7 @@ yyreduce:
   case 20:
 
 /* Line 1455 of yacc.c  */
-#line 334 "ntp_parser.y"
+#line 335 "ntp_parser.y"
     {
                        struct peer_node *my_node = create_peer_node((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Address_node), NULL);
                        if (my_node)
@@ -2186,189 +2189,189 @@ yyreduce:
   case 21:
 
 /* Line 1455 of yacc.c  */
-#line 342 "ntp_parser.y"
+#line 343 "ntp_parser.y"
     { (yyval.Integer) = T_Server; }
     break;
 
   case 22:
 
 /* Line 1455 of yacc.c  */
-#line 343 "ntp_parser.y"
+#line 344 "ntp_parser.y"
     { (yyval.Integer) = T_Pool; }
     break;
 
   case 23:
 
 /* Line 1455 of yacc.c  */
-#line 344 "ntp_parser.y"
+#line 345 "ntp_parser.y"
     { (yyval.Integer) = T_Peer; }
     break;
 
   case 24:
 
 /* Line 1455 of yacc.c  */
-#line 345 "ntp_parser.y"
+#line 346 "ntp_parser.y"
     { (yyval.Integer) = T_Broadcast; }
     break;
 
   case 25:
 
 /* Line 1455 of yacc.c  */
-#line 346 "ntp_parser.y"
+#line 347 "ntp_parser.y"
     { (yyval.Integer) = T_Manycastclient; }
     break;
 
   case 26:
 
 /* Line 1455 of yacc.c  */
-#line 350 "ntp_parser.y"
+#line 351 "ntp_parser.y"
     { (yyval.Address_node) = (yyvsp[(1) - (1)].Address_node); }
     break;
 
   case 27:
 
 /* Line 1455 of yacc.c  */
-#line 351 "ntp_parser.y"
+#line 352 "ntp_parser.y"
     { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), AF_INET); }
     break;
 
   case 28:
 
 /* Line 1455 of yacc.c  */
-#line 352 "ntp_parser.y"
+#line 353 "ntp_parser.y"
     { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), AF_INET6); }
     break;
 
   case 29:
 
 /* Line 1455 of yacc.c  */
-#line 356 "ntp_parser.y"
+#line 357 "ntp_parser.y"
     { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), 0); }
     break;
 
   case 30:
 
 /* Line 1455 of yacc.c  */
-#line 360 "ntp_parser.y"
+#line 361 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 31:
 
 /* Line 1455 of yacc.c  */
-#line 361 "ntp_parser.y"
+#line 362 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 32:
 
 /* Line 1455 of yacc.c  */
-#line 365 "ntp_parser.y"
+#line 366 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_SKEY); }
     break;
 
   case 33:
 
 /* Line 1455 of yacc.c  */
-#line 366 "ntp_parser.y"
+#line 367 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(T_Bias, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 34:
 
 /* Line 1455 of yacc.c  */
-#line 367 "ntp_parser.y"
+#line 368 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_BURST); }
     break;
 
   case 35:
 
 /* Line 1455 of yacc.c  */
-#line 368 "ntp_parser.y"
+#line 369 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_IBURST); }
     break;
 
   case 36:
 
 /* Line 1455 of yacc.c  */
-#line 369 "ntp_parser.y"
+#line 370 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Key, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 37:
 
 /* Line 1455 of yacc.c  */
-#line 370 "ntp_parser.y"
+#line 371 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Minpoll, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 38:
 
 /* Line 1455 of yacc.c  */
-#line 371 "ntp_parser.y"
+#line 372 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Maxpoll, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 39:
 
 /* Line 1455 of yacc.c  */
-#line 372 "ntp_parser.y"
+#line 373 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_NOSELECT); }
     break;
 
   case 40:
 
 /* Line 1455 of yacc.c  */
-#line 373 "ntp_parser.y"
+#line 374 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_PREEMPT); }
     break;
 
   case 41:
 
 /* Line 1455 of yacc.c  */
-#line 374 "ntp_parser.y"
+#line 375 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_PREFER); }
     break;
 
   case 42:
 
 /* Line 1455 of yacc.c  */
-#line 375 "ntp_parser.y"
+#line 376 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_TRUE); }
     break;
 
   case 43:
 
 /* Line 1455 of yacc.c  */
-#line 376 "ntp_parser.y"
+#line 377 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, FLAG_XLEAVE); }
     break;
 
   case 44:
 
 /* Line 1455 of yacc.c  */
-#line 377 "ntp_parser.y"
+#line 378 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Ttl, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 45:
 
 /* Line 1455 of yacc.c  */
-#line 378 "ntp_parser.y"
+#line 379 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Mode, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 46:
 
 /* Line 1455 of yacc.c  */
-#line 379 "ntp_parser.y"
+#line 380 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Version, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 47:
 
 /* Line 1455 of yacc.c  */
-#line 389 "ntp_parser.y"
+#line 390 "ntp_parser.y"
     {
                        struct unpeer_node *my_node = create_unpeer_node((yyvsp[(2) - (2)].Address_node));
                        if (my_node)
@@ -2379,63 +2382,63 @@ yyreduce:
   case 48:
 
 /* Line 1455 of yacc.c  */
-#line 396 "ntp_parser.y"
+#line 397 "ntp_parser.y"
     { (yyval.Integer) = T_Unconfig; }
     break;
 
   case 49:
 
 /* Line 1455 of yacc.c  */
-#line 397 "ntp_parser.y"
+#line 398 "ntp_parser.y"
     { (yyval.Integer) = T_Unpeer; }
     break;
 
   case 50:
 
 /* Line 1455 of yacc.c  */
-#line 408 "ntp_parser.y"
+#line 409 "ntp_parser.y"
     { my_config.broadcastclient = SIMPLE; }
     break;
 
   case 51:
 
 /* Line 1455 of yacc.c  */
-#line 410 "ntp_parser.y"
+#line 411 "ntp_parser.y"
     { my_config.broadcastclient = NOVOLLEY; }
     break;
 
   case 52:
 
 /* Line 1455 of yacc.c  */
-#line 412 "ntp_parser.y"
+#line 413 "ntp_parser.y"
     { append_queue(my_config.manycastserver, (yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 53:
 
 /* Line 1455 of yacc.c  */
-#line 414 "ntp_parser.y"
+#line 415 "ntp_parser.y"
     { append_queue(my_config.multicastclient, (yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 54:
 
 /* Line 1455 of yacc.c  */
-#line 425 "ntp_parser.y"
+#line 426 "ntp_parser.y"
     { my_config.auth.autokey = (yyvsp[(2) - (2)].Integer); }
     break;
 
   case 55:
 
 /* Line 1455 of yacc.c  */
-#line 427 "ntp_parser.y"
+#line 428 "ntp_parser.y"
     { my_config.auth.control_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
   case 56:
 
 /* Line 1455 of yacc.c  */
-#line 429 "ntp_parser.y"
+#line 430 "ntp_parser.y"
     { 
                        if (my_config.auth.crypto_cmd_list != NULL)
                                append_queue(my_config.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Queue));
@@ -2448,217 +2451,217 @@ yyreduce:
   case 57:
 
 /* Line 1455 of yacc.c  */
-#line 437 "ntp_parser.y"
+#line 438 "ntp_parser.y"
     { my_config.auth.keys = (yyvsp[(2) - (2)].String); }
     break;
 
   case 58:
 
 /* Line 1455 of yacc.c  */
-#line 439 "ntp_parser.y"
+#line 440 "ntp_parser.y"
     { my_config.auth.keysdir = (yyvsp[(2) - (2)].String); }
     break;
 
   case 59:
 
 /* Line 1455 of yacc.c  */
-#line 441 "ntp_parser.y"
+#line 442 "ntp_parser.y"
     { my_config.auth.request_key = (yyvsp[(2) - (2)].Integer); }
     break;
 
   case 60:
 
 /* Line 1455 of yacc.c  */
-#line 443 "ntp_parser.y"
+#line 444 "ntp_parser.y"
     { my_config.auth.trusted_key_list = (yyvsp[(2) - (2)].Queue); }
     break;
 
   case 61:
 
 /* Line 1455 of yacc.c  */
-#line 445 "ntp_parser.y"
+#line 446 "ntp_parser.y"
     { my_config.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
     break;
 
   case 63:
 
 /* Line 1455 of yacc.c  */
-#line 451 "ntp_parser.y"
+#line 452 "ntp_parser.y"
     { (yyval.Queue) = NULL; }
     break;
 
   case 64:
 
 /* Line 1455 of yacc.c  */
-#line 455 "ntp_parser.y"
+#line 456 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 65:
 
 /* Line 1455 of yacc.c  */
-#line 456 "ntp_parser.y"
+#line 457 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 66:
 
 /* Line 1455 of yacc.c  */
-#line 461 "ntp_parser.y"
+#line 462 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_PRIV, (yyvsp[(2) - (2)].String)); }
     break;
 
   case 67:
 
 /* Line 1455 of yacc.c  */
-#line 463 "ntp_parser.y"
+#line 464 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_IDENT, (yyvsp[(2) - (2)].String)); }
     break;
 
   case 68:
 
 /* Line 1455 of yacc.c  */
-#line 465 "ntp_parser.y"
+#line 466 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_PW, (yyvsp[(2) - (2)].String)); }
     break;
 
   case 69:
 
 /* Line 1455 of yacc.c  */
-#line 467 "ntp_parser.y"
+#line 468 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_RAND, (yyvsp[(2) - (2)].String)); }
     break;
 
   case 70:
 
 /* Line 1455 of yacc.c  */
-#line 469 "ntp_parser.y"
+#line 470 "ntp_parser.y"
     { my_config.auth.revoke = (yyvsp[(2) - (2)].Integer); }
     break;
 
   case 71:
 
 /* Line 1455 of yacc.c  */
-#line 471 "ntp_parser.y"
+#line 472 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_SIGN, (yyvsp[(2) - (2)].String)); }
     break;
 
   case 72:
 
 /* Line 1455 of yacc.c  */
-#line 481 "ntp_parser.y"
+#line 482 "ntp_parser.y"
     { append_queue(my_config.orphan_cmds,(yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 73:
 
 /* Line 1455 of yacc.c  */
-#line 485 "ntp_parser.y"
+#line 486 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 74:
 
 /* Line 1455 of yacc.c  */
-#line 486 "ntp_parser.y"
+#line 487 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 75:
 
 /* Line 1455 of yacc.c  */
-#line 491 "ntp_parser.y"
+#line 492 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_CEILING, (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 76:
 
 /* Line 1455 of yacc.c  */
-#line 493 "ntp_parser.y"
+#line 494 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_FLOOR, (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 77:
 
 /* Line 1455 of yacc.c  */
-#line 495 "ntp_parser.y"
+#line 496 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_COHORT, (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 78:
 
 /* Line 1455 of yacc.c  */
-#line 497 "ntp_parser.y"
+#line 498 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_ORPHAN, (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 79:
 
 /* Line 1455 of yacc.c  */
-#line 499 "ntp_parser.y"
+#line 500 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_MINDISP, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 80:
 
 /* Line 1455 of yacc.c  */
-#line 501 "ntp_parser.y"
+#line 502 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_MAXDIST, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 81:
 
 /* Line 1455 of yacc.c  */
-#line 503 "ntp_parser.y"
+#line 504 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_MINCLOCK, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 82:
 
 /* Line 1455 of yacc.c  */
-#line 505 "ntp_parser.y"
+#line 506 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_MAXCLOCK, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 83:
 
 /* Line 1455 of yacc.c  */
-#line 507 "ntp_parser.y"
+#line 508 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_MINSANE, (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 84:
 
 /* Line 1455 of yacc.c  */
-#line 509 "ntp_parser.y"
+#line 510 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_BEACON, (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 85:
 
 /* Line 1455 of yacc.c  */
-#line 511 "ntp_parser.y"
+#line 512 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(PROTO_MAXHOP, (double)(yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 86:
 
 /* Line 1455 of yacc.c  */
-#line 521 "ntp_parser.y"
+#line 522 "ntp_parser.y"
     { append_queue(my_config.stats_list, (yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 87:
 
 /* Line 1455 of yacc.c  */
-#line 523 "ntp_parser.y"
+#line 524 "ntp_parser.y"
     { my_config.stats_dir = (yyvsp[(2) - (2)].String); }
     break;
 
   case 88:
 
 /* Line 1455 of yacc.c  */
-#line 525 "ntp_parser.y"
+#line 526 "ntp_parser.y"
     {
                        enqueue(my_config.filegen_opts,
                                create_filegen_node((yyvsp[(2) - (3)].VoidPtr), (yyvsp[(3) - (3)].Queue)));
@@ -2668,182 +2671,182 @@ yyreduce:
   case 89:
 
 /* Line 1455 of yacc.c  */
-#line 532 "ntp_parser.y"
+#line 533 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].VoidPtr)); }
     break;
 
   case 90:
 
 /* Line 1455 of yacc.c  */
-#line 533 "ntp_parser.y"
+#line 534 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].VoidPtr)); }
     break;
 
   case 91:
 
 /* Line 1455 of yacc.c  */
-#line 538 "ntp_parser.y"
+#line 539 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("clockstats"); }
     break;
 
   case 92:
 
 /* Line 1455 of yacc.c  */
-#line 540 "ntp_parser.y"
+#line 541 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("cryptostats"); }
     break;
 
   case 93:
 
 /* Line 1455 of yacc.c  */
-#line 542 "ntp_parser.y"
+#line 543 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("loopstats"); }
     break;
 
   case 94:
 
 /* Line 1455 of yacc.c  */
-#line 544 "ntp_parser.y"
+#line 545 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("peerstats"); }
     break;
 
   case 95:
 
 /* Line 1455 of yacc.c  */
-#line 546 "ntp_parser.y"
+#line 547 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("rawstats"); }
     break;
 
   case 96:
 
 /* Line 1455 of yacc.c  */
-#line 548 "ntp_parser.y"
+#line 549 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("sysstats"); }
     break;
 
   case 97:
 
 /* Line 1455 of yacc.c  */
-#line 550 "ntp_parser.y"
+#line 551 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("timingstats"); }
     break;
 
   case 98:
 
 /* Line 1455 of yacc.c  */
-#line 552 "ntp_parser.y"
+#line 553 "ntp_parser.y"
     { (yyval.VoidPtr) = create_pval("protostats"); }
     break;
 
   case 99:
 
 /* Line 1455 of yacc.c  */
-#line 556 "ntp_parser.y"
+#line 557 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 100:
 
 /* Line 1455 of yacc.c  */
-#line 557 "ntp_parser.y"
+#line 558 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 101:
 
 /* Line 1455 of yacc.c  */
-#line 562 "ntp_parser.y"
+#line 563 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_sval(T_File, (yyvsp[(2) - (2)].String)); }
     break;
 
   case 102:
 
 /* Line 1455 of yacc.c  */
-#line 564 "ntp_parser.y"
+#line 565 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Type, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 103:
 
 /* Line 1455 of yacc.c  */
-#line 565 "ntp_parser.y"
+#line 566 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, T_Link); }
     break;
 
   case 104:
 
 /* Line 1455 of yacc.c  */
-#line 566 "ntp_parser.y"
+#line 567 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, T_Nolink); }
     break;
 
   case 105:
 
 /* Line 1455 of yacc.c  */
-#line 567 "ntp_parser.y"
+#line 568 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, T_Enable); }
     break;
 
   case 106:
 
 /* Line 1455 of yacc.c  */
-#line 568 "ntp_parser.y"
+#line 569 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_ival(T_Flag, T_Disable); }
     break;
 
   case 107:
 
 /* Line 1455 of yacc.c  */
-#line 572 "ntp_parser.y"
+#line 573 "ntp_parser.y"
     { (yyval.Integer) = FILEGEN_NONE; }
     break;
 
   case 108:
 
 /* Line 1455 of yacc.c  */
-#line 573 "ntp_parser.y"
+#line 574 "ntp_parser.y"
     { (yyval.Integer) = FILEGEN_PID; }
     break;
 
   case 109:
 
 /* Line 1455 of yacc.c  */
-#line 574 "ntp_parser.y"
+#line 575 "ntp_parser.y"
     { (yyval.Integer) = FILEGEN_DAY; }
     break;
 
   case 110:
 
 /* Line 1455 of yacc.c  */
-#line 575 "ntp_parser.y"
+#line 576 "ntp_parser.y"
     { (yyval.Integer) = FILEGEN_WEEK; }
     break;
 
   case 111:
 
 /* Line 1455 of yacc.c  */
-#line 576 "ntp_parser.y"
+#line 577 "ntp_parser.y"
     { (yyval.Integer) = FILEGEN_MONTH; }
     break;
 
   case 112:
 
 /* Line 1455 of yacc.c  */
-#line 577 "ntp_parser.y"
+#line 578 "ntp_parser.y"
     { (yyval.Integer) = FILEGEN_YEAR; }
     break;
 
   case 113:
 
 /* Line 1455 of yacc.c  */
-#line 578 "ntp_parser.y"
+#line 579 "ntp_parser.y"
     { (yyval.Integer) = FILEGEN_AGE; }
     break;
 
   case 114:
 
 /* Line 1455 of yacc.c  */
-#line 588 "ntp_parser.y"
+#line 589 "ntp_parser.y"
     {   
                        append_queue(my_config.discard_opts, (yyvsp[(2) - (2)].Queue));
                }
@@ -2852,7 +2855,7 @@ yyreduce:
   case 115:
 
 /* Line 1455 of yacc.c  */
-#line 592 "ntp_parser.y"
+#line 593 "ntp_parser.y"
     {
                        enqueue(my_config.restrict_opts,
                                create_restrict_node((yyvsp[(2) - (3)].Address_node), NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no));
@@ -2862,7 +2865,7 @@ yyreduce:
   case 116:
 
 /* Line 1455 of yacc.c  */
-#line 597 "ntp_parser.y"
+#line 598 "ntp_parser.y"
     {
                        enqueue(my_config.restrict_opts,
                                create_restrict_node(NULL, NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no));
@@ -2872,7 +2875,7 @@ yyreduce:
   case 117:
 
 /* Line 1455 of yacc.c  */
-#line 602 "ntp_parser.y"
+#line 603 "ntp_parser.y"
     {
                        enqueue(my_config.restrict_opts,
                                create_restrict_node(
@@ -2890,7 +2893,7 @@ yyreduce:
   case 118:
 
 /* Line 1455 of yacc.c  */
-#line 615 "ntp_parser.y"
+#line 616 "ntp_parser.y"
     {
                        enqueue(my_config.restrict_opts,
                                create_restrict_node(
@@ -2908,7 +2911,7 @@ yyreduce:
   case 119:
 
 /* Line 1455 of yacc.c  */
-#line 628 "ntp_parser.y"
+#line 629 "ntp_parser.y"
     {
                        enqueue(my_config.restrict_opts,
                                create_restrict_node((yyvsp[(2) - (5)].Address_node), (yyvsp[(4) - (5)].Address_node), (yyvsp[(5) - (5)].Queue), ip_file->line_no));
@@ -2918,371 +2921,378 @@ yyreduce:
   case 120:
 
 /* Line 1455 of yacc.c  */
-#line 635 "ntp_parser.y"
+#line 636 "ntp_parser.y"
     { (yyval.Queue) = create_queue(); }
     break;
 
   case 121:
 
 /* Line 1455 of yacc.c  */
-#line 636 "ntp_parser.y"
+#line 637 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].VoidPtr)); }
     break;
 
   case 122:
 
 /* Line 1455 of yacc.c  */
-#line 640 "ntp_parser.y"
+#line 641 "ntp_parser.y"
     { (yyval.VoidPtr) = create_ival(RES_TIMEOUT); }
     break;
 
   case 123:
 
 /* Line 1455 of yacc.c  */
-#line 641 "ntp_parser.y"
+#line 642 "ntp_parser.y"
     { (yyval.VoidPtr) = create_ival(RES_IGNORE); }
     break;
 
   case 124:
 
 /* Line 1455 of yacc.c  */
-#line 642 "ntp_parser.y"
+#line 643 "ntp_parser.y"
     { (yyval.VoidPtr) = create_ival(RES_KOD); }
     break;
 
   case 125:
 
 /* Line 1455 of yacc.c  */
-#line 643 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_LIMITED); }
+#line 644 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_MSSNTP); }
     break;
 
   case 126:
 
 /* Line 1455 of yacc.c  */
-#line 644 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_LPTRAP); }
+#line 645 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_LIMITED); }
     break;
 
   case 127:
 
 /* Line 1455 of yacc.c  */
-#line 645 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_NOMODIFY); }
+#line 646 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_LPTRAP); }
     break;
 
   case 128:
 
 /* Line 1455 of yacc.c  */
-#line 646 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_NOPEER); }
+#line 647 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_NOMODIFY); }
     break;
 
   case 129:
 
 /* Line 1455 of yacc.c  */
-#line 647 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_NOQUERY); }
+#line 648 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_NOPEER); }
     break;
 
   case 130:
 
 /* Line 1455 of yacc.c  */
-#line 648 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_DONTSERVE); }
+#line 649 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_NOQUERY); }
     break;
 
   case 131:
 
 /* Line 1455 of yacc.c  */
-#line 649 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_NOTRAP); }
+#line 650 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_DONTSERVE); }
     break;
 
   case 132:
 
 /* Line 1455 of yacc.c  */
-#line 650 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_DONTTRUST); }
+#line 651 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_NOTRAP); }
     break;
 
   case 133:
 
 /* Line 1455 of yacc.c  */
-#line 651 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RESM_NTPONLY); }
+#line 652 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_DONTTRUST); }
     break;
 
   case 134:
 
 /* Line 1455 of yacc.c  */
-#line 652 "ntp_parser.y"
-    { (yyval.VoidPtr) = create_ival(RES_VERSION); }
+#line 653 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RESM_NTPONLY); }
     break;
 
   case 135:
 
 /* Line 1455 of yacc.c  */
-#line 656 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
+#line 654 "ntp_parser.y"
+    { (yyval.VoidPtr) = create_ival(RES_VERSION); }
     break;
 
   case 136:
 
 /* Line 1455 of yacc.c  */
-#line 657 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+#line 658 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 137:
 
 /* Line 1455 of yacc.c  */
-#line 661 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Average, (yyvsp[(2) - (2)].Integer)); }
+#line 659 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 138:
 
 /* Line 1455 of yacc.c  */
-#line 662 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Minimum, (yyvsp[(2) - (2)].Integer)); }
+#line 663 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Average, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 139:
 
 /* Line 1455 of yacc.c  */
-#line 663 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Monitor, (yyvsp[(2) - (2)].Integer)); }
+#line 664 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Minimum, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 140:
 
 /* Line 1455 of yacc.c  */
-#line 672 "ntp_parser.y"
-    { enqueue(my_config.fudge, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
+#line 665 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Monitor, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 141:
 
 /* Line 1455 of yacc.c  */
-#line 676 "ntp_parser.y"
-    { enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
+#line 674 "ntp_parser.y"
+    { enqueue(my_config.fudge, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
     break;
 
   case 142:
 
 /* Line 1455 of yacc.c  */
-#line 677 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+#line 678 "ntp_parser.y"
+    { enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 143:
 
 /* Line 1455 of yacc.c  */
-#line 682 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(CLK_HAVETIME1, (yyvsp[(2) - (2)].Double)); }
+#line 679 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 144:
 
 /* Line 1455 of yacc.c  */
 #line 684 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(CLK_HAVETIME2, (yyvsp[(2) - (2)].Double)); }
+    { (yyval.Attr_val) = create_attr_dval(CLK_HAVETIME1, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 145:
 
 /* Line 1455 of yacc.c  */
 #line 686 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEVAL1,  (yyvsp[(2) - (2)].Integer)); }
+    { (yyval.Attr_val) = create_attr_dval(CLK_HAVETIME2, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 146:
 
 /* Line 1455 of yacc.c  */
 #line 688 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_sval(CLK_HAVEVAL2,  (yyvsp[(2) - (2)].String)); }
+    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEVAL1,  (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 147:
 
 /* Line 1455 of yacc.c  */
 #line 690 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG1, (yyvsp[(2) - (2)].Integer)); }
+    { (yyval.Attr_val) = create_attr_sval(CLK_HAVEVAL2,  (yyvsp[(2) - (2)].String)); }
     break;
 
   case 148:
 
 /* Line 1455 of yacc.c  */
 #line 692 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG2, (yyvsp[(2) - (2)].Integer)); }
+    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG1, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 149:
 
 /* Line 1455 of yacc.c  */
 #line 694 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG3, (yyvsp[(2) - (2)].Integer)); }
+    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG2, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 150:
 
 /* Line 1455 of yacc.c  */
 #line 696 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG4, (yyvsp[(2) - (2)].Integer)); }
+    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG3, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 151:
 
 /* Line 1455 of yacc.c  */
-#line 705 "ntp_parser.y"
-    { append_queue(my_config.enable_opts,(yyvsp[(2) - (2)].Queue));  }
+#line 698 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG4, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 152:
 
 /* Line 1455 of yacc.c  */
 #line 707 "ntp_parser.y"
-    { append_queue(my_config.disable_opts,(yyvsp[(2) - (2)].Queue));  }
+    { append_queue(my_config.enable_opts,(yyvsp[(2) - (2)].Queue));  }
     break;
 
   case 153:
 
 /* Line 1455 of yacc.c  */
-#line 711 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
+#line 709 "ntp_parser.y"
+    { append_queue(my_config.disable_opts,(yyvsp[(2) - (2)].Queue));  }
     break;
 
   case 154:
 
 /* Line 1455 of yacc.c  */
-#line 712 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+#line 713 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 155:
 
 /* Line 1455 of yacc.c  */
-#line 716 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_AUTHENTICATE); }
+#line 714 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 156:
 
 /* Line 1455 of yacc.c  */
-#line 717 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_BROADCLIENT); }
+#line 718 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_AUTHENTICATE); }
     break;
 
   case 157:
 
 /* Line 1455 of yacc.c  */
-#line 718 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_CAL); }
+#line 719 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_BROADCLIENT); }
     break;
 
   case 158:
 
 /* Line 1455 of yacc.c  */
-#line 719 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_KERNEL); }
+#line 720 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_CAL); }
     break;
 
   case 159:
 
 /* Line 1455 of yacc.c  */
-#line 720 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_MONITOR); }
+#line 721 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_KERNEL); }
     break;
 
   case 160:
 
 /* Line 1455 of yacc.c  */
-#line 721 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_NTP); }
+#line 722 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_MONITOR); }
     break;
 
   case 161:
 
 /* Line 1455 of yacc.c  */
 #line 723 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_FILEGEN); }
+    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_NTP); }
     break;
 
   case 162:
 
 /* Line 1455 of yacc.c  */
-#line 731 "ntp_parser.y"
-    { append_queue(my_config.tinker, (yyvsp[(2) - (2)].Queue)); }
+#line 725 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_FILEGEN); }
     break;
 
   case 163:
 
 /* Line 1455 of yacc.c  */
-#line 735 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
+#line 733 "ntp_parser.y"
+    { append_queue(my_config.tinker, (yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 164:
 
 /* Line 1455 of yacc.c  */
-#line 736 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+#line 737 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 165:
 
 /* Line 1455 of yacc.c  */
-#line 740 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(LOOP_ALLAN, (yyvsp[(2) - (2)].Double)); }
+#line 738 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 166:
 
 /* Line 1455 of yacc.c  */
-#line 741 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(LOOP_PHI, (yyvsp[(2) - (2)].Double)); }
+#line 742 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(LOOP_ALLAN, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 167:
 
 /* Line 1455 of yacc.c  */
-#line 742 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(LOOP_FREQ, (yyvsp[(2) - (2)].Double)); }
+#line 743 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(LOOP_PHI, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 168:
 
 /* Line 1455 of yacc.c  */
-#line 743 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(LOOP_HUFFPUFF, (yyvsp[(2) - (2)].Double)); }
+#line 744 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(LOOP_FREQ, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 169:
 
 /* Line 1455 of yacc.c  */
-#line 744 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(LOOP_PANIC, (yyvsp[(2) - (2)].Double)); }
+#line 745 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(LOOP_HUFFPUFF, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 170:
 
 /* Line 1455 of yacc.c  */
-#line 745 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(LOOP_MAX, (yyvsp[(2) - (2)].Double)); }
+#line 746 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(LOOP_PANIC, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 171:
 
 /* Line 1455 of yacc.c  */
-#line 746 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(LOOP_MINSTEP, (yyvsp[(2) - (2)].Double)); }
+#line 747 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(LOOP_MAX, (yyvsp[(2) - (2)].Double)); }
     break;
 
   case 172:
 
 /* Line 1455 of yacc.c  */
-#line 755 "ntp_parser.y"
+#line 748 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(LOOP_MINSTEP, (yyvsp[(2) - (2)].Double)); }
+    break;
+
+  case 173:
+
+/* Line 1455 of yacc.c  */
+#line 757 "ntp_parser.y"
     {
                        if (curr_include_level >= MAXINCLUDELEVEL) {
                                fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
@@ -3300,196 +3310,196 @@ yyreduce:
                }
     break;
 
-  case 173:
+  case 174:
 
 /* Line 1455 of yacc.c  */
-#line 771 "ntp_parser.y"
+#line 773 "ntp_parser.y"
     {
                        while (curr_include_level != -1)
                                FCLOSE(fp[curr_include_level--]);
                }
     break;
 
-  case 174:
-
-/* Line 1455 of yacc.c  */
-#line 777 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_dval(T_Broadcastdelay, (yyvsp[(2) - (2)].Double))); }
-    break;
-
   case 175:
 
 /* Line 1455 of yacc.c  */
 #line 779 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_ival(T_Calldelay, (yyvsp[(2) - (2)].Integer))); }
+    { enqueue(my_config.vars, create_attr_dval(T_Broadcastdelay, (yyvsp[(2) - (2)].Double))); }
     break;
 
   case 176:
 
 /* Line 1455 of yacc.c  */
 #line 781 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_dval(T_Tick, (yyvsp[(2) - (2)].Double))); }
+    { enqueue(my_config.vars, create_attr_ival(T_Calldelay, (yyvsp[(2) - (2)].Integer))); }
     break;
 
   case 177:
 
 /* Line 1455 of yacc.c  */
 #line 783 "ntp_parser.y"
-    { /* Null action, possibly all null parms */ }
+    { enqueue(my_config.vars, create_attr_dval(T_Tick, (yyvsp[(2) - (2)].Double))); }
     break;
 
   case 178:
 
 /* Line 1455 of yacc.c  */
 #line 785 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_sval(T_Leapfile, (yyvsp[(2) - (2)].String))); }
+    { /* Null action, possibly all null parms */ }
     break;
 
   case 179:
 
 /* Line 1455 of yacc.c  */
-#line 788 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_sval(T_Pidfile, (yyvsp[(2) - (2)].String))); }
+#line 787 "ntp_parser.y"
+    { enqueue(my_config.vars, create_attr_sval(T_Leapfile, (yyvsp[(2) - (2)].String))); }
     break;
 
   case 180:
 
 /* Line 1455 of yacc.c  */
 #line 790 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_sval(T_Logfile, (yyvsp[(2) - (2)].String))); }
+    { enqueue(my_config.vars, create_attr_sval(T_Pidfile, (yyvsp[(2) - (2)].String))); }
     break;
 
   case 181:
 
 /* Line 1455 of yacc.c  */
 #line 792 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_ival(T_Automax, (yyvsp[(2) - (2)].Integer))); }
+    { enqueue(my_config.vars, create_attr_sval(T_Logfile, (yyvsp[(2) - (2)].String))); }
     break;
 
   case 182:
 
 /* Line 1455 of yacc.c  */
-#line 795 "ntp_parser.y"
-    { append_queue(my_config.logconfig, (yyvsp[(2) - (2)].Queue)); }
+#line 794 "ntp_parser.y"
+    { enqueue(my_config.vars, create_attr_ival(T_Automax, (yyvsp[(2) - (2)].Integer))); }
     break;
 
   case 183:
 
 /* Line 1455 of yacc.c  */
 #line 797 "ntp_parser.y"
-    { append_queue(my_config.phone, (yyvsp[(2) - (2)].Queue)); }
+    { append_queue(my_config.logconfig, (yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 184:
 
 /* Line 1455 of yacc.c  */
 #line 799 "ntp_parser.y"
-    { enqueue(my_config.setvar, (yyvsp[(2) - (2)].Set_var)); }
+    { append_queue(my_config.phone, (yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 185:
 
 /* Line 1455 of yacc.c  */
 #line 801 "ntp_parser.y"
-    { enqueue(my_config.trap, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
+    { enqueue(my_config.setvar, (yyvsp[(2) - (2)].Set_var)); }
     break;
 
   case 186:
 
 /* Line 1455 of yacc.c  */
 #line 803 "ntp_parser.y"
-    { append_queue(my_config.ttl, (yyvsp[(2) - (2)].Queue)); }
+    { enqueue(my_config.trap, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
     break;
 
   case 187:
 
 /* Line 1455 of yacc.c  */
 #line 805 "ntp_parser.y"
-    { enqueue(my_config.qos, create_attr_sval(T_Qos, (yyvsp[(2) - (2)].String))); }
+    { append_queue(my_config.ttl, (yyvsp[(2) - (2)].Queue)); }
     break;
 
   case 188:
 
 /* Line 1455 of yacc.c  */
-#line 809 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String))); }
+#line 807 "ntp_parser.y"
+    { enqueue(my_config.qos, create_attr_sval(T_Qos, (yyvsp[(2) - (2)].String))); }
     break;
 
   case 189:
 
 /* Line 1455 of yacc.c  */
 #line 811 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double)));
-                         enqueue(my_config.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String))); }
+    { enqueue(my_config.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String))); }
     break;
 
   case 190:
 
 /* Line 1455 of yacc.c  */
-#line 814 "ntp_parser.y"
-    { enqueue(my_config.vars, create_attr_sval(T_Driftfile, "\0")); }
+#line 813 "ntp_parser.y"
+    { enqueue(my_config.vars, create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double)));
+                         enqueue(my_config.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String))); }
     break;
 
   case 191:
 
 /* Line 1455 of yacc.c  */
-#line 819 "ntp_parser.y"
-    { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), DEF); }
+#line 816 "ntp_parser.y"
+    { enqueue(my_config.vars, create_attr_sval(T_Driftfile, "\0")); }
     break;
 
   case 192:
 
 /* Line 1455 of yacc.c  */
 #line 821 "ntp_parser.y"
-    { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (3)].String), (yyvsp[(3) - (3)].String), 0); }
+    { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), DEF); }
     break;
 
   case 193:
 
 /* Line 1455 of yacc.c  */
-#line 826 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
+#line 823 "ntp_parser.y"
+    { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (3)].String), (yyvsp[(3) - (3)].String), 0); }
     break;
 
   case 194:
 
 /* Line 1455 of yacc.c  */
-#line 827 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+#line 828 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 195:
 
 /* Line 1455 of yacc.c  */
-#line 831 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_ival(T_Port, (yyvsp[(2) - (2)].Integer)); }
+#line 829 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
     break;
 
   case 196:
 
 /* Line 1455 of yacc.c  */
-#line 832 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_pval(T_Interface, (yyvsp[(2) - (2)].Address_node)); }
+#line 833 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_ival(T_Port, (yyvsp[(2) - (2)].Integer)); }
     break;
 
   case 197:
 
 /* Line 1455 of yacc.c  */
-#line 837 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
+#line 834 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_pval(T_Interface, (yyvsp[(2) - (2)].Address_node)); }
     break;
 
   case 198:
 
 /* Line 1455 of yacc.c  */
-#line 838 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+#line 839 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
     break;
 
   case 199:
 
 /* Line 1455 of yacc.c  */
-#line 843 "ntp_parser.y"
+#line 840 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
+    break;
+
+  case 200:
+
+/* Line 1455 of yacc.c  */
+#line 845 "ntp_parser.y"
     {
                        char prefix = (yyvsp[(1) - (1)].String)[0];
                        char *type = (yyvsp[(1) - (1)].String) + 1;
@@ -3503,52 +3513,52 @@ yyreduce:
                }
     break;
 
-  case 200:
+  case 201:
 
 /* Line 1455 of yacc.c  */
-#line 861 "ntp_parser.y"
+#line 863 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); }
     break;
 
-  case 201:
+  case 202:
 
 /* Line 1455 of yacc.c  */
-#line 862 "ntp_parser.y"
+#line 864 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue(create_ival((yyvsp[(1) - (1)].Integer))); }
     break;
 
-  case 202:
+  case 203:
 
 /* Line 1455 of yacc.c  */
-#line 866 "ntp_parser.y"
+#line 868 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_pval((yyvsp[(2) - (2)].String))); }
     break;
 
-  case 203:
+  case 204:
 
 /* Line 1455 of yacc.c  */
-#line 867 "ntp_parser.y"
+#line 869 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue(create_pval((yyvsp[(1) - (1)].String))); }
     break;
 
-  case 204:
+  case 205:
 
 /* Line 1455 of yacc.c  */
-#line 871 "ntp_parser.y"
+#line 873 "ntp_parser.y"
     { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Address_node)); }
     break;
 
-  case 205:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 872 "ntp_parser.y"
+#line 874 "ntp_parser.y"
     { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Address_node)); }
     break;
 
-  case 206:
+  case 207:
 
 /* Line 1455 of yacc.c  */
-#line 877 "ntp_parser.y"
+#line 879 "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");
@@ -3559,38 +3569,38 @@ yyreduce:
                }
     break;
 
-  case 207:
+  case 208:
 
 /* Line 1455 of yacc.c  */
-#line 885 "ntp_parser.y"
+#line 887 "ntp_parser.y"
     { (yyval.Integer) = 1; }
     break;
 
-  case 208:
+  case 209:
 
 /* Line 1455 of yacc.c  */
-#line 886 "ntp_parser.y"
+#line 888 "ntp_parser.y"
     { (yyval.Integer) = 0; }
     break;
 
-  case 209:
+  case 210:
 
 /* Line 1455 of yacc.c  */
-#line 890 "ntp_parser.y"
+#line 892 "ntp_parser.y"
     { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); }
     break;
 
-  case 210:
+  case 211:
 
 /* Line 1455 of yacc.c  */
-#line 891 "ntp_parser.y"
+#line 893 "ntp_parser.y"
     { (yyval.Double) = (yyvsp[(1) - (1)].Double); }
     break;
 
-  case 211:
+  case 212:
 
 /* Line 1455 of yacc.c  */
-#line 900 "ntp_parser.y"
+#line 902 "ntp_parser.y"
     {
                        my_config.sim_details = create_sim_node((yyvsp[(3) - (5)].Queue), (yyvsp[(4) - (5)].Queue));
 
@@ -3599,150 +3609,150 @@ yyreduce:
                }
     break;
 
-  case 212:
-
-/* Line 1455 of yacc.c  */
-#line 914 "ntp_parser.y"
-    { old_config_style = 0; }
-    break;
-
   case 213:
 
 /* Line 1455 of yacc.c  */
-#line 918 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
+#line 916 "ntp_parser.y"
+    { old_config_style = 0; }
     break;
 
   case 214:
 
 /* Line 1455 of yacc.c  */
-#line 919 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
+#line 920 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
     break;
 
   case 215:
 
 /* Line 1455 of yacc.c  */
-#line 923 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(T_Beep_Delay, (yyvsp[(3) - (3)].Double)); }
+#line 921 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
     break;
 
   case 216:
 
 /* Line 1455 of yacc.c  */
-#line 924 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(T_Sim_Duration, (yyvsp[(3) - (3)].Double)); }
+#line 925 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(T_Beep_Delay, (yyvsp[(3) - (3)].Double)); }
     break;
 
   case 217:
 
 /* Line 1455 of yacc.c  */
-#line 928 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_server)); }
+#line 926 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(T_Sim_Duration, (yyvsp[(3) - (3)].Double)); }
     break;
 
   case 218:
 
 /* Line 1455 of yacc.c  */
-#line 929 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_server)); }
+#line 930 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_server)); }
     break;
 
   case 219:
 
 /* Line 1455 of yacc.c  */
-#line 934 "ntp_parser.y"
-    { (yyval.Sim_server) = create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Queue)); }
+#line 931 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_server)); }
     break;
 
   case 220:
 
 /* Line 1455 of yacc.c  */
-#line 938 "ntp_parser.y"
-    { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
+#line 936 "ntp_parser.y"
+    { (yyval.Sim_server) = create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Queue)); }
     break;
 
   case 221:
 
 /* Line 1455 of yacc.c  */
-#line 942 "ntp_parser.y"
-    { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
+#line 940 "ntp_parser.y"
+    { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
     break;
 
   case 222:
 
 /* Line 1455 of yacc.c  */
-#line 946 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_script)); }
+#line 944 "ntp_parser.y"
+    { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
     break;
 
   case 223:
 
 /* Line 1455 of yacc.c  */
-#line 947 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_script)); }
+#line 948 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_script)); }
     break;
 
   case 224:
 
 /* Line 1455 of yacc.c  */
-#line 952 "ntp_parser.y"
-    { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Queue)); }
+#line 949 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_script)); }
     break;
 
   case 225:
 
 /* Line 1455 of yacc.c  */
-#line 956 "ntp_parser.y"
-    { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
+#line 954 "ntp_parser.y"
+    { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Queue)); }
     break;
 
   case 226:
 
 /* Line 1455 of yacc.c  */
-#line 957 "ntp_parser.y"
-    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
+#line 958 "ntp_parser.y"
+    { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
     break;
 
   case 227:
 
 /* Line 1455 of yacc.c  */
-#line 962 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(T_Freq_Offset, (yyvsp[(3) - (3)].Double)); }
+#line 959 "ntp_parser.y"
+    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
     break;
 
   case 228:
 
 /* Line 1455 of yacc.c  */
 #line 964 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(T_Wander, (yyvsp[(3) - (3)].Double)); }
+    { (yyval.Attr_val) = create_attr_dval(T_Freq_Offset, (yyvsp[(3) - (3)].Double)); }
     break;
 
   case 229:
 
 /* Line 1455 of yacc.c  */
 #line 966 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(T_Jitter, (yyvsp[(3) - (3)].Double)); }
+    { (yyval.Attr_val) = create_attr_dval(T_Wander, (yyvsp[(3) - (3)].Double)); }
     break;
 
   case 230:
 
 /* Line 1455 of yacc.c  */
 #line 968 "ntp_parser.y"
-    { (yyval.Attr_val) = create_attr_dval(T_Prop_Delay, (yyvsp[(3) - (3)].Double)); }
+    { (yyval.Attr_val) = create_attr_dval(T_Jitter, (yyvsp[(3) - (3)].Double)); }
     break;
 
   case 231:
 
 /* Line 1455 of yacc.c  */
 #line 970 "ntp_parser.y"
+    { (yyval.Attr_val) = create_attr_dval(T_Prop_Delay, (yyvsp[(3) - (3)].Double)); }
+    break;
+
+  case 232:
+
+/* Line 1455 of yacc.c  */
+#line 972 "ntp_parser.y"
     { (yyval.Attr_val) = create_attr_dval(T_Proc_Delay, (yyvsp[(3) - (3)].Double)); }
     break;
 
 
 
 /* Line 1455 of yacc.c  */
-#line 3746 "ntp_parser.c"
+#line 3756 "../../ntpd/ntp_parser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3954,7 +3964,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 974 "ntp_parser.y"
+#line 976 "ntp_parser.y"
 
 
 /* KEYWORDS
index 90f6e291d58cd486fbba0280acd96d0b2a7ba989..ff1dd9d685da414ce693a9420e4dad9bc8ccda63 100644 (file)
      T_Keys = 311,
      T_Keysdir = 312,
      T_Kod = 313,
-     T_Leap = 314,
-     T_Leapfile = 315,
-     T_Limited = 316,
-     T_Link = 317,
-     T_Logconfig = 318,
-     T_Logfile = 319,
-     T_Loopstats = 320,
-     T_Lowpriotrap = 321,
-     T_Manycastclient = 322,
-     T_Manycastserver = 323,
-     T_Mask = 324,
-     T_Maxclock = 325,
-     T_Maxdist = 326,
-     T_Maxhop = 327,
-     T_Maxpoll = 328,
-     T_Minclock = 329,
-     T_Mindist = 330,
-     T_Minimum = 331,
-     T_Minpoll = 332,
-     T_Minsane = 333,
-     T_Mode = 334,
-     T_Monitor = 335,
-     T_Month = 336,
-     T_Multicastclient = 337,
-     T_Nolink = 338,
-     T_Nomodify = 339,
-     T_None = 340,
-     T_Nopeer = 341,
-     T_Noquery = 342,
-     T_Noselect = 343,
-     T_Noserve = 344,
-     T_Notrap = 345,
-     T_Notrust = 346,
-     T_Novolley = 347,
-     T_Ntp = 348,
-     T_Ntpport = 349,
-     T_NtpSignDsocket = 350,
-     T_Orphan = 351,
-     T_Panic = 352,
-     T_Peer = 353,
-     T_Peerstats = 354,
-     T_Phone = 355,
-     T_Pid = 356,
-     T_Pidfile = 357,
-     T_Pool = 358,
-     T_Port = 359,
-     T_Pps = 360,
-     T_Preempt = 361,
-     T_Prefer = 362,
-     T_Protostats = 363,
-     T_Pw = 364,
-     T_Qos = 365,
-     T_RandFile = 366,
-     T_Rawstats = 367,
-     T_Refid = 368,
-     T_Requestkey = 369,
-     T_Restrict = 370,
-     T_Revoke = 371,
-     T_Server = 372,
-     T_Setvar = 373,
-     T_Sign = 374,
-     T_Statistics = 375,
-     T_Stats = 376,
-     T_Statsdir = 377,
-     T_Step = 378,
-     T_Stepout = 379,
-     T_Stratum = 380,
-     T_String = 381,
-     T_Sysstats = 382,
-     T_Tick = 383,
-     T_Time1 = 384,
-     T_Time2 = 385,
-     T_Timingstats = 386,
-     T_Tinker = 387,
-     T_Tos = 388,
-     T_Trap = 389,
-     T_True = 390,
-     T_Trustedkey = 391,
-     T_Ttl = 392,
-     T_Type = 393,
-     T_Unconfig = 394,
-     T_Unpeer = 395,
-     T_Version = 396,
-     T_WanderThreshold = 397,
-     T_Week = 398,
-     T_Xleave = 399,
-     T_Year = 400,
-     T_Flag = 401,
-     T_Void = 402,
-     T_EOC = 403,
-     T_Simulate = 404,
-     T_Beep_Delay = 405,
-     T_Sim_Duration = 406,
-     T_Server_Offset = 407,
-     T_Duration = 408,
-     T_Freq_Offset = 409,
-     T_Wander = 410,
-     T_Jitter = 411,
-     T_Prop_Delay = 412,
-     T_Proc_Delay = 413
+     T_Mssntp = 314,
+     T_Leap = 315,
+     T_Leapfile = 316,
+     T_Limited = 317,
+     T_Link = 318,
+     T_Logconfig = 319,
+     T_Logfile = 320,
+     T_Loopstats = 321,
+     T_Lowpriotrap = 322,
+     T_Manycastclient = 323,
+     T_Manycastserver = 324,
+     T_Mask = 325,
+     T_Maxclock = 326,
+     T_Maxdist = 327,
+     T_Maxhop = 328,
+     T_Maxpoll = 329,
+     T_Minclock = 330,
+     T_Mindist = 331,
+     T_Minimum = 332,
+     T_Minpoll = 333,
+     T_Minsane = 334,
+     T_Mode = 335,
+     T_Monitor = 336,
+     T_Month = 337,
+     T_Multicastclient = 338,
+     T_Nolink = 339,
+     T_Nomodify = 340,
+     T_None = 341,
+     T_Nopeer = 342,
+     T_Noquery = 343,
+     T_Noselect = 344,
+     T_Noserve = 345,
+     T_Notrap = 346,
+     T_Notrust = 347,
+     T_Novolley = 348,
+     T_Ntp = 349,
+     T_Ntpport = 350,
+     T_NtpSignDsocket = 351,
+     T_Orphan = 352,
+     T_Panic = 353,
+     T_Peer = 354,
+     T_Peerstats = 355,
+     T_Phone = 356,
+     T_Pid = 357,
+     T_Pidfile = 358,
+     T_Pool = 359,
+     T_Port = 360,
+     T_Pps = 361,
+     T_Preempt = 362,
+     T_Prefer = 363,
+     T_Protostats = 364,
+     T_Pw = 365,
+     T_Qos = 366,
+     T_RandFile = 367,
+     T_Rawstats = 368,
+     T_Refid = 369,
+     T_Requestkey = 370,
+     T_Restrict = 371,
+     T_Revoke = 372,
+     T_Server = 373,
+     T_Setvar = 374,
+     T_Sign = 375,
+     T_Statistics = 376,
+     T_Stats = 377,
+     T_Statsdir = 378,
+     T_Step = 379,
+     T_Stepout = 380,
+     T_Stratum = 381,
+     T_String = 382,
+     T_Sysstats = 383,
+     T_Tick = 384,
+     T_Time1 = 385,
+     T_Time2 = 386,
+     T_Timingstats = 387,
+     T_Tinker = 388,
+     T_Tos = 389,
+     T_Trap = 390,
+     T_True = 391,
+     T_Trustedkey = 392,
+     T_Ttl = 393,
+     T_Type = 394,
+     T_Unconfig = 395,
+     T_Unpeer = 396,
+     T_Version = 397,
+     T_WanderThreshold = 398,
+     T_Week = 399,
+     T_Xleave = 400,
+     T_Year = 401,
+     T_Flag = 402,
+     T_Void = 403,
+     T_EOC = 404,
+     T_Simulate = 405,
+     T_Beep_Delay = 406,
+     T_Sim_Duration = 407,
+     T_Server_Offset = 408,
+     T_Duration = 409,
+     T_Freq_Offset = 410,
+     T_Wander = 411,
+     T_Jitter = 412,
+     T_Prop_Delay = 413,
+     T_Proc_Delay = 414
    };
 #endif
 /* Tokens.  */
 #define T_Keys 311
 #define T_Keysdir 312
 #define T_Kod 313
-#define T_Leap 314
-#define T_Leapfile 315
-#define T_Limited 316
-#define T_Link 317
-#define T_Logconfig 318
-#define T_Logfile 319
-#define T_Loopstats 320
-#define T_Lowpriotrap 321
-#define T_Manycastclient 322
-#define T_Manycastserver 323
-#define T_Mask 324
-#define T_Maxclock 325
-#define T_Maxdist 326
-#define T_Maxhop 327
-#define T_Maxpoll 328
-#define T_Minclock 329
-#define T_Mindist 330
-#define T_Minimum 331
-#define T_Minpoll 332
-#define T_Minsane 333
-#define T_Mode 334
-#define T_Monitor 335
-#define T_Month 336
-#define T_Multicastclient 337
-#define T_Nolink 338
-#define T_Nomodify 339
-#define T_None 340
-#define T_Nopeer 341
-#define T_Noquery 342
-#define T_Noselect 343
-#define T_Noserve 344
-#define T_Notrap 345
-#define T_Notrust 346
-#define T_Novolley 347
-#define T_Ntp 348
-#define T_Ntpport 349
-#define T_NtpSignDsocket 350
-#define T_Orphan 351
-#define T_Panic 352
-#define T_Peer 353
-#define T_Peerstats 354
-#define T_Phone 355
-#define T_Pid 356
-#define T_Pidfile 357
-#define T_Pool 358
-#define T_Port 359
-#define T_Pps 360
-#define T_Preempt 361
-#define T_Prefer 362
-#define T_Protostats 363
-#define T_Pw 364
-#define T_Qos 365
-#define T_RandFile 366
-#define T_Rawstats 367
-#define T_Refid 368
-#define T_Requestkey 369
-#define T_Restrict 370
-#define T_Revoke 371
-#define T_Server 372
-#define T_Setvar 373
-#define T_Sign 374
-#define T_Statistics 375
-#define T_Stats 376
-#define T_Statsdir 377
-#define T_Step 378
-#define T_Stepout 379
-#define T_Stratum 380
-#define T_String 381
-#define T_Sysstats 382
-#define T_Tick 383
-#define T_Time1 384
-#define T_Time2 385
-#define T_Timingstats 386
-#define T_Tinker 387
-#define T_Tos 388
-#define T_Trap 389
-#define T_True 390
-#define T_Trustedkey 391
-#define T_Ttl 392
-#define T_Type 393
-#define T_Unconfig 394
-#define T_Unpeer 395
-#define T_Version 396
-#define T_WanderThreshold 397
-#define T_Week 398
-#define T_Xleave 399
-#define T_Year 400
-#define T_Flag 401
-#define T_Void 402
-#define T_EOC 403
-#define T_Simulate 404
-#define T_Beep_Delay 405
-#define T_Sim_Duration 406
-#define T_Server_Offset 407
-#define T_Duration 408
-#define T_Freq_Offset 409
-#define T_Wander 410
-#define T_Jitter 411
-#define T_Prop_Delay 412
-#define T_Proc_Delay 413
+#define T_Mssntp 314
+#define T_Leap 315
+#define T_Leapfile 316
+#define T_Limited 317
+#define T_Link 318
+#define T_Logconfig 319
+#define T_Logfile 320
+#define T_Loopstats 321
+#define T_Lowpriotrap 322
+#define T_Manycastclient 323
+#define T_Manycastserver 324
+#define T_Mask 325
+#define T_Maxclock 326
+#define T_Maxdist 327
+#define T_Maxhop 328
+#define T_Maxpoll 329
+#define T_Minclock 330
+#define T_Mindist 331
+#define T_Minimum 332
+#define T_Minpoll 333
+#define T_Minsane 334
+#define T_Mode 335
+#define T_Monitor 336
+#define T_Month 337
+#define T_Multicastclient 338
+#define T_Nolink 339
+#define T_Nomodify 340
+#define T_None 341
+#define T_Nopeer 342
+#define T_Noquery 343
+#define T_Noselect 344
+#define T_Noserve 345
+#define T_Notrap 346
+#define T_Notrust 347
+#define T_Novolley 348
+#define T_Ntp 349
+#define T_Ntpport 350
+#define T_NtpSignDsocket 351
+#define T_Orphan 352
+#define T_Panic 353
+#define T_Peer 354
+#define T_Peerstats 355
+#define T_Phone 356
+#define T_Pid 357
+#define T_Pidfile 358
+#define T_Pool 359
+#define T_Port 360
+#define T_Pps 361
+#define T_Preempt 362
+#define T_Prefer 363
+#define T_Protostats 364
+#define T_Pw 365
+#define T_Qos 366
+#define T_RandFile 367
+#define T_Rawstats 368
+#define T_Refid 369
+#define T_Requestkey 370
+#define T_Restrict 371
+#define T_Revoke 372
+#define T_Server 373
+#define T_Setvar 374
+#define T_Sign 375
+#define T_Statistics 376
+#define T_Stats 377
+#define T_Statsdir 378
+#define T_Step 379
+#define T_Stepout 380
+#define T_Stratum 381
+#define T_String 382
+#define T_Sysstats 383
+#define T_Tick 384
+#define T_Time1 385
+#define T_Time2 386
+#define T_Timingstats 387
+#define T_Tinker 388
+#define T_Tos 389
+#define T_Trap 390
+#define T_True 391
+#define T_Trustedkey 392
+#define T_Ttl 393
+#define T_Type 394
+#define T_Unconfig 395
+#define T_Unpeer 396
+#define T_Version 397
+#define T_WanderThreshold 398
+#define T_Week 399
+#define T_Xleave 400
+#define T_Year 401
+#define T_Flag 402
+#define T_Void 403
+#define T_EOC 404
+#define T_Simulate 405
+#define T_Beep_Delay 406
+#define T_Sim_Duration 407
+#define T_Server_Offset 408
+#define T_Duration 409
+#define T_Freq_Offset 410
+#define T_Wander 411
+#define T_Jitter 412
+#define T_Prop_Delay 413
+#define T_Proc_Delay 414
 
 
 
@@ -381,7 +383,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 385 "ntp_parser.h"
+#line 387 "../../ntpd/ntp_parser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index e181c855fa035d24c75f4795c2c8b25d7898737e..dff47d82dc2f9561df5cfc798d033aaf887f421e 100644 (file)
 %token                 T_Keys
 %token                 T_Keysdir
 %token                 T_Kod
+%token                 T_Mssntp
 %token                 T_Leap
 %token                 T_Leapfile
 %token                 T_Limited
@@ -640,6 +641,7 @@ access_control_flag
        :       T_Flake         { $$ = create_ival(RES_TIMEOUT); }
        |       T_Ignore        { $$ = create_ival(RES_IGNORE); }
        |       T_Kod           { $$ = create_ival(RES_KOD); }
+       |       T_Mssntp        { $$ = create_ival(RES_MSSNTP); }
        |       T_Limited       { $$ = create_ival(RES_LIMITED); }
        |       T_Lowpriotrap   { $$ = create_ival(RES_LPTRAP); }
        |       T_Nomodify      { $$ = create_ival(RES_NOMODIFY); }
index aebc510f4b172378ce79ab5ca3549eb94697ca53..8caf9fc76190c2ec05746e55d6dd59b2c2307e08 100644 (file)
@@ -126,7 +126,7 @@ static      double  root_distance   (struct peer *);
 static void    clock_combine   (struct peer **, int);
 static void    peer_xmit       (struct peer *);
 static void    fast_xmit       (struct recvbuf *, int, keyid_t,
-                                char *, int);
+                                   int);
 static void    clock_update    (struct peer *);
 static int     default_get_precision (void);
 static int     peer_unfit      (struct peer *);
@@ -309,7 +309,6 @@ receive(
        int     authlen;                /* offset of MAC field */
        int     is_authentic = 0;       /* cryptosum ok */
        int     retcode = AM_NOMATCH;   /* match code */
-       int     flags = 0;              /* flags with details about the authentication */
        keyid_t skeyid = 0;             /* key IDs */
        u_int32 opcode = 0;             /* extension field opcode */
        sockaddr_u *dstadr_sin;         /* active runway */
@@ -322,9 +321,9 @@ receive(
        int     rval;                   /* cookie snatcher */
        keyid_t pkeyid = 0, tkeyid = 0; /* key IDs */
 #endif /* OPENSSL */
-#ifdef WINTIME
+#ifdef HAVE_NTP_SIGND
        static unsigned char zero_key[16];
-#endif /* WINTIME */
+#endif /* HAVE_NTP_SIGND */
 
        /*
         * Monitor the packet and get restrictions. Note that the packet
@@ -482,11 +481,14 @@ receive(
                        return;                 /* rate exceeded */
 
                if (hismode == MODE_CLIENT)
-                       fast_xmit(rbufp, MODE_SERVER, skeyid, "RATE", 0);
+                       fast_xmit(rbufp, MODE_SERVER, skeyid,
+                           restrict_mask);
                else
-                       fast_xmit(rbufp, MODE_ACTIVE, skeyid, "RATE", 0);
+                       fast_xmit(rbufp, MODE_ACTIVE, skeyid,
+                           restrict_mask);
                return;                         /* rate exceeded */
        }
+       restrict_mask &= ~RES_KOD;
 
        /*
         * We have tossed out as many buggy packets as possible early in
@@ -539,6 +541,7 @@ receive(
         */
 
        if (has_mac == 0) {
+               restrict_mask &= ~RES_MSSNTP;
                is_authentic = AUTH_NONE; /* not required */
 #ifdef DEBUG
                if (debug)
@@ -549,7 +552,8 @@ receive(
                            authlen);
 #endif
        } else if (has_mac == 4) {
-                       is_authentic = AUTH_CRYPTO; /* crypto-NAK */
+               restrict_mask &= ~RES_MSSNTP;
+               is_authentic = AUTH_CRYPTO; /* crypto-NAK */
 #ifdef DEBUG
                if (debug)
                        printf(
@@ -559,8 +563,9 @@ receive(
                            authlen + has_mac, is_authentic);
 #endif
 
-#ifdef WINTIME
-               /* If the signature is 20 bytes long, the last 16 of
+#ifdef HAVE_NTP_SIGND
+               /*
+                * If the signature is 20 bytes long, the last 16 of
                 * which are zero, then this is a Microsoft client
                 * wanting AD-style authentication of the server's
                 * reply.  
@@ -568,18 +573,15 @@ receive(
                 * This is described in Microsoft's WSPP docs, in MS-SNTP:
                 * http://msdn.microsoft.com/en-us/library/cc212930.aspx
                 */
-       } else if (has_mac == MAX_MAC_LEN
-                  && (retcode == AM_FXMIT || retcode == AM_NEWPASS)
-                  && (memcmp(zero_key, (char *)pkt + authlen + 4, MAX_MAC_LEN - 4) == 0)) {
-               
-               /* Don't try to verify the zeros, just set a
-                * flag and otherwise pretend we never saw the signature */
+       } else if (has_mac == MAX_MAC_LEN && (restrict_mask & RES_MSNTP) &&
+          (retcode == AM_FXMIT || retcode == AM_NEWPASS) &&
+          (memcmp(zero_key, (char *)pkt + authlen + 4, MAX_MAC_LEN - 4) ==
+          0)) {
                is_authentic = AUTH_NONE;
-               
-               flags = FLAG_ADKEY;
-#endif /* WINTIME */
+#endif /* HAVE_NTP_SIGND */
 
        } else {
+               restrict_mask &= ~RES_MSSNTP;
 #ifdef OPENSSL
                /*
                 * For autokey modes, generate the session key
@@ -720,9 +722,10 @@ receive(
                        if (AUTH(restrict_mask & RES_DONTTRUST,
                           is_authentic)) {
                                fast_xmit(rbufp, MODE_SERVER, skeyid,
-                                         NULL, flags);
+                                   restrict_mask);
                        } else if (is_authentic == AUTH_ERROR) {
-                               fast_xmit(rbufp, MODE_SERVER, 0, NULL, 0);
+                               fast_xmit(rbufp, MODE_SERVER, 0,
+                                   restrict_mask);
                                sys_badauth++;
                        } else {
                                sys_restricted++;
@@ -757,7 +760,8 @@ receive(
                 * crypto-NAK, as that would not be useful.
                 */
                if (AUTH(restrict_mask & RES_DONTTRUST, is_authentic))
-                       fast_xmit(rbufp, MODE_SERVER, skeyid, NULL, 0);
+                       fast_xmit(rbufp, MODE_SERVER, skeyid,
+                           restrict_mask);
                return;                         /* hooray */
 
        /*
@@ -924,11 +928,12 @@ receive(
                        if (AUTH(restrict_mask & RES_DONTTRUST,
                            is_authentic)) {
                                fast_xmit(rbufp, MODE_PASSIVE, skeyid,
-                                   NULL, flags);
+                                   restrict_mask);
                                return;                 /* hooray */
                        }
                        if (is_authentic == AUTH_ERROR) {
-                               fast_xmit(rbufp, MODE_ACTIVE, 0, NULL, 0);
+                               fast_xmit(rbufp, MODE_ACTIVE, 0,
+                                   restrict_mask);
                                sys_restricted++;
                        }
                }
@@ -1117,7 +1122,7 @@ receive(
                peer->flash |= TEST5;           /* bad auth */
                peer->badauth++;
                if (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE)
-                       fast_xmit(rbufp, MODE_ACTIVE, 0, NULL, 0);
+                       fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask);
                if (peer->flags & FLAG_PREEMPT) {
                        unpeer(peer);
                        return;
@@ -3185,8 +3190,7 @@ fast_xmit(
        struct recvbuf *rbufp,  /* receive packet pointer */
        int     xmode,          /* receive mode */
        keyid_t xkeyid,         /* transmit key ID */
-       char    *mask,          /* kiss code */
-       int     flags           /* Flags to indicate signing behaviour */
+       int     flags           /* restrict mask */
        )
 {
        struct pkt xpkt;        /* transmit packet structure */
@@ -3219,13 +3223,13 @@ fast_xmit(
         * local time, so these packets can't be used for
         * synchronization.
         */
-       if (mask != NULL) {
+       if (flags & RES_KOD) {
                sys_kodsent++;
                xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC,
                    PKT_VERSION(rpkt->li_vn_mode), xmode);
                xpkt.stratum = STRATUM_PKT_UNSPEC;
                xpkt.ppoll = max(rpkt->ppoll, ntp_minpoll);
-               memcpy(&xpkt.refid, mask, 4);
+               memcpy(&xpkt.refid, "RATE", 4);
                xpkt.org = rpkt->xmt;
                xpkt.rec = rpkt->xmt;
                xpkt.xmt = rpkt->xmt;
@@ -3245,14 +3249,12 @@ fast_xmit(
                HTONL_FP(&sys_reftime, &xpkt.reftime);
                xpkt.org = rpkt->xmt;
                HTONL_FP(&rbufp->recv_time, &xpkt.rec);
+               HTONL_FP(&xmt_tx, &xpkt.xmt);
        }
 
 #ifdef HAVE_NTP_SIGND
-       if (flags & FLAG_ADKEY) {
+       if (flags & RES_MSSNTP) {
                get_systime(&xmt_tx);
-               if (mask == NULL) {
-                       HTONL_FP(&xmt_tx, &xpkt.xmt);
-               }
                send_via_ntp_signd(rbufp, xmode, xkeyid, flags, &xpkt);
                return;
        }
@@ -3265,10 +3267,7 @@ fast_xmit(
         */
        sendlen = LEN_PKT_NOMAC;
        if (rbufp->recv_length == sendlen) {
-               if (mask == NULL) {
-                       get_systime(&xmt_tx);
-                       HTONL_FP(&xmt_tx, &xpkt.xmt);
-               }
+               get_systime(&xmt_tx);
                sendpkt(&rbufp->recv_srcadr, rbufp->dstadr, 0, &xpkt,
                    sendlen);
 #ifdef DEBUG
@@ -3320,9 +3319,6 @@ fast_xmit(
        }
 #endif /* OPENSSL */
        get_systime(&xmt_tx);
-       if (mask == NULL) {
-               HTONL_FP(&xmt_tx, &xpkt.xmt);
-       }
        sendlen += authencrypt(xkeyid, (u_int32 *)&xpkt, sendlen);
 #ifdef OPENSSL
        if (xkeyid > NTP_MAXKEY)