+--- contrib/ntp/ntpd/ntp.conf.man.in.orig
++++ contrib/ntp/ntpd/ntp.conf.man.in
+@@ -10,11 +10,11 @@
+ .ds B-Font B
+ .ds I-Font I
+ .ds R-Font R
+-.TH ntp.conf 5 "21 Oct 2015" "4.2.8p4" "File Formats"
++.TH ntp.conf 5 "07 Jan 2016" "4.2.8p5" "File Formats"
+ .\"
+-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-9oaqYI/ag-OpaiXI)
++.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-8qayqp/ag-Vraqpp)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:01 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:30:35 PM by AutoGen 5.18.5
+ .\" From the definitions ntp.conf.def
+ .\" and the template file agman-cmd.tpl
+ .SH NAME
+--- contrib/ntp/ntpd/ntp.conf.mdoc.in.orig
++++ contrib/ntp/ntpd/ntp.conf.mdoc.in
+@@ -1,9 +1,9 @@
+-.Dd October 21 2015
++.Dd January 7 2016
+ .Dt NTP_CONF 5 File Formats
+ .Os
+ .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:24 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:30:57 PM by AutoGen 5.18.5
+ .\" From the definitions ntp.conf.def
+ .\" and the template file agmdoc-cmd.tpl
+ .Sh NAME
+--- contrib/ntp/ntpd/ntp.keys.5man.orig
++++ contrib/ntp/ntpd/ntp.keys.5man
+@@ -1,8 +1,8 @@
+-.TH ntp.keys 5man "21 Oct 2015" "4.2.8p4" "File Formats"
++.TH ntp.keys 5man "07 Jan 2016" "4.2.8p5" "File Formats"
+ .\"
+ .\" EDIT THIS FILE WITH CAUTION (ntp.man)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:08 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:30:41 PM by AutoGen 5.18.5
+ .\" From the definitions ntp.keys.def
+ .\" and the template file agman-file.tpl
+ .Sh NAME
+--- contrib/ntp/ntpd/ntp.keys.5mdoc.orig
++++ contrib/ntp/ntpd/ntp.keys.5mdoc
+@@ -1,9 +1,9 @@
+-.Dd October 21 2015
++.Dd January 7 2016
+ .Dt NTP_KEYS 5mdoc File Formats
+ .Os SunOS 5.10
+ .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:28 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:31:00 PM by AutoGen 5.18.5
+ .\" From the definitions ntp.keys.def
+ .\" and the template file agmdoc-file.tpl
+ .Sh NAME
+--- contrib/ntp/ntpd/ntp.keys.html.orig
++++ contrib/ntp/ntpd/ntp.keys.html
+@@ -33,7 +33,7 @@
+
+
Short Contents
+--- contrib/ntp/ntpd/ntp.keys.man.in.orig
++++ contrib/ntp/ntpd/ntp.keys.man.in
+@@ -1,8 +1,8 @@
+-.TH ntp.keys 5 "21 Oct 2015" "4.2.8p4" "File Formats"
++.TH ntp.keys 5 "07 Jan 2016" "4.2.8p5" "File Formats"
+ .\"
+ .\" EDIT THIS FILE WITH CAUTION (ntp.man)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:08 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:30:41 PM by AutoGen 5.18.5
+ .\" From the definitions ntp.keys.def
+ .\" and the template file agman-file.tpl
+ .Sh NAME
+--- contrib/ntp/ntpd/ntp.keys.mdoc.in.orig
++++ contrib/ntp/ntpd/ntp.keys.mdoc.in
+@@ -1,9 +1,9 @@
+-.Dd October 21 2015
++.Dd January 7 2016
+ .Dt NTP_KEYS 5 File Formats
+ .Os SunOS 5.10
+ .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:28 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:31:00 PM by AutoGen 5.18.5
+ .\" From the definitions ntp.keys.def
+ .\" and the template file agmdoc-file.tpl
+ .Sh NAME
+--- contrib/ntp/ntpd/ntp_control.c.orig
++++ contrib/ntp/ntpd/ntp_control.c
+@@ -846,7 +846,7 @@
+ u_char errcode
+ )
+ {
+- int maclen;
++ size_t maclen;
+
+ numctlerrors++;
+ DPRINTF(3, ("sending control error %u\n", errcode));
+@@ -1248,10 +1248,10 @@
+ )
+ {
+ size_t i;
+- int dlen;
+- int sendlen;
+- int maclen;
+- int totlen;
++ size_t dlen;
++ size_t sendlen;
++ size_t maclen;
++ size_t totlen;
+ keyid_t keyid;
+
+ dlen = datapt - rpkt.u.data;
+--- contrib/ntp/ntpd/ntp_crypto.c.orig
++++ contrib/ntp/ntpd/ntp_crypto.c
+@@ -473,9 +473,9 @@
+ }
+
+ /* Check if the declared size fits into the remaining
+- * buffer.
++ * buffer. We *know* 'macbytes' > 0 here!
+ */
+- if (len > macbytes) {
++ if (len > (u_int)macbytes) {
+ DPRINTF(1, ("crypto_recv: possible attack detected, associd %d\n",
+ associd));
+ return XEVNT_LEN;
+--- contrib/ntp/ntpd/ntp_io.c.orig
++++ contrib/ntp/ntpd/ntp_io.c
+@@ -41,6 +41,7 @@
+ #include "timevalops.h"
+ #include "timespecops.h"
+ #include "ntpd-opts.h"
++#include "safecast.h"
+
+ /* Don't include ISC's version of IPv6 variables and structures */
+ #define ISC_IPV6_H 1
+@@ -772,7 +773,7 @@
+ hints.ai_flags |= AI_NUMERICHOST;
+ if (getaddrinfo(tmpbuf, NULL, &hints, &result) == 0) {
+ AF(addr) = AF_INET6;
+- resaddr6 = (struct sockaddr_in6 *)result->ai_addr;
++ resaddr6 = UA_PTR(struct sockaddr_in6, result->ai_addr);
+ SET_ADDR6N(addr, resaddr6->sin6_addr);
+ SET_SCOPE(addr, resaddr6->sin6_scope_id);
+
+@@ -3365,7 +3366,7 @@
+ #endif /* HAVE_BINTIME */
+ #ifdef HAVE_TIMESTAMPNS
+ case SCM_TIMESTAMPNS:
+- tsp = (struct timespec *)CMSG_DATA(cmsghdr);
++ tsp = UA_PTR(struct timespec, CMSG_DATA(cmsghdr));
+ if (sys_tick > measured_tick &&
+ sys_tick > 1e-9) {
+ ticks = (unsigned long)((tsp->tv_nsec * 1e-9) /
+@@ -3666,8 +3667,7 @@
+ fds = activefds;
+ tvzero.tv_sec = tvzero.tv_usec = 0;
+
+- n = select(maxactivefd + 1, &fds, (fd_set *)0, (fd_set *)0,
+- &tvzero);
++ n = select(maxactivefd + 1, &fds, NULL, NULL, &tvzero);
+
+ /*
+ * If there are no packets waiting just return
+@@ -4447,7 +4447,7 @@
+ break;
+
+ case FD_TYPE_FILE:
+- closeserial(lsock->fd);
++ closeserial((int)lsock->fd);
+ break;
+
+ default:
+@@ -4643,7 +4643,7 @@
+ * process routing message
+ */
+ #ifdef HAVE_RTNETLINK
+- for (nh = (struct nlmsghdr *)buffer;
++ for (nh = UA_PTR(struct nlmsghdr, buffer);
+ NLMSG_OK(nh, cnt);
+ nh = NLMSG_NEXT(nh, cnt)) {
+ msg_type = nh->nlmsg_type;
+--- contrib/ntp/ntpd/ntp_loopfilter.c.orig
++++ contrib/ntp/ntpd/ntp_loopfilter.c
+@@ -154,7 +154,6 @@
+ int ext_enable; /* external clock enabled */
+ int pps_stratum; /* pps stratum */
+ int kernel_status; /* from ntp_adjtime */
+-int allow_panic = FALSE; /* allow panic correction (-g) */
+ int force_step_once = FALSE; /* always step time once at startup (-G) */
+ int mode_ntpdate = FALSE; /* exit on first clock set (-q) */
+ int freq_cnt; /* initial frequency clamp */
+@@ -459,16 +458,16 @@
+ double dtemp, etemp; /* double temps */
+ char tbuf[80]; /* report buffer */
+
++ (void)ntp_adj_ret; /* not always used below... */
+ /*
+ * If the loop is opened or the NIST LOCKCLOCK is in use,
+ * monitor and record the offsets anyway in order to determine
+ * the open-loop response and then go home.
+ */
+-#ifdef LOCKCLOCK
++#ifndef LOCKCLOCK
++ if (!ntp_enable)
++#endif /* not LOCKCLOCK */
+ {
+-#else
+- if (!ntp_enable) {
+-#endif /* LOCKCLOCK */
+ record_loop_stats(fp_offset, drift_comp, clock_jitter,
+ clock_stability, sys_poll);
+ return (0);
+@@ -493,6 +492,8 @@
+ return (-1);
+ }
+
++ allow_panic = FALSE;
++
+ /*
+ * This section simulates ntpdate. If the offset exceeds the
+ * step threshold (128 ms), step the clock to that time and
+@@ -538,12 +539,8 @@
+ else
+ dtemp = (peer->delay - sys_mindly) / 2;
+ fp_offset += dtemp;
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "local_clock: size %d mindly %.6f huffpuff %.6f\n",
+- sys_hufflen, sys_mindly, dtemp);
+-#endif
++ DPRINTF(1, ("local_clock: size %d mindly %.6f huffpuff %.6f\n",
++ sys_hufflen, sys_mindly, dtemp));
+ }
+
+ /*
+@@ -694,7 +691,6 @@
+ * startup until the initial transient has subsided.
+ */
+ default:
+- allow_panic = FALSE;
+ if (freq_cnt == 0) {
+
+ /*
+@@ -921,15 +917,11 @@
+ */
+ record_loop_stats(clock_offset, drift_comp, clock_jitter,
+ clock_stability, sys_poll);
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "local_clock: offset %.9f jit %.9f freq %.3f stab %.3f poll %d\n",
++ DPRINTF(1, ("local_clock: offset %.9f jit %.9f freq %.3f stab %.3f poll %d\n",
+ clock_offset, clock_jitter, drift_comp * 1e6,
+- clock_stability * 1e6, sys_poll);
+-#endif /* DEBUG */
++ clock_stability * 1e6, sys_poll));
+ return (rval);
+-#endif /* LOCKCLOCK */
++#endif /* not LOCKCLOCK */
+ }
+
+
+@@ -1005,7 +997,10 @@
+ * but does not automatically stop slewing when an offset
+ * has decayed to zero.
+ */
++ DEBUG_INSIST(enable_panic_check == TRUE);
++ enable_panic_check = FALSE;
+ adj_systime(offset_adj + freq_adj);
++ enable_panic_check = TRUE;
+ #endif /* LOCKCLOCK */
+ }
+
+@@ -1019,12 +1014,9 @@
+ double offset /* new offset */
+ )
+ {
+-#ifdef DEBUG
+- if (debug > 1)
+- printf("local_clock: mu %lu state %d poll %d count %d\n",
++ DPRINTF(2, ("rstclock: mu %lu state %d poll %d count %d\n",
+ current_time - clock_epoch, trans, sys_poll,
+- tc_counter);
+-#endif
++ tc_counter));
+ if (trans != state && trans != EVNT_FSET)
+ report_event(trans, NULL, NULL);
+ state = trans;
+@@ -1075,6 +1067,7 @@
+ const char * loop_desc;
+ int ntp_adj_ret;
+
++ (void)ntp_adj_ret; /* not always used below... */
+ drift_comp = freq;
+ loop_desc = "ntpd";
+ #ifdef KERNEL_PLL
+@@ -1236,10 +1229,7 @@
+ int i;
+ double ftemp;
+
+-#ifdef DEBUG
+- if (debug > 1)
+- printf("loop_config: item %d freq %f\n", item, freq);
+-#endif
++ DPRINTF(2, ("loop_config: item %d freq %f\n", item, freq));
+ switch (item) {
+
+ /*
+--- contrib/ntp/ntpd/ntp_parser.c.orig
++++ contrib/ntp/ntpd/ntp_parser.c
+@@ -889,21 +889,21 @@
+ 872, 873, 874, 875, 876, 877, 878, 879, 880, 881,
+ 882, 886, 891, 899, 904, 905, 906, 910, 915, 923,
+ 928, 929, 930, 931, 932, 933, 934, 935, 943, 953,
+- 958, 966, 968, 970, 972, 974, 979, 980, 984, 985,
+- 986, 987, 995, 1000, 1005, 1013, 1018, 1019, 1020, 1029,
+- 1031, 1036, 1041, 1049, 1051, 1068, 1069, 1070, 1071, 1072,
+- 1073, 1077, 1078, 1086, 1091, 1096, 1104, 1109, 1110, 1111,
+- 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1127, 1128, 1129,
+- 1136, 1143, 1150, 1166, 1185, 1187, 1189, 1191, 1193, 1195,
+- 1202, 1207, 1208, 1209, 1213, 1217, 1226, 1227, 1231, 1232,
+- 1233, 1237, 1248, 1262, 1274, 1279, 1281, 1286, 1287, 1295,
+- 1297, 1305, 1310, 1318, 1343, 1350, 1360, 1361, 1365, 1366,
+- 1367, 1368, 1372, 1373, 1374, 1378, 1383, 1388, 1396, 1397,
+- 1398, 1399, 1400, 1401, 1402, 1412, 1417, 1425, 1430, 1438,
+- 1440, 1444, 1449, 1454, 1462, 1467, 1475, 1484, 1485, 1489,
+- 1490, 1499, 1517, 1521, 1526, 1534, 1539, 1540, 1544, 1549,
+- 1557, 1562, 1567, 1572, 1577, 1585, 1590, 1595, 1603, 1608,
+- 1609, 1610, 1611, 1612
++ 958, 966, 968, 970, 979, 981, 986, 987, 991, 992,
++ 993, 994, 1002, 1007, 1012, 1020, 1025, 1026, 1027, 1036,
++ 1038, 1043, 1048, 1056, 1058, 1075, 1076, 1077, 1078, 1079,
++ 1080, 1084, 1085, 1093, 1098, 1103, 1111, 1116, 1117, 1118,
++ 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1134, 1135, 1136,
++ 1143, 1150, 1157, 1173, 1192, 1194, 1196, 1198, 1200, 1202,
++ 1209, 1214, 1215, 1216, 1220, 1224, 1233, 1234, 1238, 1239,
++ 1240, 1244, 1255, 1269, 1281, 1286, 1288, 1293, 1294, 1302,
++ 1304, 1312, 1317, 1325, 1350, 1357, 1367, 1368, 1372, 1373,
++ 1374, 1375, 1379, 1380, 1381, 1385, 1390, 1395, 1403, 1404,
++ 1405, 1406, 1407, 1408, 1409, 1419, 1424, 1432, 1437, 1445,
++ 1447, 1451, 1456, 1461, 1469, 1474, 1482, 1491, 1492, 1496,
++ 1497, 1506, 1524, 1528, 1533, 1541, 1546, 1547, 1551, 1556,
++ 1564, 1569, 1574, 1579, 1584, 1592, 1597, 1602, 1610, 1615,
++ 1616, 1617, 1618, 1619
+ };
+ #endif
+
+@@ -2684,90 +2684,97 @@
+
+ case 173:
+ #line 971 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2689 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ {
++ if ((yyvsp[0].Integer) >= 0 && (yyvsp[0].Integer) <= 16) {
++ (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
++ } else {
++ (yyval.Attr_val) = NULL;
++ yyerror("fudge factor: stratum value not in [0..16], ignored");
++ }
++ }
++#line 2696 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 174:
+-#line 973 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 980 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
+-#line 2695 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2702 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 175:
+-#line 975 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 982 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
+-#line 2701 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2708 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 182:
+-#line 996 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1003 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
+-#line 2707 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2714 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 183:
+-#line 1001 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1008 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 2716 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2723 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 184:
+-#line 1006 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1013 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 2725 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2732 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 185:
+-#line 1014 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1021 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2731 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2738 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 189:
+-#line 1030 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1037 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
+-#line 2737 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2744 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 190:
+-#line 1032 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1039 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
+-#line 2743 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2750 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 191:
+-#line 1037 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1044 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 2752 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2759 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 192:
+-#line 1042 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1049 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 2761 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2768 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 193:
+-#line 1050 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1057 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
+-#line 2767 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2774 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 194:
+-#line 1052 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1059 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ if (lex_from_file()) {
+ (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
+@@ -2781,41 +2788,41 @@
+ yyerror(err_str);
+ }
+ }
+-#line 2785 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2792 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 203:
+-#line 1087 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1094 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
+-#line 2791 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2798 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 204:
+-#line 1092 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1099 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 2800 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2807 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 205:
+-#line 1097 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1104 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 2809 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2816 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 206:
+-#line 1105 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1112 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
+-#line 2815 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2822 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 219:
+-#line 1130 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1137 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ attr_val *av;
+
+@@ -2822,11 +2829,11 @@
+ av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
+ APPEND_G_FIFO(cfgt.vars, av);
+ }
+-#line 2826 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2833 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 220:
+-#line 1137 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1144 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ attr_val *av;
+
+@@ -2833,11 +2840,11 @@
+ av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
+ APPEND_G_FIFO(cfgt.vars, av);
+ }
+-#line 2837 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2844 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 221:
+-#line 1144 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1151 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ attr_val *av;
+
+@@ -2844,11 +2851,11 @@
+ av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
+ APPEND_G_FIFO(cfgt.vars, av);
+ }
+-#line 2848 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2855 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 222:
+-#line 1151 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1158 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ char error_text[64];
+ attr_val *av;
+@@ -2864,11 +2871,11 @@
+ yyerror(error_text);
+ }
+ }
+-#line 2868 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2875 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 223:
+-#line 1167 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1174 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ if (!lex_from_file()) {
+ YYFREE((yyvsp[-1].String)); /* avoid leak */
+@@ -2887,41 +2894,41 @@
+ }
+ YYFREE((yyvsp[-1].String)); /* avoid leak */
+ }
+-#line 2891 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2898 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 224:
+-#line 1186 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1193 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { lex_flush_stack(); }
+-#line 2897 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2904 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 225:
+-#line 1188 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1195 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { /* see drift_parm below for actions */ }
+-#line 2903 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2910 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 226:
+-#line 1190 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1197 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
+-#line 2909 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2916 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 227:
+-#line 1192 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1199 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
+-#line 2915 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2922 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 228:
+-#line 1194 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1201 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
+-#line 2921 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2928 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 229:
+-#line 1196 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1203 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ addr_opts_node *aon;
+
+@@ -2928,27 +2935,27 @@
+ aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
+ APPEND_G_FIFO(cfgt.trap, aon);
+ }
+-#line 2932 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2939 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 230:
+-#line 1203 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1210 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
+-#line 2938 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2945 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 235:
+-#line 1218 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1225 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ #ifndef LEAP_SMEAR
+ yyerror("Built without LEAP_SMEAR support.");
+ #endif
+ }
+-#line 2948 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2955 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 241:
+-#line 1238 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1245 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ if (lex_from_file()) {
+ attr_val *av;
+@@ -2959,11 +2966,11 @@
+ yyerror("driftfile remote configuration ignored");
+ }
+ }
+-#line 2963 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2970 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 242:
+-#line 1249 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1256 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ if (lex_from_file()) {
+ attr_val *av;
+@@ -2976,11 +2983,11 @@
+ yyerror("driftfile remote configuration ignored");
+ }
+ }
+-#line 2980 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 2987 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 243:
+-#line 1262 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1269 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ if (lex_from_file()) {
+ attr_val *av;
+@@ -2990,71 +2997,71 @@
+ yyerror("driftfile remote configuration ignored");
+ }
+ }
+-#line 2994 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3001 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 244:
+-#line 1275 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1282 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
+-#line 3000 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3007 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 246:
+-#line 1281 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1288 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Integer) = 0; }
+-#line 3006 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3013 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 247:
+-#line 1286 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1293 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val_fifo) = NULL; }
+-#line 3012 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3019 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 248:
+-#line 1288 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1295 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 3021 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3028 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 249:
+-#line 1296 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1303 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 3027 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3034 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 250:
+-#line 1298 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1305 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
+ destroy_address_node((yyvsp[0].Address_node));
+ }
+-#line 3036 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3043 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 251:
+-#line 1306 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 3045 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3052 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 252:
+-#line 1311 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1318 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 3054 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3061 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 253:
+-#line 1319 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1326 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ char prefix;
+ char * type;
+@@ -3076,11 +3083,11 @@
+ (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
+ YYFREE((yyvsp[0].String));
+ }
+-#line 3080 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3087 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 254:
+-#line 1344 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1351 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ nic_rule_node *nrn;
+
+@@ -3087,11 +3094,11 @@
+ nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
+ APPEND_G_FIFO(cfgt.nic_rules, nrn);
+ }
+-#line 3091 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3098 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 255:
+-#line 1351 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1358 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ nic_rule_node *nrn;
+
+@@ -3098,119 +3105,119 @@
+ nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
+ APPEND_G_FIFO(cfgt.nic_rules, nrn);
+ }
+-#line 3102 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3109 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 265:
+-#line 1379 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1386 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
+-#line 3108 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3115 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 266:
+-#line 1384 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1391 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
+ APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
+ }
+-#line 3117 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3124 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 267:
+-#line 1389 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1396 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Int_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
+ }
+-#line 3126 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3133 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 275:
+-#line 1413 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1420 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
+ }
+-#line 3135 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3142 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 276:
+-#line 1418 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1425 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
+ }
+-#line 3144 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3151 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 277:
+-#line 1426 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1433 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 3153 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3160 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 278:
+-#line 1431 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1438 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
+ }
+-#line 3162 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3169 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 279:
+-#line 1439 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1446 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
+-#line 3168 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3175 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 281:
+-#line 1445 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1452 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
+-#line 3174 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3181 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 282:
+-#line 1450 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1457 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.String_fifo) = (yyvsp[-1].String_fifo);
+ APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
+ }
+-#line 3183 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3190 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 283:
+-#line 1455 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1462 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.String_fifo) = NULL;
+ APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
+ }
+-#line 3192 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3199 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 284:
+-#line 1463 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1470 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
+ APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
+ }
+-#line 3201 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3208 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 285:
+-#line 1468 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1475 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Address_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
+ }
+-#line 3210 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3217 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 286:
+-#line 1476 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1483 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
+ yyerror("Integer value is not boolean (0 or 1). Assuming 1");
+@@ -3219,29 +3226,29 @@
+ (yyval.Integer) = (yyvsp[0].Integer);
+ }
+ }
+-#line 3223 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3230 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 287:
+-#line 1484 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1491 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Integer) = 1; }
+-#line 3229 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3236 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 288:
+-#line 1485 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1492 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Integer) = 0; }
+-#line 3235 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3242 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 289:
+-#line 1489 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1496 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Double) = (double)(yyvsp[0].Integer); }
+-#line 3241 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3248 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 291:
+-#line 1500 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1507 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ sim_node *sn;
+
+@@ -3251,125 +3258,125 @@
+ /* Revert from ; to \n for end-of-command */
+ old_config_style = 1;
+ }
+-#line 3255 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3262 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 292:
+-#line 1517 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1524 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { old_config_style = 0; }
+-#line 3261 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3268 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 293:
+-#line 1522 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1529 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
+ }
+-#line 3270 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3277 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 294:
+-#line 1527 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1534 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
+ }
+-#line 3279 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3286 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 295:
+-#line 1535 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1542 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
+-#line 3285 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3292 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 298:
+-#line 1545 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1552 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
+ APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
+ }
+-#line 3294 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3301 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 299:
+-#line 1550 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1557 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Sim_server_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
+ }
+-#line 3303 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3310 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 300:
+-#line 1558 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1565 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
+-#line 3309 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3316 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 301:
+-#line 1563 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1570 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Double) = (yyvsp[-1].Double); }
+-#line 3315 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3322 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 302:
+-#line 1568 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1575 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Address_node) = (yyvsp[0].Address_node); }
+-#line 3321 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3328 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 303:
+-#line 1573 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1580 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
+ APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
+ }
+-#line 3330 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3337 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 304:
+-#line 1578 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1585 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Sim_script_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
+ }
+-#line 3339 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3346 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 305:
+-#line 1586 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1593 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
+-#line 3345 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3352 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 306:
+-#line 1591 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1598 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
+ }
+-#line 3354 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3361 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 307:
+-#line 1596 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1603 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ {
+ (yyval.Attr_val_fifo) = NULL;
+ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
+ }
+-#line 3363 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3370 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 308:
+-#line 1604 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++#line 1611 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+ { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
+-#line 3369 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3376 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+
+-#line 3373 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++#line 3380 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+@@ -3597,7 +3604,7 @@
+ #endif
+ return yyresult;
+ }
+-#line 1615 "../../ntpd/ntp_parser.y" /* yacc.c:1906 */
++#line 1622 "../../ntpd/ntp_parser.y" /* yacc.c:1906 */
+
+
+ void
+--- contrib/ntp/ntpd/ntp_proto.c.orig
++++ contrib/ntp/ntpd/ntp_proto.c
+@@ -15,6 +15,7 @@
+ #include "ntp_string.h"
+ #include "ntp_leapsec.h"
+ #include "refidsmear.h"
++#include "lib_strbuf.h"
+
+ #include
+ #ifdef HAVE_LIBSCF_H
+@@ -172,8 +173,14 @@
+ const struct addrinfo *);
+ #endif /* WORKER */
+
++const char * amtoa (int am);
++
++
+ void
+-set_sys_leap(u_char new_sys_leap) {
++set_sys_leap(
++ u_char new_sys_leap
++ )
++{
+ sys_leap = new_sys_leap;
+ xmt_leap = sys_leap;
+
+@@ -189,8 +196,9 @@
+ #ifdef LEAP_SMEAR
+ else {
+ /*
+- * If leap smear is enabled in general we must never send a leap second warning
+- * to clients, so make sure we only send "in sync".
++ * If leap smear is enabled in general we must
++ * never send a leap second warning to clients,
++ * so make sure we only send "in sync".
+ */
+ if (leap_smear.enabled)
+ xmt_leap = LEAP_NOWARNING;
+@@ -199,34 +207,39 @@
+ }
+ }
+
++
+ /*
+ * Kiss Code check
+ */
+-int kiss_code_check(u_char hisleap, u_char hisstratum, u_char hismode, u_int32 refid) {
++int
++kiss_code_check(
++ u_char hisleap,
++ u_char hisstratum,
++ u_char hismode,
++ u_int32 refid
++ )
++{
+
+- if ( hismode == MODE_SERVER
+- && hisleap == LEAP_NOTINSYNC
+- && hisstratum == STRATUM_UNSPEC) {
+- if(memcmp(&refid,"RATE", 4) == 0) {
+- return (RATEKISS);
+- }
+- else if(memcmp(&refid,"DENY", 4) == 0) {
+- return (DENYKISS);
+- }
+- else if(memcmp(&refid,"RSTR", 4) == 0) {
+- return (RSTRKISS);
+- }
+- else if(memcmp(&refid,"X", 1) == 0) {
+- return (XKISS);
+- }
+- else {
+- return (UNKNOWNKISS);
+- }
++ if ( hismode == MODE_SERVER
++ && hisleap == LEAP_NOTINSYNC
++ && hisstratum == STRATUM_UNSPEC) {
++ if(memcmp(&refid,"RATE", 4) == 0) {
++ return (RATEKISS);
++ } else if(memcmp(&refid,"DENY", 4) == 0) {
++ return (DENYKISS);
++ } else if(memcmp(&refid,"RSTR", 4) == 0) {
++ return (RSTRKISS);
++ } else if(memcmp(&refid,"X", 1) == 0) {
++ return (XKISS);
++ } else {
++ return (UNKNOWNKISS);
+ }
+- else {
+- return (NOKISS);
+- }
++ } else {
++ return (NOKISS);
++ }
+ }
++
++
+ /*
+ * transmit - transmit procedure called by poll timeout
+ */
+@@ -303,7 +316,7 @@
+ peer->outdate = current_time;
+ if ( (peer_associations <= 2 * sys_maxclock)
+ && ( peer_associations < sys_maxclock
+- || sys_survivors < sys_minclock))
++ || sys_survivors < sys_minclock))
+ pool_xmit(peer);
+ poll_update(peer, hpoll);
+ return;
+@@ -416,9 +429,36 @@
+ if (peer->hmode != MODE_BCLIENT)
+ peer_xmit(peer);
+ poll_update(peer, hpoll);
++
++ return;
+ }
+
+
++const char *
++amtoa(
++ int am
++ )
++{
++ char *bp;
++
++ switch(am) {
++ case AM_ERR: return "AM_ERR";
++ case AM_NOMATCH: return "AM_NOMATCH";
++ case AM_PROCPKT: return "AM_PROCPKT";
++ case AM_BCST: return "AM_BCST";
++ case AM_FXMIT: return "AM_FXMIT";
++ case AM_MANYCAST: return "AM_MANYCAST";
++ case AM_NEWPASS: return "AM_NEWPASS";
++ case AM_NEWBCL: return "AM_NEWBCL";
++ case AM_POSSBCL: return "AM_POSSBCL";
++ default:
++ LIB_GETBUF(bp);
++ snprintf(bp, LIB_BUFLENGTH, "AM_#%d", am);
++ return bp;
++ }
++}
++
++
+ /*
+ * receive - receive procedure called for each packet received
+ */
+@@ -434,7 +474,9 @@
+ u_char hismode; /* packet mode */
+ u_char hisstratum; /* packet stratum */
+ u_short restrict_mask; /* restrict bits */
+- int kissCode = NOKISS; /* Kiss Code */
++ const char *hm_str; /* hismode string */
++ const char *am_str; /* association match string */
++ int kissCode = NOKISS; /* Kiss Code */
+ int has_mac; /* length of MAC field */
+ int authlen; /* offset of MAC field */
+ int is_authentic = 0; /* cryptosum ok */
+@@ -441,9 +483,9 @@
+ int retcode = AM_NOMATCH; /* match code */
+ keyid_t skeyid = 0; /* key IDs */
+ u_int32 opcode = 0; /* extension field opcode */
+- sockaddr_u *dstadr_sin; /* active runway */
++ sockaddr_u *dstadr_sin; /* active runway */
+ struct peer *peer2; /* aux peer structure pointer */
+- endpt * match_ep; /* newpeer() local address */
++ endpt *match_ep; /* newpeer() local address */
+ l_fp p_org; /* origin timestamp */
+ l_fp p_rec; /* receive timestamp */
+ l_fp p_xmt; /* transmit timestamp */
+@@ -474,11 +516,12 @@
+ return; /* bogus port */
+ }
+ restrict_mask = restrictions(&rbufp->recv_srcadr);
+- DPRINTF(2, ("receive: at %ld %s<-%s flags %x restrict %03x\n",
++ pkt = &rbufp->recv_pkt;
++ DPRINTF(2, ("receive: at %ld %s<-%s flags %x restrict %03x org %#010x.%08x xmt %#010x.%08x\n",
+ current_time, stoa(&rbufp->dstadr->sin),
+- stoa(&rbufp->recv_srcadr),
+- rbufp->dstadr->flags, restrict_mask));
+- pkt = &rbufp->recv_pkt;
++ stoa(&rbufp->recv_srcadr), rbufp->dstadr->flags,
++ restrict_mask, ntohl(pkt->org.l_ui), ntohl(pkt->org.l_uf),
++ ntohl(pkt->xmt.l_ui), ntohl(pkt->xmt.l_uf)));
+ hisversion = PKT_VERSION(pkt->li_vn_mode);
+ hisleap = PKT_LEAP(pkt->li_vn_mode);
+ hismode = (int)PKT_MODE(pkt->li_vn_mode);
+@@ -685,6 +728,8 @@
+ NTOHL_FP(&pkt->org, &p_org);
+ NTOHL_FP(&pkt->rec, &p_rec);
+ NTOHL_FP(&pkt->xmt, &p_xmt);
++ hm_str = modetoa(hismode);
++ am_str = amtoa(retcode);
+
+ /*
+ * Authentication is conditioned by three switches:
+@@ -713,25 +758,21 @@
+ if (has_mac == 0) {
+ restrict_mask &= ~RES_MSSNTP;
+ is_authentic = AUTH_NONE; /* not required */
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "receive: at %ld %s<-%s mode %d len %d\n",
++ DPRINTF(2, ("receive: at %ld %s<-%s mode %d/%s:%s len %d org %#010x.%08x xmt %#010x.%08x NOMAC\n",
+ current_time, stoa(dstadr_sin),
+- stoa(&rbufp->recv_srcadr), hismode,
+- authlen);
+-#endif
++ stoa(&rbufp->recv_srcadr), hismode, hm_str, am_str,
++ authlen,
++ ntohl(pkt->org.l_ui), ntohl(pkt->org.l_uf),
++ ntohl(pkt->xmt.l_ui), ntohl(pkt->xmt.l_uf)));
+ } else if (has_mac == 4) {
+ restrict_mask &= ~RES_MSSNTP;
+ is_authentic = AUTH_CRYPTO; /* crypto-NAK */
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "receive: at %ld %s<-%s mode %d keyid %08x len %d auth %d\n",
++ DPRINTF(2, ("receive: at %ld %s<-%s mode %d/%s:%s keyid %08x len %d auth %d org %#010x.%08x xmt %#010x.%08x MAC4\n",
+ current_time, stoa(dstadr_sin),
+- stoa(&rbufp->recv_srcadr), hismode, skeyid,
+- authlen + has_mac, is_authentic);
+-#endif
++ stoa(&rbufp->recv_srcadr), hismode, hm_str, am_str,
++ skeyid, authlen + has_mac, is_authentic,
++ ntohl(pkt->org.l_ui), ntohl(pkt->org.l_uf),
++ ntohl(pkt->xmt.l_ui), ntohl(pkt->xmt.l_uf)));
+
+ #ifdef HAVE_NTP_SIGND
+ /*
+@@ -747,7 +788,7 @@
+ && (restrict_mask & RES_MSSNTP)
+ && (retcode == AM_FXMIT || retcode == AM_NEWPASS)
+ && (memcmp(zero_key, (char *)pkt + authlen + 4,
+- MAX_MD5_LEN - 4) == 0)) {
++ MAX_MD5_LEN - 4) == 0)) {
+ is_authentic = AUTH_NONE;
+ #endif /* HAVE_NTP_SIGND */
+
+@@ -856,14 +897,12 @@
+ if (crypto_flags && skeyid > NTP_MAXKEY)
+ authtrust(skeyid, 0);
+ #endif /* AUTOKEY */
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "receive: at %ld %s<-%s mode %d keyid %08x len %d auth %d\n",
++ DPRINTF(2, ("receive: at %ld %s<-%s mode %d/%s:%s keyid %08x len %d auth %d org %#010x.%08x xmt %#010x.%08x\n",
+ current_time, stoa(dstadr_sin),
+- stoa(&rbufp->recv_srcadr), hismode, skeyid,
+- authlen + has_mac, is_authentic);
+-#endif
++ stoa(&rbufp->recv_srcadr), hismode, hm_str, am_str,
++ skeyid, authlen + has_mac, is_authentic,
++ ntohl(pkt->org.l_ui), ntohl(pkt->org.l_uf),
++ ntohl(pkt->xmt.l_ui), ntohl(pkt->xmt.l_uf)));
+ }
+
+ /*
+@@ -1194,11 +1233,11 @@
+ * debug-printed and not logged to avoid log
+ * flooding.
+ */
+- DPRINTF(1, ("receive: at %ld refusing to mobilize passive association"
+- " with unknown peer %s mode %d keyid %08x len %d auth %d\n",
++ DPRINTF(2, ("receive: at %ld refusing to mobilize passive association"
++ " with unknown peer %s mode %d/%s:%s keyid %08x len %d auth %d\n",
+ current_time, stoa(&rbufp->recv_srcadr),
+- hismode, skeyid, (authlen + has_mac),
+- is_authentic));
++ hismode, hm_str, am_str, skeyid,
++ (authlen + has_mac), is_authentic));
+ sys_declined++;
+ return;
+ }
+@@ -1321,26 +1360,36 @@
+ }
+
+ /*
+- * Check for bogus packet in basic mode. If found, switch to
+- * interleaved mode and resynchronize, but only after confirming
+- * the packet is not bogus in symmetric interleaved mode.
++ * Basic mode checks:
+ *
++ * If there is no origin timestamp, it's an initial packet.
++ *
++ * Otherwise, check for bogus packet in basic mode.
++ * If it is bogus, switch to interleaved mode and resynchronize,
++ * but only after confirming the packet is not bogus in
++ * symmetric interleaved mode.
++ *
+ * This could also mean somebody is forging packets claiming to
+ * be from us, attempting to cause our server to KoD us.
+ */
+ } else if (peer->flip == 0) {
+- if (!L_ISEQU(&p_org, &peer->aorg)) {
++ if (0 < hisstratum && L_ISZERO(&p_org)) {
++ L_CLR(&peer->aorg);
++ } else if (!L_ISEQU(&p_org, &peer->aorg)) {
+ peer->bogusorg++;
+ peer->flash |= TEST2; /* bogus */
+ msyslog(LOG_INFO,
+- "receive: Unexpected origin timestamp from %s",
+- ntoa(&peer->srcadr));
++ "receive: Unexpected origin timestamp %#010x.%08x from %s xmt %#010x.%08x",
++ ntohl(pkt->org.l_ui), ntohl(pkt->org.l_uf),
++ ntoa(&peer->srcadr),
++ ntohl(pkt->xmt.l_ui), ntohl(pkt->xmt.l_uf));
+ if ( !L_ISZERO(&peer->dst)
+ && L_ISEQU(&p_org, &peer->dst)) {
++ /* Might be the start of an interleave */
+ peer->flip = 1;
+ report_event(PEVNT_XLEAVE, peer, NULL);
+ }
+- return; /* Bogus packet, we are done */
++ return; /* Bogus or possible interleave packet */
+ } else {
+ L_CLR(&peer->aorg);
+ }
+@@ -1694,11 +1743,8 @@
+ */
+ if (peer->flash & PKT_TEST_MASK) {
+ peer->seldisptoolarge++;
+-#ifdef DEBUG
+- if (debug)
+- printf("packet: flash header %04x\n",
+- peer->flash);
+-#endif
++ DPRINTF(1, ("packet: flash header %04x\n",
++ peer->flash));
+ return;
+ }
+
+@@ -1871,15 +1917,12 @@
+ * the roundtrip delay. Then it calculates the correction as a
+ * fraction of d.
+ */
+- peer->t21 = t21;
++ peer->t21 = t21;
+ peer->t21_last = peer->t21_bytes;
+ peer->t34 = -t34;
+ peer->t34_bytes = len;
+-#ifdef DEBUG
+- if (debug > 1)
+- printf("packet: t21 %.9lf %d t34 %.9lf %d\n", peer->t21,
+- peer->t21_bytes, peer->t34, peer->t34_bytes);
+-#endif
++ DPRINTF(2, ("packet: t21 %.9lf %d t34 %.9lf %d\n", peer->t21,
++ peer->t21_bytes, peer->t34, peer->t34_bytes));
+ if (peer->r21 > 0 && peer->r34 > 0 && p_del > 0) {
+ if (peer->pmode != MODE_BROADCAST)
+ td = (peer->r34 / (peer->r21 + peer->r34) -
+@@ -1888,7 +1931,7 @@
+ td = 0;
+
+ /*
+- * Unfortunately, in many cases the errors are
++ * Unfortunately, in many cases the errors are
+ * unacceptable, so for the present the rates are not
+ * used. In future, we might find conditions where the
+ * calculations are useful, so this should be considered
+@@ -1896,12 +1939,9 @@
+ */
+ t21 -= td;
+ t34 -= td;
+-#ifdef DEBUG
+- if (debug > 1)
+- printf("packet: del %.6lf r21 %.1lf r34 %.1lf %.6lf\n",
++ DPRINTF(2, ("packet: del %.6lf r21 %.1lf r34 %.1lf %.6lf\n",
+ p_del, peer->r21 / 1e3, peer->r34 / 1e3,
+- td);
+-#endif
++ td));
+ }
+ #endif /* ASSYM */
+
+@@ -1994,12 +2034,8 @@
+ sys_rootdelay = peer->delay + peer->rootdelay;
+ sys_reftime = peer->dst;
+
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "clock_update: at %lu sample %lu associd %d\n",
+- current_time, peer->epoch, peer->associd);
+-#endif
++ DPRINTF(1, ("clock_update: at %lu sample %lu associd %d\n",
++ current_time, peer->epoch, peer->associd));
+
+ /*
+ * Comes now the moment of truth. Crank the clock discipline and
+@@ -2308,13 +2344,9 @@
+ #ifdef AUTOKEY
+ peer->refresh = current_time + (1 << NTP_REFRESH);
+ #endif /* AUTOKEY */
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "peer_clear: at %ld next %ld associd %d refid %s\n",
++ DPRINTF(1, ("peer_clear: at %ld next %ld associd %d refid %s\n",
+ current_time, peer->nextdate, peer->associd,
+- ident);
+-#endif
++ ident));
+ }
+
+
+@@ -2478,11 +2510,8 @@
+ * packets.
+ */
+ if (peer->filter_epoch[k] <= peer->epoch) {
+-#if DEBUG
+- if (debug > 1)
+- printf("clock_filter: old sample %lu\n", current_time -
+- peer->filter_epoch[k]);
+-#endif
++ DPRINTF(2, ("clock_filter: old sample %lu\n", current_time -
++ peer->filter_epoch[k]));
+ return;
+ }
+ peer->epoch = peer->filter_epoch[k];
+@@ -2494,13 +2523,9 @@
+ */
+ record_peer_stats(&peer->srcadr, ctlpeerstatus(peer),
+ peer->offset, peer->delay, peer->disp, peer->jitter);
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "clock_filter: n %d off %.6f del %.6f dsp %.6f jit %.6f\n",
++ DPRINTF(1, ("clock_filter: n %d off %.6f del %.6f dsp %.6f jit %.6f\n",
+ m, peer->offset, peer->delay, peer->disp,
+- peer->jitter);
+-#endif
++ peer->jitter));
+ if (peer->burst == 0 || sys_leap == LEAP_NOTINSYNC)
+ clock_select();
+ }
+@@ -3004,7 +3029,7 @@
+ typesystem = typepps;
+ sys_clockhop = 0;
+ typesystem->new_status = CTL_PST_SEL_PPS;
+- sys_offset = typesystem->offset;
++ sys_offset = typesystem->offset;
+ sys_jitter = typesystem->jitter;
+ DPRINTF(1, ("select: pps offset %.9f jitter %.9f\n",
+ sys_offset, sys_jitter));
+@@ -3157,11 +3182,11 @@
+ * might not be usable.
+ */
+ sendlen = LEN_PKT_NOMAC;
++ if (
+ #ifdef AUTOKEY
+- if (!(peer->flags & FLAG_SKEY) && peer->keyid == 0) {
+-#else /* !AUTOKEY follows */
+- if (peer->keyid == 0) {
++ !(peer->flags & FLAG_SKEY) &&
+ #endif /* !AUTOKEY */
++ peer->keyid == 0) {
+
+ /*
+ * Transmit a-priori timestamps
+@@ -3207,13 +3232,11 @@
+ }
+ L_SUB(&xmt_ty, &xmt_tx);
+ LFPTOD(&xmt_ty, peer->xleave);
+-#ifdef DEBUG
+- if (debug)
+- printf("transmit: at %ld %s->%s mode %d len %zu\n",
+- current_time, peer->dstadr ?
+- stoa(&peer->dstadr->sin) : "-",
+- stoa(&peer->srcadr), peer->hmode, sendlen);
+-#endif
++ DPRINTF(1, ("peer_xmit: at %ld %s->%s mode %d len %zu xmt %#010x.%08x\n",
++ current_time,
++ peer->dstadr ? stoa(&peer->dstadr->sin) : "-",
++ stoa(&peer->srcadr), peer->hmode, sendlen,
++ xmt_tx.l_ui, xmt_tx.l_uf));
+ return;
+ }
+
+@@ -3498,7 +3521,7 @@
+ authtrust(xkeyid, 0);
+ #endif /* AUTOKEY */
+ if (sendlen > sizeof(xpkt)) {
+- msyslog(LOG_ERR, "proto: buffer overflow %zu", sendlen);
++ msyslog(LOG_ERR, "peer_xmit: buffer overflow %zu", sendlen);
+ exit (-1);
+ }
+ peer->t21_bytes = sendlen;
+@@ -3521,22 +3544,18 @@
+ L_SUB(&xmt_ty, &xmt_tx);
+ LFPTOD(&xmt_ty, peer->xleave);
+ #ifdef AUTOKEY
+-#ifdef DEBUG
+- if (debug)
+- printf("transmit: at %ld %s->%s mode %d keyid %08x len %zu index %d\n",
++ DPRINTF(1, ("peer_xmit: at %ld %s->%s mode %d keyid %08x len %zu index %d\n",
+ current_time, latoa(peer->dstadr),
+ ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen,
+- peer->keynumber);
+-#endif
++ peer->keynumber));
+ #else /* !AUTOKEY follows */
+-#ifdef DEBUG
+- if (debug)
+- printf("transmit: at %ld %s->%s mode %d keyid %08x len %d\n",
++ DPRINTF(1, ("peer_xmit: at %ld %s->%s mode %d keyid %08x len %d\n",
+ current_time, peer->dstadr ?
+ ntoa(&peer->dstadr->sin) : "-",
+- ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen);
+-#endif
++ ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen));
+ #endif /* !AUTOKEY */
++
++ return;
+ }
+
+
+@@ -3543,8 +3562,15 @@
+ #ifdef LEAP_SMEAR
+
+ static void
+-leap_smear_add_offs(l_fp *t, l_fp *t_recv) {
++leap_smear_add_offs(
++ l_fp *t,
++ l_fp *t_recv
++ )
++{
++
+ L_ADD(t, &leap_smear.offset);
++
++ return;
+ }
+
+ #endif /* LEAP_SMEAR */
+@@ -3565,7 +3591,7 @@
+ struct pkt xpkt; /* transmit packet structure */
+ struct pkt *rpkt; /* receive packet structure */
+ l_fp xmt_tx, xmt_ty;
+- int sendlen;
++ size_t sendlen;
+ #ifdef AUTOKEY
+ u_int32 temp32;
+ #endif
+@@ -3684,13 +3710,10 @@
+ if (rbufp->recv_length == sendlen) {
+ sendpkt(&rbufp->recv_srcadr, rbufp->dstadr, 0, &xpkt,
+ sendlen);
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "transmit: at %ld %s->%s mode %d len %d\n",
++ DPRINTF(1, ("fast_xmit: at %ld %s->%s mode %d len %lu\n",
+ current_time, stoa(&rbufp->dstadr->sin),
+- stoa(&rbufp->recv_srcadr), xmode, sendlen);
+-#endif
++ stoa(&rbufp->recv_srcadr), xmode,
++ (u_long)sendlen));
+ return;
+ }
+
+@@ -3717,7 +3740,7 @@
+ */
+ cookie = session_key(&rbufp->recv_srcadr,
+ &rbufp->dstadr->sin, 0, sys_private, 0);
+- if (rbufp->recv_length > sendlen + (int)MAX_MAC_LEN) {
++ if ((size_t)rbufp->recv_length > sendlen + MAX_MAC_LEN) {
+ session_key(&rbufp->dstadr->sin,
+ &rbufp->recv_srcadr, xkeyid, 0, 2);
+ temp32 = CRYPTO_RESP;
+@@ -3741,13 +3764,10 @@
+ get_systime(&xmt_ty);
+ L_SUB(&xmt_ty, &xmt_tx);
+ sys_authdelay = xmt_ty;
+-#ifdef DEBUG
+- if (debug)
+- printf(
+- "transmit: at %ld %s->%s mode %d keyid %08x len %d\n",
++ DPRINTF(1, ("fast_xmit: at %ld %s->%s mode %d keyid %08x len %lu\n",
+ current_time, ntoa(&rbufp->dstadr->sin),
+- ntoa(&rbufp->recv_srcadr), xmode, xkeyid, sendlen);
+-#endif
++ ntoa(&rbufp->recv_srcadr), xmode, xkeyid,
++ (u_long)sendlen));
+ }
+
+
+@@ -3827,11 +3847,8 @@
+ LEN_PKT_NOMAC);
+ pool->sent++;
+ pool->throttle += (1 << pool->minpoll) - 2;
+-#ifdef DEBUG
+- if (debug)
+- printf("transmit: at %ld %s->%s pool\n",
+- current_time, latoa(lcladr), stoa(rmtadr));
+-#endif
++ DPRINTF(1, ("pool_xmit: at %ld %s->%s pool\n",
++ current_time, latoa(lcladr), stoa(rmtadr)));
+ msyslog(LOG_INFO, "Soliciting pool server %s", stoa(rmtadr));
+ #endif /* WORKER */
+ }
+@@ -3849,7 +3866,8 @@
+ * group different 1 ignore
+ * * ignore if notrust
+ */
+-int group_test(
++int
++group_test(
+ char *grp,
+ char *ident
+ )
+@@ -3929,11 +3947,8 @@
+ value_free(&peer->sndval);
+ peer->keynumber = 0;
+ peer->flags &= ~FLAG_ASSOC;
+-#ifdef DEBUG
+- if (debug)
+- printf("key_expire: at %lu associd %d\n", current_time,
+- peer->associd);
+-#endif
++ DPRINTF(1, ("key_expire: at %lu associd %d\n", current_time,
++ peer->associd));
+ }
+ #endif /* AUTOKEY */
+
+--- contrib/ntp/ntpd/ntp_refclock.c.orig
++++ contrib/ntp/ntpd/ntp_refclock.c
+@@ -732,9 +732,9 @@
+ */
+ int
+ refclock_open(
+- char *dev, /* device name pointer */
+- u_int speed, /* serial port speed (code) */
+- u_int lflags /* line discipline flags */
++ const char *dev, /* device name pointer */
++ u_int speed, /* serial port speed (code) */
++ u_int lflags /* line discipline flags */
+ )
+ {
+ int fd;
+--- contrib/ntp/ntpd/ntp_request.c.orig
++++ contrib/ntp/ntpd/ntp_request.c
+@@ -2006,11 +2006,11 @@
+ u_long trust
+ )
+ {
+- register u_long *kp;
++ register uint32_t *kp;
+ register int items;
+
+ items = INFO_NITEMS(inpkt->err_nitems);
+- kp = (u_long *)&inpkt->u;
++ kp = (uint32_t*)&inpkt->u;
+ while (items-- > 0) {
+ authtrust(*kp, trust);
+ kp++;
+--- contrib/ntp/ntpd/ntp_restrict.c.orig
++++ contrib/ntp/ntpd/ntp_restrict.c
+@@ -160,7 +160,7 @@
+ const size_t count = INC_RESLIST4;
+ restrict_u * rl;
+ restrict_u * res;
+- int i;
++ size_t i;
+
+ UNLINK_HEAD_SLIST(res, resfree4, link);
+ if (res != NULL)
+@@ -186,7 +186,7 @@
+ const size_t count = INC_RESLIST6;
+ restrict_u * rl;
+ restrict_u * res;
+- int i;
++ size_t i;
+
+ UNLINK_HEAD_SLIST(res, resfree6, link);
+ if (res != NULL)
+--- contrib/ntp/ntpd/ntp_signd.c.orig
++++ contrib/ntp/ntpd/ntp_signd.c
+@@ -66,7 +66,7 @@
+ while (len) {
+ int n = write(fd, buf, len);
+ if (n <= 0) return total;
+- buf = n + (char *)buf;
++ buf = n + (const char *)buf;
+ len -= n;
+ total += n;
+ }
+@@ -110,9 +110,10 @@
+ {
+ if (read_all(fd, len, sizeof(*len)) != sizeof(*len)) return -1;
+ *len = ntohl(*len);
+- (*buf) = emalloc(*len);
++ *buf = emalloc(*len);
+ if (read_all(fd, *buf, *len) != *len) {
+ free(*buf);
++ *buf = NULL;
+ return -1;
+ }
+ return 0;
+--- contrib/ntp/ntpd/ntp_timer.c.orig
++++ contrib/ntp/ntpd/ntp_timer.c
+@@ -626,18 +626,19 @@
+ * announce the leap event has happened.
+ */
+ const char *leapmsg = NULL;
+- if (lsdata.warped < 0) {
++ double lswarp = lsdata.warped;
++ if (lswarp < 0.0) {
+ if (clock_max_back > 0.0 &&
+- clock_max_back < fabs(lsdata.warped)) {
+- step_systime(lsdata.warped);
++ clock_max_back < -lswarp) {
++ step_systime(lswarp);
+ leapmsg = leapmsg_p_step;
+ } else {
+ leapmsg = leapmsg_p_slew;
+ }
+- } else if (lsdata.warped > 0) {
++ } else if (lswarp > 0.0) {
+ if (clock_max_fwd > 0.0 &&
+- clock_max_fwd < fabs(lsdata.warped)) {
+- step_systime(lsdata.warped);
++ clock_max_fwd < lswarp) {
++ step_systime(lswarp);
+ leapmsg = leapmsg_n_step;
+ } else {
+ leapmsg = leapmsg_n_slew;
+--- contrib/ntp/ntpd/ntp_util.c.orig
++++ contrib/ntp/ntpd/ntp_util.c
+@@ -334,7 +334,7 @@
+ {
+ FILE *fp;
+ const char *value;
+- int len;
++ size_t len;
+ double old_drift;
+ l_fp now;
+ time_t ttnow;
+@@ -437,7 +437,7 @@
+ (int)sizeof(statsdir) - 2);
+ } else {
+ int add_dir_sep;
+- int value_l;
++ size_t value_l;
+
+ /* Add a DIR_SEP unless we already have one. */
+ value_l = strlen(value);
+@@ -933,7 +933,7 @@
+ const char *keyfile
+ )
+ {
+- int len;
++ size_t len;
+
+ len = strlen(keyfile);
+ if (!len)
+--- contrib/ntp/ntpd/ntpd-opts.c.orig
++++ contrib/ntp/ntpd/ntpd-opts.c
+@@ -1,7 +1,7 @@
+ /*
+ * EDIT THIS FILE WITH CAUTION (ntpd-opts.c)
+ *
+- * It has been AutoGen-ed October 21, 2015 at 12:36:00 PM by AutoGen 5.18.5
++ * It has been AutoGen-ed January 7, 2016 at 11:28:29 PM by AutoGen 5.18.5
+ * From the definitions ntpd-opts.def
+ * and the template file options
+ *
+@@ -75,7 +75,7 @@
+ * static const strings for ntpd options
+ */
+ static char const ntpd_opt_strs[3129] =
+-/* 0 */ "ntpd 4.2.8p4\n"
++/* 0 */ "ntpd 4.2.8p5\n"
+ "Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n"
+ "This is free software. It is licensed for use, modification and\n"
+ "redistribution under the terms of the NTP License, copies of which\n"
+@@ -205,12 +205,12 @@
+ /* 2900 */ "output version information and exit\0"
+ /* 2936 */ "version\0"
+ /* 2944 */ "NTPD\0"
+-/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p4\n"
++/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p5\n"
+ "Usage: %s [ - [] | --[{=| }] ]... \\\n"
+ "\t\t[ ... ]\n\0"
+ /* 3080 */ "http://bugs.ntp.org, bugs@ntp.org\0"
+ /* 3114 */ "\n\0"
+-/* 3116 */ "ntpd 4.2.8p4";
++/* 3116 */ "ntpd 4.2.8p5";
+
+ /**
+ * ipv4 option description with
+@@ -1529,7 +1529,7 @@
+ translate option names.
+ */
+ /* referenced via ntpdOptions.pzCopyright */
+- puts(_("ntpd 4.2.8p4\n\
++ puts(_("ntpd 4.2.8p5\n\
+ Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n\
+ This is free software. It is licensed for use, modification and\n\
+ redistribution under the terms of the NTP License, copies of which\n\
+@@ -1670,7 +1670,7 @@
+ puts(_("output version information and exit"));
+
+ /* referenced via ntpdOptions.pzUsageTitle */
+- puts(_("ntpd - NTP daemon program - Ver. 4.2.8p4\n\
++ puts(_("ntpd - NTP daemon program - Ver. 4.2.8p5\n\
+ Usage: %s [ - [] | --[{=| }] ]... \\\n\
+ \t\t[ ... ]\n"));
+
+@@ -1678,7 +1678,7 @@
+ puts(_("\n"));
+
+ /* referenced via ntpdOptions.pzFullVersion */
+- puts(_("ntpd 4.2.8p4"));
++ puts(_("ntpd 4.2.8p5"));
+
+ /* referenced via ntpdOptions.pzFullUsage */
+ puts(_("<<>>"));
+--- contrib/ntp/ntpd/ntpd-opts.h.orig
++++ contrib/ntp/ntpd/ntpd-opts.h
+@@ -1,7 +1,7 @@
+ /*
+ * EDIT THIS FILE WITH CAUTION (ntpd-opts.h)
+ *
+- * It has been AutoGen-ed October 21, 2015 at 12:35:59 PM by AutoGen 5.18.5
++ * It has been AutoGen-ed January 7, 2016 at 11:28:28 PM by AutoGen 5.18.5
+ * From the definitions ntpd-opts.def
+ * and the template file options
+ *
+@@ -106,9 +106,9 @@
+ /** count of all options for ntpd */
+ #define OPTION_CT 38
+ /** ntpd version */
+-#define NTPD_VERSION "4.2.8p4"
++#define NTPD_VERSION "4.2.8p5"
+ /** Full ntpd version text */
+-#define NTPD_FULL_VERSION "ntpd 4.2.8p4"
++#define NTPD_FULL_VERSION "ntpd 4.2.8p5"
+
+ /**
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+--- contrib/ntp/ntpd/ntpd.1ntpdman.orig
++++ contrib/ntp/ntpd/ntpd.1ntpdman
+@@ -10,11 +10,11 @@
+ .ds B-Font B
+ .ds I-Font I
+ .ds R-Font R
+-.TH ntpd 1ntpdman "21 Oct 2015" "4.2.8p4" "User Commands"
++.TH ntpd 1ntpdman "07 Jan 2016" "4.2.8p5" "User Commands"
+ .\"
+-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-dUaOfK/ag-qUaGeK)
++.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-KDaWJq/ag-WDaOIq)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:11 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:30:44 PM by AutoGen 5.18.5
+ .\" From the definitions ntpd-opts.def
+ .\" and the template file agman-cmd.tpl
+ .SH NAME
+--- contrib/ntp/ntpd/ntpd.1ntpdmdoc.orig
++++ contrib/ntp/ntpd/ntpd.1ntpdmdoc
+@@ -1,9 +1,9 @@
+-.Dd October 21 2015
++.Dd January 7 2016
+ .Dt NTPD 1ntpdmdoc User Commands
+ .Os
+ .\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc)
+ .\"
+-.\" It has been AutoGen-ed October 21, 2015 at 12:38:30 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 7, 2016 at 11:31:02 PM by AutoGen 5.18.5
+ .\" From the definitions ntpd-opts.def
+ .\" and the template file agmdoc-cmd.tpl
+ .Sh NAME
+--- contrib/ntp/ntpd/ntpd.c.orig
++++ contrib/ntp/ntpd/ntpd.c
+@@ -27,12 +27,16 @@
+ #include "ntp_libopts.h"
+ #include "ntpd-opts.h"
+
+-/* there's a short treatise below what the thread stuff is for */
++/* there's a short treatise below what the thread stuff is for.
++ * [Bug 2954] enable the threading warm-up only for Linux.
++ */
+ #if defined(HAVE_PTHREADS) && HAVE_PTHREADS && !defined(NO_THREADS)
+ # ifdef HAVE_PTHREAD_H
+ # include
+ # endif
+-# define NEED_PTHREAD_WARMUP
++# if defined(linux)
++# define NEED_PTHREAD_WARMUP
++# endif
+ #endif
+
+ #ifdef HAVE_UNISTD_H
+@@ -269,6 +273,9 @@
+ * This uses only the standard pthread API and should work with all
+ * implementations of pthreads. It is not necessary everywhere, but it's
+ * cheap enough to go on nearly unnoticed.
++ *
++ * Addendum: Bug 2954 showed that the assumption that this should work
++ * with all OS is wrong -- at least FreeBSD bombs heavily.
+ */
+ #ifdef NEED_PTHREAD_WARMUP
+
+@@ -646,6 +653,9 @@
+ # endif
+
+ # ifdef HAVE_WORKING_FORK
++ /* make sure the FDs are initialised */
++ pipe_fds[0] = -1;
++ pipe_fds[1] = -1;
+ do { /* 'loop' once */
+ if (!HAVE_OPT( WAIT_SYNC ))
+ break;
+--- contrib/ntp/ntpd/ntpd.html.orig
++++ contrib/ntp/ntpd/ntpd.html
+@@ -39,7 +39,7 @@
+ symmetric and broadcast modes, and with both symmetric-key and public-key
+ cryptography.
+
+- This document applies to version 4.2.8p4 of ntpd
.
++
This document applies to version 4.2.8p5 of ntpd
.
+
+