From 5fdabf56563adedefa8795b08cc1b04ac451318b Mon Sep 17 00:00:00 2001 From: delphij Date: Wed, 4 May 2016 15:27:09 +0000 Subject: [PATCH 01/16] Fix multiple OpenSSL vulnerabilitites. [SA-16:17] Fix memory leak in ZFS. [EN-16:08] Approved by: so git-svn-id: svn://svn.freebsd.org/base/releng/9.3@299068 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- UPDATING | 9 ++++++++- crypto/openssl/crypto/asn1/a_type.c | 2 -- crypto/openssl/crypto/asn1/tasn_dec.c | 2 -- crypto/openssl/crypto/asn1/tasn_enc.c | 2 -- crypto/openssl/crypto/evp/encode.c | 12 +++++++++--- crypto/openssl/crypto/evp/evp_enc.c | 2 +- crypto/openssl/crypto/x509/x509_obj.c | 5 +++-- sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c | 1 + sys/conf/newvers.sh | 2 +- 9 files changed, 23 insertions(+), 14 deletions(-) diff --git a/UPDATING b/UPDATING index adf8f8483..39ddac07b 100644 --- a/UPDATING +++ b/UPDATING @@ -11,7 +11,14 @@ handbook: Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before running portupgrade. -20150429 p40 FreeBSD-SA-16:16.ntp +20160504 p41 FreeBSD-SA-16:17.openssl + FreeBSD-EN-16:08.zfs + + Fix multiple OpenSSL vulnerabilitites. [SA-16:17] + + Fix memory leak in ZFS. [EN-16:08] + +20160429 p40 FreeBSD-SA-16:16.ntp Fix multiple vulnerabilities of ntp. diff --git a/crypto/openssl/crypto/asn1/a_type.c b/crypto/openssl/crypto/asn1/a_type.c index 69a5cf6f4..be6eeedf3 100644 --- a/crypto/openssl/crypto/asn1/a_type.c +++ b/crypto/openssl/crypto/asn1/a_type.c @@ -123,9 +123,7 @@ int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b) result = 0; /* They do not have content. */ break; case V_ASN1_INTEGER: - case V_ASN1_NEG_INTEGER: case V_ASN1_ENUMERATED: - case V_ASN1_NEG_ENUMERATED: case V_ASN1_BIT_STRING: case V_ASN1_OCTET_STRING: case V_ASN1_SEQUENCE: diff --git a/crypto/openssl/crypto/asn1/tasn_dec.c b/crypto/openssl/crypto/asn1/tasn_dec.c index 91e769811..c72ed08f4 100644 --- a/crypto/openssl/crypto/asn1/tasn_dec.c +++ b/crypto/openssl/crypto/asn1/tasn_dec.c @@ -901,9 +901,7 @@ int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, break; case V_ASN1_INTEGER: - case V_ASN1_NEG_INTEGER: case V_ASN1_ENUMERATED: - case V_ASN1_NEG_ENUMERATED: tint = (ASN1_INTEGER **)pval; if (!c2i_ASN1_INTEGER(tint, &cont, len)) goto err; diff --git a/crypto/openssl/crypto/asn1/tasn_enc.c b/crypto/openssl/crypto/asn1/tasn_enc.c index b93f3f69c..928416db3 100644 --- a/crypto/openssl/crypto/asn1/tasn_enc.c +++ b/crypto/openssl/crypto/asn1/tasn_enc.c @@ -610,9 +610,7 @@ int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cout, int *putype, break; case V_ASN1_INTEGER: - case V_ASN1_NEG_INTEGER: case V_ASN1_ENUMERATED: - case V_ASN1_NEG_ENUMERATED: /* * These are all have the same content format as ASN1_INTEGER */ diff --git a/crypto/openssl/crypto/evp/encode.c b/crypto/openssl/crypto/evp/encode.c index 9bdcd5724..eb42a18a3 100644 --- a/crypto/openssl/crypto/evp/encode.c +++ b/crypto/openssl/crypto/evp/encode.c @@ -57,6 +57,7 @@ */ #include +#include #include "cryptlib.h" #include @@ -134,13 +135,13 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl) { int i, j; - unsigned int total = 0; + size_t total = 0; *outl = 0; if (inl == 0) return; OPENSSL_assert(ctx->length <= (int)sizeof(ctx->enc_data)); - if ((ctx->num + inl) < ctx->length) { + if (ctx->length - ctx->num > inl) { memcpy(&(ctx->enc_data[ctx->num]), in, inl); ctx->num += inl; return; @@ -157,7 +158,7 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, *out = '\0'; total = j + 1; } - while (inl >= ctx->length) { + while (inl >= ctx->length && total <= INT_MAX) { j = EVP_EncodeBlock(out, in, ctx->length); in += ctx->length; inl -= ctx->length; @@ -166,6 +167,11 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, *out = '\0'; total += j + 1; } + if (total > INT_MAX) { + /* Too much output data! */ + *outl = 0; + return; + } if (inl != 0) memcpy(&(ctx->enc_data[0]), in, inl); ctx->num = inl; diff --git a/crypto/openssl/crypto/evp/evp_enc.c b/crypto/openssl/crypto/evp/evp_enc.c index 8a91a679b..5205047e4 100644 --- a/crypto/openssl/crypto/evp/evp_enc.c +++ b/crypto/openssl/crypto/evp/evp_enc.c @@ -166,7 +166,7 @@ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, bl = ctx->cipher->block_size; OPENSSL_assert(bl <= (int)sizeof(ctx->buf)); if (i != 0) { - if (i + inl < bl) { + if (bl - i > inl) { memcpy(&(ctx->buf[i]), in, inl); ctx->buf_len += inl; *outl = 0; diff --git a/crypto/openssl/crypto/x509/x509_obj.c b/crypto/openssl/crypto/x509/x509_obj.c index c334d3b05..e9822b0e9 100644 --- a/crypto/openssl/crypto/x509/x509_obj.c +++ b/crypto/openssl/crypto/x509/x509_obj.c @@ -117,8 +117,9 @@ char *X509_NAME_oneline(X509_NAME *a, char *buf, int len) type == V_ASN1_PRINTABLESTRING || type == V_ASN1_TELETEXSTRING || type == V_ASN1_VISIBLESTRING || type == V_ASN1_IA5STRING) { - ascii2ebcdic(ebcdic_buf, q, (num > sizeof ebcdic_buf) - ? sizeof ebcdic_buf : num); + if (num > (int)sizeof(ebcdic_buf)) + num = sizeof(ebcdic_buf); + ascii2ebcdic(ebcdic_buf, q, num); q = ebcdic_buf; } #endif diff --git a/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c b/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c index a2532f802..49becbc1c 100644 --- a/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c +++ b/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c @@ -196,6 +196,7 @@ mount_snapshot(kthread_t *td, vnode_t **vpp, const char *fstype, char *fspath, VI_UNLOCK(vp); vrele(vp); vfs_unbusy(mp); + vfs_freeopts(mp->mnt_optnew); vfs_mount_destroy(mp); *vpp = NULL; return (error); diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 4572694c0..26ded0b44 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="9.3" -BRANCH="RELEASE-p40" +BRANCH="RELEASE-p41" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi -- 2.42.0 From 859527c6a9c3326189ca70508b35abcfeda0808c Mon Sep 17 00:00:00 2001 From: glebius Date: Tue, 17 May 2016 22:28:36 +0000 Subject: [PATCH 02/16] - Use unsigned version of min() when handling arguments of SETFKEY ioctl. - Validate that user supplied control message length in sendmsg(2) is not negative. Security: SA-16:18 Security: CVE-2016-1886 Security: SA-16:19 Security: CVE-2016-1887 Submitted by: C Turt Approved by: so git-svn-id: svn://svn.freebsd.org/base/releng/9.3@300088 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- UPDATING | 4 ++++ sys/conf/newvers.sh | 2 +- sys/dev/kbd/kbd.c | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/UPDATING b/UPDATING index 39ddac07b..8ba40af91 100644 --- a/UPDATING +++ b/UPDATING @@ -11,6 +11,10 @@ handbook: Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before running portupgrade. +20160517 p42 FreeBSD-SA-16:18.atkbd + + Fix buffer overflow in keyboard driver. [SA-16:18] + 20160504 p41 FreeBSD-SA-16:17.openssl FreeBSD-EN-16:08.zfs diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 26ded0b44..cdbce1481 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="9.3" -BRANCH="RELEASE-p41" +BRANCH="RELEASE-p42" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c index 803676288..f1a1b29ab 100644 --- a/sys/dev/kbd/kbd.c +++ b/sys/dev/kbd/kbd.c @@ -996,7 +996,7 @@ genkbd_commonioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) splx(s); return (error); } - kbd->kb_fkeytab[fkeyp->keynum].len = imin(fkeyp->flen, MAXFK); + kbd->kb_fkeytab[fkeyp->keynum].len = min(fkeyp->flen, MAXFK); bcopy(fkeyp->keydef, kbd->kb_fkeytab[fkeyp->keynum].str, kbd->kb_fkeytab[fkeyp->keynum].len); break; -- 2.42.0 From 5c12832c4490744acab5efb3618f34ba7354a3db Mon Sep 17 00:00:00 2001 From: glebius Date: Tue, 31 May 2016 16:23:56 +0000 Subject: [PATCH 03/16] Merge r300363 by mm@: Backport security fix for absolute path traversal vulnerability in bsdcpio. Security: CVE-2015-2304 Security: SA-16:22 Approved by: so git-svn-id: svn://svn.freebsd.org/base/releng/9.3@301044 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- contrib/libarchive/cpio/bsdcpio.1 | 3 ++- contrib/libarchive/cpio/cpio.c | 3 +++ contrib/libarchive/libarchive/archive.h | 2 ++ contrib/libarchive/libarchive/archive_write.c | 4 ++++ .../libarchive/archive_write_disk.3 | 3 +++ .../libarchive/test/test_write_disk_secure.c | 23 +++++++++++++++++++ 6 files changed, 37 insertions(+), 1 deletion(-) diff --git a/contrib/libarchive/cpio/bsdcpio.1 b/contrib/libarchive/cpio/bsdcpio.1 index 789ce74e1..63de1faa9 100644 --- a/contrib/libarchive/cpio/bsdcpio.1 +++ b/contrib/libarchive/cpio/bsdcpio.1 @@ -159,7 +159,8 @@ See above for description. .It Fl -insecure (i and p mode only) Disable security checks during extraction or copying. -This allows extraction via symbolic links and path names containing +This allows extraction via symbolic links, absolute paths, +and path names containing .Sq .. in the name. .It Fl J diff --git a/contrib/libarchive/cpio/cpio.c b/contrib/libarchive/cpio/cpio.c index cd81050e1..a178164ee 100644 --- a/contrib/libarchive/cpio/cpio.c +++ b/contrib/libarchive/cpio/cpio.c @@ -162,6 +162,7 @@ main(int argc, char *argv[]) cpio->extract_flags |= ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER; cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_SYMLINKS; cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NODOTDOT; + cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS; cpio->extract_flags |= ARCHIVE_EXTRACT_PERM; cpio->extract_flags |= ARCHIVE_EXTRACT_FFLAGS; cpio->extract_flags |= ARCHIVE_EXTRACT_ACL; @@ -231,6 +232,7 @@ main(int argc, char *argv[]) case OPTION_INSECURE: cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_SYMLINKS; cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT; + cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS; break; case 'L': /* GNU cpio */ cpio->option_follow_links = 1; @@ -265,6 +267,7 @@ main(int argc, char *argv[]) "Cannot use both -p and -%c", cpio->mode); cpio->mode = opt; cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT; + cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS; break; case OPTION_PRESERVE_OWNER: cpio->extract_flags |= ARCHIVE_EXTRACT_OWNER; diff --git a/contrib/libarchive/libarchive/archive.h b/contrib/libarchive/libarchive/archive.h index bac93f01f..850f8261c 100644 --- a/contrib/libarchive/libarchive/archive.h +++ b/contrib/libarchive/libarchive/archive.h @@ -477,6 +477,8 @@ __LA_DECL int archive_read_set_options(struct archive *_a, #define ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER (0x0800) /* Detect blocks of 0 and write holes instead. */ #define ARCHIVE_EXTRACT_SPARSE (0x1000) +/* Default: Do not reject entries with absolute paths */ +#define ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS (0x10000) __LA_DECL int archive_read_extract(struct archive *, struct archive_entry *, int flags); diff --git a/contrib/libarchive/libarchive/archive_write.c b/contrib/libarchive/libarchive/archive_write.c index 70af46f68..b8f0f0805 100644 --- a/contrib/libarchive/libarchive/archive_write.c +++ b/contrib/libarchive/libarchive/archive_write.c @@ -459,8 +459,12 @@ static ssize_t _archive_write_data(struct archive *_a, const void *buff, size_t s) { struct archive_write *a = (struct archive_write *)_a; + const size_t max_write = INT_MAX; __archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC, ARCHIVE_STATE_DATA, "archive_write_data"); + /* In particular, this catches attempts to pass negative values. */ + if (s > max_write) + s = max_write; archive_clear_error(&a->archive); return ((a->format_write_data)(a, buff, s)); } diff --git a/contrib/libarchive/libarchive/archive_write_disk.3 b/contrib/libarchive/libarchive/archive_write_disk.3 index bdb6ca052..516dba5a1 100644 --- a/contrib/libarchive/libarchive/archive_write_disk.3 +++ b/contrib/libarchive/libarchive/archive_write_disk.3 @@ -169,6 +169,9 @@ The default is to not refuse such paths. Note that paths ending in .Pa .. always cause an error, regardless of this flag. +.It Cm ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS +Refuse to extract an absolute path. +The default is to not refuse such paths. .It Cm ARCHIVE_EXTRACT_SPARSE Scan data for blocks of NUL bytes and try to recreate them with holes. This results in sparse files, independent of whether the archive format diff --git a/contrib/libarchive/libarchive/test/test_write_disk_secure.c b/contrib/libarchive/libarchive/test/test_write_disk_secure.c index 74506f1bc..78bacf792 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_secure.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_secure.c @@ -178,6 +178,29 @@ DEFINE_TEST(test_write_disk_secure) assert(S_ISDIR(st.st_mode)); archive_entry_free(ae); + /* + * Without security checks, we should be able to + * extract an absolute path. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); + archive_entry_set_mode(ae, S_IFREG | 0777); + assert(0 == archive_write_header(a, ae)); + assert(0 == archive_write_finish_entry(a)); + assertFileExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); + assert(0 == unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp")); + + /* But with security checks enabled, this should fail. */ + assert(archive_entry_clear(ae) != NULL); + archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); + archive_entry_set_mode(ae, S_IFREG | 0777); + archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS); + failure("Extracting an absolute path should fail here."); + assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae)); + archive_entry_free(ae); + assert(0 == archive_write_finish_entry(a)); + assertFileNotExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); + assert(0 == archive_write_finish(a)); /* Test the entries on disk. */ -- 2.42.0 From a7e02c42bdf0f138f76139030f1083837b21c86c Mon Sep 17 00:00:00 2001 From: glebius Date: Tue, 31 May 2016 16:55:37 +0000 Subject: [PATCH 04/16] Fix kernel stack disclosure in Linux compatibility layer. [SA-16:20] Fix kernel stack disclosure in 4.3BSD compatibility layer. [SA-16:21] Security: SA-16:20 Security: SA-16:21 Approved by: so git-svn-id: svn://svn.freebsd.org/base/releng/9.3@301049 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- UPDATING | 10 ++++++++++ sys/compat/linux/linux_ioctl.c | 2 ++ sys/compat/linux/linux_misc.c | 1 + sys/conf/newvers.sh | 2 +- sys/kern/vfs_syscalls.c | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/UPDATING b/UPDATING index 8ba40af91..8971dd8da 100644 --- a/UPDATING +++ b/UPDATING @@ -11,6 +11,16 @@ handbook: Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before running portupgrade. +20160531 p43 FreeBSD-SA-16:20.linux + FreeBSD-SA-16:21.43bsd + FreeBSD-SA-16:22.libarchive + FreeBSD-SA-16:23.libarchive + + Fix kernel stack disclosure in Linux compatibility layer. [SA-16:20] + Fix kernel stack disclosure in 4.3BSD compatibility layer. [SA-16:21] + Fix directory traversal in cpio(1). [SA-16:22] + Fix buffer overflow in libarchive(3). [SA-16:23] + 20160517 p42 FreeBSD-SA-16:18.atkbd Fix buffer overflow in keyboard driver. [SA-16:18] diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c index 168e68012..926085305 100644 --- a/sys/compat/linux/linux_ioctl.c +++ b/sys/compat/linux/linux_ioctl.c @@ -911,6 +911,8 @@ linux_ioctl_termio(struct thread *td, struct linux_ioctl_args *args) case LINUX_TIOCGSERIAL: { struct linux_serial_struct lss; + + bzero(&lss, sizeof(lss)); lss.type = LINUX_PORT_16550A; lss.flags = 0; lss.close_delay = 0; diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c index 857297a90..85c7c9302 100644 --- a/sys/compat/linux/linux_misc.c +++ b/sys/compat/linux/linux_misc.c @@ -138,6 +138,7 @@ linux_sysinfo(struct thread *td, struct linux_sysinfo_args *args) int i, j; struct timespec ts; + bzero(&sysinfo, sizeof(sysinfo)); getnanouptime(&ts); if (ts.tv_nsec != 0) ts.tv_sec++; diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index cdbce1481..cd490b12e 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="9.3" -BRANCH="RELEASE-p42" +BRANCH="RELEASE-p43" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 39a5606fc..90430abff 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -2326,6 +2326,7 @@ cvtstat(st, ost) struct ostat *ost; { + bzero(ost, sizeof(*ost)); ost->st_dev = st->st_dev; ost->st_ino = st->st_ino; ost->st_mode = st->st_mode; -- 2.42.0 From 2d1d949a4b376eacd68ed230b7a8bdc417bed12b Mon Sep 17 00:00:00 2001 From: delphij Date: Sat, 4 Jun 2016 05:46:52 +0000 Subject: [PATCH 05/16] Fix multiple ntp vulnerabilities. Security: FreeBSD-SA-16:24.ntp Approved by: so git-svn-id: svn://svn.freebsd.org/base/releng/9.3@301301 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- UPDATING | 4 + contrib/ntp/ChangeLog | 22 + contrib/ntp/CommitLog | 771 ++++ contrib/ntp/NEWS | 112 + contrib/ntp/configure | 25 +- contrib/ntp/configure.ac | 1 + contrib/ntp/html/miscopt.html | 4 +- contrib/ntp/include/ntp.h | 1 + contrib/ntp/ntpd/complete.conf.in | 2 +- contrib/ntp/ntpd/invoke-ntp.conf.texi | 26 +- contrib/ntp/ntpd/invoke-ntp.keys.texi | 2 +- contrib/ntp/ntpd/invoke-ntpd.texi | 4 +- contrib/ntp/ntpd/keyword-gen-utd | 2 +- contrib/ntp/ntpd/keyword-gen.c | 3 +- contrib/ntp/ntpd/ntp.conf.5man | 31 +- contrib/ntp/ntpd/ntp.conf.5mdoc | 26 +- contrib/ntp/ntpd/ntp.conf.def | 22 + contrib/ntp/ntpd/ntp.conf.html | 74 +- contrib/ntp/ntpd/ntp.conf.man.in | 31 +- contrib/ntp/ntpd/ntp.conf.mdoc.in | 26 +- contrib/ntp/ntpd/ntp.keys.5man | 4 +- contrib/ntp/ntpd/ntp.keys.5mdoc | 4 +- contrib/ntp/ntpd/ntp.keys.html | 2 +- contrib/ntp/ntpd/ntp.keys.man.in | 4 +- contrib/ntp/ntpd/ntp.keys.mdoc.in | 4 +- contrib/ntp/ntpd/ntp_config.c | 8 +- contrib/ntp/ntpd/ntp_io.c | 82 +- contrib/ntp/ntpd/ntp_keyword.h | 1212 +++---- contrib/ntp/ntpd/ntp_parser.c | 3144 ++++++++--------- contrib/ntp/ntpd/ntp_parser.h | 594 ++-- contrib/ntp/ntpd/ntp_proto.c | 219 +- contrib/ntp/ntpd/ntpd-opts.c | 14 +- contrib/ntp/ntpd/ntpd-opts.h | 6 +- contrib/ntp/ntpd/ntpd.1ntpdman | 6 +- contrib/ntp/ntpd/ntpd.1ntpdmdoc | 4 +- contrib/ntp/ntpd/ntpd.html | 4 +- contrib/ntp/ntpd/ntpd.man.in | 6 +- contrib/ntp/ntpd/ntpd.mdoc.in | 4 +- contrib/ntp/ntpd/refclock_parse.c | 12 +- contrib/ntp/ntpdc/invoke-ntpdc.texi | 4 +- contrib/ntp/ntpdc/ntpdc-opts.c | 14 +- contrib/ntp/ntpdc/ntpdc-opts.h | 6 +- contrib/ntp/ntpdc/ntpdc.1ntpdcman | 6 +- contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc | 4 +- contrib/ntp/ntpdc/ntpdc.c | 4 +- contrib/ntp/ntpdc/ntpdc.html | 4 +- contrib/ntp/ntpdc/ntpdc.man.in | 6 +- contrib/ntp/ntpdc/ntpdc.mdoc.in | 4 +- contrib/ntp/ntpq/invoke-ntpq.texi | 4 +- contrib/ntp/ntpq/ntpq-opts.c | 14 +- contrib/ntp/ntpq/ntpq-opts.h | 6 +- contrib/ntp/ntpq/ntpq.1ntpqman | 6 +- contrib/ntp/ntpq/ntpq.1ntpqmdoc | 4 +- contrib/ntp/ntpq/ntpq.c | 7 +- contrib/ntp/ntpq/ntpq.html | 4 +- contrib/ntp/ntpq/ntpq.man.in | 6 +- contrib/ntp/ntpq/ntpq.mdoc.in | 4 +- contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi | 4 +- contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c | 14 +- contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h | 6 +- contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman | 6 +- contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc | 4 +- contrib/ntp/ntpsnmpd/ntpsnmpd.html | 2 +- contrib/ntp/ntpsnmpd/ntpsnmpd.man.in | 6 +- contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in | 4 +- contrib/ntp/packageinfo.sh | 2 +- contrib/ntp/scripts/build/Makefile.am | 2 +- contrib/ntp/scripts/build/Makefile.in | 9 +- contrib/ntp/scripts/build/genAuthors.in | 82 + .../calc_tickadj.1calc_tickadjman | 6 +- .../calc_tickadj.1calc_tickadjmdoc | 4 +- .../scripts/calc_tickadj/calc_tickadj.html | 2 +- .../scripts/calc_tickadj/calc_tickadj.man.in | 6 +- .../scripts/calc_tickadj/calc_tickadj.mdoc.in | 4 +- .../calc_tickadj/invoke-calc_tickadj.texi | 2 +- contrib/ntp/scripts/invoke-plot_summary.texi | 6 +- contrib/ntp/scripts/invoke-summary.texi | 4 +- .../ntp/scripts/ntp-wait/invoke-ntp-wait.texi | 4 +- contrib/ntp/scripts/ntp-wait/ntp-wait-opts | 4 +- .../scripts/ntp-wait/ntp-wait.1ntp-waitman | 6 +- .../scripts/ntp-wait/ntp-wait.1ntp-waitmdoc | 4 +- contrib/ntp/scripts/ntp-wait/ntp-wait.html | 4 +- contrib/ntp/scripts/ntp-wait/ntp-wait.in | 2 +- contrib/ntp/scripts/ntp-wait/ntp-wait.man.in | 6 +- contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in | 4 +- .../ntp/scripts/ntpsweep/invoke-ntpsweep.texi | 4 +- contrib/ntp/scripts/ntpsweep/ntpsweep-opts | 4 +- .../scripts/ntpsweep/ntpsweep.1ntpsweepman | 6 +- .../scripts/ntpsweep/ntpsweep.1ntpsweepmdoc | 4 +- contrib/ntp/scripts/ntpsweep/ntpsweep.html | 4 +- contrib/ntp/scripts/ntpsweep/ntpsweep.man.in | 6 +- contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in | 4 +- .../ntp/scripts/ntptrace/invoke-ntptrace.texi | 4 +- contrib/ntp/scripts/ntptrace/ntptrace-opts | 4 +- .../scripts/ntptrace/ntptrace.1ntptraceman | 6 +- .../scripts/ntptrace/ntptrace.1ntptracemdoc | 4 +- contrib/ntp/scripts/ntptrace/ntptrace.html | 4 +- contrib/ntp/scripts/ntptrace/ntptrace.man.in | 6 +- contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in | 4 +- contrib/ntp/scripts/plot_summary-opts | 4 +- contrib/ntp/scripts/plot_summary-opts.def | 2 +- .../ntp/scripts/plot_summary.1plot_summaryman | 8 +- .../scripts/plot_summary.1plot_summarymdoc | 6 +- contrib/ntp/scripts/plot_summary.html | 6 +- contrib/ntp/scripts/plot_summary.man.in | 8 +- contrib/ntp/scripts/plot_summary.mdoc.in | 6 +- contrib/ntp/scripts/summary-opts | 4 +- contrib/ntp/scripts/summary.1summaryman | 6 +- contrib/ntp/scripts/summary.1summarymdoc | 4 +- contrib/ntp/scripts/summary.html | 4 +- contrib/ntp/scripts/summary.man.in | 6 +- contrib/ntp/scripts/summary.mdoc.in | 4 +- .../update-leap/invoke-update-leap.texi | 2 +- .../ntp/scripts/update-leap/update-leap-opts | 4 +- .../update-leap/update-leap.1update-leapman | 6 +- .../update-leap/update-leap.1update-leapmdoc | 4 +- .../ntp/scripts/update-leap/update-leap.html | 2 +- .../scripts/update-leap/update-leap.man.in | 6 +- .../scripts/update-leap/update-leap.mdoc.in | 4 +- contrib/ntp/sntp/Makefile.in | 5 +- contrib/ntp/sntp/aclocal.m4 | 1 + contrib/ntp/sntp/configure | 91 +- contrib/ntp/sntp/configure.ac | 2 + contrib/ntp/sntp/include/Makefile.in | 5 +- contrib/ntp/sntp/include/version.def | 2 +- contrib/ntp/sntp/include/version.texi | 6 +- contrib/ntp/sntp/invoke-sntp.texi | 4 +- contrib/ntp/sntp/libopts/Makefile.in | 5 +- contrib/ntp/sntp/m4/ntp_problemtests.m4 | 1 + contrib/ntp/sntp/m4/sntp_problemtests.m4 | 47 + contrib/ntp/sntp/m4/version.m4 | 2 +- contrib/ntp/sntp/scripts/Makefile.in | 5 +- contrib/ntp/sntp/sntp-opts.c | 14 +- contrib/ntp/sntp/sntp-opts.h | 6 +- contrib/ntp/sntp/sntp.1sntpman | 6 +- contrib/ntp/sntp/sntp.1sntpmdoc | 4 +- contrib/ntp/sntp/sntp.html | 4 +- contrib/ntp/sntp/sntp.man.in | 6 +- contrib/ntp/sntp/sntp.mdoc.in | 4 +- contrib/ntp/sntp/tests/Makefile.am | 10 +- contrib/ntp/sntp/tests/Makefile.in | 45 +- contrib/ntp/sntp/unity/Makefile.in | 5 +- contrib/ntp/sntp/version.c | 2 +- contrib/ntp/util/invoke-ntp-keygen.texi | 4 +- contrib/ntp/util/ntp-keygen-opts.c | 14 +- contrib/ntp/util/ntp-keygen-opts.h | 6 +- contrib/ntp/util/ntp-keygen.1ntp-keygenman | 6 +- contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc | 4 +- contrib/ntp/util/ntp-keygen.html | 4 +- contrib/ntp/util/ntp-keygen.man.in | 6 +- contrib/ntp/util/ntp-keygen.mdoc.in | 4 +- sys/conf/newvers.sh | 2 +- usr.sbin/ntp/config.h | 10 +- usr.sbin/ntp/doc/ntp-keygen.8 | 4 +- usr.sbin/ntp/doc/ntp.conf.5 | 26 +- usr.sbin/ntp/doc/ntp.keys.5 | 4 +- usr.sbin/ntp/doc/ntpd.8 | 4 +- usr.sbin/ntp/doc/ntpdc.8 | 4 +- usr.sbin/ntp/doc/ntpq.8 | 4 +- usr.sbin/ntp/doc/sntp.8 | 4 +- usr.sbin/ntp/scripts/mkver | 2 +- 161 files changed, 4306 insertions(+), 3086 deletions(-) create mode 100644 contrib/ntp/scripts/build/genAuthors.in create mode 100644 contrib/ntp/sntp/m4/sntp_problemtests.m4 diff --git a/UPDATING b/UPDATING index 8971dd8da..25e7b10ab 100644 --- a/UPDATING +++ b/UPDATING @@ -11,6 +11,10 @@ handbook: Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before running portupgrade. +20160604 p44 FreeBSD-SA-16:24.ntp + + Fix multiple vulnerabilities of ntp. + 20160531 p43 FreeBSD-SA-16:20.linux FreeBSD-SA-16:21.43bsd FreeBSD-SA-16:22.libarchive diff --git a/contrib/ntp/ChangeLog b/contrib/ntp/ChangeLog index f61a44798..0805467dc 100644 --- a/contrib/ntp/ChangeLog +++ b/contrib/ntp/ChangeLog @@ -1,3 +1,25 @@ +--- +(4.2.8p8) 2016/06/02 Released by Harlan Stenn + +* [Sec 3042] Broadcast Interleave. HStenn. +* [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + - validate origin timestamps on bad MACs, too. stenn@ntp.org +* [Sec 3044] Spoofed server packets are partially processed. HStenn. +* [Sec 3045] Bad authentication demobilizes ephemeral associations. JPerlinger. +* [Sec 3046] CRYPTO_NAK crash. stenn@ntp.org +* [Bug 3038] NTP fails to build in VS2015. perlinger@ntp.org + - provide build environment + - 'wint_t' and 'struct timespec' defined by VS2015 + - fixed print()/scanf() format issues +* [Bug 3052] Add a .gitignore file. Edmund Wong. +* [Bug 3054] miscopt.html documents the allan intercept in seconds. SWhite. +* [Bug 3058] fetch_timestamp() mishandles 64-bit alignment. Brian Utterback, + JPerlinger, HStenn. +* Update the NEWS file for 4.2.8p8. HStenn. +* Fix typo in ntp-wait and plot_summary. HStenn. +* Make sure we have an "author" file for git imports. HStenn. +* Update the sntp problem tests for MacOS. HStenn. + --- (4.2.8p7) 2016/04/26 Released by Harlan Stenn diff --git a/contrib/ntp/CommitLog b/contrib/ntp/CommitLog index 3c221aca0..45777550d 100644 --- a/contrib/ntp/CommitLog +++ b/contrib/ntp/CommitLog @@ -1,3 +1,774 @@ +ChangeSet@1.3686, 2016-06-02 07:40:06-04:00, stenn@deacon.udel.edu + NTP_4_2_8P8 + TAG: NTP_4_2_8P8 + + ChangeLog@1.1834 +1 -0 + NTP_4_2_8P8 + + ntpd/invoke-ntp.conf.texi@1.200 +1 -1 + NTP_4_2_8P8 + + ntpd/invoke-ntp.keys.texi@1.190 +1 -1 + NTP_4_2_8P8 + + ntpd/invoke-ntpd.texi@1.506 +2 -2 + NTP_4_2_8P8 + + ntpd/ntp.conf.5man@1.234 +3 -3 + NTP_4_2_8P8 + + ntpd/ntp.conf.5mdoc@1.234 +2 -2 + NTP_4_2_8P8 + + ntpd/ntp.conf.html@1.185 +55 -19 + NTP_4_2_8P8 + + ntpd/ntp.conf.man.in@1.234 +3 -3 + NTP_4_2_8P8 + + ntpd/ntp.conf.mdoc.in@1.234 +2 -2 + NTP_4_2_8P8 + + ntpd/ntp.keys.5man@1.224 +2 -2 + NTP_4_2_8P8 + + ntpd/ntp.keys.5mdoc@1.224 +2 -2 + NTP_4_2_8P8 + + ntpd/ntp.keys.html@1.186 +1 -1 + NTP_4_2_8P8 + + ntpd/ntp.keys.man.in@1.224 +2 -2 + NTP_4_2_8P8 + + ntpd/ntp.keys.mdoc.in@1.224 +2 -2 + NTP_4_2_8P8 + + ntpd/ntpd-opts.c@1.528 +7 -7 + NTP_4_2_8P8 + + ntpd/ntpd-opts.h@1.527 +3 -3 + NTP_4_2_8P8 + + ntpd/ntpd.1ntpdman@1.335 +3 -3 + NTP_4_2_8P8 + + ntpd/ntpd.1ntpdmdoc@1.335 +2 -2 + NTP_4_2_8P8 + + ntpd/ntpd.html@1.179 +2 -2 + NTP_4_2_8P8 + + ntpd/ntpd.man.in@1.335 +3 -3 + NTP_4_2_8P8 + + ntpd/ntpd.mdoc.in@1.335 +2 -2 + NTP_4_2_8P8 + + ntpdc/invoke-ntpdc.texi@1.503 +2 -2 + NTP_4_2_8P8 + + ntpdc/ntpdc-opts.c@1.521 +7 -7 + NTP_4_2_8P8 + + ntpdc/ntpdc-opts.h@1.520 +3 -3 + NTP_4_2_8P8 + + ntpdc/ntpdc.1ntpdcman@1.334 +3 -3 + NTP_4_2_8P8 + + ntpdc/ntpdc.1ntpdcmdoc@1.334 +2 -2 + NTP_4_2_8P8 + + ntpdc/ntpdc.html@1.347 +2 -2 + NTP_4_2_8P8 + + ntpdc/ntpdc.man.in@1.334 +3 -3 + NTP_4_2_8P8 + + ntpdc/ntpdc.mdoc.in@1.334 +2 -2 + NTP_4_2_8P8 + + ntpq/invoke-ntpq.texi@1.511 +2 -2 + NTP_4_2_8P8 + + ntpq/ntpq-opts.c@1.528 +7 -7 + NTP_4_2_8P8 + + ntpq/ntpq-opts.h@1.526 +3 -3 + NTP_4_2_8P8 + + ntpq/ntpq.1ntpqman@1.339 +3 -3 + NTP_4_2_8P8 + + ntpq/ntpq.1ntpqmdoc@1.339 +2 -2 + NTP_4_2_8P8 + + ntpq/ntpq.html@1.176 +2 -2 + NTP_4_2_8P8 + + ntpq/ntpq.man.in@1.339 +3 -3 + NTP_4_2_8P8 + + ntpq/ntpq.mdoc.in@1.339 +2 -2 + NTP_4_2_8P8 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.505 +2 -2 + NTP_4_2_8P8 + + ntpsnmpd/ntpsnmpd-opts.c@1.523 +7 -7 + NTP_4_2_8P8 + + ntpsnmpd/ntpsnmpd-opts.h@1.522 +3 -3 + NTP_4_2_8P8 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.334 +3 -3 + NTP_4_2_8P8 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.334 +2 -2 + NTP_4_2_8P8 + + ntpsnmpd/ntpsnmpd.html@1.174 +1 -1 + NTP_4_2_8P8 + + ntpsnmpd/ntpsnmpd.man.in@1.334 +3 -3 + NTP_4_2_8P8 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.334 +2 -2 + NTP_4_2_8P8 + + packageinfo.sh@1.528 +2 -2 + NTP_4_2_8P8 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.95 +3 -3 + NTP_4_2_8P8 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.96 +2 -2 + NTP_4_2_8P8 + + scripts/calc_tickadj/calc_tickadj.html@1.97 +1 -1 + NTP_4_2_8P8 + + scripts/calc_tickadj/calc_tickadj.man.in@1.94 +3 -3 + NTP_4_2_8P8 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.96 +2 -2 + NTP_4_2_8P8 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.99 +1 -1 + NTP_4_2_8P8 + + scripts/invoke-plot_summary.texi@1.117 +2 -2 + NTP_4_2_8P8 + + scripts/invoke-summary.texi@1.116 +2 -2 + NTP_4_2_8P8 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.326 +2 -2 + NTP_4_2_8P8 + + scripts/ntp-wait/ntp-wait-opts@1.62 +2 -2 + NTP_4_2_8P8 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.323 +3 -3 + NTP_4_2_8P8 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.324 +2 -2 + NTP_4_2_8P8 + + scripts/ntp-wait/ntp-wait.html@1.343 +2 -2 + NTP_4_2_8P8 + + scripts/ntp-wait/ntp-wait.man.in@1.323 +3 -3 + NTP_4_2_8P8 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.324 +2 -2 + NTP_4_2_8P8 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.114 +2 -2 + NTP_4_2_8P8 + + scripts/ntpsweep/ntpsweep-opts@1.64 +2 -2 + NTP_4_2_8P8 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.102 +3 -3 + NTP_4_2_8P8 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.102 +2 -2 + NTP_4_2_8P8 + + scripts/ntpsweep/ntpsweep.html@1.115 +2 -2 + NTP_4_2_8P8 + + scripts/ntpsweep/ntpsweep.man.in@1.102 +3 -3 + NTP_4_2_8P8 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.103 +2 -2 + NTP_4_2_8P8 + + scripts/ntptrace/invoke-ntptrace.texi@1.115 +2 -2 + NTP_4_2_8P8 + + scripts/ntptrace/ntptrace-opts@1.64 +2 -2 + NTP_4_2_8P8 + + scripts/ntptrace/ntptrace.1ntptraceman@1.102 +3 -3 + NTP_4_2_8P8 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.103 +2 -2 + NTP_4_2_8P8 + + scripts/ntptrace/ntptrace.html@1.116 +2 -2 + NTP_4_2_8P8 + + scripts/ntptrace/ntptrace.man.in@1.102 +3 -3 + NTP_4_2_8P8 + + scripts/ntptrace/ntptrace.mdoc.in@1.104 +2 -2 + NTP_4_2_8P8 + + scripts/plot_summary-opts@1.65 +2 -2 + NTP_4_2_8P8 + + scripts/plot_summary.1plot_summaryman@1.115 +3 -3 + NTP_4_2_8P8 + + scripts/plot_summary.1plot_summarymdoc@1.115 +2 -2 + NTP_4_2_8P8 + + scripts/plot_summary.html@1.118 +40 -58 + NTP_4_2_8P8 + + scripts/plot_summary.man.in@1.115 +3 -3 + NTP_4_2_8P8 + + scripts/plot_summary.mdoc.in@1.115 +2 -2 + NTP_4_2_8P8 + + scripts/summary-opts@1.64 +2 -2 + NTP_4_2_8P8 + + scripts/summary.1summaryman@1.114 +3 -3 + NTP_4_2_8P8 + + scripts/summary.1summarymdoc@1.114 +2 -2 + NTP_4_2_8P8 + + scripts/summary.html@1.117 +2 -2 + NTP_4_2_8P8 + + scripts/summary.man.in@1.114 +3 -3 + NTP_4_2_8P8 + + scripts/summary.mdoc.in@1.114 +2 -2 + NTP_4_2_8P8 + + scripts/update-leap/invoke-update-leap.texi@1.15 +1 -1 + NTP_4_2_8P8 + + scripts/update-leap/update-leap-opts@1.15 +2 -2 + NTP_4_2_8P8 + + scripts/update-leap/update-leap.1update-leapman@1.15 +3 -3 + NTP_4_2_8P8 + + scripts/update-leap/update-leap.1update-leapmdoc@1.15 +2 -2 + NTP_4_2_8P8 + + scripts/update-leap/update-leap.html@1.15 +1 -1 + NTP_4_2_8P8 + + scripts/update-leap/update-leap.man.in@1.15 +3 -3 + NTP_4_2_8P8 + + scripts/update-leap/update-leap.mdoc.in@1.15 +2 -2 + NTP_4_2_8P8 + + sntp/invoke-sntp.texi@1.503 +2 -2 + NTP_4_2_8P8 + + sntp/sntp-opts.c@1.522 +7 -7 + NTP_4_2_8P8 + + sntp/sntp-opts.h@1.520 +3 -3 + NTP_4_2_8P8 + + sntp/sntp.1sntpman@1.338 +3 -3 + NTP_4_2_8P8 + + sntp/sntp.1sntpmdoc@1.338 +2 -2 + NTP_4_2_8P8 + + sntp/sntp.html@1.518 +2 -2 + NTP_4_2_8P8 + + sntp/sntp.man.in@1.338 +3 -3 + NTP_4_2_8P8 + + sntp/sntp.mdoc.in@1.338 +2 -2 + NTP_4_2_8P8 + + util/invoke-ntp-keygen.texi@1.506 +2 -2 + NTP_4_2_8P8 + + util/ntp-keygen-opts.c@1.524 +7 -7 + NTP_4_2_8P8 + + util/ntp-keygen-opts.h@1.522 +3 -3 + NTP_4_2_8P8 + + util/ntp-keygen.1ntp-keygenman@1.334 +3 -3 + NTP_4_2_8P8 + + util/ntp-keygen.1ntp-keygenmdoc@1.334 +2 -2 + NTP_4_2_8P8 + + util/ntp-keygen.html@1.180 +2 -2 + NTP_4_2_8P8 + + util/ntp-keygen.man.in@1.334 +3 -3 + NTP_4_2_8P8 + + util/ntp-keygen.mdoc.in@1.334 +2 -2 + NTP_4_2_8P8 + +ChangeSet@1.3685, 2016-06-02 06:50:37-04:00, stenn@deacon.udel.edu + 4.2.8p8 + + packageinfo.sh@1.527 +1 -1 + 4.2.8p8 + +ChangeSet@1.3684, 2016-05-27 08:02:09+00:00, stenn@psp-deb1.ntp.org + typo + + NEWS@1.174 +1 -1 + typo + +ChangeSet@1.3683, 2016-05-27 00:07:22-07:00, harlan@max.pfcs.com + [Bug 3058] fetch_timestamp() mishandles 64-bit alignment. Brian Utterback, JPerlinger, HStenn. + + ChangeLog@1.1833 +2 -0 + [Bug 3058] fetch_timestamp() mishandles 64-bit alignment. Brian Utterback, JPerlinger, HStenn. + + NEWS@1.173 +2 -0 + [Bug 3058] fetch_timestamp() mishandles 64-bit alignment. Brian Utterback, JPerlinger, HStenn. + + ntpd/ntp_io.c@1.417 +41 -41 + [Bug 3058] fetch_timestamp() mishandles 64-bit alignment. Brian Utterback, JPerlinger, HStenn. + +ChangeSet@1.3682, 2016-05-26 22:37:19-07:00, harlan@max.pfcs.com + [Sec3043] - validate origin timestamps on bad MACs, too. stenn@ntp.org + + ChangeLog@1.1832 +2 -1 + [Sec3043] - validate origin timestamps on bad MACs, too. stenn@ntp.org + + NEWS@1.172 +9 -9 + [Sec3043] - validate origin timestamps on bad MACs, too. stenn@ntp.org + + ntpd/ntp_proto.c@1.392 +19 -6 + [Sec3043] - validate origin timestamps on bad MACs, too. stenn@ntp.org + +ChangeSet@1.3681, 2016-05-24 23:31:36+00:00, stenn@psp-deb1.ntp.org + Update the NEWS file for 4.2.8p8. HStenn. + + ChangeLog@1.1831 +1 -0 + Update the NEWS file for 4.2.8p8. HStenn. + + NEWS@1.171 +103 -2 + Update the NEWS file for 4.2.8p8. HStenn. + +ChangeSet@1.3680, 2016-05-24 12:05:06+00:00, stenn@psp-deb1.ntp.org + [Sec 3044] Spoofed server packets are partially processed. HStenn. + + ChangeLog@1.1830 +3 -2 + [Sec 3044] Spoofed server packets are partially processed. HStenn. + + ntpd/ntp_proto.c@1.391 +39 -24 + [Sec 3044] Spoofed server packets are partially processed. HStenn. + +ChangeSet@1.3669.3.2, 2016-05-24 02:58:00-07:00, harlan@hms-mbp11.pfcs.com + Make sure we have an "author" file for git imports. HStenn. + + ChangeLog@1.1820.3.3 +1 -0 + Update the problem tests for MacOS for sntp. HStenn. + + ChangeLog@1.1820.3.2 +1 -0 + Make sure we have an "author" file for git imports. HStenn. + + configure.ac@1.606 +1 -0 + Make sure we have an "author" file for git imports. HStenn. + + scripts/build/Makefile.am@1.5 +1 -1 + Make sure we have an "author" file for git imports. HStenn. + + scripts/build/genAuthors.in@1.1 +82 -0 + BitKeeper file /Users/harlan/src/ntp-stable/scripts/build/genAuthors.in + + scripts/build/genAuthors.in@1.0 +0 -0 + + sntp/configure.ac@1.83 +2 -0 + Make sure we have an "author" file for git imports. HStenn. + + sntp/m4/ntp_problemtests.m4@1.5 +1 -0 + Make sure we have an "author" file for git imports. HStenn. + + sntp/m4/sntp_problemtests.m4@1.1 +47 -0 + BitKeeper file /Users/harlan/src/ntp-stable/sntp/m4/sntp_problemtests.m4 + + sntp/m4/sntp_problemtests.m4@1.0 +0 -0 + + sntp/tests/Makefile.am@1.67 +8 -2 + Update the problem tests for MacOS for sntp. HStenn. + +ChangeSet@1.3669.3.1, 2016-05-24 02:25:46-07:00, harlan@hms-mbp11.pfcs.com + [Sec 3042] Broadcast Interleave. HStenn. + + ChangeLog@1.1820.3.1 +4 -0 + [Sec 3042] Broadcast Interleave. HStenn. + + ntpd/ntp_proto.c@1.386.1.1 +69 -14 + [Sec 3042] Broadcast Interleave. HStenn. + +ChangeSet@1.3678, 2016-05-23 09:53:37+00:00, stenn@psp-deb1.ntp.org + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ChangeLog@1.1828 +1 -1 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + include/ntp.h@1.220 +1 -0 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/complete.conf.in@1.31 +1 -1 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/invoke-ntp.conf.texi@1.199 +23 -3 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/keyword-gen-utd@1.28 +1 -1 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/keyword-gen.c@1.34 +2 -1 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp.conf.5man@1.233 +27 -6 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp.conf.5mdoc@1.233 +24 -2 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp.conf.def@1.24 +22 -0 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp.conf.man.in@1.233 +27 -6 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp.conf.mdoc.in@1.233 +24 -2 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp_config.c@1.338 +6 -2 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp_keyword.h@1.30 +617 -597 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp_parser.c@1.102 +1541 -1773 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp_parser.h@1.66 +294 -306 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp_parser.y@1.92 +2 -0 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + + ntpd/ntp_proto.c@1.389 +29 -8 + [Sec 3043] Autokey association reset. perlinger@ntp.org, stenn@ntp.org + +ChangeSet@1.3671.1.3, 2016-05-17 06:49:41+00:00, stenn@psp-deb1.ntp.org + [Bug 3054] miscopt.html documents the allan intercept in seconds. SWhite. + + ChangeLog@1.1822.1.3 +1 -0 + [Bug 3054] miscopt.html documents the allan intercept in seconds. SWhite. + + html/miscopt.html@1.86 +2 -2 + [Bug 3054] miscopt.html documents the allan intercept in seconds. SWhite. + +ChangeSet@1.3671.1.2, 2016-05-17 04:25:50+00:00, stenn@psp-deb1.ntp.org + [Bug 3052] Add a .gitignore file. Edmund Wong. + + .gitignore@1.1 +9 -0 + BitKeeper file /home/stenn/ntp-stable/.gitignore + + .gitignore@1.0 +0 -0 + + BitKeeper/etc/ignore@1.91 +0 -1 + [Bug 3052] Add a .gitignore file. Edmund Wong. + + ChangeLog@1.1822.1.2 +1 -0 + [Bug 3052] Add a .gitignore file. Edmund Wong. + +ChangeSet@1.3675, 2016-05-08 11:59:28+02:00, perlinger@ntp.org + [Sec 3043] Autokey association reset. perlinger@ntp.org + (fixes [Sec 3044] and [Sec 3045], too) + + ChangeLog@1.1825 +2 -0 + [Sec 3043] Autokey association reset. perlinger@ntp.org + + ntpd/ntp_proto.c@1.388 +28 -22 + [Sec 3043] Autokey association reset. perlinger@ntp.org + (fixes [Sec 3044] and [Sec 3045], too) + +ChangeSet@1.3674, 2016-05-06 11:05:44+00:00, stenn@psp-deb1.ntp.org + [Sec 3046] CRYPTO_NAK crash + + ChangeLog@1.1824 +1 -0 + [Sec 3046] CRYPTO_NAK crash + + ntpd/ntp_proto.c@1.387 +2 -1 + [Sec 3046] CRYPTO_NAK crash + +ChangeSet@1.3669.2.1, 2016-05-06 09:20:29+00:00, stenn@psp-deb1.ntp.org + Fix typo in ntp-wait and plot_summary. HStenn. + + ChangeLog@1.1820.2.1 +4 -0 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/invoke-plot_summary.texi@1.116 +2 -2 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/ntp-wait/ntp-wait.in@1.12 +1 -1 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/plot_summary-opts@1.64 +1 -1 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/plot_summary-opts.def@1.3 +1 -1 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/plot_summary.1plot_summaryman@1.114 +4 -4 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/plot_summary.1plot_summarymdoc@1.114 +3 -3 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/plot_summary.html@1.117 +58 -40 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/plot_summary.man.in@1.114 +4 -4 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/plot_summary.mdoc.in@1.114 +3 -3 + Fix typo in ntp-wait and plot_summary. HStenn. + + scripts/t/ntp-wait.t@1.2 +1 -1 + Fix typo in ntp-wait and plot_summary. HStenn. + +ChangeSet@1.3672, 2016-05-05 06:17:20+00:00, stenn@psp-deb1.ntp.org + Update NEWS file for 4.2.8p9 for Bug 3038 + + NEWS@1.170 +9 -0 + Update NEWS file for 4.2.8p9 for Bug 3038 + +ChangeSet@1.3671, 2016-05-05 06:09:53+00:00, stenn@psp-deb1.ntp.org + trivial cleanup + + ChangeLog@1.1822 +1 -0 + trivial cleanup + +ChangeSet@1.3670, 2016-04-27 21:54:12+02:00, perlinger@ntp.org + [Bug 3038] NTP fails to build in VS2015 Community Edition + - new build environment + - 'wint_t' and 'struct timespec' defined by VS2015 + - fixed several format clashes in 'printf()' and 'scanf' + + BitKeeper/etc/ignore@1.90 +1 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - skip next version of MSVC symbol database + + ChangeLog@1.1821 +6 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + + ntpd/refclock_parse.c@1.83 +6 -6 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - work around clash SOCKET vs file descriptor formatting + + ntpdc/ntpdc.c@1.107 +2 -2 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - fix format warnings/errors + + ntpq/ntpq.c@1.170 +5 -2 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - fix format warnings/errors + + ports/winnt/include/config.h@1.115 +4 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - VS2015 has 'wint_t' + + ports/winnt/include/sys/time.h@1.9 +2 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - VS2015 has 'struct timespec' + + ports/winnt/libntp/termios.c@1.33 +3 -3 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - fix format parsing error + + ports/winnt/ppsapi/loopback/src/sys/time.h@1.2 +2 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - VS2015 has 'struct timespec' + + ports/winnt/vs2013/common.props@1.3 +1 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + -enable multiprocessor build + + ports/winnt/vs2015/common.props@1.1 +60 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/common.props@1.0 +0 -0 + + ports/winnt/vs2015/debug-x64.props@1.1 +24 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/debug-x64.props@1.0 +0 -0 + + ports/winnt/vs2015/debug.props@1.1 +24 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/debug.props@1.0 +0 -0 + + ports/winnt/vs2015/instsrv/instsrv.vcxproj@1.1 +269 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/instsrv/instsrv.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/instsrv/instsrv.vcxproj.filters@1.1 +28 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/instsrv/instsrv.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/libntp/libntp.vcxproj@1.1 +431 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/libntp/libntp.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/libntp/libntp.vcxproj.filters@1.1 +574 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/libntp/libntp.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/loopback-pps/loopback-ppsapi-provider.vcxproj@1.1 +252 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/loopback-pps/loopback-ppsapi-provider.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/loopback-pps/loopback-ppsapi-provider.vcxproj.filters@1.1 +39 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/loopback-pps/loopback-ppsapi-provider.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/ntp-keygen/ntp-keygen.vcxproj@1.1 +270 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntp-keygen/ntp-keygen.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/ntp-keygen/ntp-keygen.vcxproj.filters@1.1 +36 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntp-keygen/ntp-keygen.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/ntp.sln@1.1 +166 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntp.sln@1.0 +0 -0 + + ports/winnt/vs2015/ntpd-keyword-gen/ntpd-keyword-gen.vcxproj@1.1 +227 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpd-keyword-gen/ntpd-keyword-gen.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/ntpd-keyword-gen/ntpd-keyword-gen.vcxproj.filters@1.1 +69 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpd-keyword-gen/ntpd-keyword-gen.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/ntpd/gen-ntp_keyword.bat@1.1 +53 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpd/gen-ntp_keyword.bat@1.0 +0 -0 + + ports/winnt/vs2015/ntpd/ntpd.vcxproj@1.1 +515 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpd/ntpd.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/ntpd/ntpd.vcxproj.filters@1.1 +556 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpd/ntpd.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/ntpdate/ntpdate.vcxproj@1.1 +287 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpdate/ntpdate.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/ntpdate/ntpdate.vcxproj.filters@1.1 +72 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpdate/ntpdate.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/ntpdc/ntpdc.vcxproj@1.1 +278 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpdc/ntpdc.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/ntpdc/ntpdc.vcxproj.filters@1.1 +45 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpdc/ntpdc.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/ntpq/ntpq.vcxproj@1.1 +277 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpq/ntpq.vcxproj@1.0 +0 -0 + + ports/winnt/vs2015/ntpq/ntpq.vcxproj.filters@1.1 +42 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/ntpq/ntpq.vcxproj.filters@1.0 +0 -0 + + ports/winnt/vs2015/release-x64.props@1.1 +25 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/release-x64.props@1.0 +0 -0 + + ports/winnt/vs2015/release.props@1.1 +25 -0 + [Bug 3038] NTP fails to build in VS2015 Community Edition + - add build environment + + ports/winnt/vs2015/release.props@1.0 +0 -0 + ChangeSet@1.3669, 2016-04-26 20:30:51-04:00, stenn@deacon.udel.edu NTP_4_2_8P7 TAG: NTP_4_2_8P7 diff --git a/contrib/ntp/NEWS b/contrib/ntp/NEWS index 1edaf5dda..fd2551cf4 100644 --- a/contrib/ntp/NEWS +++ b/contrib/ntp/NEWS @@ -1,3 +1,115 @@ +--- +NTP 4.2.8p8 (Harlan Stenn , 2016/06/02) + +Focus: Security, Bug fixes, enhancements. + +Severity: HIGH + +In addition to bug fixes and enhancements, this release fixes the +following 1 high- and 4 low-severity vulnerabilities: + +* CRYPTO_NAK crash + Date Resolved: 02 June 2016; Dev (4.3.93) 02 June 2016 + References: Sec 3046 / CVE-2016-4957 / VU#321640 + Affects: ntp-4.2.8p7, and ntp-4.3.92. + CVSS2: HIGH 7.8 (AV:N/AC:L/Au:N/C:N/I:N/A:C) + CVSS3: HIGH 7.5 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + Summary: The fix for Sec 3007 in ntp-4.2.8p7 contained a bug that + could cause ntpd to crash. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p8, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + If you cannot upgrade from 4.2.8p7, the only other alternatives + are to patch your code or filter CRYPTO_NAK packets. + Properly monitor your ntpd instances, and auto-restart ntpd + (without -g) if it stops running. + Credit: This weakness was discovered by Nicolas Edet of Cisco. + +* Bad authentication demobilizes ephemeral associations + Date Resolved: 02 June 2016; Dev (4.3.93) 02 June 2016 + References: Sec 3045 / CVE-2016-4953 / VU#321640 + Affects: ntp-4, up to but not including ntp-4.2.8p8, and + ntp-4.3.0 up to, but not including ntp-4.3.93. + CVSS2: LOW 2.6 (AV:N/AC:H/Au:N/C:N/I:N/A:P) + CVSS3: LOW 3.7 CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L + Summary: An attacker who knows the origin timestamp and can send a + spoofed packet containing a CRYPTO-NAK to an ephemeral peer + target before any other response is sent can demobilize that + association. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p8, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances. + Credit: This weakness was discovered by Miroslav Lichvar of Red Hat. + +* Processing spoofed server packets + Date Resolved: 02 June 2016; Dev (4.3.93) 02 June 2016 + References: Sec 3044 / CVE-2016-4954 / VU#321640 + Affects: ntp-4, up to but not including ntp-4.2.8p8, and + ntp-4.3.0 up to, but not including ntp-4.3.93. + CVSS2: LOW 2.6 (AV:N/AC:H/Au:N/C:N/I:N/A:P) + CVSS3: LOW 3.7 CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L + Summary: An attacker who is able to spoof packets with correct origin + timestamps from enough servers before the expected response + packets arrive at the target machine can affect some peer + variables and, for example, cause a false leap indication to be set. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p8, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances. + Credit: This weakness was discovered by Jakub Prokes of Red Hat. + +* Autokey association reset + Date Resolved: 02 June 2016; Dev (4.3.93) 02 June 2016 + References: Sec 3043 / CVE-2016-4955 / VU#321640 + Affects: ntp-4, up to but not including ntp-4.2.8p8, and + ntp-4.3.0 up to, but not including ntp-4.3.93. + CVSS2: LOW 2.6 (AV:N/AC:H/Au:N/C:N/I:N/A:P) + CVSS3: LOW 3.7 CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L + Summary: An attacker who is able to spoof a packet with a correct + origin timestamp before the expected response packet arrives at + the target machine can send a CRYPTO_NAK or a bad MAC and cause + the association's peer variables to be cleared. If this can be + done often enough, it will prevent that association from working. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p8, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances. + Credit: This weakness was discovered by Miroslav Lichvar of Red Hat. + +* Broadcast interleave + Date Resolved: 02 June 2016; Dev (4.3.93) 02 June 2016 + References: Sec 3042 / CVE-2016-4956 / VU#321640 + Affects: ntp-4, up to but not including ntp-4.2.8p8, and + ntp-4.3.0 up to, but not including ntp-4.3.93. + CVSS2: LOW 2.6 (AV:N/AC:H/Au:N/C:N/I:N/A:P) + CVSS3: LOW 3.7 CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L + Summary: The fix for NtpBug2978 does not cover broadcast associations, + so broadcast clients can be triggered to flip into interleave mode. + Mitigation: + Implement BCP-38. + Upgrade to 4.2.8p8, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Properly monitor your ntpd instances. + Credit: This weakness was discovered by Miroslav Lichvar of Red Hat. + +Other fixes: +* [Bug 3038] NTP fails to build in VS2015. perlinger@ntp.org + - provide build environment + - 'wint_t' and 'struct timespec' defined by VS2015 + - fixed print()/scanf() format issues +* [Bug 3052] Add a .gitignore file. Edmund Wong. +* [Bug 3054] miscopt.html documents the allan intercept in seconds. SWhite. +* [Bug 3058] fetch_timestamp() mishandles 64-bit alignment. Brian Utterback, + JPerlinger, HStenn. +* Fix typo in ntp-wait and plot_summary. HStenn. +* Make sure we have an "author" file for git imports. HStenn. +* Update the sntp problem tests for MacOS. HStenn. + --- NTP 4.2.8p7 (Harlan Stenn , 2016/04/26) diff --git a/contrib/ntp/configure b/contrib/ntp/configure index 463947622..c38e7eb5e 100755 --- a/contrib/ntp/configure +++ b/contrib/ntp/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ntp 4.2.8p7. +# Generated by GNU Autoconf 2.69 for ntp 4.2.8p8. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ntp' PACKAGE_TARNAME='ntp' -PACKAGE_VERSION='4.2.8p7' -PACKAGE_STRING='ntp 4.2.8p7' +PACKAGE_VERSION='4.2.8p8' +PACKAGE_STRING='ntp 4.2.8p8' PACKAGE_BUGREPORT='http://bugs.ntp.org./' PACKAGE_URL='http://www.ntp.org./' @@ -1618,7 +1618,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ntp 4.2.8p7 to adapt to many kinds of systems. +\`configure' configures ntp 4.2.8p8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1688,7 +1688,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ntp 4.2.8p7:";; + short | recursive ) echo "Configuration of ntp 4.2.8p8:";; esac cat <<\_ACEOF @@ -1924,7 +1924,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ntp configure 4.2.8p7 +ntp configure 4.2.8p8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2754,7 +2754,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ntp $as_me 4.2.8p7, which was +It was created by ntp $as_me 4.2.8p8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3755,7 +3755,7 @@ fi # Define the identity of the package. PACKAGE='ntp' - VERSION='4.2.8p7' + VERSION='4.2.8p8' cat >>confdefs.h <<_ACEOF @@ -37251,6 +37251,7 @@ fi + ### @@ -37309,6 +37310,8 @@ ac_config_files="$ac_config_files scripts/Makefile" ac_config_files="$ac_config_files scripts/build/Makefile" +ac_config_files="$ac_config_files scripts/build/genAuthors" + ac_config_files="$ac_config_files scripts/build/mkver" ac_config_files="$ac_config_files scripts/calc_tickadj/Makefile" @@ -38000,7 +38003,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ntp $as_me 4.2.8p7, which was +This file was extended by ntp $as_me 4.2.8p8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -38067,7 +38070,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ntp config.status 4.2.8p7 +ntp config.status 4.2.8p8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -38595,6 +38598,7 @@ do "parseutil/Makefile") CONFIG_FILES="$CONFIG_FILES parseutil/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "scripts/build/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/build/Makefile" ;; + "scripts/build/genAuthors") CONFIG_FILES="$CONFIG_FILES scripts/build/genAuthors" ;; "scripts/build/mkver") CONFIG_FILES="$CONFIG_FILES scripts/build/mkver" ;; "scripts/calc_tickadj/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/calc_tickadj/Makefile" ;; "scripts/calc_tickadj/calc_tickadj") CONFIG_FILES="$CONFIG_FILES scripts/calc_tickadj/calc_tickadj" ;; @@ -40149,6 +40153,7 @@ _LT_EOF ;; "ntpd/complete.conf":F) sed -e '/^rlimit$/d' -e '/^$/d' < ntpd/complete.conf > ntpd/complete.conf.new && mv ntpd/complete.conf.new ntpd/complete.conf ;; "ntpdc/nl.pl":F) chmod +x ntpdc/nl.pl ;; + "scripts/build/genAuthors":F) chmod +x scripts/build/genAuthors ;; "scripts/build/mkver":F) chmod +x scripts/build/mkver ;; "scripts/calc_tickadj/calc_tickadj":F) chmod +x scripts/calc_tickadj/calc_tickadj ;; "scripts/ntp-wait/ntp-wait":F) chmod +x scripts/ntp-wait/ntp-wait ;; diff --git a/contrib/ntp/configure.ac b/contrib/ntp/configure.ac index caba8f688..a34ed6d83 100644 --- a/contrib/ntp/configure.ac +++ b/contrib/ntp/configure.ac @@ -4397,6 +4397,7 @@ AC_CONFIG_FILES([ntpsnmpd/Makefile]) AC_CONFIG_FILES([parseutil/Makefile]) AC_CONFIG_FILES([scripts/Makefile]) AC_CONFIG_FILES([scripts/build/Makefile]) +AC_CONFIG_FILES([scripts/build/genAuthors], [chmod +x scripts/build/genAuthors]) AC_CONFIG_FILES([scripts/build/mkver], [chmod +x scripts/build/mkver]) AC_CONFIG_FILES([scripts/calc_tickadj/Makefile]) AC_CONFIG_FILES([scripts/calc_tickadj/calc_tickadj], [chmod +x scripts/calc_tickadj/calc_tickadj]) diff --git a/contrib/ntp/html/miscopt.html b/contrib/ntp/html/miscopt.html index bc520f60a..bf4cfbfdb 100644 --- a/contrib/ntp/html/miscopt.html +++ b/contrib/ntp/html/miscopt.html @@ -11,7 +11,7 @@ giffrom Pogo, Walt Kelly

We have three, now looking for more.

Last update: - 16-Jan-2016 13:08 + 17-May-2016 06:26 UTC


Related Links

@@ -129,7 +129,7 @@
allan allan
-
Specifies the Allan intercept, which is a parameter of the PLL/FLL clock discipline algorithm, in seconds with default 1500 s.
+
Specifies the Allan intercept, which is a parameter of the PLL/FLL clock discipline algorithm, in log2 seconds with default 11 (2048 s).
dispersion dispersion
Specifies the dispersion increase rate in parts-per-million (PPM) with default 15 PPM.
freq freq
diff --git a/contrib/ntp/include/ntp.h b/contrib/ntp/include/ntp.h index cad300394..84c30d9fe 100644 --- a/contrib/ntp/include/ntp.h +++ b/contrib/ntp/include/ntp.h @@ -723,6 +723,7 @@ struct pkt { #define PROTO_UECRYPTO 29 #define PROTO_UECRYPTONAK 30 #define PROTO_UEDIGEST 31 +#define PROTO_PCEDIGEST 32 /* * Configuration items for the loop filter diff --git a/contrib/ntp/ntpd/complete.conf.in b/contrib/ntp/ntpd/complete.conf.in index 747a48f2f..2c547fac7 100644 --- a/contrib/ntp/ntpd/complete.conf.in +++ b/contrib/ntp/ntpd/complete.conf.in @@ -25,7 +25,7 @@ trustedkey 1 2 3 4 5 6 7 8 9 10 11 12 (14 ... 16) 18 (32768 ... 65534) controlkey 12 requestkey 12 enable auth ntp monitor stats -disable bclient calibrate kernel mode7 +disable bclient calibrate kernel mode7 peer_clear_digest_early unpeer_crypto_early unpeer_crypto_nak_early unpeer_digest_early tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300 rlimit@HAVE_RLIMIT_MEMLOCK@@HAVE_RLIMIT_STACK@ tinker allan 1500 dispersion 15 freq 0 huffpuff 7200 panic 1000 step 0.128 stepout 900 tick 0.01 diff --git a/contrib/ntp/ntpd/invoke-ntp.conf.texi b/contrib/ntp/ntpd/invoke-ntp.conf.texi index fa8e87afe..7efeceebb 100644 --- a/contrib/ntp/ntpd/invoke-ntp.conf.texi +++ b/contrib/ntp/ntpd/invoke-ntp.conf.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.conf.texi) # -# It has been AutoGen-ed April 26, 2016 at 08:28:27 PM by AutoGen 5.18.5 +# It has been AutoGen-ed June 2, 2016 at 07:36:07 AM by AutoGen 5.18.5 # From the definitions ntp.conf.def # and the template file agtexi-file.tpl @end ignore @@ -2335,8 +2335,8 @@ otherwise, should be avoided. This option specifies the Differentiated Services Control Point (DSCP) value, a 6-bit code. The default value is 46, signifying Expedited Forwarding. -@item @code{enable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]} -@item @code{disable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]} +@item @code{enable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{peer_clear_digest_early} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]} +@item @code{disable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats} | @code{peer_clear_digest_early} | @code{unpeer_crypto_early} | @code{unpeer_crypto_nak_early} | @code{unpeer_digest_early}]} Provides a way to enable or disable various server options. Flags not mentioned are unaffected. Note that all of these flags @@ -2401,6 +2401,26 @@ closes the feedback loop, which is useful for testing. The default for this flag is @code{enable}. +@item @code{peer_clear_digest_early} +By default, if +@code{ntpd(1ntpdmdoc)} +is using autokey and it +receives a crypto-NAK packet that +passes the duplicate packet and origin timestamp checks +the peer variables are immediately cleared. +While this is generally a feature +as it allows for quick recovery if a server key has changed, +a properly forged and appropriately delivered crypto-NAK packet +can be used in a DoS attack. +If you have active noticable problems with this type of DoS attack +then you should consider +disabling this option. +You can check your +@code{peerstats} +file for evidence of any of these attacks. +The +default for this flag is +@code{enable}. @item @code{stats} Enables the statistics facility. See the diff --git a/contrib/ntp/ntpd/invoke-ntp.keys.texi b/contrib/ntp/ntpd/invoke-ntp.keys.texi index c3b83552b..8585e65b6 100644 --- a/contrib/ntp/ntpd/invoke-ntp.keys.texi +++ b/contrib/ntp/ntpd/invoke-ntp.keys.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.keys.texi) # -# It has been AutoGen-ed April 26, 2016 at 08:28:30 PM by AutoGen 5.18.5 +# It has been AutoGen-ed June 2, 2016 at 07:36:10 AM by AutoGen 5.18.5 # From the definitions ntp.keys.def # and the template file agtexi-file.tpl @end ignore diff --git a/contrib/ntp/ntpd/invoke-ntpd.texi b/contrib/ntp/ntpd/invoke-ntpd.texi index 8856d369a..7c1275ab7 100644 --- a/contrib/ntp/ntpd/invoke-ntpd.texi +++ b/contrib/ntp/ntpd/invoke-ntpd.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpd.texi) # -# It has been AutoGen-ed April 26, 2016 at 08:28:32 PM by AutoGen 5.18.5 +# It has been AutoGen-ed June 2, 2016 at 07:36:12 AM by AutoGen 5.18.5 # From the definitions ntpd-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -142,7 +142,7 @@ with a status code of 0. @exampleindent 0 @example -ntpd - NTP daemon program - Ver. 4.2.8p7 +ntpd - NTP daemon program - Ver. 4.2.8p8 Usage: ntpd [ - [] | --[@{=| @}] ]... \ [ ... ] Flg Arg Option-Name Description diff --git a/contrib/ntp/ntpd/keyword-gen-utd b/contrib/ntp/ntpd/keyword-gen-utd index 99c72201e..69665c2d8 100644 --- a/contrib/ntp/ntpd/keyword-gen-utd +++ b/contrib/ntp/ntpd/keyword-gen-utd @@ -1 +1 @@ - * Generated 2016-01-16 08:33:03 UTC diff_ignore_line + * Generated 2016-05-19 06:35:34 UTC diff_ignore_line diff --git a/contrib/ntp/ntpd/keyword-gen.c b/contrib/ntp/ntpd/keyword-gen.c index 2e7f62129..648b3ae01 100644 --- a/contrib/ntp/ntpd/keyword-gen.c +++ b/contrib/ntp/ntpd/keyword-gen.c @@ -199,8 +199,9 @@ struct key_tok ntp_keywords[] = { { "bclient", T_Bclient, FOLLBY_TOKEN }, { "calibrate", T_Calibrate, FOLLBY_TOKEN }, { "kernel", T_Kernel, FOLLBY_TOKEN }, -{ "ntp", T_Ntp, FOLLBY_TOKEN }, { "mode7", T_Mode7, FOLLBY_TOKEN }, +{ "ntp", T_Ntp, FOLLBY_TOKEN }, +{ "peer_clear_digest_early", T_PCEdigest, FOLLBY_TOKEN }, { "stats", T_Stats, FOLLBY_TOKEN }, { "unpeer_crypto_early", T_UEcrypto, FOLLBY_TOKEN }, { "unpeer_crypto_nak_early", T_UEcryptonak, FOLLBY_TOKEN }, diff --git a/contrib/ntp/ntpd/ntp.conf.5man b/contrib/ntp/ntpd/ntp.conf.5man index 7804902b3..b3fc3d80e 100644 --- a/contrib/ntp/ntpd/ntp.conf.5man +++ b/contrib/ntp/ntpd/ntp.conf.5man @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp.conf 5man "26 Apr 2016" "4.2.8p7" "File Formats" +.TH ntp.conf 5man "02 Jun 2016" "4.2.8p8" "File Formats" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-ana4jE/ag-QnaWiE) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OzaOIT/ag-3zaGHT) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:14 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:35:50 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agman-cmd.tpl .SH NAME @@ -2618,9 +2618,9 @@ This option specifies the Differentiated Services Control Point (DSCP) value, a 6-bit code. The default value is 46, signifying Expedited Forwarding. .TP 7 -.NOP \f\*[B-Font]enable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] +.NOP \f\*[B-Font]enable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]peer_clear_digest_early\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] .TP 7 -.NOP \f\*[B-Font]disable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] +.NOP \f\*[B-Font]disable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]peer_clear_digest_early\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] Provides a way to enable or disable various server options. Flags not mentioned are unaffected. Note that all of these flags @@ -2693,6 +2693,27 @@ The default for this flag is \f\*[B-Font]enable\f[]. .TP 7 +.NOP \f\*[B-Font]peer_clear_digest_early\f[] +By default, if +\fCntpd\f[]\fR(1ntpdmdoc)\f[] +is using autokey and it +receives a crypto-NAK packet that +passes the duplicate packet and origin timestamp checks +the peer variables are immediately cleared. +While this is generally a feature +as it allows for quick recovery if a server key has changed, +a properly forged and appropriately delivered crypto-NAK packet +can be used in a DoS attack. +If you have active noticable problems with this type of DoS attack +then you should consider +disabling this option. +You can check your +\f\*[B-Font]peerstats\f[] +file for evidence of any of these attacks. +The +default for this flag is +\f\*[B-Font]enable\f[]. +.TP 7 .NOP \f\*[B-Font]stats\f[] Enables the statistics facility. See the diff --git a/contrib/ntp/ntpd/ntp.conf.5mdoc b/contrib/ntp/ntpd/ntp.conf.5mdoc index c6c7e6c9a..21806bc2e 100644 --- a/contrib/ntp/ntpd/ntp.conf.5mdoc +++ b/contrib/ntp/ntpd/ntp.conf.5mdoc @@ -1,9 +1,9 @@ -.Dd April 26 2016 +.Dd June 2 2016 .Dt NTP_CONF 5mdoc File Formats .Os .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:36 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:36:16 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -2440,6 +2440,7 @@ The default value is 46, signifying Expedited Forwarding. .Cm calibrate | Cm kernel | .Cm mode7 | Cm monitor | .Cm ntp | Cm stats | +.Cm peer_clear_digest_early | .Cm unpeer_crypto_early | Cm unpeer_crypto_nak_early | Cm unpeer_digest_early .Oc .Xc @@ -2449,6 +2450,7 @@ The default value is 46, signifying Expedited Forwarding. .Cm calibrate | Cm kernel | .Cm mode7 | Cm monitor | .Cm ntp | Cm stats | +.Cm peer_clear_digest_early | .Cm unpeer_crypto_early | Cm unpeer_crypto_nak_early | Cm unpeer_digest_early .Oc .Xc @@ -2516,6 +2518,26 @@ closes the feedback loop, which is useful for testing. The default for this flag is .Ic enable . +.It Cm peer_clear_digest_early +By default, if +.Xr ntpd 1ntpdmdoc +is using autokey and it +receives a crypto\-NAK packet that +passes the duplicate packet and origin timestamp checks +the peer variables are immediately cleared. +While this is generally a feature +as it allows for quick recovery if a server key has changed, +a properly forged and appropriately delivered crypto\-NAK packet +can be used in a DoS attack. +If you have active noticable problems with this type of DoS attack +then you should consider +disabling this option. +You can check your +.Cm peerstats +file for evidence of any of these attacks. +The +default for this flag is +.Ic enable . .It Cm stats Enables the statistics facility. See the diff --git a/contrib/ntp/ntpd/ntp.conf.def b/contrib/ntp/ntpd/ntp.conf.def index 4993e0215..a62e97650 100644 --- a/contrib/ntp/ntpd/ntp.conf.def +++ b/contrib/ntp/ntpd/ntp.conf.def @@ -2442,6 +2442,7 @@ The default value is 46, signifying Expedited Forwarding. .Cm calibrate | Cm kernel | .Cm mode7 | Cm monitor | .Cm ntp | Cm stats | +.Cm peer_clear_digest_early | .Cm unpeer_crypto_early | Cm unpeer_crypto_nak_early | Cm unpeer_digest_early .Oc .Xc @@ -2451,6 +2452,7 @@ The default value is 46, signifying Expedited Forwarding. .Cm calibrate | Cm kernel | .Cm mode7 | Cm monitor | .Cm ntp | Cm stats | +.Cm peer_clear_digest_early | .Cm unpeer_crypto_early | Cm unpeer_crypto_nak_early | Cm unpeer_digest_early .Oc .Xc @@ -2518,6 +2520,26 @@ closes the feedback loop, which is useful for testing. The default for this flag is .Ic enable . +.It Cm peer_clear_digest_early +By default, if +.Xr ntpd 1ntpdmdoc +is using autokey and it +receives a crypto-NAK packet that +passes the duplicate packet and origin timestamp checks +the peer variables are immediately cleared. +While this is generally a feature +as it allows for quick recovery if a server key has changed, +a properly forged and appropriately delivered crypto-NAK packet +can be used in a DoS attack. +If you have active noticable problems with this type of DoS attack +then you should consider +disabling this option. +You can check your +.Cm peerstats +file for evidence of any of these attacks. +The +default for this flag is +.Ic enable . .It Cm stats Enables the statistics facility. See the diff --git a/contrib/ntp/ntpd/ntp.conf.html b/contrib/ntp/ntpd/ntp.conf.html index c7f1b7479..2f0db057b 100644 --- a/contrib/ntp/ntpd/ntp.conf.html +++ b/contrib/ntp/ntpd/ntp.conf.html @@ -33,7 +33,7 @@ Up: (dir)

This document describes the configuration file for the NTP Project's ntpd program. -

This document applies to version 4.2.8p7 of ntp.conf. +

This document applies to version 4.2.8p8 of ntp.conf.

Short Contents

@@ -167,8 +167,14 @@ in some weird and even destructive behavior.

If the Basic Socket Interface Extensions for IPv6 (RFC-2553) is detected, support for the IPv6 address family is generated in addition to the default support of the IPv4 address family. -In a few cases, including the reslist billboard generated -by ntpdc, IPv6 addresses are automatically generated. +In a few cases, including the +reslist +billboard generated +by +ntpq(1ntpqmdoc) +or +ntpdc(1ntpdcmdoc), +IPv6 addresses are automatically generated. IPv6 addresses can be identified by the presence of colons : in the address field. @@ -187,7 +193,7 @@ qualifier forces DNS resolution to the IPv6 namespace. See IPv6 references for the equivalent classes for that address family.

-
pool address [burst] [iburst] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll]
server address [key key | autokey] [burst] [iburst] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll]
peer address [key key | autokey] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll]
broadcast address [key key | autokey] [version version] [prefer] [minpoll minpoll] [ttl ttl]
manycastclient address [key key | autokey] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll] [ttl ttl]
+
pool address [burst] [iburst] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll]
server address [key key | autokey] [burst] [iburst] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll] [true]
peer address [key key | autokey] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll] [true] [xleave]
broadcast address [key key | autokey] [version version] [prefer] [minpoll minpoll] [ttl ttl] [xleave]
manycastclient address [key key | autokey] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll] [ttl ttl]

These five commands specify the time server name or address to be used and the mode in which to operate. @@ -341,6 +347,7 @@ option to a lower limit of 4 (16 s). The server is discarded by the selection algroithm.

preempt
Says the association can be preempted.
true
Marks the server as a truechimer. +Use this option only for testing.
prefer
Marks the server as preferred. All other things being equal, this host will be chosen for synchronization among a set of @@ -352,6 +359,10 @@ page provided in /usr/share/doc/ntp) for further information. +
true
Forces the association to always survive the selection and clustering algorithms. +This option should almost certainly +only +be used while testing an association.
ttl ttl
This option is used only with broadcast server and manycast client modes. It specifies the time-to-live @@ -523,7 +534,7 @@ and commands and also by remote configuration commands sent by a ntpdc(1ntpdcmdoc) -program running in +program running on another machine. If this flag is enabled, which is the default case, new broadcast client and symmetric passive associations and @@ -709,7 +720,7 @@ using the host name, network address and public keys, all of which are bound together by the protocol specifically to deflect masquerade attacks. For this reason Autokey -includes the source and destinatino IP addresses in message digest +includes the source and destination IP addresses in message digest computations and so the same addresses must be available at both the server and client. For this reason operation @@ -895,8 +906,8 @@ This overrides the link ntpkey_key_hostname in the keys directory. -
iffpar file
Specifies the location of the optional IFF parameters file.This -overrides the link +
iffpar file
Specifies the location of the optional IFF parameters file. +This overrides the link ntpkey_iff_hostname in the keys directory.
leap file
Specifies the location of the optional leapsecond file. @@ -904,8 +915,7 @@ This overrides the link ntpkey_leap in the keys directory.
mvpar file
Specifies the location of the optional MV parameters file. -This -overrides the link +This overrides the link ntpkey_mv_hostname in the keys directory.
pw password
Specifies the password to decrypt files containing private keys and @@ -1033,7 +1043,7 @@ supported. Statistic files are managed using file generation sets and scripts in the ./scripts -directory of this distribution. +directory of the source code distribution. Using these facilities and unix @@ -1331,7 +1341,9 @@ When there is already a file with this name and the number of links of this file is one, it is renamed appending a dot, the letter C, -and the pid of the ntpd server process. +and the pid of the +ntpd(1ntpdmdoc) +server process. When the number of links is greater than one, the file is unlinked. This @@ -1392,9 +1404,9 @@ at abusive rates. Some violations cause denied service only for the offending packet, others cause denied service for a timed period and others cause the denied service for -an indefinate period. +an indefinite period. When a client or network is denied access -for an indefinate period, the only way at present to remove +for an indefinite period, the only way at present to remove the restrictions is by restarting the server.
The Kiss-of-Death Packet
@@ -1560,7 +1572,9 @@ and queries.
notrap
Decline to provide mode 6 control message trap service to matching hosts. -The trap service is a subsystem of the ntpdq control message +The trap service is a subsystem of the +ntpq(1ntpqmdoc) +control message protocol which is intended for use by remote event logging programs.
notrust
Deny service unless the packet is cryptographically authenticated.
ntpport
This is actually a match algorithm modifier, rather than a @@ -2309,8 +2323,9 @@ must have write permission for the directory the drift file is located in, and that file system links, symbolic or otherwise, should be avoided.
dscp value
This option specifies the Differentiated Services Control Point (DSCP) value, -a 6-bit code. The default value is 46, signifying Expedited Forwarding. -
enable [auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats | unpeer_crypto_early | unpeer_crypto_nak_early | unpeer_digest_early]
disable [auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats | unpeer_crypto_early | unpeer_crypto_nak_early | unpeer_digest_early]
Provides a way to enable or disable various server options. +a 6-bit code. +The default value is 46, signifying Expedited Forwarding. +
enable [auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats | peer_clear_digest_early | unpeer_crypto_early | unpeer_crypto_nak_early | unpeer_digest_early]
disable [auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats | peer_clear_digest_early | unpeer_crypto_early | unpeer_crypto_nak_early | unpeer_digest_early]
Provides a way to enable or disable various server options. Flags not mentioned are unaffected. Note that all of these flags can be controlled remotely using the @@ -2367,6 +2382,25 @@ closes the feedback loop, which is useful for testing. The default for this flag is enable. +
peer_clear_digest_early
By default, if +ntpd(1ntpdmdoc) +is using autokey and it +receives a crypto-NAK packet that +passes the duplicate packet and origin timestamp checks +the peer variables are immediately cleared. +While this is generally a feature +as it allows for quick recovery if a server key has changed, +a properly forged and appropriately delivered crypto-NAK packet +can be used in a DoS attack. +If you have active noticable problems with this type of DoS attack +then you should consider +disabling this option. +You can check your +peerstats +file for evidence of any of these attacks. +The +default for this flag is +enable.
stats
Enables the statistics facility. See the Monitoring Options @@ -2502,7 +2536,8 @@ A message class may also be followed by the all keyword to enable/disable all -messages of the respective message class.Thus, a minimal log configuration +messages of the respective message class. +Thus, a minimal log configuration could look like this:
     
      logconfig =syncstatus +sysevents
@@ -2641,7 +2676,8 @@ The default is 32 megabytes on non-Linux machines, and -1 under Linux.
 mlockall()
 function. 
 Defaults to 50 4k pages (200 4k pages in OpenBSD). 
-
filenum Nfiledescriptors
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default. +
filenum Nfiledescriptors
Specifies the maximum number of file descriptors ntpd may have open at once. +Defaults to the system default.
trap host_address [port port_number] [interface interface_address]
This command configures a trap receiver at the given host address and port number for sending messages with the specified diff --git a/contrib/ntp/ntpd/ntp.conf.man.in b/contrib/ntp/ntpd/ntp.conf.man.in index 98b37bc0c..8b794da8d 100644 --- a/contrib/ntp/ntpd/ntp.conf.man.in +++ b/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 "26 Apr 2016" "4.2.8p7" "File Formats" +.TH ntp.conf 5 "02 Jun 2016" "4.2.8p8" "File Formats" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-ana4jE/ag-QnaWiE) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OzaOIT/ag-3zaGHT) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:14 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:35:50 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agman-cmd.tpl .SH NAME @@ -2618,9 +2618,9 @@ This option specifies the Differentiated Services Control Point (DSCP) value, a 6-bit code. The default value is 46, signifying Expedited Forwarding. .TP 7 -.NOP \f\*[B-Font]enable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] +.NOP \f\*[B-Font]enable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]peer_clear_digest_early\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] .TP 7 -.NOP \f\*[B-Font]disable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] +.NOP \f\*[B-Font]disable\f[] [\f\*[B-Font]auth\f[] | \f\*[B-Font]bclient\f[] | \f\*[B-Font]calibrate\f[] | \f\*[B-Font]kernel\f[] | \f\*[B-Font]mode7\f[] | \f\*[B-Font]monitor\f[] | \f\*[B-Font]ntp\f[] | \f\*[B-Font]stats\f[] | \f\*[B-Font]peer_clear_digest_early\f[] | \f\*[B-Font]unpeer_crypto_early\f[] | \f\*[B-Font]unpeer_crypto_nak_early\f[] | \f\*[B-Font]unpeer_digest_early\f[]] Provides a way to enable or disable various server options. Flags not mentioned are unaffected. Note that all of these flags @@ -2693,6 +2693,27 @@ The default for this flag is \f\*[B-Font]enable\f[]. .TP 7 +.NOP \f\*[B-Font]peer_clear_digest_early\f[] +By default, if +\fCntpd\f[]\fR(@NTPD_MS@)\f[] +is using autokey and it +receives a crypto-NAK packet that +passes the duplicate packet and origin timestamp checks +the peer variables are immediately cleared. +While this is generally a feature +as it allows for quick recovery if a server key has changed, +a properly forged and appropriately delivered crypto-NAK packet +can be used in a DoS attack. +If you have active noticable problems with this type of DoS attack +then you should consider +disabling this option. +You can check your +\f\*[B-Font]peerstats\f[] +file for evidence of any of these attacks. +The +default for this flag is +\f\*[B-Font]enable\f[]. +.TP 7 .NOP \f\*[B-Font]stats\f[] Enables the statistics facility. See the diff --git a/contrib/ntp/ntpd/ntp.conf.mdoc.in b/contrib/ntp/ntpd/ntp.conf.mdoc.in index 82164a36a..a9a342418 100644 --- a/contrib/ntp/ntpd/ntp.conf.mdoc.in +++ b/contrib/ntp/ntpd/ntp.conf.mdoc.in @@ -1,9 +1,9 @@ -.Dd April 26 2016 +.Dd June 2 2016 .Dt NTP_CONF 5 File Formats .Os .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:36 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:36:16 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -2440,6 +2440,7 @@ The default value is 46, signifying Expedited Forwarding. .Cm calibrate | Cm kernel | .Cm mode7 | Cm monitor | .Cm ntp | Cm stats | +.Cm peer_clear_digest_early | .Cm unpeer_crypto_early | Cm unpeer_crypto_nak_early | Cm unpeer_digest_early .Oc .Xc @@ -2449,6 +2450,7 @@ The default value is 46, signifying Expedited Forwarding. .Cm calibrate | Cm kernel | .Cm mode7 | Cm monitor | .Cm ntp | Cm stats | +.Cm peer_clear_digest_early | .Cm unpeer_crypto_early | Cm unpeer_crypto_nak_early | Cm unpeer_digest_early .Oc .Xc @@ -2516,6 +2518,26 @@ closes the feedback loop, which is useful for testing. The default for this flag is .Ic enable . +.It Cm peer_clear_digest_early +By default, if +.Xr ntpd @NTPD_MS@ +is using autokey and it +receives a crypto\-NAK packet that +passes the duplicate packet and origin timestamp checks +the peer variables are immediately cleared. +While this is generally a feature +as it allows for quick recovery if a server key has changed, +a properly forged and appropriately delivered crypto\-NAK packet +can be used in a DoS attack. +If you have active noticable problems with this type of DoS attack +then you should consider +disabling this option. +You can check your +.Cm peerstats +file for evidence of any of these attacks. +The +default for this flag is +.Ic enable . .It Cm stats Enables the statistics facility. See the diff --git a/contrib/ntp/ntpd/ntp.keys.5man b/contrib/ntp/ntpd/ntp.keys.5man index 9843554c5..3e02861c0 100644 --- a/contrib/ntp/ntpd/ntp.keys.5man +++ b/contrib/ntp/ntpd/ntp.keys.5man @@ -1,8 +1,8 @@ -.TH ntp.keys 5man "26 Apr 2016" "4.2.8p7" "File Formats" +.TH ntp.keys 5man "02 Jun 2016" "4.2.8p8" "File Formats" .\" .\" EDIT THIS FILE WITH CAUTION (ntp.man) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:19 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:35:57 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agman-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp.keys.5mdoc b/contrib/ntp/ntpd/ntp.keys.5mdoc index ad9cc921f..275b0d54c 100644 --- a/contrib/ntp/ntpd/ntp.keys.5mdoc +++ b/contrib/ntp/ntpd/ntp.keys.5mdoc @@ -1,9 +1,9 @@ -.Dd April 26 2016 +.Dd June 2 2016 .Dt NTP_KEYS 5mdoc File Formats .Os SunOS 5.10 .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:39 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:36:20 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agmdoc-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp.keys.html b/contrib/ntp/ntpd/ntp.keys.html index 083b28b03..5952608bb 100644 --- a/contrib/ntp/ntpd/ntp.keys.html +++ b/contrib/ntp/ntpd/ntp.keys.html @@ -33,7 +33,7 @@ Up: (dir)

This document describes the symmetric key file for the NTP Project's ntpd program. -

This document applies to version 4.2.8p7 of ntp.keys. +

This document applies to version 4.2.8p8 of ntp.keys.

Short Contents

diff --git a/contrib/ntp/ntpd/ntp.keys.man.in b/contrib/ntp/ntpd/ntp.keys.man.in index d68be1c25..692a4e23b 100644 --- a/contrib/ntp/ntpd/ntp.keys.man.in +++ b/contrib/ntp/ntpd/ntp.keys.man.in @@ -1,8 +1,8 @@ -.TH ntp.keys 5 "26 Apr 2016" "4.2.8p7" "File Formats" +.TH ntp.keys 5 "02 Jun 2016" "4.2.8p8" "File Formats" .\" .\" EDIT THIS FILE WITH CAUTION (ntp.man) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:19 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:35:57 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agman-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp.keys.mdoc.in b/contrib/ntp/ntpd/ntp.keys.mdoc.in index c1a9c7d0e..788129628 100644 --- a/contrib/ntp/ntpd/ntp.keys.mdoc.in +++ b/contrib/ntp/ntpd/ntp.keys.mdoc.in @@ -1,9 +1,9 @@ -.Dd April 26 2016 +.Dd June 2 2016 .Dt NTP_KEYS 5 File Formats .Os SunOS 5.10 .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:39 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:36:20 AM by AutoGen 5.18.5 .\" From the definitions ntp.keys.def .\" and the template file agmdoc-file.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntp_config.c b/contrib/ntp/ntpd/ntp_config.c index cb3273746..2d4ab5277 100644 --- a/contrib/ntp/ntpd/ntp_config.c +++ b/contrib/ntp/ntpd/ntp_config.c @@ -2971,12 +2971,16 @@ apply_enable_disable( proto_config(PROTO_MONITOR, enable, 0., NULL); break; + case T_Mode7: + proto_config(PROTO_MODE7, enable, 0., NULL); + break; + case T_Ntp: proto_config(PROTO_NTP, enable, 0., NULL); break; - case T_Mode7: - proto_config(PROTO_MODE7, enable, 0., NULL); + case T_PCEdigest: + proto_config(PROTO_PCEDIGEST, enable, 0., NULL); break; case T_Stats: diff --git a/contrib/ntp/ntpd/ntp_io.c b/contrib/ntp/ntpd/ntp_io.c index 55f9ada83..80642524e 100644 --- a/contrib/ntp/ntpd/ntp_io.c +++ b/contrib/ntp/ntpd/ntp_io.c @@ -3285,15 +3285,6 @@ fetch_timestamp( ) { struct cmsghdr * cmsghdr; -#ifdef HAVE_BINTIME - struct bintime * btp; -#endif -#ifdef HAVE_TIMESTAMPNS - struct timespec * tsp; -#endif -#ifdef HAVE_TIMESTAMP - struct timeval * tvp; -#endif unsigned long ticks; double fuzz; l_fp lfpfuzz; @@ -3320,49 +3311,58 @@ fetch_timestamp( { #ifdef HAVE_BINTIME case SCM_BINTIME: - btp = (struct bintime *)CMSG_DATA(cmsghdr); - /* - * bintime documentation is at http://phk.freebsd.dk/pubs/timecounter.pdf - */ - nts.l_i = btp->sec + JAN_1970; - nts.l_uf = (u_int32)(btp->frac >> 32); - if (sys_tick > measured_tick && - sys_tick > 1e-9) { - ticks = (unsigned long)(nts.l_uf / (unsigned long)(sys_tick * FRAC)); - nts.l_uf = (unsigned long)(ticks * (unsigned long)(sys_tick * FRAC)); + { + struct bintime pbt; + memcpy(&pbt, CMSG_DATA(cmsghdr), sizeof(pbt)); + /* + * bintime documentation is at http://phk.freebsd.dk/pubs/timecounter.pdf + */ + nts.l_i = pbt.sec + JAN_1970; + nts.l_uf = (u_int32)(pbt.frac >> 32); + if (sys_tick > measured_tick && + sys_tick > 1e-9) { + ticks = (unsigned long)(nts.l_uf / (unsigned long)(sys_tick * FRAC)); + nts.l_uf = (unsigned long)(ticks * (unsigned long)(sys_tick * FRAC)); + } + DPRINTF(4, ("fetch_timestamp: system bintime network time stamp: %ld.%09lu\n", + pbt.sec, (unsigned long)((nts.l_uf / FRAC) * 1e9))); } - DPRINTF(4, ("fetch_timestamp: system bintime network time stamp: %ld.%09lu\n", - btp->sec, (unsigned long)((nts.l_uf / FRAC) * 1e9))); break; #endif /* HAVE_BINTIME */ #ifdef HAVE_TIMESTAMPNS case SCM_TIMESTAMPNS: - 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) / - sys_tick); - tsp->tv_nsec = (long)(ticks * 1e9 * - sys_tick); + { + struct timespec pts; + memcpy(&pts, CMSG_DATA(cmsghdr), sizeof(pts)); + if (sys_tick > measured_tick && + sys_tick > 1e-9) { + ticks = (unsigned long)((pts.tv_nsec * 1e-9) / + sys_tick); + pts.tv_nsec = (long)(ticks * 1e9 * + sys_tick); + } + DPRINTF(4, ("fetch_timestamp: system nsec network time stamp: %ld.%09ld\n", + pts.tv_sec, pts.tv_nsec)); + nts = tspec_stamp_to_lfp(pts); } - DPRINTF(4, ("fetch_timestamp: system nsec network time stamp: %ld.%09ld\n", - tsp->tv_sec, tsp->tv_nsec)); - nts = tspec_stamp_to_lfp(*tsp); break; #endif /* HAVE_TIMESTAMPNS */ #ifdef HAVE_TIMESTAMP case SCM_TIMESTAMP: - tvp = (struct timeval *)CMSG_DATA(cmsghdr); - if (sys_tick > measured_tick && - sys_tick > 1e-6) { - ticks = (unsigned long)((tvp->tv_usec * 1e-6) / - sys_tick); - tvp->tv_usec = (long)(ticks * 1e6 * - sys_tick); + { + struct timeval ptv; + memcpy(&ptv, CMSG_DATA(cmsghdr), sizeof(ptv)); + if (sys_tick > measured_tick && + sys_tick > 1e-6) { + ticks = (unsigned long)((ptv.tv_usec * 1e-6) / + sys_tick); + ptv.tv_usec = (long)(ticks * 1e6 * + sys_tick); + } + DPRINTF(4, ("fetch_timestamp: system usec network time stamp: %jd.%06ld\n", + (intmax_t)ptv.tv_sec, (long)ptv.tv_usec)); + nts = tval_stamp_to_lfp(ptv); } - DPRINTF(4, ("fetch_timestamp: system usec network time stamp: %jd.%06ld\n", - (intmax_t)tvp->tv_sec, (long)tvp->tv_usec)); - nts = tval_stamp_to_lfp(*tvp); break; #endif /* HAVE_TIMESTAMP */ } diff --git a/contrib/ntp/ntpd/ntp_keyword.h b/contrib/ntp/ntpd/ntp_keyword.h index c726c60da..ec373cf7f 100644 --- a/contrib/ntp/ntpd/ntp_keyword.h +++ b/contrib/ntp/ntpd/ntp_keyword.h @@ -2,7 +2,7 @@ * ntp_keyword.h * * NOTE: edit this file with caution, it is generated by keyword-gen.c - * Generated 2016-01-16 08:33:03 UTC diff_ignore_line + * Generated 2016-05-19 06:35:34 UTC diff_ignore_line * */ #include "ntp_scanner.h" @@ -10,7 +10,7 @@ #define LOWEST_KEYWORD_ID 258 -const char * const keyword_text[194] = { +const char * const keyword_text[195] = { /* 0 258 T_Abbrev */ "abbrev", /* 1 259 T_Age */ "age", /* 2 260 T_All */ "all", @@ -133,83 +133,84 @@ const char * const keyword_text[194] = { /* 119 377 T_NtpSignDsocket */ "ntpsigndsocket", /* 120 378 T_Orphan */ "orphan", /* 121 379 T_Orphanwait */ "orphanwait", - /* 122 380 T_Panic */ "panic", - /* 123 381 T_Peer */ "peer", - /* 124 382 T_Peerstats */ "peerstats", - /* 125 383 T_Phone */ "phone", - /* 126 384 T_Pid */ "pid", - /* 127 385 T_Pidfile */ "pidfile", - /* 128 386 T_Pool */ "pool", - /* 129 387 T_Port */ "port", - /* 130 388 T_Preempt */ "preempt", - /* 131 389 T_Prefer */ "prefer", - /* 132 390 T_Protostats */ "protostats", - /* 133 391 T_Pw */ "pw", - /* 134 392 T_Randfile */ "randfile", - /* 135 393 T_Rawstats */ "rawstats", - /* 136 394 T_Refid */ "refid", - /* 137 395 T_Requestkey */ "requestkey", - /* 138 396 T_Reset */ "reset", - /* 139 397 T_Restrict */ "restrict", - /* 140 398 T_Revoke */ "revoke", - /* 141 399 T_Rlimit */ "rlimit", - /* 142 400 T_Saveconfigdir */ "saveconfigdir", - /* 143 401 T_Server */ "server", - /* 144 402 T_Setvar */ "setvar", - /* 145 403 T_Source */ "source", - /* 146 404 T_Stacksize */ "stacksize", - /* 147 405 T_Statistics */ "statistics", - /* 148 406 T_Stats */ "stats", - /* 149 407 T_Statsdir */ "statsdir", - /* 150 408 T_Step */ "step", - /* 151 409 T_Stepback */ "stepback", - /* 152 410 T_Stepfwd */ "stepfwd", - /* 153 411 T_Stepout */ "stepout", - /* 154 412 T_Stratum */ "stratum", - /* 155 413 T_String */ NULL, - /* 156 414 T_Sys */ "sys", - /* 157 415 T_Sysstats */ "sysstats", - /* 158 416 T_Tick */ "tick", - /* 159 417 T_Time1 */ "time1", - /* 160 418 T_Time2 */ "time2", - /* 161 419 T_Timer */ "timer", - /* 162 420 T_Timingstats */ "timingstats", - /* 163 421 T_Tinker */ "tinker", - /* 164 422 T_Tos */ "tos", - /* 165 423 T_Trap */ "trap", - /* 166 424 T_True */ "true", - /* 167 425 T_Trustedkey */ "trustedkey", - /* 168 426 T_Ttl */ "ttl", - /* 169 427 T_Type */ "type", - /* 170 428 T_U_int */ NULL, - /* 171 429 T_UEcrypto */ "unpeer_crypto_early", - /* 172 430 T_UEcryptonak */ "unpeer_crypto_nak_early", - /* 173 431 T_UEdigest */ "unpeer_digest_early", - /* 174 432 T_Unconfig */ "unconfig", - /* 175 433 T_Unpeer */ "unpeer", - /* 176 434 T_Version */ "version", - /* 177 435 T_WanderThreshold */ NULL, - /* 178 436 T_Week */ "week", - /* 179 437 T_Wildcard */ "wildcard", - /* 180 438 T_Xleave */ "xleave", - /* 181 439 T_Year */ "year", - /* 182 440 T_Flag */ NULL, - /* 183 441 T_EOC */ NULL, - /* 184 442 T_Simulate */ "simulate", - /* 185 443 T_Beep_Delay */ "beep_delay", - /* 186 444 T_Sim_Duration */ "simulation_duration", - /* 187 445 T_Server_Offset */ "server_offset", - /* 188 446 T_Duration */ "duration", - /* 189 447 T_Freq_Offset */ "freq_offset", - /* 190 448 T_Wander */ "wander", - /* 191 449 T_Jitter */ "jitter", - /* 192 450 T_Prop_Delay */ "prop_delay", - /* 193 451 T_Proc_Delay */ "proc_delay" + /* 122 380 T_PCEdigest */ "peer_clear_digest_early", + /* 123 381 T_Panic */ "panic", + /* 124 382 T_Peer */ "peer", + /* 125 383 T_Peerstats */ "peerstats", + /* 126 384 T_Phone */ "phone", + /* 127 385 T_Pid */ "pid", + /* 128 386 T_Pidfile */ "pidfile", + /* 129 387 T_Pool */ "pool", + /* 130 388 T_Port */ "port", + /* 131 389 T_Preempt */ "preempt", + /* 132 390 T_Prefer */ "prefer", + /* 133 391 T_Protostats */ "protostats", + /* 134 392 T_Pw */ "pw", + /* 135 393 T_Randfile */ "randfile", + /* 136 394 T_Rawstats */ "rawstats", + /* 137 395 T_Refid */ "refid", + /* 138 396 T_Requestkey */ "requestkey", + /* 139 397 T_Reset */ "reset", + /* 140 398 T_Restrict */ "restrict", + /* 141 399 T_Revoke */ "revoke", + /* 142 400 T_Rlimit */ "rlimit", + /* 143 401 T_Saveconfigdir */ "saveconfigdir", + /* 144 402 T_Server */ "server", + /* 145 403 T_Setvar */ "setvar", + /* 146 404 T_Source */ "source", + /* 147 405 T_Stacksize */ "stacksize", + /* 148 406 T_Statistics */ "statistics", + /* 149 407 T_Stats */ "stats", + /* 150 408 T_Statsdir */ "statsdir", + /* 151 409 T_Step */ "step", + /* 152 410 T_Stepback */ "stepback", + /* 153 411 T_Stepfwd */ "stepfwd", + /* 154 412 T_Stepout */ "stepout", + /* 155 413 T_Stratum */ "stratum", + /* 156 414 T_String */ NULL, + /* 157 415 T_Sys */ "sys", + /* 158 416 T_Sysstats */ "sysstats", + /* 159 417 T_Tick */ "tick", + /* 160 418 T_Time1 */ "time1", + /* 161 419 T_Time2 */ "time2", + /* 162 420 T_Timer */ "timer", + /* 163 421 T_Timingstats */ "timingstats", + /* 164 422 T_Tinker */ "tinker", + /* 165 423 T_Tos */ "tos", + /* 166 424 T_Trap */ "trap", + /* 167 425 T_True */ "true", + /* 168 426 T_Trustedkey */ "trustedkey", + /* 169 427 T_Ttl */ "ttl", + /* 170 428 T_Type */ "type", + /* 171 429 T_U_int */ NULL, + /* 172 430 T_UEcrypto */ "unpeer_crypto_early", + /* 173 431 T_UEcryptonak */ "unpeer_crypto_nak_early", + /* 174 432 T_UEdigest */ "unpeer_digest_early", + /* 175 433 T_Unconfig */ "unconfig", + /* 176 434 T_Unpeer */ "unpeer", + /* 177 435 T_Version */ "version", + /* 178 436 T_WanderThreshold */ NULL, + /* 179 437 T_Week */ "week", + /* 180 438 T_Wildcard */ "wildcard", + /* 181 439 T_Xleave */ "xleave", + /* 182 440 T_Year */ "year", + /* 183 441 T_Flag */ NULL, + /* 184 442 T_EOC */ NULL, + /* 185 443 T_Simulate */ "simulate", + /* 186 444 T_Beep_Delay */ "beep_delay", + /* 187 445 T_Sim_Duration */ "simulation_duration", + /* 188 446 T_Server_Offset */ "server_offset", + /* 189 447 T_Duration */ "duration", + /* 190 448 T_Freq_Offset */ "freq_offset", + /* 191 449 T_Wander */ "wander", + /* 192 450 T_Jitter */ "jitter", + /* 193 451 T_Prop_Delay */ "prop_delay", + /* 194 452 T_Proc_Delay */ "proc_delay" }; -#define SCANNER_INIT_S 887 +#define SCANNER_INIT_S 906 -const scan_state sst[890] = { +const scan_state sst[909] = { /*SS_T( ch, f-by, match, other ), */ 0, /* 0 */ S_ST( '-', 3, 323, 0 ), /* 1 */ @@ -255,7 +256,7 @@ const scan_state sst[890] = { S_ST( 'd', 3, 42, 0 ), /* 41 beep_ */ S_ST( 'e', 3, 43, 0 ), /* 42 beep_d */ S_ST( 'l', 3, 44, 0 ), /* 43 beep_de */ - S_ST( 'a', 3, 443, 0 ), /* 44 beep_del */ + S_ST( 'a', 3, 444, 0 ), /* 44 beep_del */ S_ST( 'r', 3, 46, 34 ), /* 45 b */ S_ST( 'o', 3, 47, 0 ), /* 46 br */ S_ST( 'a', 3, 48, 0 ), /* 47 bro */ @@ -355,7 +356,7 @@ const scan_state sst[890] = { S_ST( 'a', 3, 142, 0 ), /* 141 dur */ S_ST( 't', 3, 143, 0 ), /* 142 dura */ S_ST( 'i', 3, 144, 0 ), /* 143 durat */ - S_ST( 'o', 3, 446, 0 ), /* 144 durati */ + S_ST( 'o', 3, 447, 0 ), /* 144 durati */ S_ST( 'e', 3, 146, 105 ), /* 145 */ S_ST( 'n', 3, 293, 0 ), /* 146 e */ S_ST( 'a', 3, 148, 0 ), /* 147 en */ @@ -381,7 +382,7 @@ const scan_state sst[890] = { S_ST( 'f', 3, 168, 0 ), /* 167 freq_o */ S_ST( 'f', 3, 169, 0 ), /* 168 freq_of */ S_ST( 's', 3, 170, 0 ), /* 169 freq_off */ - S_ST( 'e', 3, 447, 0 ), /* 170 freq_offs */ + S_ST( 'e', 3, 448, 0 ), /* 170 freq_offs */ S_ST( 'u', 3, 172, 163 ), /* 171 f */ S_ST( 'd', 3, 173, 0 ), /* 172 fu */ S_ST( 'g', 3, 305, 0 ), /* 173 fud */ @@ -441,7 +442,7 @@ const scan_state sst[890] = { S_ST( 'i', 3, 228, 0 ), /* 227 j */ S_ST( 't', 3, 229, 0 ), /* 228 ji */ S_ST( 't', 3, 230, 0 ), /* 229 jit */ - S_ST( 'e', 3, 449, 0 ), /* 230 jitt */ + S_ST( 'e', 3, 450, 0 ), /* 230 jitt */ S_ST( 'k', 3, 238, 226 ), /* 231 */ S_ST( 'e', 3, 325, 0 ), /* 232 k */ S_ST( 'r', 3, 234, 0 ), /* 233 ke */ @@ -450,7 +451,7 @@ const scan_state sst[890] = { S_ST( 'd', 3, 237, 0 ), /* 236 keys */ S_ST( 'i', 3, 327, 0 ), /* 237 keysd */ S_ST( 'o', 3, 328, 232 ), /* 238 k */ - S_ST( 'l', 3, 452, 231 ), /* 239 */ + S_ST( 'l', 3, 453, 231 ), /* 239 */ S_ST( 'e', 3, 241, 0 ), /* 240 l */ S_ST( 'a', 3, 242, 0 ), /* 241 le */ S_ST( 'p', 3, 246, 0 ), /* 242 lea */ @@ -498,7 +499,7 @@ const scan_state sst[890] = { S_ST( 'e', 0, 0, 0 ), /* 284 T_Disable */ S_ST( 'd', 0, 0, 0 ), /* 285 T_Discard */ S_ST( 'n', 0, 0, 0 ), /* 286 T_Dispersion */ - S_ST( 'i', 3, 435, 240 ), /* 287 l */ + S_ST( 'i', 3, 436, 240 ), /* 287 l */ S_ST( 'e', 1, 0, 0 ), /* 288 T_Driftfile */ S_ST( 'p', 0, 0, 0 ), /* 289 T_Drop */ S_ST( 'p', 0, 0, 0 ), /* 290 T_Dscp */ @@ -529,7 +530,7 @@ const scan_state sst[890] = { S_ST( 'e', 1, 0, 0 ), /* 315 T_Includefile */ S_ST( 'i', 3, 318, 0 ), /* 316 lim */ S_ST( 'e', 0, 0, 0 ), /* 317 T_Interface */ - S_ST( 't', 3, 413, 0 ), /* 318 limi */ + S_ST( 't', 3, 414, 0 ), /* 318 limi */ S_ST( 'o', 0, 0, 195 ), /* 319 T_Io */ S_ST( '4', 0, 0, 0 ), /* 320 T_Ipv4 */ S_ST( '4', 0, 0, 0 ), /* 321 T_Ipv4_flag */ @@ -560,7 +561,7 @@ const scan_state sst[890] = { S_ST( 'm', 0, 0, 0 ), /* 346 T_Maxmem */ S_ST( 'l', 0, 0, 0 ), /* 347 T_Maxpoll */ S_ST( 's', 0, 0, 0 ), /* 348 T_Mdnstries */ - S_ST( 'm', 0, 521, 0 ), /* 349 T_Mem */ + S_ST( 'm', 0, 522, 0 ), /* 349 T_Mem */ S_ST( 'k', 0, 0, 0 ), /* 350 T_Memlock */ S_ST( 'k', 0, 0, 0 ), /* 351 T_Minclock */ S_ST( 'h', 0, 0, 0 ), /* 352 T_Mindepth */ @@ -586,520 +587,539 @@ const scan_state sst[890] = { S_ST( 'e', 0, 0, 0 ), /* 372 T_Noserve */ S_ST( 'p', 0, 0, 0 ), /* 373 T_Notrap */ S_ST( 't', 0, 0, 0 ), /* 374 T_Notrust */ - S_ST( 'p', 0, 617, 0 ), /* 375 T_Ntp */ + S_ST( 'p', 0, 618, 0 ), /* 375 T_Ntp */ S_ST( 't', 0, 0, 0 ), /* 376 T_Ntpport */ S_ST( 't', 1, 0, 0 ), /* 377 T_NtpSignDsocket */ - S_ST( 'n', 0, 632, 0 ), /* 378 T_Orphan */ + S_ST( 'n', 0, 633, 0 ), /* 378 T_Orphan */ S_ST( 't', 0, 0, 0 ), /* 379 T_Orphanwait */ - S_ST( 'c', 0, 0, 0 ), /* 380 T_Panic */ - S_ST( 'r', 1, 641, 0 ), /* 381 T_Peer */ - S_ST( 's', 0, 0, 0 ), /* 382 T_Peerstats */ - S_ST( 'e', 2, 0, 0 ), /* 383 T_Phone */ - S_ST( 'd', 0, 649, 0 ), /* 384 T_Pid */ - S_ST( 'e', 1, 0, 0 ), /* 385 T_Pidfile */ - S_ST( 'l', 1, 0, 0 ), /* 386 T_Pool */ - S_ST( 't', 0, 0, 0 ), /* 387 T_Port */ - S_ST( 't', 0, 0, 0 ), /* 388 T_Preempt */ - S_ST( 'r', 0, 0, 0 ), /* 389 T_Prefer */ - S_ST( 's', 0, 0, 0 ), /* 390 T_Protostats */ - S_ST( 'w', 1, 0, 655 ), /* 391 T_Pw */ - S_ST( 'e', 1, 0, 0 ), /* 392 T_Randfile */ - S_ST( 's', 0, 0, 0 ), /* 393 T_Rawstats */ - S_ST( 'd', 1, 0, 0 ), /* 394 T_Refid */ - S_ST( 'y', 0, 0, 0 ), /* 395 T_Requestkey */ - S_ST( 't', 0, 0, 0 ), /* 396 T_Reset */ - S_ST( 't', 0, 0, 0 ), /* 397 T_Restrict */ - S_ST( 'e', 0, 0, 0 ), /* 398 T_Revoke */ - S_ST( 't', 0, 0, 0 ), /* 399 T_Rlimit */ - S_ST( 'r', 1, 0, 0 ), /* 400 T_Saveconfigdir */ - S_ST( 'r', 1, 732, 0 ), /* 401 T_Server */ - S_ST( 'r', 1, 0, 0 ), /* 402 T_Setvar */ - S_ST( 'e', 0, 0, 0 ), /* 403 T_Source */ - S_ST( 'e', 0, 0, 0 ), /* 404 T_Stacksize */ - S_ST( 's', 0, 0, 0 ), /* 405 T_Statistics */ - S_ST( 's', 0, 775, 770 ), /* 406 T_Stats */ - S_ST( 'r', 1, 0, 0 ), /* 407 T_Statsdir */ - S_ST( 'p', 0, 783, 0 ), /* 408 T_Step */ - S_ST( 'k', 0, 0, 0 ), /* 409 T_Stepback */ - S_ST( 'd', 0, 0, 0 ), /* 410 T_Stepfwd */ - S_ST( 't', 0, 0, 0 ), /* 411 T_Stepout */ - S_ST( 'm', 0, 0, 0 ), /* 412 T_Stratum */ - S_ST( 'e', 3, 332, 0 ), /* 413 limit */ - S_ST( 's', 0, 790, 0 ), /* 414 T_Sys */ - S_ST( 's', 0, 0, 0 ), /* 415 T_Sysstats */ - S_ST( 'k', 0, 0, 0 ), /* 416 T_Tick */ - S_ST( '1', 0, 0, 0 ), /* 417 T_Time1 */ - S_ST( '2', 0, 0, 417 ), /* 418 T_Time2 */ - S_ST( 'r', 0, 0, 418 ), /* 419 T_Timer */ - S_ST( 's', 0, 0, 0 ), /* 420 T_Timingstats */ - S_ST( 'r', 0, 0, 0 ), /* 421 T_Tinker */ - S_ST( 's', 0, 0, 0 ), /* 422 T_Tos */ - S_ST( 'p', 1, 0, 0 ), /* 423 T_Trap */ - S_ST( 'e', 0, 0, 0 ), /* 424 T_True */ - S_ST( 'y', 0, 0, 0 ), /* 425 T_Trustedkey */ - S_ST( 'l', 0, 0, 0 ), /* 426 T_Ttl */ - S_ST( 'e', 0, 0, 0 ), /* 427 T_Type */ - S_ST( 'n', 3, 333, 294 ), /* 428 li */ - S_ST( 'y', 0, 0, 0 ), /* 429 T_UEcrypto */ - S_ST( 'y', 0, 0, 0 ), /* 430 T_UEcryptonak */ - S_ST( 'y', 0, 0, 0 ), /* 431 T_UEdigest */ - S_ST( 'g', 1, 0, 0 ), /* 432 T_Unconfig */ - S_ST( 'r', 1, 832, 0 ), /* 433 T_Unpeer */ - S_ST( 'n', 0, 0, 0 ), /* 434 T_Version */ - S_ST( 's', 3, 440, 428 ), /* 435 li */ - S_ST( 'k', 0, 0, 0 ), /* 436 T_Week */ - S_ST( 'd', 0, 0, 0 ), /* 437 T_Wildcard */ - S_ST( 'e', 0, 0, 0 ), /* 438 T_Xleave */ - S_ST( 'r', 0, 0, 0 ), /* 439 T_Year */ - S_ST( 't', 3, 441, 0 ), /* 440 lis */ - S_ST( 'e', 3, 334, 0 ), /* 441 list */ - S_ST( 'e', 0, 0, 0 ), /* 442 T_Simulate */ - S_ST( 'y', 0, 0, 0 ), /* 443 T_Beep_Delay */ - S_ST( 'n', 0, 0, 0 ), /* 444 T_Sim_Duration */ - S_ST( 't', 0, 0, 0 ), /* 445 T_Server_Offset */ - S_ST( 'n', 0, 0, 0 ), /* 446 T_Duration */ - S_ST( 't', 0, 0, 0 ), /* 447 T_Freq_Offset */ - S_ST( 'r', 0, 0, 0 ), /* 448 T_Wander */ - S_ST( 'r', 0, 0, 0 ), /* 449 T_Jitter */ - S_ST( 'y', 0, 0, 0 ), /* 450 T_Prop_Delay */ - S_ST( 'y', 0, 0, 0 ), /* 451 T_Proc_Delay */ - S_ST( 'o', 3, 468, 287 ), /* 452 l */ - S_ST( 'g', 3, 459, 0 ), /* 453 lo */ - S_ST( 'c', 3, 455, 0 ), /* 454 log */ - S_ST( 'o', 3, 456, 0 ), /* 455 logc */ - S_ST( 'n', 3, 457, 0 ), /* 456 logco */ - S_ST( 'f', 3, 458, 0 ), /* 457 logcon */ - S_ST( 'i', 3, 335, 0 ), /* 458 logconf */ - S_ST( 'f', 3, 460, 454 ), /* 459 log */ - S_ST( 'i', 3, 461, 0 ), /* 460 logf */ - S_ST( 'l', 3, 336, 0 ), /* 461 logfi */ - S_ST( 'o', 3, 463, 453 ), /* 462 lo */ - S_ST( 'p', 3, 464, 0 ), /* 463 loo */ - S_ST( 's', 3, 465, 0 ), /* 464 loop */ - S_ST( 't', 3, 466, 0 ), /* 465 loops */ - S_ST( 'a', 3, 467, 0 ), /* 466 loopst */ - S_ST( 't', 3, 337, 0 ), /* 467 loopsta */ - S_ST( 'w', 3, 469, 462 ), /* 468 lo */ - S_ST( 'p', 3, 470, 0 ), /* 469 low */ - S_ST( 'r', 3, 471, 0 ), /* 470 lowp */ - S_ST( 'i', 3, 472, 0 ), /* 471 lowpr */ - S_ST( 'o', 3, 473, 0 ), /* 472 lowpri */ - S_ST( 't', 3, 474, 0 ), /* 473 lowprio */ - S_ST( 'r', 3, 475, 0 ), /* 474 lowpriot */ - S_ST( 'a', 3, 338, 0 ), /* 475 lowpriotr */ - S_ST( 'm', 3, 557, 239 ), /* 476 */ - S_ST( 'a', 3, 495, 0 ), /* 477 m */ - S_ST( 'n', 3, 479, 0 ), /* 478 ma */ - S_ST( 'y', 3, 480, 0 ), /* 479 man */ - S_ST( 'c', 3, 481, 0 ), /* 480 many */ - S_ST( 'a', 3, 482, 0 ), /* 481 manyc */ - S_ST( 's', 3, 483, 0 ), /* 482 manyca */ - S_ST( 't', 3, 489, 0 ), /* 483 manycas */ - S_ST( 'c', 3, 485, 0 ), /* 484 manycast */ - S_ST( 'l', 3, 486, 0 ), /* 485 manycastc */ - S_ST( 'i', 3, 487, 0 ), /* 486 manycastcl */ - S_ST( 'e', 3, 488, 0 ), /* 487 manycastcli */ - S_ST( 'n', 3, 339, 0 ), /* 488 manycastclie */ - S_ST( 's', 3, 490, 484 ), /* 489 manycast */ - S_ST( 'e', 3, 491, 0 ), /* 490 manycasts */ - S_ST( 'r', 3, 492, 0 ), /* 491 manycastse */ - S_ST( 'v', 3, 493, 0 ), /* 492 manycastser */ - S_ST( 'e', 3, 340, 0 ), /* 493 manycastserv */ - S_ST( 's', 3, 341, 478 ), /* 494 ma */ - S_ST( 'x', 3, 510, 494 ), /* 495 ma */ - S_ST( 'a', 3, 497, 0 ), /* 496 max */ - S_ST( 'g', 3, 342, 0 ), /* 497 maxa */ - S_ST( 'c', 3, 499, 496 ), /* 498 max */ - S_ST( 'l', 3, 500, 0 ), /* 499 maxc */ - S_ST( 'o', 3, 501, 0 ), /* 500 maxcl */ - S_ST( 'c', 3, 343, 0 ), /* 501 maxclo */ - S_ST( 'd', 3, 506, 498 ), /* 502 max */ - S_ST( 'e', 3, 504, 0 ), /* 503 maxd */ - S_ST( 'p', 3, 505, 0 ), /* 504 maxde */ - S_ST( 't', 3, 344, 0 ), /* 505 maxdep */ - S_ST( 'i', 3, 507, 503 ), /* 506 maxd */ - S_ST( 's', 3, 345, 0 ), /* 507 maxdi */ - S_ST( 'm', 3, 509, 502 ), /* 508 max */ - S_ST( 'e', 3, 346, 0 ), /* 509 maxm */ - S_ST( 'p', 3, 511, 508 ), /* 510 max */ - S_ST( 'o', 3, 512, 0 ), /* 511 maxp */ - S_ST( 'l', 3, 347, 0 ), /* 512 maxpo */ - S_ST( 'd', 3, 514, 477 ), /* 513 m */ - S_ST( 'n', 3, 515, 0 ), /* 514 md */ - S_ST( 's', 3, 516, 0 ), /* 515 mdn */ - S_ST( 't', 3, 517, 0 ), /* 516 mdns */ - S_ST( 'r', 3, 518, 0 ), /* 517 mdnst */ - S_ST( 'i', 3, 519, 0 ), /* 518 mdnstr */ - S_ST( 'e', 3, 348, 0 ), /* 519 mdnstri */ - S_ST( 'e', 3, 349, 513 ), /* 520 m */ - S_ST( 'l', 3, 522, 0 ), /* 521 mem */ - S_ST( 'o', 3, 523, 0 ), /* 522 meml */ - S_ST( 'c', 3, 350, 0 ), /* 523 memlo */ - S_ST( 'i', 3, 525, 520 ), /* 524 m */ - S_ST( 'n', 3, 542, 0 ), /* 525 mi */ - S_ST( 'c', 3, 527, 0 ), /* 526 min */ - S_ST( 'l', 3, 528, 0 ), /* 527 minc */ - S_ST( 'o', 3, 529, 0 ), /* 528 mincl */ - S_ST( 'c', 3, 351, 0 ), /* 529 minclo */ - S_ST( 'd', 3, 534, 526 ), /* 530 min */ - S_ST( 'e', 3, 532, 0 ), /* 531 mind */ - S_ST( 'p', 3, 533, 0 ), /* 532 minde */ - S_ST( 't', 3, 352, 0 ), /* 533 mindep */ - S_ST( 'i', 3, 535, 531 ), /* 534 mind */ - S_ST( 's', 3, 353, 0 ), /* 535 mindi */ - S_ST( 'i', 3, 537, 530 ), /* 536 min */ - S_ST( 'm', 3, 538, 0 ), /* 537 mini */ - S_ST( 'u', 3, 354, 0 ), /* 538 minim */ - S_ST( 'p', 3, 540, 536 ), /* 539 min */ - S_ST( 'o', 3, 541, 0 ), /* 540 minp */ - S_ST( 'l', 3, 355, 0 ), /* 541 minpo */ - S_ST( 's', 3, 543, 539 ), /* 542 min */ - S_ST( 'a', 3, 544, 0 ), /* 543 mins */ - S_ST( 'n', 3, 356, 0 ), /* 544 minsa */ - S_ST( 'o', 3, 547, 524 ), /* 545 m */ - S_ST( 'd', 3, 357, 0 ), /* 546 mo */ - S_ST( 'n', 3, 551, 546 ), /* 547 mo */ - S_ST( 'i', 3, 549, 0 ), /* 548 mon */ - S_ST( 't', 3, 550, 0 ), /* 549 moni */ - S_ST( 'o', 3, 359, 0 ), /* 550 monit */ - S_ST( 't', 3, 360, 548 ), /* 551 mon */ - S_ST( 'r', 3, 361, 545 ), /* 552 m */ - S_ST( 's', 3, 554, 552 ), /* 553 m */ - S_ST( 's', 3, 555, 0 ), /* 554 ms */ - S_ST( 'n', 3, 556, 0 ), /* 555 mss */ - S_ST( 't', 3, 329, 0 ), /* 556 mssn */ - S_ST( 'u', 3, 558, 553 ), /* 557 m */ - S_ST( 'l', 3, 559, 0 ), /* 558 mu */ - S_ST( 't', 3, 560, 0 ), /* 559 mul */ - S_ST( 'i', 3, 561, 0 ), /* 560 mult */ - S_ST( 'c', 3, 562, 0 ), /* 561 multi */ - S_ST( 'a', 3, 563, 0 ), /* 562 multic */ - S_ST( 's', 3, 564, 0 ), /* 563 multica */ - S_ST( 't', 3, 565, 0 ), /* 564 multicas */ - S_ST( 'c', 3, 566, 0 ), /* 565 multicast */ - S_ST( 'l', 3, 567, 0 ), /* 566 multicastc */ - S_ST( 'i', 3, 568, 0 ), /* 567 multicastcl */ - S_ST( 'e', 3, 569, 0 ), /* 568 multicastcli */ - S_ST( 'n', 3, 362, 0 ), /* 569 multicastclie */ - S_ST( 'n', 3, 613, 476 ), /* 570 */ - S_ST( 'i', 3, 363, 0 ), /* 571 n */ - S_ST( 'o', 3, 608, 571 ), /* 572 n */ - S_ST( 'l', 3, 574, 0 ), /* 573 no */ - S_ST( 'i', 3, 575, 0 ), /* 574 nol */ - S_ST( 'n', 3, 364, 0 ), /* 575 noli */ - S_ST( 'm', 3, 581, 573 ), /* 576 no */ - S_ST( 'o', 3, 578, 0 ), /* 577 nom */ - S_ST( 'd', 3, 579, 0 ), /* 578 nomo */ - S_ST( 'i', 3, 580, 0 ), /* 579 nomod */ - S_ST( 'f', 3, 365, 0 ), /* 580 nomodi */ - S_ST( 'r', 3, 582, 577 ), /* 581 nom */ - S_ST( 'u', 3, 583, 0 ), /* 582 nomr */ - S_ST( 'l', 3, 584, 0 ), /* 583 nomru */ - S_ST( 'i', 3, 585, 0 ), /* 584 nomrul */ - S_ST( 's', 3, 366, 0 ), /* 585 nomruli */ - S_ST( 'n', 3, 587, 576 ), /* 586 no */ - S_ST( 'v', 3, 588, 367 ), /* 587 non */ - S_ST( 'o', 3, 589, 0 ), /* 588 nonv */ - S_ST( 'l', 3, 590, 0 ), /* 589 nonvo */ - S_ST( 'a', 3, 591, 0 ), /* 590 nonvol */ - S_ST( 't', 3, 592, 0 ), /* 591 nonvola */ - S_ST( 'i', 3, 593, 0 ), /* 592 nonvolat */ - S_ST( 'l', 3, 368, 0 ), /* 593 nonvolati */ - S_ST( 'p', 3, 595, 586 ), /* 594 no */ - S_ST( 'e', 3, 596, 0 ), /* 595 nop */ - S_ST( 'e', 3, 369, 0 ), /* 596 nope */ - S_ST( 'q', 3, 598, 594 ), /* 597 no */ - S_ST( 'u', 3, 599, 0 ), /* 598 noq */ - S_ST( 'e', 3, 600, 0 ), /* 599 noqu */ - S_ST( 'r', 3, 370, 0 ), /* 600 noque */ - S_ST( 's', 3, 602, 597 ), /* 601 no */ - S_ST( 'e', 3, 606, 0 ), /* 602 nos */ - S_ST( 'l', 3, 604, 0 ), /* 603 nose */ - S_ST( 'e', 3, 605, 0 ), /* 604 nosel */ - S_ST( 'c', 3, 371, 0 ), /* 605 nosele */ - S_ST( 'r', 3, 607, 603 ), /* 606 nose */ - S_ST( 'v', 3, 372, 0 ), /* 607 noser */ - S_ST( 't', 3, 609, 601 ), /* 608 no */ - S_ST( 'r', 3, 611, 0 ), /* 609 not */ - S_ST( 'a', 3, 373, 0 ), /* 610 notr */ - S_ST( 'u', 3, 612, 610 ), /* 611 notr */ - S_ST( 's', 3, 374, 0 ), /* 612 notru */ - S_ST( 't', 3, 375, 572 ), /* 613 n */ - S_ST( 'p', 3, 615, 0 ), /* 614 ntp */ - S_ST( 'o', 3, 616, 0 ), /* 615 ntpp */ - S_ST( 'r', 3, 376, 0 ), /* 616 ntppo */ - S_ST( 's', 3, 618, 614 ), /* 617 ntp */ - S_ST( 'i', 3, 619, 0 ), /* 618 ntps */ - S_ST( 'g', 3, 620, 0 ), /* 619 ntpsi */ - S_ST( 'n', 3, 621, 0 ), /* 620 ntpsig */ - S_ST( 'd', 3, 622, 0 ), /* 621 ntpsign */ - S_ST( 's', 3, 623, 0 ), /* 622 ntpsignd */ - S_ST( 'o', 3, 624, 0 ), /* 623 ntpsignds */ - S_ST( 'c', 3, 625, 0 ), /* 624 ntpsigndso */ - S_ST( 'k', 3, 626, 0 ), /* 625 ntpsigndsoc */ - S_ST( 'e', 3, 377, 0 ), /* 626 ntpsigndsock */ - S_ST( 'o', 3, 628, 570 ), /* 627 */ - S_ST( 'r', 3, 629, 0 ), /* 628 o */ - S_ST( 'p', 3, 630, 0 ), /* 629 or */ - S_ST( 'h', 3, 631, 0 ), /* 630 orp */ - S_ST( 'a', 3, 378, 0 ), /* 631 orph */ - S_ST( 'w', 3, 633, 0 ), /* 632 orphan */ - S_ST( 'a', 3, 634, 0 ), /* 633 orphanw */ - S_ST( 'i', 3, 379, 0 ), /* 634 orphanwa */ - S_ST( 'p', 3, 391, 627 ), /* 635 */ - S_ST( 'a', 3, 637, 0 ), /* 636 p */ - S_ST( 'n', 3, 638, 0 ), /* 637 pa */ - S_ST( 'i', 3, 380, 0 ), /* 638 pan */ - S_ST( 'e', 3, 640, 636 ), /* 639 p */ - S_ST( 'e', 3, 381, 0 ), /* 640 pe */ - S_ST( 's', 3, 642, 0 ), /* 641 peer */ - S_ST( 't', 3, 643, 0 ), /* 642 peers */ - S_ST( 'a', 3, 644, 0 ), /* 643 peerst */ - S_ST( 't', 3, 382, 0 ), /* 644 peersta */ - S_ST( 'h', 3, 646, 639 ), /* 645 p */ - S_ST( 'o', 3, 647, 0 ), /* 646 ph */ - S_ST( 'n', 3, 383, 0 ), /* 647 pho */ - S_ST( 'i', 3, 384, 645 ), /* 648 p */ - S_ST( 'f', 3, 650, 0 ), /* 649 pid */ - S_ST( 'i', 3, 651, 0 ), /* 650 pidf */ - S_ST( 'l', 3, 385, 0 ), /* 651 pidfi */ - S_ST( 'o', 3, 654, 648 ), /* 652 p */ - S_ST( 'o', 3, 386, 0 ), /* 653 po */ - S_ST( 'r', 3, 387, 653 ), /* 654 po */ - S_ST( 'r', 3, 662, 652 ), /* 655 p */ - S_ST( 'e', 3, 660, 0 ), /* 656 pr */ - S_ST( 'e', 3, 658, 0 ), /* 657 pre */ - S_ST( 'm', 3, 659, 0 ), /* 658 pree */ - S_ST( 'p', 3, 388, 0 ), /* 659 preem */ - S_ST( 'f', 3, 661, 657 ), /* 660 pre */ - S_ST( 'e', 3, 389, 0 ), /* 661 pref */ - S_ST( 'o', 3, 675, 656 ), /* 662 pr */ - S_ST( 'c', 3, 664, 0 ), /* 663 pro */ - S_ST( '_', 3, 665, 0 ), /* 664 proc */ - S_ST( 'd', 3, 666, 0 ), /* 665 proc_ */ - S_ST( 'e', 3, 667, 0 ), /* 666 proc_d */ - S_ST( 'l', 3, 668, 0 ), /* 667 proc_de */ - S_ST( 'a', 3, 451, 0 ), /* 668 proc_del */ - S_ST( 'p', 3, 670, 663 ), /* 669 pro */ - S_ST( '_', 3, 671, 0 ), /* 670 prop */ - S_ST( 'd', 3, 672, 0 ), /* 671 prop_ */ - S_ST( 'e', 3, 673, 0 ), /* 672 prop_d */ - S_ST( 'l', 3, 674, 0 ), /* 673 prop_de */ - S_ST( 'a', 3, 450, 0 ), /* 674 prop_del */ - S_ST( 't', 3, 676, 669 ), /* 675 pro */ - S_ST( 'o', 3, 677, 0 ), /* 676 prot */ - S_ST( 's', 3, 678, 0 ), /* 677 proto */ - S_ST( 't', 3, 679, 0 ), /* 678 protos */ - S_ST( 'a', 3, 680, 0 ), /* 679 protost */ - S_ST( 't', 3, 390, 0 ), /* 680 protosta */ - S_ST( 'r', 3, 712, 635 ), /* 681 */ - S_ST( 'a', 3, 688, 0 ), /* 682 r */ - S_ST( 'n', 3, 684, 0 ), /* 683 ra */ - S_ST( 'd', 3, 685, 0 ), /* 684 ran */ - S_ST( 'f', 3, 686, 0 ), /* 685 rand */ - S_ST( 'i', 3, 687, 0 ), /* 686 randf */ - S_ST( 'l', 3, 392, 0 ), /* 687 randfi */ - S_ST( 'w', 3, 689, 683 ), /* 688 ra */ - S_ST( 's', 3, 690, 0 ), /* 689 raw */ - S_ST( 't', 3, 691, 0 ), /* 690 raws */ - S_ST( 'a', 3, 692, 0 ), /* 691 rawst */ - S_ST( 't', 3, 393, 0 ), /* 692 rawsta */ - S_ST( 'e', 3, 709, 682 ), /* 693 r */ - S_ST( 'f', 3, 695, 0 ), /* 694 re */ - S_ST( 'i', 3, 394, 0 ), /* 695 ref */ - S_ST( 'q', 3, 697, 694 ), /* 696 re */ - S_ST( 'u', 3, 698, 0 ), /* 697 req */ - S_ST( 'e', 3, 699, 0 ), /* 698 requ */ - S_ST( 's', 3, 700, 0 ), /* 699 reque */ - S_ST( 't', 3, 701, 0 ), /* 700 reques */ - S_ST( 'k', 3, 702, 0 ), /* 701 request */ - S_ST( 'e', 3, 395, 0 ), /* 702 requestk */ - S_ST( 's', 3, 705, 696 ), /* 703 re */ - S_ST( 'e', 3, 396, 0 ), /* 704 res */ - S_ST( 't', 3, 706, 704 ), /* 705 res */ - S_ST( 'r', 3, 707, 0 ), /* 706 rest */ - S_ST( 'i', 3, 708, 0 ), /* 707 restr */ - S_ST( 'c', 3, 397, 0 ), /* 708 restri */ - S_ST( 'v', 3, 710, 703 ), /* 709 re */ - S_ST( 'o', 3, 711, 0 ), /* 710 rev */ - S_ST( 'k', 3, 398, 0 ), /* 711 revo */ - S_ST( 'l', 3, 713, 693 ), /* 712 r */ - S_ST( 'i', 3, 714, 0 ), /* 713 rl */ - S_ST( 'm', 3, 715, 0 ), /* 714 rli */ - S_ST( 'i', 3, 399, 0 ), /* 715 rlim */ - S_ST( 's', 3, 789, 681 ), /* 716 */ - S_ST( 'a', 3, 718, 0 ), /* 717 s */ - S_ST( 'v', 3, 719, 0 ), /* 718 sa */ - S_ST( 'e', 3, 720, 0 ), /* 719 sav */ - S_ST( 'c', 3, 721, 0 ), /* 720 save */ - S_ST( 'o', 3, 722, 0 ), /* 721 savec */ - S_ST( 'n', 3, 723, 0 ), /* 722 saveco */ - S_ST( 'f', 3, 724, 0 ), /* 723 savecon */ - S_ST( 'i', 3, 725, 0 ), /* 724 saveconf */ - S_ST( 'g', 3, 726, 0 ), /* 725 saveconfi */ - S_ST( 'd', 3, 727, 0 ), /* 726 saveconfig */ - S_ST( 'i', 3, 400, 0 ), /* 727 saveconfigd */ - S_ST( 'e', 3, 738, 717 ), /* 728 s */ - S_ST( 'r', 3, 730, 0 ), /* 729 se */ - S_ST( 'v', 3, 731, 0 ), /* 730 ser */ - S_ST( 'e', 3, 401, 0 ), /* 731 serv */ - S_ST( '_', 3, 733, 0 ), /* 732 server */ - S_ST( 'o', 3, 734, 0 ), /* 733 server_ */ - S_ST( 'f', 3, 735, 0 ), /* 734 server_o */ - S_ST( 'f', 3, 736, 0 ), /* 735 server_of */ - S_ST( 's', 3, 737, 0 ), /* 736 server_off */ - S_ST( 'e', 3, 445, 0 ), /* 737 server_offs */ - S_ST( 't', 3, 739, 729 ), /* 738 se */ - S_ST( 'v', 3, 740, 0 ), /* 739 set */ - S_ST( 'a', 3, 402, 0 ), /* 740 setv */ - S_ST( 'i', 3, 742, 728 ), /* 741 s */ - S_ST( 'm', 3, 743, 0 ), /* 742 si */ - S_ST( 'u', 3, 744, 0 ), /* 743 sim */ - S_ST( 'l', 3, 745, 0 ), /* 744 simu */ - S_ST( 'a', 3, 746, 0 ), /* 745 simul */ - S_ST( 't', 3, 747, 0 ), /* 746 simula */ - S_ST( 'i', 3, 748, 442 ), /* 747 simulat */ - S_ST( 'o', 3, 749, 0 ), /* 748 simulati */ - S_ST( 'n', 3, 750, 0 ), /* 749 simulatio */ - S_ST( '_', 3, 751, 0 ), /* 750 simulation */ - S_ST( 'd', 3, 752, 0 ), /* 751 simulation_ */ - S_ST( 'u', 3, 753, 0 ), /* 752 simulation_d */ - S_ST( 'r', 3, 754, 0 ), /* 753 simulation_du */ - S_ST( 'a', 3, 755, 0 ), /* 754 simulation_dur */ - S_ST( 't', 3, 756, 0 ), /* 755 simulation_dura */ - S_ST( 'i', 3, 757, 0 ), /* 756 simulation_durat */ - S_ST( 'o', 3, 444, 0 ), /* 757 simulation_durati */ - S_ST( 'o', 3, 759, 741 ), /* 758 s */ - S_ST( 'u', 3, 760, 0 ), /* 759 so */ - S_ST( 'r', 3, 761, 0 ), /* 760 sou */ - S_ST( 'c', 3, 403, 0 ), /* 761 sour */ - S_ST( 't', 3, 785, 758 ), /* 762 s */ - S_ST( 'a', 3, 769, 0 ), /* 763 st */ - S_ST( 'c', 3, 765, 0 ), /* 764 sta */ - S_ST( 'k', 3, 766, 0 ), /* 765 stac */ - S_ST( 's', 3, 767, 0 ), /* 766 stack */ - S_ST( 'i', 3, 768, 0 ), /* 767 stacks */ - S_ST( 'z', 3, 404, 0 ), /* 768 stacksi */ - S_ST( 't', 3, 406, 764 ), /* 769 sta */ - S_ST( 'i', 3, 771, 0 ), /* 770 stat */ - S_ST( 's', 3, 772, 0 ), /* 771 stati */ - S_ST( 't', 3, 773, 0 ), /* 772 statis */ - S_ST( 'i', 3, 774, 0 ), /* 773 statist */ - S_ST( 'c', 3, 405, 0 ), /* 774 statisti */ - S_ST( 'd', 3, 776, 0 ), /* 775 stats */ - S_ST( 'i', 3, 407, 0 ), /* 776 statsd */ - S_ST( 'e', 3, 408, 763 ), /* 777 st */ - S_ST( 'b', 3, 779, 0 ), /* 778 step */ - S_ST( 'a', 3, 780, 0 ), /* 779 stepb */ - S_ST( 'c', 3, 409, 0 ), /* 780 stepba */ - S_ST( 'f', 3, 782, 778 ), /* 781 step */ - S_ST( 'w', 3, 410, 0 ), /* 782 stepf */ - S_ST( 'o', 3, 784, 781 ), /* 783 step */ - S_ST( 'u', 3, 411, 0 ), /* 784 stepo */ - S_ST( 'r', 3, 786, 777 ), /* 785 st */ - S_ST( 'a', 3, 787, 0 ), /* 786 str */ - S_ST( 't', 3, 788, 0 ), /* 787 stra */ - S_ST( 'u', 3, 412, 0 ), /* 788 strat */ - S_ST( 'y', 3, 414, 762 ), /* 789 s */ - S_ST( 's', 3, 791, 0 ), /* 790 sys */ - S_ST( 't', 3, 792, 0 ), /* 791 syss */ - S_ST( 'a', 3, 793, 0 ), /* 792 sysst */ - S_ST( 't', 3, 415, 0 ), /* 793 syssta */ - S_ST( 't', 3, 820, 716 ), /* 794 */ - S_ST( 'i', 3, 806, 0 ), /* 795 t */ - S_ST( 'c', 3, 416, 0 ), /* 796 ti */ - S_ST( 'm', 3, 799, 796 ), /* 797 ti */ - S_ST( 'e', 3, 419, 0 ), /* 798 tim */ - S_ST( 'i', 3, 800, 798 ), /* 799 tim */ - S_ST( 'n', 3, 801, 0 ), /* 800 timi */ - S_ST( 'g', 3, 802, 0 ), /* 801 timin */ - S_ST( 's', 3, 803, 0 ), /* 802 timing */ - S_ST( 't', 3, 804, 0 ), /* 803 timings */ - S_ST( 'a', 3, 805, 0 ), /* 804 timingst */ - S_ST( 't', 3, 420, 0 ), /* 805 timingsta */ - S_ST( 'n', 3, 807, 797 ), /* 806 ti */ - S_ST( 'k', 3, 808, 0 ), /* 807 tin */ - S_ST( 'e', 3, 421, 0 ), /* 808 tink */ - S_ST( 'o', 3, 422, 795 ), /* 809 t */ - S_ST( 'r', 3, 812, 809 ), /* 810 t */ - S_ST( 'a', 3, 423, 0 ), /* 811 tr */ - S_ST( 'u', 3, 813, 811 ), /* 812 tr */ - S_ST( 's', 3, 814, 424 ), /* 813 tru */ - S_ST( 't', 3, 815, 0 ), /* 814 trus */ - S_ST( 'e', 3, 816, 0 ), /* 815 trust */ - S_ST( 'd', 3, 817, 0 ), /* 816 truste */ - S_ST( 'k', 3, 818, 0 ), /* 817 trusted */ - S_ST( 'e', 3, 425, 0 ), /* 818 trustedk */ - S_ST( 't', 3, 426, 810 ), /* 819 t */ - S_ST( 'y', 3, 821, 819 ), /* 820 t */ - S_ST( 'p', 3, 427, 0 ), /* 821 ty */ - S_ST( 'u', 3, 823, 794 ), /* 822 */ - S_ST( 'n', 3, 829, 0 ), /* 823 u */ - S_ST( 'c', 3, 825, 0 ), /* 824 un */ - S_ST( 'o', 3, 826, 0 ), /* 825 unc */ - S_ST( 'n', 3, 827, 0 ), /* 826 unco */ - S_ST( 'f', 3, 828, 0 ), /* 827 uncon */ - S_ST( 'i', 3, 432, 0 ), /* 828 unconf */ - S_ST( 'p', 3, 830, 824 ), /* 829 un */ - S_ST( 'e', 3, 831, 0 ), /* 830 unp */ - S_ST( 'e', 3, 433, 0 ), /* 831 unpe */ - S_ST( '_', 3, 852, 0 ), /* 832 unpeer */ - S_ST( 'c', 3, 834, 0 ), /* 833 unpeer_ */ - S_ST( 'r', 3, 835, 0 ), /* 834 unpeer_c */ - S_ST( 'y', 3, 836, 0 ), /* 835 unpeer_cr */ - S_ST( 'p', 3, 837, 0 ), /* 836 unpeer_cry */ - S_ST( 't', 3, 838, 0 ), /* 837 unpeer_cryp */ - S_ST( 'o', 3, 839, 0 ), /* 838 unpeer_crypt */ - S_ST( '_', 3, 844, 0 ), /* 839 unpeer_crypto */ - S_ST( 'e', 3, 841, 0 ), /* 840 unpeer_crypto_ */ - S_ST( 'a', 3, 842, 0 ), /* 841 unpeer_crypto_e */ - S_ST( 'r', 3, 843, 0 ), /* 842 unpeer_crypto_ea */ - S_ST( 'l', 3, 429, 0 ), /* 843 unpeer_crypto_ear */ - S_ST( 'n', 3, 845, 840 ), /* 844 unpeer_crypto_ */ - S_ST( 'a', 3, 846, 0 ), /* 845 unpeer_crypto_n */ - S_ST( 'k', 3, 847, 0 ), /* 846 unpeer_crypto_na */ - S_ST( '_', 3, 848, 0 ), /* 847 unpeer_crypto_nak */ - S_ST( 'e', 3, 849, 0 ), /* 848 unpeer_crypto_nak_ */ - S_ST( 'a', 3, 850, 0 ), /* 849 unpeer_crypto_nak_e */ - S_ST( 'r', 3, 851, 0 ), /* 850 unpeer_crypto_nak_ea */ - S_ST( 'l', 3, 430, 0 ), /* 851 unpeer_crypto_nak_ear */ - S_ST( 'd', 3, 853, 833 ), /* 852 unpeer_ */ - S_ST( 'i', 3, 854, 0 ), /* 853 unpeer_d */ - S_ST( 'g', 3, 855, 0 ), /* 854 unpeer_di */ - S_ST( 'e', 3, 856, 0 ), /* 855 unpeer_dig */ - S_ST( 's', 3, 857, 0 ), /* 856 unpeer_dige */ - S_ST( 't', 3, 858, 0 ), /* 857 unpeer_diges */ - S_ST( '_', 3, 859, 0 ), /* 858 unpeer_digest */ - S_ST( 'e', 3, 860, 0 ), /* 859 unpeer_digest_ */ - S_ST( 'a', 3, 861, 0 ), /* 860 unpeer_digest_e */ - S_ST( 'r', 3, 862, 0 ), /* 861 unpeer_digest_ea */ - S_ST( 'l', 3, 431, 0 ), /* 862 unpeer_digest_ear */ - S_ST( 'v', 3, 864, 822 ), /* 863 */ - S_ST( 'e', 3, 865, 0 ), /* 864 v */ - S_ST( 'r', 3, 866, 0 ), /* 865 ve */ - S_ST( 's', 3, 867, 0 ), /* 866 ver */ - S_ST( 'i', 3, 868, 0 ), /* 867 vers */ - S_ST( 'o', 3, 434, 0 ), /* 868 versi */ - S_ST( 'w', 3, 876, 863 ), /* 869 */ - S_ST( 'a', 3, 871, 0 ), /* 870 w */ - S_ST( 'n', 3, 872, 0 ), /* 871 wa */ - S_ST( 'd', 3, 873, 0 ), /* 872 wan */ - S_ST( 'e', 3, 448, 0 ), /* 873 wand */ - S_ST( 'e', 3, 875, 870 ), /* 874 w */ - S_ST( 'e', 3, 436, 0 ), /* 875 we */ - S_ST( 'i', 3, 877, 874 ), /* 876 w */ - S_ST( 'l', 3, 878, 0 ), /* 877 wi */ - S_ST( 'd', 3, 879, 0 ), /* 878 wil */ - S_ST( 'c', 3, 880, 0 ), /* 879 wild */ - S_ST( 'a', 3, 881, 0 ), /* 880 wildc */ - S_ST( 'r', 3, 437, 0 ), /* 881 wildca */ - S_ST( 'x', 3, 883, 869 ), /* 882 */ - S_ST( 'l', 3, 884, 0 ), /* 883 x */ - S_ST( 'e', 3, 885, 0 ), /* 884 xl */ - S_ST( 'a', 3, 886, 0 ), /* 885 xle */ - S_ST( 'v', 3, 438, 0 ), /* 886 xlea */ - S_ST( 'y', 3, 888, 882 ), /* 887 [initial state] */ - S_ST( 'e', 3, 889, 0 ), /* 888 y */ - S_ST( 'a', 3, 439, 0 ) /* 889 ye */ + S_ST( 'y', 0, 0, 0 ), /* 380 T_PCEdigest */ + S_ST( 'c', 0, 0, 0 ), /* 381 T_Panic */ + S_ST( 'r', 1, 660, 0 ), /* 382 T_Peer */ + S_ST( 's', 0, 0, 0 ), /* 383 T_Peerstats */ + S_ST( 'e', 2, 0, 0 ), /* 384 T_Phone */ + S_ST( 'd', 0, 668, 0 ), /* 385 T_Pid */ + S_ST( 'e', 1, 0, 0 ), /* 386 T_Pidfile */ + S_ST( 'l', 1, 0, 0 ), /* 387 T_Pool */ + S_ST( 't', 0, 0, 0 ), /* 388 T_Port */ + S_ST( 't', 0, 0, 0 ), /* 389 T_Preempt */ + S_ST( 'r', 0, 0, 0 ), /* 390 T_Prefer */ + S_ST( 's', 0, 0, 0 ), /* 391 T_Protostats */ + S_ST( 'w', 1, 0, 674 ), /* 392 T_Pw */ + S_ST( 'e', 1, 0, 0 ), /* 393 T_Randfile */ + S_ST( 's', 0, 0, 0 ), /* 394 T_Rawstats */ + S_ST( 'd', 1, 0, 0 ), /* 395 T_Refid */ + S_ST( 'y', 0, 0, 0 ), /* 396 T_Requestkey */ + S_ST( 't', 0, 0, 0 ), /* 397 T_Reset */ + S_ST( 't', 0, 0, 0 ), /* 398 T_Restrict */ + S_ST( 'e', 0, 0, 0 ), /* 399 T_Revoke */ + S_ST( 't', 0, 0, 0 ), /* 400 T_Rlimit */ + S_ST( 'r', 1, 0, 0 ), /* 401 T_Saveconfigdir */ + S_ST( 'r', 1, 751, 0 ), /* 402 T_Server */ + S_ST( 'r', 1, 0, 0 ), /* 403 T_Setvar */ + S_ST( 'e', 0, 0, 0 ), /* 404 T_Source */ + S_ST( 'e', 0, 0, 0 ), /* 405 T_Stacksize */ + S_ST( 's', 0, 0, 0 ), /* 406 T_Statistics */ + S_ST( 's', 0, 794, 789 ), /* 407 T_Stats */ + S_ST( 'r', 1, 0, 0 ), /* 408 T_Statsdir */ + S_ST( 'p', 0, 802, 0 ), /* 409 T_Step */ + S_ST( 'k', 0, 0, 0 ), /* 410 T_Stepback */ + S_ST( 'd', 0, 0, 0 ), /* 411 T_Stepfwd */ + S_ST( 't', 0, 0, 0 ), /* 412 T_Stepout */ + S_ST( 'm', 0, 0, 0 ), /* 413 T_Stratum */ + S_ST( 'e', 3, 332, 0 ), /* 414 limit */ + S_ST( 's', 0, 809, 0 ), /* 415 T_Sys */ + S_ST( 's', 0, 0, 0 ), /* 416 T_Sysstats */ + S_ST( 'k', 0, 0, 0 ), /* 417 T_Tick */ + S_ST( '1', 0, 0, 0 ), /* 418 T_Time1 */ + S_ST( '2', 0, 0, 418 ), /* 419 T_Time2 */ + S_ST( 'r', 0, 0, 419 ), /* 420 T_Timer */ + S_ST( 's', 0, 0, 0 ), /* 421 T_Timingstats */ + S_ST( 'r', 0, 0, 0 ), /* 422 T_Tinker */ + S_ST( 's', 0, 0, 0 ), /* 423 T_Tos */ + S_ST( 'p', 1, 0, 0 ), /* 424 T_Trap */ + S_ST( 'e', 0, 0, 0 ), /* 425 T_True */ + S_ST( 'y', 0, 0, 0 ), /* 426 T_Trustedkey */ + S_ST( 'l', 0, 0, 0 ), /* 427 T_Ttl */ + S_ST( 'e', 0, 0, 0 ), /* 428 T_Type */ + S_ST( 'n', 3, 333, 294 ), /* 429 li */ + S_ST( 'y', 0, 0, 0 ), /* 430 T_UEcrypto */ + S_ST( 'y', 0, 0, 0 ), /* 431 T_UEcryptonak */ + S_ST( 'y', 0, 0, 0 ), /* 432 T_UEdigest */ + S_ST( 'g', 1, 0, 0 ), /* 433 T_Unconfig */ + S_ST( 'r', 1, 851, 0 ), /* 434 T_Unpeer */ + S_ST( 'n', 0, 0, 0 ), /* 435 T_Version */ + S_ST( 's', 3, 441, 429 ), /* 436 li */ + S_ST( 'k', 0, 0, 0 ), /* 437 T_Week */ + S_ST( 'd', 0, 0, 0 ), /* 438 T_Wildcard */ + S_ST( 'e', 0, 0, 0 ), /* 439 T_Xleave */ + S_ST( 'r', 0, 0, 0 ), /* 440 T_Year */ + S_ST( 't', 3, 442, 0 ), /* 441 lis */ + S_ST( 'e', 3, 334, 0 ), /* 442 list */ + S_ST( 'e', 0, 0, 0 ), /* 443 T_Simulate */ + S_ST( 'y', 0, 0, 0 ), /* 444 T_Beep_Delay */ + S_ST( 'n', 0, 0, 0 ), /* 445 T_Sim_Duration */ + S_ST( 't', 0, 0, 0 ), /* 446 T_Server_Offset */ + S_ST( 'n', 0, 0, 0 ), /* 447 T_Duration */ + S_ST( 't', 0, 0, 0 ), /* 448 T_Freq_Offset */ + S_ST( 'r', 0, 0, 0 ), /* 449 T_Wander */ + S_ST( 'r', 0, 0, 0 ), /* 450 T_Jitter */ + S_ST( 'y', 0, 0, 0 ), /* 451 T_Prop_Delay */ + S_ST( 'y', 0, 0, 0 ), /* 452 T_Proc_Delay */ + S_ST( 'o', 3, 469, 287 ), /* 453 l */ + S_ST( 'g', 3, 460, 0 ), /* 454 lo */ + S_ST( 'c', 3, 456, 0 ), /* 455 log */ + S_ST( 'o', 3, 457, 0 ), /* 456 logc */ + S_ST( 'n', 3, 458, 0 ), /* 457 logco */ + S_ST( 'f', 3, 459, 0 ), /* 458 logcon */ + S_ST( 'i', 3, 335, 0 ), /* 459 logconf */ + S_ST( 'f', 3, 461, 455 ), /* 460 log */ + S_ST( 'i', 3, 462, 0 ), /* 461 logf */ + S_ST( 'l', 3, 336, 0 ), /* 462 logfi */ + S_ST( 'o', 3, 464, 454 ), /* 463 lo */ + S_ST( 'p', 3, 465, 0 ), /* 464 loo */ + S_ST( 's', 3, 466, 0 ), /* 465 loop */ + S_ST( 't', 3, 467, 0 ), /* 466 loops */ + S_ST( 'a', 3, 468, 0 ), /* 467 loopst */ + S_ST( 't', 3, 337, 0 ), /* 468 loopsta */ + S_ST( 'w', 3, 470, 463 ), /* 469 lo */ + S_ST( 'p', 3, 471, 0 ), /* 470 low */ + S_ST( 'r', 3, 472, 0 ), /* 471 lowp */ + S_ST( 'i', 3, 473, 0 ), /* 472 lowpr */ + S_ST( 'o', 3, 474, 0 ), /* 473 lowpri */ + S_ST( 't', 3, 475, 0 ), /* 474 lowprio */ + S_ST( 'r', 3, 476, 0 ), /* 475 lowpriot */ + S_ST( 'a', 3, 338, 0 ), /* 476 lowpriotr */ + S_ST( 'm', 3, 558, 239 ), /* 477 */ + S_ST( 'a', 3, 496, 0 ), /* 478 m */ + S_ST( 'n', 3, 480, 0 ), /* 479 ma */ + S_ST( 'y', 3, 481, 0 ), /* 480 man */ + S_ST( 'c', 3, 482, 0 ), /* 481 many */ + S_ST( 'a', 3, 483, 0 ), /* 482 manyc */ + S_ST( 's', 3, 484, 0 ), /* 483 manyca */ + S_ST( 't', 3, 490, 0 ), /* 484 manycas */ + S_ST( 'c', 3, 486, 0 ), /* 485 manycast */ + S_ST( 'l', 3, 487, 0 ), /* 486 manycastc */ + S_ST( 'i', 3, 488, 0 ), /* 487 manycastcl */ + S_ST( 'e', 3, 489, 0 ), /* 488 manycastcli */ + S_ST( 'n', 3, 339, 0 ), /* 489 manycastclie */ + S_ST( 's', 3, 491, 485 ), /* 490 manycast */ + S_ST( 'e', 3, 492, 0 ), /* 491 manycasts */ + S_ST( 'r', 3, 493, 0 ), /* 492 manycastse */ + S_ST( 'v', 3, 494, 0 ), /* 493 manycastser */ + S_ST( 'e', 3, 340, 0 ), /* 494 manycastserv */ + S_ST( 's', 3, 341, 479 ), /* 495 ma */ + S_ST( 'x', 3, 511, 495 ), /* 496 ma */ + S_ST( 'a', 3, 498, 0 ), /* 497 max */ + S_ST( 'g', 3, 342, 0 ), /* 498 maxa */ + S_ST( 'c', 3, 500, 497 ), /* 499 max */ + S_ST( 'l', 3, 501, 0 ), /* 500 maxc */ + S_ST( 'o', 3, 502, 0 ), /* 501 maxcl */ + S_ST( 'c', 3, 343, 0 ), /* 502 maxclo */ + S_ST( 'd', 3, 507, 499 ), /* 503 max */ + S_ST( 'e', 3, 505, 0 ), /* 504 maxd */ + S_ST( 'p', 3, 506, 0 ), /* 505 maxde */ + S_ST( 't', 3, 344, 0 ), /* 506 maxdep */ + S_ST( 'i', 3, 508, 504 ), /* 507 maxd */ + S_ST( 's', 3, 345, 0 ), /* 508 maxdi */ + S_ST( 'm', 3, 510, 503 ), /* 509 max */ + S_ST( 'e', 3, 346, 0 ), /* 510 maxm */ + S_ST( 'p', 3, 512, 509 ), /* 511 max */ + S_ST( 'o', 3, 513, 0 ), /* 512 maxp */ + S_ST( 'l', 3, 347, 0 ), /* 513 maxpo */ + S_ST( 'd', 3, 515, 478 ), /* 514 m */ + S_ST( 'n', 3, 516, 0 ), /* 515 md */ + S_ST( 's', 3, 517, 0 ), /* 516 mdn */ + S_ST( 't', 3, 518, 0 ), /* 517 mdns */ + S_ST( 'r', 3, 519, 0 ), /* 518 mdnst */ + S_ST( 'i', 3, 520, 0 ), /* 519 mdnstr */ + S_ST( 'e', 3, 348, 0 ), /* 520 mdnstri */ + S_ST( 'e', 3, 349, 514 ), /* 521 m */ + S_ST( 'l', 3, 523, 0 ), /* 522 mem */ + S_ST( 'o', 3, 524, 0 ), /* 523 meml */ + S_ST( 'c', 3, 350, 0 ), /* 524 memlo */ + S_ST( 'i', 3, 526, 521 ), /* 525 m */ + S_ST( 'n', 3, 543, 0 ), /* 526 mi */ + S_ST( 'c', 3, 528, 0 ), /* 527 min */ + S_ST( 'l', 3, 529, 0 ), /* 528 minc */ + S_ST( 'o', 3, 530, 0 ), /* 529 mincl */ + S_ST( 'c', 3, 351, 0 ), /* 530 minclo */ + S_ST( 'd', 3, 535, 527 ), /* 531 min */ + S_ST( 'e', 3, 533, 0 ), /* 532 mind */ + S_ST( 'p', 3, 534, 0 ), /* 533 minde */ + S_ST( 't', 3, 352, 0 ), /* 534 mindep */ + S_ST( 'i', 3, 536, 532 ), /* 535 mind */ + S_ST( 's', 3, 353, 0 ), /* 536 mindi */ + S_ST( 'i', 3, 538, 531 ), /* 537 min */ + S_ST( 'm', 3, 539, 0 ), /* 538 mini */ + S_ST( 'u', 3, 354, 0 ), /* 539 minim */ + S_ST( 'p', 3, 541, 537 ), /* 540 min */ + S_ST( 'o', 3, 542, 0 ), /* 541 minp */ + S_ST( 'l', 3, 355, 0 ), /* 542 minpo */ + S_ST( 's', 3, 544, 540 ), /* 543 min */ + S_ST( 'a', 3, 545, 0 ), /* 544 mins */ + S_ST( 'n', 3, 356, 0 ), /* 545 minsa */ + S_ST( 'o', 3, 548, 525 ), /* 546 m */ + S_ST( 'd', 3, 357, 0 ), /* 547 mo */ + S_ST( 'n', 3, 552, 547 ), /* 548 mo */ + S_ST( 'i', 3, 550, 0 ), /* 549 mon */ + S_ST( 't', 3, 551, 0 ), /* 550 moni */ + S_ST( 'o', 3, 359, 0 ), /* 551 monit */ + S_ST( 't', 3, 360, 549 ), /* 552 mon */ + S_ST( 'r', 3, 361, 546 ), /* 553 m */ + S_ST( 's', 3, 555, 553 ), /* 554 m */ + S_ST( 's', 3, 556, 0 ), /* 555 ms */ + S_ST( 'n', 3, 557, 0 ), /* 556 mss */ + S_ST( 't', 3, 329, 0 ), /* 557 mssn */ + S_ST( 'u', 3, 559, 554 ), /* 558 m */ + S_ST( 'l', 3, 560, 0 ), /* 559 mu */ + S_ST( 't', 3, 561, 0 ), /* 560 mul */ + S_ST( 'i', 3, 562, 0 ), /* 561 mult */ + S_ST( 'c', 3, 563, 0 ), /* 562 multi */ + S_ST( 'a', 3, 564, 0 ), /* 563 multic */ + S_ST( 's', 3, 565, 0 ), /* 564 multica */ + S_ST( 't', 3, 566, 0 ), /* 565 multicas */ + S_ST( 'c', 3, 567, 0 ), /* 566 multicast */ + S_ST( 'l', 3, 568, 0 ), /* 567 multicastc */ + S_ST( 'i', 3, 569, 0 ), /* 568 multicastcl */ + S_ST( 'e', 3, 570, 0 ), /* 569 multicastcli */ + S_ST( 'n', 3, 362, 0 ), /* 570 multicastclie */ + S_ST( 'n', 3, 614, 477 ), /* 571 */ + S_ST( 'i', 3, 363, 0 ), /* 572 n */ + S_ST( 'o', 3, 609, 572 ), /* 573 n */ + S_ST( 'l', 3, 575, 0 ), /* 574 no */ + S_ST( 'i', 3, 576, 0 ), /* 575 nol */ + S_ST( 'n', 3, 364, 0 ), /* 576 noli */ + S_ST( 'm', 3, 582, 574 ), /* 577 no */ + S_ST( 'o', 3, 579, 0 ), /* 578 nom */ + S_ST( 'd', 3, 580, 0 ), /* 579 nomo */ + S_ST( 'i', 3, 581, 0 ), /* 580 nomod */ + S_ST( 'f', 3, 365, 0 ), /* 581 nomodi */ + S_ST( 'r', 3, 583, 578 ), /* 582 nom */ + S_ST( 'u', 3, 584, 0 ), /* 583 nomr */ + S_ST( 'l', 3, 585, 0 ), /* 584 nomru */ + S_ST( 'i', 3, 586, 0 ), /* 585 nomrul */ + S_ST( 's', 3, 366, 0 ), /* 586 nomruli */ + S_ST( 'n', 3, 588, 577 ), /* 587 no */ + S_ST( 'v', 3, 589, 367 ), /* 588 non */ + S_ST( 'o', 3, 590, 0 ), /* 589 nonv */ + S_ST( 'l', 3, 591, 0 ), /* 590 nonvo */ + S_ST( 'a', 3, 592, 0 ), /* 591 nonvol */ + S_ST( 't', 3, 593, 0 ), /* 592 nonvola */ + S_ST( 'i', 3, 594, 0 ), /* 593 nonvolat */ + S_ST( 'l', 3, 368, 0 ), /* 594 nonvolati */ + S_ST( 'p', 3, 596, 587 ), /* 595 no */ + S_ST( 'e', 3, 597, 0 ), /* 596 nop */ + S_ST( 'e', 3, 369, 0 ), /* 597 nope */ + S_ST( 'q', 3, 599, 595 ), /* 598 no */ + S_ST( 'u', 3, 600, 0 ), /* 599 noq */ + S_ST( 'e', 3, 601, 0 ), /* 600 noqu */ + S_ST( 'r', 3, 370, 0 ), /* 601 noque */ + S_ST( 's', 3, 603, 598 ), /* 602 no */ + S_ST( 'e', 3, 607, 0 ), /* 603 nos */ + S_ST( 'l', 3, 605, 0 ), /* 604 nose */ + S_ST( 'e', 3, 606, 0 ), /* 605 nosel */ + S_ST( 'c', 3, 371, 0 ), /* 606 nosele */ + S_ST( 'r', 3, 608, 604 ), /* 607 nose */ + S_ST( 'v', 3, 372, 0 ), /* 608 noser */ + S_ST( 't', 3, 610, 602 ), /* 609 no */ + S_ST( 'r', 3, 612, 0 ), /* 610 not */ + S_ST( 'a', 3, 373, 0 ), /* 611 notr */ + S_ST( 'u', 3, 613, 611 ), /* 612 notr */ + S_ST( 's', 3, 374, 0 ), /* 613 notru */ + S_ST( 't', 3, 375, 573 ), /* 614 n */ + S_ST( 'p', 3, 616, 0 ), /* 615 ntp */ + S_ST( 'o', 3, 617, 0 ), /* 616 ntpp */ + S_ST( 'r', 3, 376, 0 ), /* 617 ntppo */ + S_ST( 's', 3, 619, 615 ), /* 618 ntp */ + S_ST( 'i', 3, 620, 0 ), /* 619 ntps */ + S_ST( 'g', 3, 621, 0 ), /* 620 ntpsi */ + S_ST( 'n', 3, 622, 0 ), /* 621 ntpsig */ + S_ST( 'd', 3, 623, 0 ), /* 622 ntpsign */ + S_ST( 's', 3, 624, 0 ), /* 623 ntpsignd */ + S_ST( 'o', 3, 625, 0 ), /* 624 ntpsignds */ + S_ST( 'c', 3, 626, 0 ), /* 625 ntpsigndso */ + S_ST( 'k', 3, 627, 0 ), /* 626 ntpsigndsoc */ + S_ST( 'e', 3, 377, 0 ), /* 627 ntpsigndsock */ + S_ST( 'o', 3, 629, 571 ), /* 628 */ + S_ST( 'r', 3, 630, 0 ), /* 629 o */ + S_ST( 'p', 3, 631, 0 ), /* 630 or */ + S_ST( 'h', 3, 632, 0 ), /* 631 orp */ + S_ST( 'a', 3, 378, 0 ), /* 632 orph */ + S_ST( 'w', 3, 634, 0 ), /* 633 orphan */ + S_ST( 'a', 3, 635, 0 ), /* 634 orphanw */ + S_ST( 'i', 3, 379, 0 ), /* 635 orphanwa */ + S_ST( 'p', 3, 392, 628 ), /* 636 */ + S_ST( 'a', 3, 638, 0 ), /* 637 p */ + S_ST( 'n', 3, 639, 0 ), /* 638 pa */ + S_ST( 'i', 3, 381, 0 ), /* 639 pan */ + S_ST( 'e', 3, 641, 637 ), /* 640 p */ + S_ST( 'e', 3, 382, 0 ), /* 641 pe */ + S_ST( '_', 3, 643, 0 ), /* 642 peer */ + S_ST( 'c', 3, 644, 0 ), /* 643 peer_ */ + S_ST( 'l', 3, 645, 0 ), /* 644 peer_c */ + S_ST( 'e', 3, 646, 0 ), /* 645 peer_cl */ + S_ST( 'a', 3, 647, 0 ), /* 646 peer_cle */ + S_ST( 'r', 3, 648, 0 ), /* 647 peer_clea */ + S_ST( '_', 3, 649, 0 ), /* 648 peer_clear */ + S_ST( 'd', 3, 650, 0 ), /* 649 peer_clear_ */ + S_ST( 'i', 3, 651, 0 ), /* 650 peer_clear_d */ + S_ST( 'g', 3, 652, 0 ), /* 651 peer_clear_di */ + S_ST( 'e', 3, 653, 0 ), /* 652 peer_clear_dig */ + S_ST( 's', 3, 654, 0 ), /* 653 peer_clear_dige */ + S_ST( 't', 3, 655, 0 ), /* 654 peer_clear_diges */ + S_ST( '_', 3, 656, 0 ), /* 655 peer_clear_digest */ + S_ST( 'e', 3, 657, 0 ), /* 656 peer_clear_digest_ */ + S_ST( 'a', 3, 658, 0 ), /* 657 peer_clear_digest_e */ + S_ST( 'r', 3, 659, 0 ), /* 658 peer_clear_digest_ea */ + S_ST( 'l', 3, 380, 0 ), /* 659 peer_clear_digest_ear */ + S_ST( 's', 3, 661, 642 ), /* 660 peer */ + S_ST( 't', 3, 662, 0 ), /* 661 peers */ + S_ST( 'a', 3, 663, 0 ), /* 662 peerst */ + S_ST( 't', 3, 383, 0 ), /* 663 peersta */ + S_ST( 'h', 3, 665, 640 ), /* 664 p */ + S_ST( 'o', 3, 666, 0 ), /* 665 ph */ + S_ST( 'n', 3, 384, 0 ), /* 666 pho */ + S_ST( 'i', 3, 385, 664 ), /* 667 p */ + S_ST( 'f', 3, 669, 0 ), /* 668 pid */ + S_ST( 'i', 3, 670, 0 ), /* 669 pidf */ + S_ST( 'l', 3, 386, 0 ), /* 670 pidfi */ + S_ST( 'o', 3, 673, 667 ), /* 671 p */ + S_ST( 'o', 3, 387, 0 ), /* 672 po */ + S_ST( 'r', 3, 388, 672 ), /* 673 po */ + S_ST( 'r', 3, 681, 671 ), /* 674 p */ + S_ST( 'e', 3, 679, 0 ), /* 675 pr */ + S_ST( 'e', 3, 677, 0 ), /* 676 pre */ + S_ST( 'm', 3, 678, 0 ), /* 677 pree */ + S_ST( 'p', 3, 389, 0 ), /* 678 preem */ + S_ST( 'f', 3, 680, 676 ), /* 679 pre */ + S_ST( 'e', 3, 390, 0 ), /* 680 pref */ + S_ST( 'o', 3, 694, 675 ), /* 681 pr */ + S_ST( 'c', 3, 683, 0 ), /* 682 pro */ + S_ST( '_', 3, 684, 0 ), /* 683 proc */ + S_ST( 'd', 3, 685, 0 ), /* 684 proc_ */ + S_ST( 'e', 3, 686, 0 ), /* 685 proc_d */ + S_ST( 'l', 3, 687, 0 ), /* 686 proc_de */ + S_ST( 'a', 3, 452, 0 ), /* 687 proc_del */ + S_ST( 'p', 3, 689, 682 ), /* 688 pro */ + S_ST( '_', 3, 690, 0 ), /* 689 prop */ + S_ST( 'd', 3, 691, 0 ), /* 690 prop_ */ + S_ST( 'e', 3, 692, 0 ), /* 691 prop_d */ + S_ST( 'l', 3, 693, 0 ), /* 692 prop_de */ + S_ST( 'a', 3, 451, 0 ), /* 693 prop_del */ + S_ST( 't', 3, 695, 688 ), /* 694 pro */ + S_ST( 'o', 3, 696, 0 ), /* 695 prot */ + S_ST( 's', 3, 697, 0 ), /* 696 proto */ + S_ST( 't', 3, 698, 0 ), /* 697 protos */ + S_ST( 'a', 3, 699, 0 ), /* 698 protost */ + S_ST( 't', 3, 391, 0 ), /* 699 protosta */ + S_ST( 'r', 3, 731, 636 ), /* 700 */ + S_ST( 'a', 3, 707, 0 ), /* 701 r */ + S_ST( 'n', 3, 703, 0 ), /* 702 ra */ + S_ST( 'd', 3, 704, 0 ), /* 703 ran */ + S_ST( 'f', 3, 705, 0 ), /* 704 rand */ + S_ST( 'i', 3, 706, 0 ), /* 705 randf */ + S_ST( 'l', 3, 393, 0 ), /* 706 randfi */ + S_ST( 'w', 3, 708, 702 ), /* 707 ra */ + S_ST( 's', 3, 709, 0 ), /* 708 raw */ + S_ST( 't', 3, 710, 0 ), /* 709 raws */ + S_ST( 'a', 3, 711, 0 ), /* 710 rawst */ + S_ST( 't', 3, 394, 0 ), /* 711 rawsta */ + S_ST( 'e', 3, 728, 701 ), /* 712 r */ + S_ST( 'f', 3, 714, 0 ), /* 713 re */ + S_ST( 'i', 3, 395, 0 ), /* 714 ref */ + S_ST( 'q', 3, 716, 713 ), /* 715 re */ + S_ST( 'u', 3, 717, 0 ), /* 716 req */ + S_ST( 'e', 3, 718, 0 ), /* 717 requ */ + S_ST( 's', 3, 719, 0 ), /* 718 reque */ + S_ST( 't', 3, 720, 0 ), /* 719 reques */ + S_ST( 'k', 3, 721, 0 ), /* 720 request */ + S_ST( 'e', 3, 396, 0 ), /* 721 requestk */ + S_ST( 's', 3, 724, 715 ), /* 722 re */ + S_ST( 'e', 3, 397, 0 ), /* 723 res */ + S_ST( 't', 3, 725, 723 ), /* 724 res */ + S_ST( 'r', 3, 726, 0 ), /* 725 rest */ + S_ST( 'i', 3, 727, 0 ), /* 726 restr */ + S_ST( 'c', 3, 398, 0 ), /* 727 restri */ + S_ST( 'v', 3, 729, 722 ), /* 728 re */ + S_ST( 'o', 3, 730, 0 ), /* 729 rev */ + S_ST( 'k', 3, 399, 0 ), /* 730 revo */ + S_ST( 'l', 3, 732, 712 ), /* 731 r */ + S_ST( 'i', 3, 733, 0 ), /* 732 rl */ + S_ST( 'm', 3, 734, 0 ), /* 733 rli */ + S_ST( 'i', 3, 400, 0 ), /* 734 rlim */ + S_ST( 's', 3, 808, 700 ), /* 735 */ + S_ST( 'a', 3, 737, 0 ), /* 736 s */ + S_ST( 'v', 3, 738, 0 ), /* 737 sa */ + S_ST( 'e', 3, 739, 0 ), /* 738 sav */ + S_ST( 'c', 3, 740, 0 ), /* 739 save */ + S_ST( 'o', 3, 741, 0 ), /* 740 savec */ + S_ST( 'n', 3, 742, 0 ), /* 741 saveco */ + S_ST( 'f', 3, 743, 0 ), /* 742 savecon */ + S_ST( 'i', 3, 744, 0 ), /* 743 saveconf */ + S_ST( 'g', 3, 745, 0 ), /* 744 saveconfi */ + S_ST( 'd', 3, 746, 0 ), /* 745 saveconfig */ + S_ST( 'i', 3, 401, 0 ), /* 746 saveconfigd */ + S_ST( 'e', 3, 757, 736 ), /* 747 s */ + S_ST( 'r', 3, 749, 0 ), /* 748 se */ + S_ST( 'v', 3, 750, 0 ), /* 749 ser */ + S_ST( 'e', 3, 402, 0 ), /* 750 serv */ + S_ST( '_', 3, 752, 0 ), /* 751 server */ + S_ST( 'o', 3, 753, 0 ), /* 752 server_ */ + S_ST( 'f', 3, 754, 0 ), /* 753 server_o */ + S_ST( 'f', 3, 755, 0 ), /* 754 server_of */ + S_ST( 's', 3, 756, 0 ), /* 755 server_off */ + S_ST( 'e', 3, 446, 0 ), /* 756 server_offs */ + S_ST( 't', 3, 758, 748 ), /* 757 se */ + S_ST( 'v', 3, 759, 0 ), /* 758 set */ + S_ST( 'a', 3, 403, 0 ), /* 759 setv */ + S_ST( 'i', 3, 761, 747 ), /* 760 s */ + S_ST( 'm', 3, 762, 0 ), /* 761 si */ + S_ST( 'u', 3, 763, 0 ), /* 762 sim */ + S_ST( 'l', 3, 764, 0 ), /* 763 simu */ + S_ST( 'a', 3, 765, 0 ), /* 764 simul */ + S_ST( 't', 3, 766, 0 ), /* 765 simula */ + S_ST( 'i', 3, 767, 443 ), /* 766 simulat */ + S_ST( 'o', 3, 768, 0 ), /* 767 simulati */ + S_ST( 'n', 3, 769, 0 ), /* 768 simulatio */ + S_ST( '_', 3, 770, 0 ), /* 769 simulation */ + S_ST( 'd', 3, 771, 0 ), /* 770 simulation_ */ + S_ST( 'u', 3, 772, 0 ), /* 771 simulation_d */ + S_ST( 'r', 3, 773, 0 ), /* 772 simulation_du */ + S_ST( 'a', 3, 774, 0 ), /* 773 simulation_dur */ + S_ST( 't', 3, 775, 0 ), /* 774 simulation_dura */ + S_ST( 'i', 3, 776, 0 ), /* 775 simulation_durat */ + S_ST( 'o', 3, 445, 0 ), /* 776 simulation_durati */ + S_ST( 'o', 3, 778, 760 ), /* 777 s */ + S_ST( 'u', 3, 779, 0 ), /* 778 so */ + S_ST( 'r', 3, 780, 0 ), /* 779 sou */ + S_ST( 'c', 3, 404, 0 ), /* 780 sour */ + S_ST( 't', 3, 804, 777 ), /* 781 s */ + S_ST( 'a', 3, 788, 0 ), /* 782 st */ + S_ST( 'c', 3, 784, 0 ), /* 783 sta */ + S_ST( 'k', 3, 785, 0 ), /* 784 stac */ + S_ST( 's', 3, 786, 0 ), /* 785 stack */ + S_ST( 'i', 3, 787, 0 ), /* 786 stacks */ + S_ST( 'z', 3, 405, 0 ), /* 787 stacksi */ + S_ST( 't', 3, 407, 783 ), /* 788 sta */ + S_ST( 'i', 3, 790, 0 ), /* 789 stat */ + S_ST( 's', 3, 791, 0 ), /* 790 stati */ + S_ST( 't', 3, 792, 0 ), /* 791 statis */ + S_ST( 'i', 3, 793, 0 ), /* 792 statist */ + S_ST( 'c', 3, 406, 0 ), /* 793 statisti */ + S_ST( 'd', 3, 795, 0 ), /* 794 stats */ + S_ST( 'i', 3, 408, 0 ), /* 795 statsd */ + S_ST( 'e', 3, 409, 782 ), /* 796 st */ + S_ST( 'b', 3, 798, 0 ), /* 797 step */ + S_ST( 'a', 3, 799, 0 ), /* 798 stepb */ + S_ST( 'c', 3, 410, 0 ), /* 799 stepba */ + S_ST( 'f', 3, 801, 797 ), /* 800 step */ + S_ST( 'w', 3, 411, 0 ), /* 801 stepf */ + S_ST( 'o', 3, 803, 800 ), /* 802 step */ + S_ST( 'u', 3, 412, 0 ), /* 803 stepo */ + S_ST( 'r', 3, 805, 796 ), /* 804 st */ + S_ST( 'a', 3, 806, 0 ), /* 805 str */ + S_ST( 't', 3, 807, 0 ), /* 806 stra */ + S_ST( 'u', 3, 413, 0 ), /* 807 strat */ + S_ST( 'y', 3, 415, 781 ), /* 808 s */ + S_ST( 's', 3, 810, 0 ), /* 809 sys */ + S_ST( 't', 3, 811, 0 ), /* 810 syss */ + S_ST( 'a', 3, 812, 0 ), /* 811 sysst */ + S_ST( 't', 3, 416, 0 ), /* 812 syssta */ + S_ST( 't', 3, 839, 735 ), /* 813 */ + S_ST( 'i', 3, 825, 0 ), /* 814 t */ + S_ST( 'c', 3, 417, 0 ), /* 815 ti */ + S_ST( 'm', 3, 818, 815 ), /* 816 ti */ + S_ST( 'e', 3, 420, 0 ), /* 817 tim */ + S_ST( 'i', 3, 819, 817 ), /* 818 tim */ + S_ST( 'n', 3, 820, 0 ), /* 819 timi */ + S_ST( 'g', 3, 821, 0 ), /* 820 timin */ + S_ST( 's', 3, 822, 0 ), /* 821 timing */ + S_ST( 't', 3, 823, 0 ), /* 822 timings */ + S_ST( 'a', 3, 824, 0 ), /* 823 timingst */ + S_ST( 't', 3, 421, 0 ), /* 824 timingsta */ + S_ST( 'n', 3, 826, 816 ), /* 825 ti */ + S_ST( 'k', 3, 827, 0 ), /* 826 tin */ + S_ST( 'e', 3, 422, 0 ), /* 827 tink */ + S_ST( 'o', 3, 423, 814 ), /* 828 t */ + S_ST( 'r', 3, 831, 828 ), /* 829 t */ + S_ST( 'a', 3, 424, 0 ), /* 830 tr */ + S_ST( 'u', 3, 832, 830 ), /* 831 tr */ + S_ST( 's', 3, 833, 425 ), /* 832 tru */ + S_ST( 't', 3, 834, 0 ), /* 833 trus */ + S_ST( 'e', 3, 835, 0 ), /* 834 trust */ + S_ST( 'd', 3, 836, 0 ), /* 835 truste */ + S_ST( 'k', 3, 837, 0 ), /* 836 trusted */ + S_ST( 'e', 3, 426, 0 ), /* 837 trustedk */ + S_ST( 't', 3, 427, 829 ), /* 838 t */ + S_ST( 'y', 3, 840, 838 ), /* 839 t */ + S_ST( 'p', 3, 428, 0 ), /* 840 ty */ + S_ST( 'u', 3, 842, 813 ), /* 841 */ + S_ST( 'n', 3, 848, 0 ), /* 842 u */ + S_ST( 'c', 3, 844, 0 ), /* 843 un */ + S_ST( 'o', 3, 845, 0 ), /* 844 unc */ + S_ST( 'n', 3, 846, 0 ), /* 845 unco */ + S_ST( 'f', 3, 847, 0 ), /* 846 uncon */ + S_ST( 'i', 3, 433, 0 ), /* 847 unconf */ + S_ST( 'p', 3, 849, 843 ), /* 848 un */ + S_ST( 'e', 3, 850, 0 ), /* 849 unp */ + S_ST( 'e', 3, 434, 0 ), /* 850 unpe */ + S_ST( '_', 3, 871, 0 ), /* 851 unpeer */ + S_ST( 'c', 3, 853, 0 ), /* 852 unpeer_ */ + S_ST( 'r', 3, 854, 0 ), /* 853 unpeer_c */ + S_ST( 'y', 3, 855, 0 ), /* 854 unpeer_cr */ + S_ST( 'p', 3, 856, 0 ), /* 855 unpeer_cry */ + S_ST( 't', 3, 857, 0 ), /* 856 unpeer_cryp */ + S_ST( 'o', 3, 858, 0 ), /* 857 unpeer_crypt */ + S_ST( '_', 3, 863, 0 ), /* 858 unpeer_crypto */ + S_ST( 'e', 3, 860, 0 ), /* 859 unpeer_crypto_ */ + S_ST( 'a', 3, 861, 0 ), /* 860 unpeer_crypto_e */ + S_ST( 'r', 3, 862, 0 ), /* 861 unpeer_crypto_ea */ + S_ST( 'l', 3, 430, 0 ), /* 862 unpeer_crypto_ear */ + S_ST( 'n', 3, 864, 859 ), /* 863 unpeer_crypto_ */ + S_ST( 'a', 3, 865, 0 ), /* 864 unpeer_crypto_n */ + S_ST( 'k', 3, 866, 0 ), /* 865 unpeer_crypto_na */ + S_ST( '_', 3, 867, 0 ), /* 866 unpeer_crypto_nak */ + S_ST( 'e', 3, 868, 0 ), /* 867 unpeer_crypto_nak_ */ + S_ST( 'a', 3, 869, 0 ), /* 868 unpeer_crypto_nak_e */ + S_ST( 'r', 3, 870, 0 ), /* 869 unpeer_crypto_nak_ea */ + S_ST( 'l', 3, 431, 0 ), /* 870 unpeer_crypto_nak_ear */ + S_ST( 'd', 3, 872, 852 ), /* 871 unpeer_ */ + S_ST( 'i', 3, 873, 0 ), /* 872 unpeer_d */ + S_ST( 'g', 3, 874, 0 ), /* 873 unpeer_di */ + S_ST( 'e', 3, 875, 0 ), /* 874 unpeer_dig */ + S_ST( 's', 3, 876, 0 ), /* 875 unpeer_dige */ + S_ST( 't', 3, 877, 0 ), /* 876 unpeer_diges */ + S_ST( '_', 3, 878, 0 ), /* 877 unpeer_digest */ + S_ST( 'e', 3, 879, 0 ), /* 878 unpeer_digest_ */ + S_ST( 'a', 3, 880, 0 ), /* 879 unpeer_digest_e */ + S_ST( 'r', 3, 881, 0 ), /* 880 unpeer_digest_ea */ + S_ST( 'l', 3, 432, 0 ), /* 881 unpeer_digest_ear */ + S_ST( 'v', 3, 883, 841 ), /* 882 */ + S_ST( 'e', 3, 884, 0 ), /* 883 v */ + S_ST( 'r', 3, 885, 0 ), /* 884 ve */ + S_ST( 's', 3, 886, 0 ), /* 885 ver */ + S_ST( 'i', 3, 887, 0 ), /* 886 vers */ + S_ST( 'o', 3, 435, 0 ), /* 887 versi */ + S_ST( 'w', 3, 895, 882 ), /* 888 */ + S_ST( 'a', 3, 890, 0 ), /* 889 w */ + S_ST( 'n', 3, 891, 0 ), /* 890 wa */ + S_ST( 'd', 3, 892, 0 ), /* 891 wan */ + S_ST( 'e', 3, 449, 0 ), /* 892 wand */ + S_ST( 'e', 3, 894, 889 ), /* 893 w */ + S_ST( 'e', 3, 437, 0 ), /* 894 we */ + S_ST( 'i', 3, 896, 893 ), /* 895 w */ + S_ST( 'l', 3, 897, 0 ), /* 896 wi */ + S_ST( 'd', 3, 898, 0 ), /* 897 wil */ + S_ST( 'c', 3, 899, 0 ), /* 898 wild */ + S_ST( 'a', 3, 900, 0 ), /* 899 wildc */ + S_ST( 'r', 3, 438, 0 ), /* 900 wildca */ + S_ST( 'x', 3, 902, 888 ), /* 901 */ + S_ST( 'l', 3, 903, 0 ), /* 902 x */ + S_ST( 'e', 3, 904, 0 ), /* 903 xl */ + S_ST( 'a', 3, 905, 0 ), /* 904 xle */ + S_ST( 'v', 3, 439, 0 ), /* 905 xlea */ + S_ST( 'y', 3, 907, 901 ), /* 906 [initial state] */ + S_ST( 'e', 3, 908, 0 ), /* 907 y */ + S_ST( 'a', 3, 440, 0 ) /* 908 ye */ }; diff --git a/contrib/ntp/ntpd/ntp_parser.c b/contrib/ntp/ntpd/ntp_parser.c index 31596692e..c43269491 100644 --- a/contrib/ntp/ntpd/ntp_parser.c +++ b/contrib/ntp/ntpd/ntp_parser.c @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.7.12-4996" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -62,8 +62,7 @@ /* Copy the first part of user declarations. */ -/* Line 371 of yacc.c */ -#line 11 "../../ntpd/ntp_parser.y" +#line 11 "../../ntpd/ntp_parser.y" /* yacc.c:339 */ #ifdef HAVE_CONFIG_H # include @@ -97,14 +96,13 @@ # define ONLY_SIM(a) NULL #endif -/* Line 371 of yacc.c */ -#line 102 "ntp_parser.c" +#line 100 "../../ntpd/ntp_parser.c" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -118,9 +116,9 @@ /* In a future release of Bison, this section will be replaced by #include "y.tab.h". */ -#ifndef YY_YY_NTP_PARSER_H_INCLUDED -# define YY_YY_NTP_PARSER_H_INCLUDED -/* Enabling traces. */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif @@ -128,207 +126,207 @@ extern int yydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - T_Abbrev = 258, - T_Age = 259, - T_All = 260, - T_Allan = 261, - T_Allpeers = 262, - T_Auth = 263, - T_Autokey = 264, - T_Automax = 265, - T_Average = 266, - T_Bclient = 267, - T_Beacon = 268, - T_Broadcast = 269, - T_Broadcastclient = 270, - T_Broadcastdelay = 271, - T_Burst = 272, - T_Calibrate = 273, - T_Ceiling = 274, - T_Clockstats = 275, - T_Cohort = 276, - T_ControlKey = 277, - T_Crypto = 278, - T_Cryptostats = 279, - T_Ctl = 280, - T_Day = 281, - T_Default = 282, - T_Digest = 283, - T_Disable = 284, - T_Discard = 285, - T_Dispersion = 286, - T_Double = 287, - T_Driftfile = 288, - T_Drop = 289, - T_Dscp = 290, - T_Ellipsis = 291, - T_Enable = 292, - T_End = 293, - T_False = 294, - T_File = 295, - T_Filegen = 296, - T_Filenum = 297, - T_Flag1 = 298, - T_Flag2 = 299, - T_Flag3 = 300, - T_Flag4 = 301, - T_Flake = 302, - T_Floor = 303, - T_Freq = 304, - T_Fudge = 305, - T_Host = 306, - T_Huffpuff = 307, - T_Iburst = 308, - T_Ident = 309, - T_Ignore = 310, - T_Incalloc = 311, - T_Incmem = 312, - T_Initalloc = 313, - T_Initmem = 314, - T_Includefile = 315, - T_Integer = 316, - T_Interface = 317, - T_Intrange = 318, - T_Io = 319, - T_Ipv4 = 320, - T_Ipv4_flag = 321, - T_Ipv6 = 322, - T_Ipv6_flag = 323, - T_Kernel = 324, - T_Key = 325, - T_Keys = 326, - T_Keysdir = 327, - T_Kod = 328, - T_Mssntp = 329, - T_Leapfile = 330, - T_Leapsmearinterval = 331, - T_Limited = 332, - T_Link = 333, - T_Listen = 334, - T_Logconfig = 335, - T_Logfile = 336, - T_Loopstats = 337, - T_Lowpriotrap = 338, - T_Manycastclient = 339, - T_Manycastserver = 340, - T_Mask = 341, - T_Maxage = 342, - T_Maxclock = 343, - T_Maxdepth = 344, - T_Maxdist = 345, - T_Maxmem = 346, - T_Maxpoll = 347, - T_Mdnstries = 348, - T_Mem = 349, - T_Memlock = 350, - T_Minclock = 351, - T_Mindepth = 352, - T_Mindist = 353, - T_Minimum = 354, - T_Minpoll = 355, - T_Minsane = 356, - T_Mode = 357, - T_Mode7 = 358, - T_Monitor = 359, - T_Month = 360, - T_Mru = 361, - T_Multicastclient = 362, - T_Nic = 363, - T_Nolink = 364, - T_Nomodify = 365, - T_Nomrulist = 366, - T_None = 367, - T_Nonvolatile = 368, - T_Nopeer = 369, - T_Noquery = 370, - T_Noselect = 371, - T_Noserve = 372, - T_Notrap = 373, - T_Notrust = 374, - T_Ntp = 375, - T_Ntpport = 376, - T_NtpSignDsocket = 377, - T_Orphan = 378, - T_Orphanwait = 379, - T_Panic = 380, - T_Peer = 381, - T_Peerstats = 382, - T_Phone = 383, - T_Pid = 384, - T_Pidfile = 385, - T_Pool = 386, - T_Port = 387, - T_Preempt = 388, - T_Prefer = 389, - T_Protostats = 390, - T_Pw = 391, - T_Randfile = 392, - T_Rawstats = 393, - T_Refid = 394, - T_Requestkey = 395, - T_Reset = 396, - T_Restrict = 397, - T_Revoke = 398, - T_Rlimit = 399, - T_Saveconfigdir = 400, - T_Server = 401, - T_Setvar = 402, - T_Source = 403, - T_Stacksize = 404, - T_Statistics = 405, - T_Stats = 406, - T_Statsdir = 407, - T_Step = 408, - T_Stepback = 409, - T_Stepfwd = 410, - T_Stepout = 411, - T_Stratum = 412, - T_String = 413, - T_Sys = 414, - T_Sysstats = 415, - T_Tick = 416, - T_Time1 = 417, - T_Time2 = 418, - T_Timer = 419, - T_Timingstats = 420, - T_Tinker = 421, - T_Tos = 422, - T_Trap = 423, - T_True = 424, - T_Trustedkey = 425, - T_Ttl = 426, - T_Type = 427, - T_U_int = 428, - T_UEcrypto = 429, - T_UEcryptonak = 430, - T_UEdigest = 431, - T_Unconfig = 432, - T_Unpeer = 433, - T_Version = 434, - T_WanderThreshold = 435, - T_Week = 436, - T_Wildcard = 437, - T_Xleave = 438, - T_Year = 439, - T_Flag = 440, - T_EOC = 441, - T_Simulate = 442, - T_Beep_Delay = 443, - T_Sim_Duration = 444, - T_Server_Offset = 445, - T_Duration = 446, - T_Freq_Offset = 447, - T_Wander = 448, - T_Jitter = 449, - T_Prop_Delay = 450, - T_Proc_Delay = 451 - }; + enum yytokentype + { + T_Abbrev = 258, + T_Age = 259, + T_All = 260, + T_Allan = 261, + T_Allpeers = 262, + T_Auth = 263, + T_Autokey = 264, + T_Automax = 265, + T_Average = 266, + T_Bclient = 267, + T_Beacon = 268, + T_Broadcast = 269, + T_Broadcastclient = 270, + T_Broadcastdelay = 271, + T_Burst = 272, + T_Calibrate = 273, + T_Ceiling = 274, + T_Clockstats = 275, + T_Cohort = 276, + T_ControlKey = 277, + T_Crypto = 278, + T_Cryptostats = 279, + T_Ctl = 280, + T_Day = 281, + T_Default = 282, + T_Digest = 283, + T_Disable = 284, + T_Discard = 285, + T_Dispersion = 286, + T_Double = 287, + T_Driftfile = 288, + T_Drop = 289, + T_Dscp = 290, + T_Ellipsis = 291, + T_Enable = 292, + T_End = 293, + T_False = 294, + T_File = 295, + T_Filegen = 296, + T_Filenum = 297, + T_Flag1 = 298, + T_Flag2 = 299, + T_Flag3 = 300, + T_Flag4 = 301, + T_Flake = 302, + T_Floor = 303, + T_Freq = 304, + T_Fudge = 305, + T_Host = 306, + T_Huffpuff = 307, + T_Iburst = 308, + T_Ident = 309, + T_Ignore = 310, + T_Incalloc = 311, + T_Incmem = 312, + T_Initalloc = 313, + T_Initmem = 314, + T_Includefile = 315, + T_Integer = 316, + T_Interface = 317, + T_Intrange = 318, + T_Io = 319, + T_Ipv4 = 320, + T_Ipv4_flag = 321, + T_Ipv6 = 322, + T_Ipv6_flag = 323, + T_Kernel = 324, + T_Key = 325, + T_Keys = 326, + T_Keysdir = 327, + T_Kod = 328, + T_Mssntp = 329, + T_Leapfile = 330, + T_Leapsmearinterval = 331, + T_Limited = 332, + T_Link = 333, + T_Listen = 334, + T_Logconfig = 335, + T_Logfile = 336, + T_Loopstats = 337, + T_Lowpriotrap = 338, + T_Manycastclient = 339, + T_Manycastserver = 340, + T_Mask = 341, + T_Maxage = 342, + T_Maxclock = 343, + T_Maxdepth = 344, + T_Maxdist = 345, + T_Maxmem = 346, + T_Maxpoll = 347, + T_Mdnstries = 348, + T_Mem = 349, + T_Memlock = 350, + T_Minclock = 351, + T_Mindepth = 352, + T_Mindist = 353, + T_Minimum = 354, + T_Minpoll = 355, + T_Minsane = 356, + T_Mode = 357, + T_Mode7 = 358, + T_Monitor = 359, + T_Month = 360, + T_Mru = 361, + T_Multicastclient = 362, + T_Nic = 363, + T_Nolink = 364, + T_Nomodify = 365, + T_Nomrulist = 366, + T_None = 367, + T_Nonvolatile = 368, + T_Nopeer = 369, + T_Noquery = 370, + T_Noselect = 371, + T_Noserve = 372, + T_Notrap = 373, + T_Notrust = 374, + T_Ntp = 375, + T_Ntpport = 376, + T_NtpSignDsocket = 377, + T_Orphan = 378, + T_Orphanwait = 379, + T_PCEdigest = 380, + T_Panic = 381, + T_Peer = 382, + T_Peerstats = 383, + T_Phone = 384, + T_Pid = 385, + T_Pidfile = 386, + T_Pool = 387, + T_Port = 388, + T_Preempt = 389, + T_Prefer = 390, + T_Protostats = 391, + T_Pw = 392, + T_Randfile = 393, + T_Rawstats = 394, + T_Refid = 395, + T_Requestkey = 396, + T_Reset = 397, + T_Restrict = 398, + T_Revoke = 399, + T_Rlimit = 400, + T_Saveconfigdir = 401, + T_Server = 402, + T_Setvar = 403, + T_Source = 404, + T_Stacksize = 405, + T_Statistics = 406, + T_Stats = 407, + T_Statsdir = 408, + T_Step = 409, + T_Stepback = 410, + T_Stepfwd = 411, + T_Stepout = 412, + T_Stratum = 413, + T_String = 414, + T_Sys = 415, + T_Sysstats = 416, + T_Tick = 417, + T_Time1 = 418, + T_Time2 = 419, + T_Timer = 420, + T_Timingstats = 421, + T_Tinker = 422, + T_Tos = 423, + T_Trap = 424, + T_True = 425, + T_Trustedkey = 426, + T_Ttl = 427, + T_Type = 428, + T_U_int = 429, + T_UEcrypto = 430, + T_UEcryptonak = 431, + T_UEdigest = 432, + T_Unconfig = 433, + T_Unpeer = 434, + T_Version = 435, + T_WanderThreshold = 436, + T_Week = 437, + T_Wildcard = 438, + T_Xleave = 439, + T_Year = 440, + T_Flag = 441, + T_EOC = 442, + T_Simulate = 443, + T_Beep_Delay = 444, + T_Sim_Duration = 445, + T_Server_Offset = 446, + T_Duration = 447, + T_Freq_Offset = 448, + T_Wander = 449, + T_Jitter = 450, + T_Prop_Delay = 451, + T_Proc_Delay = 452 + }; #endif /* Tokens. */ #define T_Abbrev 258 @@ -453,86 +451,86 @@ extern int yydebug; #define T_NtpSignDsocket 377 #define T_Orphan 378 #define T_Orphanwait 379 -#define T_Panic 380 -#define T_Peer 381 -#define T_Peerstats 382 -#define T_Phone 383 -#define T_Pid 384 -#define T_Pidfile 385 -#define T_Pool 386 -#define T_Port 387 -#define T_Preempt 388 -#define T_Prefer 389 -#define T_Protostats 390 -#define T_Pw 391 -#define T_Randfile 392 -#define T_Rawstats 393 -#define T_Refid 394 -#define T_Requestkey 395 -#define T_Reset 396 -#define T_Restrict 397 -#define T_Revoke 398 -#define T_Rlimit 399 -#define T_Saveconfigdir 400 -#define T_Server 401 -#define T_Setvar 402 -#define T_Source 403 -#define T_Stacksize 404 -#define T_Statistics 405 -#define T_Stats 406 -#define T_Statsdir 407 -#define T_Step 408 -#define T_Stepback 409 -#define T_Stepfwd 410 -#define T_Stepout 411 -#define T_Stratum 412 -#define T_String 413 -#define T_Sys 414 -#define T_Sysstats 415 -#define T_Tick 416 -#define T_Time1 417 -#define T_Time2 418 -#define T_Timer 419 -#define T_Timingstats 420 -#define T_Tinker 421 -#define T_Tos 422 -#define T_Trap 423 -#define T_True 424 -#define T_Trustedkey 425 -#define T_Ttl 426 -#define T_Type 427 -#define T_U_int 428 -#define T_UEcrypto 429 -#define T_UEcryptonak 430 -#define T_UEdigest 431 -#define T_Unconfig 432 -#define T_Unpeer 433 -#define T_Version 434 -#define T_WanderThreshold 435 -#define T_Week 436 -#define T_Wildcard 437 -#define T_Xleave 438 -#define T_Year 439 -#define T_Flag 440 -#define T_EOC 441 -#define T_Simulate 442 -#define T_Beep_Delay 443 -#define T_Sim_Duration 444 -#define T_Server_Offset 445 -#define T_Duration 446 -#define T_Freq_Offset 447 -#define T_Wander 448 -#define T_Jitter 449 -#define T_Prop_Delay 450 -#define T_Proc_Delay 451 - - - +#define T_PCEdigest 380 +#define T_Panic 381 +#define T_Peer 382 +#define T_Peerstats 383 +#define T_Phone 384 +#define T_Pid 385 +#define T_Pidfile 386 +#define T_Pool 387 +#define T_Port 388 +#define T_Preempt 389 +#define T_Prefer 390 +#define T_Protostats 391 +#define T_Pw 392 +#define T_Randfile 393 +#define T_Rawstats 394 +#define T_Refid 395 +#define T_Requestkey 396 +#define T_Reset 397 +#define T_Restrict 398 +#define T_Revoke 399 +#define T_Rlimit 400 +#define T_Saveconfigdir 401 +#define T_Server 402 +#define T_Setvar 403 +#define T_Source 404 +#define T_Stacksize 405 +#define T_Statistics 406 +#define T_Stats 407 +#define T_Statsdir 408 +#define T_Step 409 +#define T_Stepback 410 +#define T_Stepfwd 411 +#define T_Stepout 412 +#define T_Stratum 413 +#define T_String 414 +#define T_Sys 415 +#define T_Sysstats 416 +#define T_Tick 417 +#define T_Time1 418 +#define T_Time2 419 +#define T_Timer 420 +#define T_Timingstats 421 +#define T_Tinker 422 +#define T_Tos 423 +#define T_Trap 424 +#define T_True 425 +#define T_Trustedkey 426 +#define T_Ttl 427 +#define T_Type 428 +#define T_U_int 429 +#define T_UEcrypto 430 +#define T_UEcryptonak 431 +#define T_UEdigest 432 +#define T_Unconfig 433 +#define T_Unpeer 434 +#define T_Version 435 +#define T_WanderThreshold 436 +#define T_Week 437 +#define T_Wildcard 438 +#define T_Xleave 439 +#define T_Year 440 +#define T_Flag 441 +#define T_EOC 442 +#define T_Simulate 443 +#define T_Beep_Delay 444 +#define T_Sim_Duration 445 +#define T_Server_Offset 446 +#define T_Duration 447 +#define T_Freq_Offset 448 +#define T_Wander 449 +#define T_Jitter 450 +#define T_Prop_Delay 451 +#define T_Proc_Delay 452 + +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE + +union YYSTYPE { -/* Line 387 of yacc.c */ -#line 51 "../../ntpd/ntp_parser.y" +#line 51 "../../ntpd/ntp_parser.y" /* yacc.c:355 */ char * String; double Double; @@ -551,37 +549,24 @@ typedef union YYSTYPE script_info * Sim_script; script_info_fifo * Sim_script_fifo; +#line 553 "../../ntpd/ntp_parser.c" /* yacc.c:355 */ +}; -/* Line 387 of yacc.c */ -#line 557 "ntp_parser.c" -} YYSTYPE; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_YY_NTP_PARSER_H_INCLUDED */ +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 390 of yacc.c */ -#line 585 "ntp_parser.c" +#line 570 "../../ntpd/ntp_parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -595,11 +580,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -619,8 +601,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -642,11 +623,30 @@ typedef short int yytype_int16; # endif #endif -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif @@ -657,25 +657,26 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif + #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -693,8 +694,7 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -706,8 +706,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -723,7 +723,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -731,15 +731,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -749,7 +747,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -774,16 +772,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif @@ -802,48 +800,50 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (YYID (0)) + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 213 +#define YYFINAL 214 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 624 +#define YYLAST 655 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 202 +#define YYNTOKENS 203 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 105 /* YYNRULES -- Number of rules. */ -#define YYNRULES 316 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 422 +#define YYNRULES 317 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 423 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 451 +#define YYMAXUTOK 452 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 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, - 198, 199, 2, 2, 2, 2, 2, 2, 2, 2, + 199, 200, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 197, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 198, 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, 200, 2, 201, 2, 2, 2, 2, + 2, 2, 2, 201, 2, 202, 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, @@ -876,165 +876,45 @@ static const yytype_uint8 yytranslate[] = 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196 + 195, 196, 197 }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 5, 9, 12, 15, 16, 18, 20, - 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, - 42, 46, 48, 50, 52, 54, 56, 58, 61, 63, - 65, 67, 68, 71, 73, 75, 77, 79, 81, 83, - 85, 87, 89, 91, 93, 95, 98, 101, 103, 105, - 107, 109, 111, 113, 116, 118, 121, 123, 125, 127, - 130, 133, 136, 139, 142, 145, 148, 151, 154, 157, - 160, 163, 164, 167, 170, 173, 175, 177, 179, 181, - 183, 186, 189, 191, 194, 197, 200, 202, 204, 206, - 208, 210, 212, 214, 216, 218, 220, 223, 226, 230, - 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, - 252, 255, 258, 261, 263, 265, 267, 269, 271, 273, - 275, 277, 279, 281, 283, 285, 287, 290, 293, 297, - 303, 307, 312, 317, 321, 322, 325, 327, 329, 331, - 333, 335, 337, 339, 341, 343, 345, 347, 349, 351, - 353, 355, 358, 360, 363, 365, 367, 369, 372, 374, - 377, 379, 381, 383, 385, 387, 389, 391, 393, 397, - 400, 402, 405, 408, 411, 414, 417, 419, 421, 423, - 425, 427, 429, 432, 435, 437, 440, 442, 444, 446, - 449, 452, 455, 457, 459, 461, 463, 465, 467, 469, - 471, 473, 475, 477, 479, 481, 483, 486, 489, 491, - 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, - 514, 516, 518, 521, 524, 527, 530, 534, 536, 539, - 542, 545, 548, 552, 555, 557, 559, 561, 563, 565, - 567, 569, 571, 573, 575, 577, 580, 581, 586, 588, - 589, 590, 593, 596, 599, 602, 604, 606, 610, 614, - 616, 618, 620, 622, 624, 626, 628, 630, 632, 635, - 638, 640, 642, 644, 646, 648, 650, 652, 654, 657, - 659, 662, 664, 666, 668, 674, 677, 679, 682, 684, - 686, 688, 690, 692, 694, 700, 702, 706, 709, 713, - 715, 717, 720, 722, 728, 733, 737, 740, 742, 749, - 753, 756, 760, 762, 764, 766, 768 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 203, 0, -1, 204, -1, 204, 205, 186, -1, 205, - 186, -1, 1, 186, -1, -1, 206, -1, 219, -1, - 221, -1, 222, -1, 231, -1, 239, -1, 226, -1, - 248, -1, 253, -1, 257, -1, 262, -1, 266, -1, - 293, -1, 207, 208, 211, -1, 146, -1, 131, -1, - 126, -1, 14, -1, 84, -1, 209, -1, 210, 158, - -1, 158, -1, 66, -1, 68, -1, -1, 211, 212, - -1, 213, -1, 215, -1, 217, -1, 214, -1, 9, - -1, 17, -1, 53, -1, 116, -1, 133, -1, 134, - -1, 169, -1, 183, -1, 216, 61, -1, 216, 173, - -1, 70, -1, 100, -1, 92, -1, 171, -1, 102, - -1, 179, -1, 218, 158, -1, 54, -1, 220, 208, - -1, 177, -1, 178, -1, 15, -1, 85, 290, -1, - 107, 290, -1, 93, 61, -1, 10, 61, -1, 22, - 61, -1, 23, 223, -1, 71, 158, -1, 72, 158, - -1, 140, 61, -1, 143, 61, -1, 170, 286, -1, - 122, 158, -1, -1, 223, 224, -1, 225, 158, -1, - 143, 61, -1, 51, -1, 54, -1, 136, -1, 137, - -1, 28, -1, 167, 227, -1, 227, 228, -1, 228, - -1, 229, 61, -1, 230, 292, -1, 21, 291, -1, - 19, -1, 48, -1, 123, -1, 124, -1, 101, -1, - 13, -1, 98, -1, 90, -1, 96, -1, 88, -1, - 150, 232, -1, 152, 158, -1, 41, 233, 234, -1, - 232, 233, -1, 233, -1, 20, -1, 24, -1, 82, - -1, 127, -1, 138, -1, 160, -1, 165, -1, 135, - -1, -1, 234, 235, -1, 40, 158, -1, 172, 238, - -1, 236, -1, 237, -1, 78, -1, 109, -1, 37, - -1, 29, -1, 112, -1, 129, -1, 26, -1, 181, - -1, 105, -1, 184, -1, 4, -1, 30, 242, -1, - 106, 245, -1, 142, 208, 240, -1, 142, 209, 86, - 209, 240, -1, 142, 27, 240, -1, 142, 66, 27, - 240, -1, 142, 68, 27, 240, -1, 142, 148, 240, - -1, -1, 240, 241, -1, 47, -1, 55, -1, 73, - -1, 74, -1, 77, -1, 83, -1, 110, -1, 111, - -1, 114, -1, 115, -1, 117, -1, 118, -1, 119, - -1, 121, -1, 179, -1, 242, 243, -1, 243, -1, - 244, 61, -1, 11, -1, 99, -1, 104, -1, 245, - 246, -1, 246, -1, 247, 61, -1, 56, -1, 57, - -1, 58, -1, 59, -1, 87, -1, 89, -1, 91, - -1, 97, -1, 50, 208, 249, -1, 249, 250, -1, - 250, -1, 251, 292, -1, 252, 291, -1, 157, 61, - -1, 3, 158, -1, 139, 158, -1, 162, -1, 163, - -1, 43, -1, 44, -1, 45, -1, 46, -1, 144, - 254, -1, 254, 255, -1, 255, -1, 256, 61, -1, - 95, -1, 149, -1, 42, -1, 37, 258, -1, 29, - 258, -1, 258, 259, -1, 259, -1, 260, -1, 261, - -1, 8, -1, 12, -1, 18, -1, 69, -1, 104, - -1, 120, -1, 103, -1, 151, -1, 174, -1, 175, - -1, 176, -1, 166, 263, -1, 263, 264, -1, 264, - -1, 265, 292, -1, 6, -1, 31, -1, 49, -1, - 52, -1, 125, -1, 153, -1, 154, -1, 155, -1, - 156, -1, 161, -1, 278, -1, 282, -1, 267, 292, - -1, 268, 61, -1, 269, 158, -1, 270, 158, -1, - 60, 158, 205, -1, 38, -1, 33, 271, -1, 80, - 276, -1, 128, 289, -1, 147, 272, -1, 168, 209, - 274, -1, 171, 285, -1, 16, -1, 113, -1, 161, - -1, 35, -1, 76, -1, 54, -1, 75, -1, 81, - -1, 130, -1, 145, -1, 158, -1, 158, 32, -1, - -1, 158, 197, 158, 273, -1, 27, -1, -1, -1, - 274, 275, -1, 132, 61, -1, 62, 209, -1, 276, - 277, -1, 277, -1, 158, -1, 279, 281, 280, -1, - 279, 281, 158, -1, 62, -1, 108, -1, 5, -1, - 65, -1, 67, -1, 182, -1, 79, -1, 55, -1, - 34, -1, 141, 283, -1, 283, 284, -1, 284, -1, - 7, -1, 8, -1, 25, -1, 64, -1, 94, -1, - 159, -1, 164, -1, 285, 61, -1, 61, -1, 286, - 287, -1, 287, -1, 61, -1, 288, -1, 198, 61, - 36, 61, 199, -1, 289, 158, -1, 158, -1, 290, - 208, -1, 208, -1, 61, -1, 169, -1, 39, -1, - 61, -1, 32, -1, 294, 200, 295, 298, 201, -1, - 187, -1, 295, 296, 186, -1, 296, 186, -1, 297, - 197, 292, -1, 188, -1, 189, -1, 298, 299, -1, - 299, -1, 301, 200, 300, 302, 201, -1, 190, 197, - 292, 186, -1, 146, 197, 208, -1, 302, 303, -1, - 303, -1, 191, 197, 292, 200, 304, 201, -1, 304, - 305, 186, -1, 305, 186, -1, 306, 197, 292, -1, - 192, -1, 193, -1, 194, -1, 195, -1, 196, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 369, 369, 373, 374, 375, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 411, 421, 422, 423, 424, 425, 429, 430, 435, 440, - 442, 448, 449, 457, 458, 459, 463, 468, 469, 470, - 471, 472, 473, 474, 475, 479, 481, 486, 487, 488, - 489, 490, 491, 495, 500, 509, 519, 520, 530, 532, - 534, 536, 547, 554, 556, 561, 563, 565, 567, 569, - 578, 584, 585, 593, 595, 607, 608, 609, 610, 611, - 620, 625, 630, 638, 640, 642, 647, 648, 649, 650, - 651, 652, 656, 657, 658, 659, 668, 670, 679, 689, - 694, 702, 703, 704, 705, 706, 707, 708, 709, 714, - 715, 723, 733, 742, 757, 762, 763, 767, 768, 772, - 773, 774, 775, 776, 777, 778, 787, 791, 795, 803, - 811, 819, 834, 849, 862, 863, 871, 872, 873, 874, - 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, - 885, 889, 894, 902, 907, 908, 909, 913, 918, 926, - 931, 932, 933, 934, 935, 936, 937, 938, 946, 956, - 961, 969, 971, 973, 982, 984, 989, 990, 994, 995, - 996, 997, 1005, 1010, 1015, 1023, 1028, 1029, 1030, 1039, - 1041, 1046, 1051, 1059, 1061, 1078, 1079, 1080, 1081, 1082, - 1083, 1087, 1088, 1089, 1090, 1091, 1099, 1104, 1109, 1117, - 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, - 1140, 1141, 1142, 1149, 1156, 1163, 1179, 1198, 1200, 1202, - 1204, 1206, 1208, 1215, 1220, 1221, 1222, 1226, 1230, 1239, - 1240, 1244, 1245, 1246, 1250, 1261, 1275, 1287, 1292, 1294, - 1299, 1300, 1308, 1310, 1318, 1323, 1331, 1356, 1363, 1373, - 1374, 1378, 1379, 1380, 1381, 1385, 1386, 1387, 1391, 1396, - 1401, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1425, 1430, - 1438, 1443, 1451, 1453, 1457, 1462, 1467, 1475, 1480, 1488, - 1497, 1498, 1502, 1503, 1512, 1530, 1534, 1539, 1547, 1552, - 1553, 1557, 1562, 1570, 1575, 1580, 1585, 1590, 1598, 1603, - 1608, 1616, 1621, 1622, 1623, 1624, 1625 + 0, 370, 370, 374, 375, 376, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 412, 422, 423, 424, 425, 426, 430, 431, 436, 441, + 443, 449, 450, 458, 459, 460, 464, 469, 470, 471, + 472, 473, 474, 475, 476, 480, 482, 487, 488, 489, + 490, 491, 492, 496, 501, 510, 520, 521, 531, 533, + 535, 537, 548, 555, 557, 562, 564, 566, 568, 570, + 579, 585, 586, 594, 596, 608, 609, 610, 611, 612, + 621, 626, 631, 639, 641, 643, 648, 649, 650, 651, + 652, 653, 657, 658, 659, 660, 669, 671, 680, 690, + 695, 703, 704, 705, 706, 707, 708, 709, 710, 715, + 716, 724, 734, 743, 758, 763, 764, 768, 769, 773, + 774, 775, 776, 777, 778, 779, 788, 792, 796, 804, + 812, 820, 835, 850, 863, 864, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, + 886, 890, 895, 903, 908, 909, 910, 914, 919, 927, + 932, 933, 934, 935, 936, 937, 938, 939, 947, 957, + 962, 970, 972, 974, 983, 985, 990, 991, 995, 996, + 997, 998, 1006, 1011, 1016, 1024, 1029, 1030, 1031, 1040, + 1042, 1047, 1052, 1060, 1062, 1079, 1080, 1081, 1082, 1083, + 1084, 1088, 1089, 1090, 1091, 1092, 1093, 1101, 1106, 1111, + 1119, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, + 1133, 1142, 1143, 1144, 1151, 1158, 1165, 1181, 1200, 1202, + 1204, 1206, 1208, 1210, 1217, 1222, 1223, 1224, 1228, 1232, + 1241, 1242, 1246, 1247, 1248, 1252, 1263, 1277, 1289, 1294, + 1296, 1301, 1302, 1310, 1312, 1320, 1325, 1333, 1358, 1365, + 1375, 1376, 1380, 1381, 1382, 1383, 1387, 1388, 1389, 1393, + 1398, 1403, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1427, + 1432, 1440, 1445, 1453, 1455, 1459, 1464, 1469, 1477, 1482, + 1490, 1499, 1500, 1504, 1505, 1514, 1532, 1536, 1541, 1549, + 1554, 1555, 1559, 1564, 1572, 1577, 1582, 1587, 1592, 1600, + 1605, 1610, 1618, 1623, 1624, 1625, 1626, 1627 }; #endif @@ -1066,9 +946,9 @@ static const char *const yytname[] = "T_Mru", "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify", "T_Nomrulist", "T_None", "T_Nonvolatile", "T_Nopeer", "T_Noquery", "T_Noselect", "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport", - "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_Panic", "T_Peer", - "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port", - "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile", + "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_PCEdigest", "T_Panic", + "T_Peer", "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", + "T_Port", "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile", "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict", "T_Revoke", "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar", "T_Source", "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir", @@ -1112,13 +992,13 @@ static const char *const yytname[] = "sim_init_statement_list", "sim_init_statement", "sim_init_keyword", "sim_server_list", "sim_server", "sim_server_offset", "sim_server_name", "sim_act_list", "sim_act", "sim_act_stmt_list", "sim_act_stmt", - "sim_act_keyword", YY_NULL + "sim_act_keyword", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1140,434 +1020,428 @@ static const yytype_uint16 yytoknum[] = 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 61, 40, 41, - 123, 125 + 445, 446, 447, 448, 449, 450, 451, 452, 61, 40, + 41, 123, 125 }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 202, 203, 204, 204, 204, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 206, 207, 207, 207, 207, 207, 208, 208, 209, 210, - 210, 211, 211, 212, 212, 212, 213, 214, 214, 214, - 214, 214, 214, 214, 214, 215, 215, 216, 216, 216, - 216, 216, 216, 217, 218, 219, 220, 220, 221, 221, - 221, 221, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 223, 223, 224, 224, 225, 225, 225, 225, 225, - 226, 227, 227, 228, 228, 228, 229, 229, 229, 229, - 229, 229, 230, 230, 230, 230, 231, 231, 231, 232, - 232, 233, 233, 233, 233, 233, 233, 233, 233, 234, - 234, 235, 235, 235, 235, 236, 236, 237, 237, 238, - 238, 238, 238, 238, 238, 238, 239, 239, 239, 239, - 239, 239, 239, 239, 240, 240, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 242, 242, 243, 244, 244, 244, 245, 245, 246, - 247, 247, 247, 247, 247, 247, 247, 247, 248, 249, - 249, 250, 250, 250, 250, 250, 251, 251, 252, 252, - 252, 252, 253, 254, 254, 255, 256, 256, 256, 257, - 257, 258, 258, 259, 259, 260, 260, 260, 260, 260, - 260, 261, 261, 261, 261, 261, 262, 263, 263, 264, - 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 267, 267, 267, 268, 268, 269, - 269, 270, 270, 270, 271, 271, 271, 272, 273, 273, - 274, 274, 275, 275, 276, 276, 277, 278, 278, 279, - 279, 280, 280, 280, 280, 281, 281, 281, 282, 283, - 283, 284, 284, 284, 284, 284, 284, 284, 285, 285, - 286, 286, 287, 287, 288, 289, 289, 290, 290, 291, - 291, 291, 292, 292, 293, 294, 295, 295, 296, 297, - 297, 298, 298, 299, 300, 301, 302, 302, 303, 304, - 304, 305, 306, 306, 306, 306, 306 -}; +#define YYPACT_NINF -189 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-189))) + +#define YYTABLE_NINF -7 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = { - 0, 2, 1, 3, 2, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, - 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, - 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 0, 2, 2, 2, 1, 1, 1, 1, 1, - 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, - 3, 4, 4, 3, 0, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 2, 1, 1, 1, 2, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, - 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 3, 1, 2, 2, - 2, 2, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 4, 1, 0, - 0, 2, 2, 2, 2, 1, 1, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 2, 1, 1, 1, 5, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 5, 1, 3, 2, 3, 1, - 1, 2, 1, 5, 4, 3, 2, 1, 6, 3, - 2, 3, 1, 1, 1, 1, 1 + 20, -174, -32, -189, -189, -189, -29, -189, 315, 3, + -133, -189, 315, -189, 119, -48, -189, -126, -189, -118, + -115, -189, -189, -113, -189, -189, -48, -5, 374, -48, + -189, -189, -105, -189, -100, -189, -189, 1, 81, 46, + 2, -31, -189, -189, -90, 119, -88, -189, 148, 380, + -81, -53, 23, -189, -189, -189, 87, 207, -106, -189, + -48, -189, -48, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -9, 29, -62, -61, -189, -7, -189, + -189, -102, -189, -189, -189, 32, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, 315, -189, + -189, -189, -189, -189, -189, 3, -189, 42, 78, -189, + 315, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, 112, -189, -39, 367, -189, -189, -189, + -113, -189, -189, -48, -189, -189, -189, -189, -189, -189, + -189, -189, -189, 374, -189, 60, -48, -189, -189, -34, + -189, -189, -189, -189, -189, -189, -189, -189, 81, -189, + -189, 97, 102, -189, -189, 44, -189, -189, -189, -189, + -31, -189, 71, -63, -189, 119, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, 148, -189, + -9, -189, -189, -36, -189, -189, -189, -189, -189, -189, + -189, -189, 380, -189, 75, -9, -189, -189, 76, -53, + -189, -189, -189, 77, -189, -43, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, 0, -150, + -189, -189, -189, -189, -189, 89, -189, -6, -189, -189, + -189, -189, 39, 13, -189, -189, -189, -189, 15, 99, + -189, -189, 112, -189, -9, -36, -189, -189, -189, -189, + -189, -189, -189, -189, 475, -189, -189, 475, 475, -81, + -189, -189, 18, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -58, 144, -189, -189, -189, 353, -189, + -189, -189, -189, -189, -189, -189, -189, -96, -3, -13, + -189, -189, -189, -189, 27, -189, -189, 11, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, 475, 475, -189, 163, -81, 133, -189, + 141, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -52, -189, 45, 5, 19, -125, -189, 8, -189, -9, + -189, -189, -189, -189, -189, -189, -189, -189, -189, 475, + -189, -189, -189, -189, 14, -189, -189, -189, -48, -189, + -189, -189, 22, -189, -189, -189, 21, 24, -9, 36, + -164, -189, 33, -9, -189, -189, -189, 10, 69, -189, + -189, -189, -189, -189, 31, 48, 40, -189, 52, -189, + -9, -189, -189 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 0, 0, 24, 58, 234, 0, 71, 0, 0, - 246, 237, 0, 227, 0, 0, 239, 0, 259, 0, - 0, 240, 238, 0, 241, 25, 0, 0, 0, 0, - 260, 235, 0, 23, 0, 242, 22, 0, 0, 0, - 0, 0, 243, 21, 0, 0, 0, 236, 0, 0, - 0, 0, 0, 56, 57, 295, 0, 2, 0, 7, + 0, 0, 0, 24, 58, 235, 0, 71, 0, 0, + 247, 238, 0, 228, 0, 0, 240, 0, 260, 0, + 0, 241, 239, 0, 242, 25, 0, 0, 0, 0, + 261, 236, 0, 23, 0, 243, 22, 0, 0, 0, + 0, 0, 244, 21, 0, 0, 0, 237, 0, 0, + 0, 0, 0, 56, 57, 296, 0, 2, 0, 7, 0, 8, 0, 9, 10, 13, 11, 12, 14, 15, - 16, 17, 18, 0, 0, 0, 0, 220, 0, 221, + 16, 17, 18, 0, 0, 0, 0, 221, 0, 222, 19, 0, 5, 62, 63, 64, 195, 196, 197, 198, - 201, 199, 200, 202, 203, 204, 205, 190, 192, 193, - 194, 154, 155, 156, 126, 152, 0, 244, 228, 189, - 101, 102, 103, 104, 108, 105, 106, 107, 109, 29, - 30, 28, 0, 26, 0, 6, 65, 66, 256, 229, - 255, 288, 59, 61, 160, 161, 162, 163, 164, 165, - 166, 167, 127, 158, 0, 60, 70, 286, 230, 67, - 271, 272, 273, 274, 275, 276, 277, 268, 270, 134, - 29, 30, 134, 134, 26, 68, 188, 186, 187, 182, - 184, 0, 0, 231, 96, 100, 97, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 206, 208, 0, - 91, 86, 0, 87, 95, 93, 94, 92, 90, 88, - 89, 80, 82, 0, 0, 250, 282, 0, 69, 281, - 283, 279, 233, 1, 0, 4, 31, 55, 293, 292, - 222, 223, 224, 225, 267, 266, 265, 0, 0, 79, - 75, 76, 77, 78, 0, 72, 0, 191, 151, 153, - 245, 98, 0, 178, 179, 180, 181, 0, 0, 176, - 177, 168, 170, 0, 0, 27, 226, 254, 287, 157, - 159, 285, 269, 130, 134, 134, 133, 128, 0, 183, - 185, 0, 99, 207, 209, 291, 289, 290, 85, 81, - 83, 84, 232, 0, 280, 278, 3, 20, 261, 262, - 263, 258, 264, 257, 299, 300, 0, 0, 0, 74, - 73, 118, 117, 0, 115, 116, 0, 110, 113, 114, - 174, 175, 173, 169, 171, 172, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 135, 131, 132, 134, 249, 0, 0, 251, 0, - 37, 38, 39, 54, 47, 49, 48, 51, 40, 41, - 42, 43, 50, 52, 44, 32, 33, 36, 34, 0, - 35, 0, 0, 0, 0, 302, 0, 297, 0, 111, - 125, 121, 123, 119, 120, 122, 124, 112, 129, 248, - 247, 253, 252, 0, 45, 46, 53, 0, 296, 294, - 301, 0, 298, 284, 305, 0, 0, 0, 0, 0, - 307, 0, 0, 303, 306, 304, 0, 0, 312, 313, - 314, 315, 316, 0, 0, 0, 308, 0, 310, 0, - 309, 311 + 201, 199, 200, 202, 203, 204, 205, 206, 190, 192, + 193, 194, 154, 155, 156, 126, 152, 0, 245, 229, + 189, 101, 102, 103, 104, 108, 105, 106, 107, 109, + 29, 30, 28, 0, 26, 0, 6, 65, 66, 257, + 230, 256, 289, 59, 61, 160, 161, 162, 163, 164, + 165, 166, 167, 127, 158, 0, 60, 70, 287, 231, + 67, 272, 273, 274, 275, 276, 277, 278, 269, 271, + 134, 29, 30, 134, 134, 26, 68, 188, 186, 187, + 182, 184, 0, 0, 232, 96, 100, 97, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 207, 209, + 0, 91, 86, 0, 87, 95, 93, 94, 92, 90, + 88, 89, 80, 82, 0, 0, 251, 283, 0, 69, + 282, 284, 280, 234, 1, 0, 4, 31, 55, 294, + 293, 223, 224, 225, 226, 268, 267, 266, 0, 0, + 79, 75, 76, 77, 78, 0, 72, 0, 191, 151, + 153, 246, 98, 0, 178, 179, 180, 181, 0, 0, + 176, 177, 168, 170, 0, 0, 27, 227, 255, 288, + 157, 159, 286, 270, 130, 134, 134, 133, 128, 0, + 183, 185, 0, 99, 208, 210, 292, 290, 291, 85, + 81, 83, 84, 233, 0, 281, 279, 3, 20, 262, + 263, 264, 259, 265, 258, 300, 301, 0, 0, 0, + 74, 73, 118, 117, 0, 115, 116, 0, 110, 113, + 114, 174, 175, 173, 169, 171, 172, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 135, 131, 132, 134, 250, 0, 0, 252, + 0, 37, 38, 39, 54, 47, 49, 48, 51, 40, + 41, 42, 43, 50, 52, 44, 32, 33, 36, 34, + 0, 35, 0, 0, 0, 0, 303, 0, 298, 0, + 111, 125, 121, 123, 119, 120, 122, 124, 112, 129, + 249, 248, 254, 253, 0, 45, 46, 53, 0, 297, + 295, 302, 0, 299, 285, 306, 0, 0, 0, 0, + 0, 308, 0, 0, 304, 307, 305, 0, 0, 313, + 314, 315, 316, 317, 0, 0, 0, 309, 0, 311, + 0, 310, 312 }; -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 56, 57, 58, 59, 60, 131, 123, 124, 287, - 355, 356, 357, 358, 359, 360, 361, 61, 62, 63, - 64, 85, 235, 236, 65, 201, 202, 203, 204, 66, - 174, 118, 241, 307, 308, 309, 377, 67, 263, 331, - 104, 105, 106, 142, 143, 144, 68, 251, 252, 253, - 254, 69, 169, 170, 171, 70, 97, 98, 99, 100, - 71, 187, 188, 189, 72, 73, 74, 75, 76, 108, - 173, 380, 282, 338, 129, 130, 77, 78, 293, 227, - 79, 157, 158, 212, 208, 209, 210, 148, 132, 278, - 220, 80, 81, 296, 297, 298, 364, 365, 396, 366, - 399, 400, 413, 414, 415 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -188 -static const yytype_int16 yypact[] = + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = { - 5, -160, -28, -188, -188, -188, -24, -188, 60, 0, - -119, -188, 60, -188, 118, 7, -188, -117, -188, -110, - -108, -188, -188, -101, -188, -188, 7, -1, 345, 7, - -188, -188, -96, -188, -95, -188, -188, 21, -3, 73, - 33, 11, -188, -188, -94, 118, -61, -188, 43, 446, - -57, -58, 41, -188, -188, -188, 105, 179, -79, -188, - 7, -188, 7, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -7, 48, -48, -39, -188, 24, -188, - -188, -86, -188, -188, -188, 42, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, 60, -188, -188, - -188, -188, -188, -188, 0, -188, 59, 89, -188, 60, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, 80, -188, 9, 338, -188, -188, -188, -101, - -188, -188, 7, -188, -188, -188, -188, -188, -188, -188, - -188, -188, 345, -188, 67, 7, -188, -188, 12, -188, - -188, -188, -188, -188, -188, -188, -188, -3, -188, -188, - 107, 116, -188, -188, 83, -188, -188, -188, -188, 11, - -188, 113, -20, -188, 118, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, 43, -188, -7, - -188, -188, -25, -188, -188, -188, -188, -188, -188, -188, - -188, 446, -188, 127, -7, -188, -188, 129, -58, -188, - -188, -188, 142, -188, 19, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, 4, -158, -188, - -188, -188, -188, -188, 145, -188, 49, -188, -188, -188, - -188, 233, 55, -188, -188, -188, -188, 64, 157, -188, - -188, 80, -188, -7, -25, -188, -188, -188, -188, -188, - -188, -188, -188, 445, -188, -188, 445, 445, -57, -188, - -188, 82, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -44, 202, -188, -188, -188, 324, -188, -188, - -188, -188, -188, -188, -188, -188, -30, 58, 50, -188, - -188, -188, -188, 88, -188, -188, 3, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, 445, 445, -188, 221, -57, 188, -188, 191, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -51, - -188, 99, 61, 75, -114, -188, 65, -188, -7, -188, - -188, -188, -188, -188, -188, -188, -188, -188, 445, -188, - -188, -188, -188, 68, -188, -188, -188, 7, -188, -188, - -188, 76, -188, -188, -188, 71, 78, -7, 74, -178, - -188, 90, -7, -188, -188, -188, 77, 32, -188, -188, - -188, -188, -188, 101, 93, 84, -188, 94, -188, -7, - -188, -188 + -189, -189, -189, -41, -189, -189, -15, -38, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, 16, -189, -189, -189, + -189, -35, -189, -189, -189, -189, -189, -189, -157, -189, + -189, 138, -189, -189, 106, -189, -189, -189, -2, -189, + -189, -189, -189, 83, -189, -189, 239, -79, -189, -189, + -189, -189, 66, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, 126, -189, -189, -189, -189, + -189, -189, 101, -189, -189, 51, -189, -189, 242, 17, + -188, -189, -189, -189, -24, -189, -189, -97, -189, -189, + -189, -123, -189, -130, -189 }; -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - -188, -188, -188, -41, -188, -188, -15, -38, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, 81, -188, -188, -188, - -188, -37, -188, -188, -188, -188, -188, -188, -111, -188, - -188, 170, -188, -188, 133, -188, -188, -188, 37, -188, - -188, -188, -188, 115, -188, -188, 277, -53, -188, -188, - -188, -188, 103, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, 162, -188, -188, -188, -188, - -188, -188, 143, -188, -188, 91, -188, -188, 274, 52, - -187, -188, -188, -188, 8, -188, -188, -56, -188, -188, - -188, -87, -188, -100, -188 + -1, 56, 57, 58, 59, 60, 132, 124, 125, 288, + 356, 357, 358, 359, 360, 361, 362, 61, 62, 63, + 64, 85, 236, 237, 65, 202, 203, 204, 205, 66, + 175, 119, 242, 308, 309, 310, 378, 67, 264, 332, + 105, 106, 107, 143, 144, 145, 68, 252, 253, 254, + 255, 69, 170, 171, 172, 70, 98, 99, 100, 101, + 71, 188, 189, 190, 72, 73, 74, 75, 76, 109, + 174, 381, 283, 339, 130, 131, 77, 78, 294, 228, + 79, 158, 159, 213, 209, 210, 211, 149, 133, 279, + 221, 80, 81, 297, 298, 299, 365, 366, 397, 367, + 400, 401, 414, 415, 416 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -7 + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 122, 164, 274, 206, 150, 151, 1, 370, 175, 288, - 384, 101, 205, 398, 275, 2, 214, 281, 336, 3, - 4, 5, 152, 403, 163, 218, 82, 6, 7, 371, - 294, 295, 362, 83, 8, 9, 276, 84, 10, 107, - 11, 125, 12, 13, 237, 216, 14, 217, 126, 177, - 127, 266, 267, 166, 219, 15, 237, 128, 224, 16, - 133, 153, 146, 147, 172, 17, 314, 18, 86, 289, - 229, 290, 87, 119, 178, 120, 19, 20, 88, 225, - 21, 22, 149, 242, 256, 23, 24, 389, 337, 25, - 26, 154, 179, 230, 165, 180, 231, 176, 27, 102, - 159, 121, 211, 226, 103, 213, 167, 215, 372, 221, - 222, 28, 29, 30, 228, 373, 362, 258, 31, 223, - 239, 240, 385, 243, 244, 245, 246, 32, 260, 89, - 258, 33, 374, 34, 264, 35, 36, 272, 110, 160, - 207, 161, 111, 265, 277, 37, 38, 39, 40, 41, - 42, 43, 44, 332, 333, 45, 155, 46, 294, 295, - 168, 156, 291, 90, 91, 121, 47, 255, 181, 268, - 261, 48, 49, 50, 270, 51, 52, 271, 232, 233, - 92, 392, 53, 54, 375, 234, 292, 376, 280, 2, - 283, -6, 55, 3, 4, 5, 182, 183, 184, 185, - 112, 6, 7, 285, 186, 286, 299, 300, 8, 9, - 401, 93, 10, 310, 11, 406, 12, 13, 312, 247, - 14, 162, 311, 378, 408, 409, 410, 411, 412, 15, - 334, 121, 421, 16, 94, 95, 96, 248, 339, 17, - 335, 18, 249, 250, 367, 113, 369, 368, 379, 382, - 19, 20, 383, 114, 21, 22, 115, 386, 387, 23, - 24, 388, 301, 25, 26, 391, 395, 393, 397, 398, - 302, 402, 27, 303, 238, 259, 405, 407, 116, 418, - 420, 419, 279, 117, 269, 28, 29, 30, 313, 109, - 273, 257, 31, 408, 409, 410, 411, 412, 381, 284, - 262, 32, 416, 145, 363, 33, 315, 34, 390, 35, - 36, 304, 404, 417, 0, 0, 0, 0, 0, 37, - 38, 39, 40, 41, 42, 43, 44, 0, 0, 45, - 0, 46, 0, 340, 0, 0, 0, 0, 0, 0, - 47, 341, 305, 0, 0, 48, 49, 50, 2, 51, - 52, 0, 3, 4, 5, 0, 53, 54, 0, 0, - 6, 7, 0, 0, 0, -6, 55, 8, 9, 0, - 0, 10, 394, 11, 0, 12, 13, 342, 343, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 0, 16, 0, 344, 0, 0, 0, 17, 0, - 18, 134, 135, 136, 137, 306, 0, 0, 0, 19, - 20, 0, 0, 21, 22, 0, 345, 0, 23, 24, - 0, 0, 25, 26, 346, 0, 347, 0, 0, 0, - 0, 27, 138, 0, 139, 0, 140, 0, 0, 0, - 348, 0, 141, 0, 28, 29, 30, 0, 0, 0, - 0, 31, 0, 0, 0, 0, 0, 349, 350, 190, - 32, 0, 0, 0, 33, 191, 34, 192, 35, 36, + 123, 165, 275, 276, 337, 289, 267, 268, 207, 385, + 176, 167, 206, 82, 102, 371, 215, 282, 120, 238, + 121, 1, 363, 219, 164, 277, 108, 225, 399, 83, + 2, 238, 84, 126, 3, 4, 5, 372, 404, 295, + 296, 127, 6, 7, 128, 217, 129, 218, 226, 8, + 9, 363, 220, 10, 147, 11, 134, 12, 13, 148, + 230, 14, 150, 166, 168, 290, 315, 291, 302, 173, + 15, 177, 227, 160, 16, 338, 303, 390, 122, 304, + 17, 216, 18, 231, 212, 257, 232, 214, 151, 152, + 222, 19, 20, 295, 296, 21, 22, 223, 224, 229, + 23, 24, 103, 240, 25, 26, 153, 104, 333, 334, + 241, 122, 161, 27, 162, 243, 373, 305, 259, 169, + 256, 261, 386, 374, 265, 262, 28, 29, 30, 266, + 269, 259, 271, 31, 278, 272, 281, 284, 286, 111, + 273, 375, 32, 112, 287, 154, 208, 33, 306, 34, + 300, 35, 36, 301, 178, 244, 245, 246, 247, 292, + 313, 37, 38, 39, 40, 41, 42, 43, 44, 233, + 234, 45, 311, 46, 312, 155, 235, 336, 379, 179, + 340, 393, 47, 293, 368, 369, 370, 48, 49, 50, + 380, 51, 52, 376, 383, 163, 377, 180, 53, 54, + 181, 113, 384, 388, 387, 122, 389, -6, 55, 392, + 402, 408, 307, 396, 394, 407, 399, 2, 280, 398, + 406, 3, 4, 5, 409, 410, 411, 412, 413, 6, + 7, 335, 422, 417, 403, 419, 8, 9, 420, 421, + 10, 156, 11, 239, 12, 13, 157, 114, 14, 260, + 314, 110, 248, 270, 274, 115, 258, 15, 116, 263, + 285, 16, 409, 410, 411, 412, 413, 17, 391, 18, + 249, 146, 316, 364, 182, 250, 251, 405, 19, 20, + 117, 0, 21, 22, 418, 118, 0, 23, 24, 0, + 0, 25, 26, 0, 0, 0, 0, 0, 0, 382, + 27, 0, 183, 184, 185, 186, 0, 0, 0, 0, + 187, 0, 0, 28, 29, 30, 0, 0, 0, 0, + 31, 0, 0, 86, 0, 0, 0, 87, 0, 32, + 0, 0, 0, 88, 33, 0, 34, 0, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 45, 0, - 46, 0, 316, 351, 193, 352, 0, 0, 0, 47, - 317, 0, 0, 353, 48, 49, 50, 354, 51, 52, - 0, 0, 0, 0, 0, 53, 54, 0, 318, 319, - 0, 0, 320, 0, 0, 55, 0, 0, 321, 0, - 0, 0, 0, 0, 194, 0, 195, 0, 0, 0, - 0, 0, 196, 0, 197, 0, 0, 198, 0, 0, - 0, 0, 0, 0, 0, 322, 323, 0, 0, 324, - 325, 0, 326, 327, 328, 0, 329, 0, 0, 199, - 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 0, 341, 0, 0, 0, 0, 0, 0, 47, + 342, 0, 0, 395, 48, 49, 50, 2, 51, 52, + 0, 3, 4, 5, 89, 53, 54, 0, 0, 6, + 7, 0, 0, 191, -6, 55, 8, 9, 0, 192, + 10, 193, 11, 0, 12, 13, 343, 344, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 90, 91, + 0, 16, 0, 345, 0, 0, 0, 17, 194, 18, + 135, 136, 137, 138, 0, 92, 0, 0, 19, 20, + 93, 0, 21, 22, 0, 346, 0, 23, 24, 0, + 0, 25, 26, 347, 0, 348, 0, 0, 0, 0, + 27, 139, 0, 140, 0, 141, 0, 94, 195, 349, + 196, 142, 0, 28, 29, 30, 197, 0, 198, 0, + 31, 199, 0, 0, 0, 0, 0, 350, 351, 32, + 95, 96, 97, 0, 33, 0, 34, 0, 35, 36, + 0, 0, 0, 200, 201, 0, 0, 0, 37, 38, + 39, 40, 41, 42, 43, 44, 0, 0, 45, 0, + 46, 0, 317, 352, 0, 353, 0, 0, 0, 47, + 318, 0, 0, 354, 48, 49, 50, 355, 51, 52, + 0, 0, 0, 0, 0, 53, 54, 0, 319, 320, + 0, 0, 321, 0, 0, 55, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 323, 324, 0, 0, 325, + 326, 0, 327, 328, 329, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 330 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 331 }; -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-188))) - -#define yytable_value_is_error(Yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { - 15, 39, 189, 61, 7, 8, 1, 4, 45, 5, - 61, 11, 50, 191, 39, 10, 57, 204, 62, 14, - 15, 16, 25, 201, 39, 32, 186, 22, 23, 26, - 188, 189, 146, 61, 29, 30, 61, 61, 33, 158, - 35, 158, 37, 38, 97, 60, 41, 62, 158, 6, - 158, 162, 163, 42, 61, 50, 109, 158, 34, 54, - 61, 64, 158, 158, 158, 60, 253, 62, 8, 65, - 28, 67, 12, 66, 31, 68, 71, 72, 18, 55, - 75, 76, 61, 3, 125, 80, 81, 201, 132, 84, - 85, 94, 49, 51, 61, 52, 54, 158, 93, 99, - 27, 158, 61, 79, 104, 0, 95, 186, 105, 61, - 158, 106, 107, 108, 200, 112, 146, 132, 113, 158, - 61, 32, 173, 43, 44, 45, 46, 122, 61, 69, - 145, 126, 129, 128, 27, 130, 131, 174, 20, 66, - 198, 68, 24, 27, 169, 140, 141, 142, 143, 144, - 145, 146, 147, 264, 265, 150, 159, 152, 188, 189, - 149, 164, 158, 103, 104, 158, 161, 158, 125, 86, - 158, 166, 167, 168, 61, 170, 171, 197, 136, 137, - 120, 368, 177, 178, 181, 143, 182, 184, 61, 10, - 61, 186, 187, 14, 15, 16, 153, 154, 155, 156, - 82, 22, 23, 61, 161, 186, 61, 158, 29, 30, - 397, 151, 33, 158, 35, 402, 37, 38, 61, 139, - 41, 148, 158, 334, 192, 193, 194, 195, 196, 50, - 268, 158, 419, 54, 174, 175, 176, 157, 36, 60, - 158, 62, 162, 163, 186, 127, 158, 197, 27, 61, - 71, 72, 61, 135, 75, 76, 138, 158, 197, 80, - 81, 186, 29, 84, 85, 200, 190, 199, 197, 191, - 37, 197, 93, 40, 104, 142, 186, 200, 160, 186, - 186, 197, 201, 165, 169, 106, 107, 108, 251, 12, - 187, 129, 113, 192, 193, 194, 195, 196, 336, 208, - 157, 122, 201, 29, 296, 126, 254, 128, 364, 130, - 131, 78, 399, 413, -1, -1, -1, -1, -1, 140, - 141, 142, 143, 144, 145, 146, 147, -1, -1, 150, - -1, 152, -1, 9, -1, -1, -1, -1, -1, -1, - 161, 17, 109, -1, -1, 166, 167, 168, 10, 170, - 171, -1, 14, 15, 16, -1, 177, 178, -1, -1, - 22, 23, -1, -1, -1, 186, 187, 29, 30, -1, - -1, 33, 387, 35, -1, 37, 38, 53, 54, 41, - -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, - -1, -1, 54, -1, 70, -1, -1, -1, 60, -1, - 62, 56, 57, 58, 59, 172, -1, -1, -1, 71, - 72, -1, -1, 75, 76, -1, 92, -1, 80, 81, - -1, -1, 84, 85, 100, -1, 102, -1, -1, -1, - -1, 93, 87, -1, 89, -1, 91, -1, -1, -1, - 116, -1, 97, -1, 106, 107, 108, -1, -1, -1, - -1, 113, -1, -1, -1, -1, -1, 133, 134, 13, - 122, -1, -1, -1, 126, 19, 128, 21, 130, 131, - -1, -1, -1, -1, -1, -1, -1, -1, 140, 141, - 142, 143, 144, 145, 146, 147, -1, -1, 150, -1, - 152, -1, 47, 169, 48, 171, -1, -1, -1, 161, - 55, -1, -1, 179, 166, 167, 168, 183, 170, 171, - -1, -1, -1, -1, -1, 177, 178, -1, 73, 74, - -1, -1, 77, -1, -1, 187, -1, -1, 83, -1, - -1, -1, -1, -1, 88, -1, 90, -1, -1, -1, - -1, -1, 96, -1, 98, -1, -1, 101, -1, -1, + 15, 39, 190, 39, 62, 5, 163, 164, 61, 61, + 45, 42, 50, 187, 11, 4, 57, 205, 66, 98, + 68, 1, 147, 32, 39, 61, 159, 34, 192, 61, + 10, 110, 61, 159, 14, 15, 16, 26, 202, 189, + 190, 159, 22, 23, 159, 60, 159, 62, 55, 29, + 30, 147, 61, 33, 159, 35, 61, 37, 38, 159, + 28, 41, 61, 61, 95, 65, 254, 67, 29, 159, + 50, 159, 79, 27, 54, 133, 37, 202, 159, 40, + 60, 187, 62, 51, 61, 126, 54, 0, 7, 8, + 61, 71, 72, 189, 190, 75, 76, 159, 159, 201, + 80, 81, 99, 61, 84, 85, 25, 104, 265, 266, + 32, 159, 66, 93, 68, 3, 105, 78, 133, 150, + 159, 61, 174, 112, 27, 159, 106, 107, 108, 27, + 86, 146, 61, 113, 170, 198, 61, 61, 61, 20, + 175, 130, 122, 24, 187, 64, 199, 127, 109, 129, + 61, 131, 132, 159, 6, 43, 44, 45, 46, 159, + 61, 141, 142, 143, 144, 145, 146, 147, 148, 137, + 138, 151, 159, 153, 159, 94, 144, 159, 335, 31, + 36, 369, 162, 183, 187, 198, 159, 167, 168, 169, + 27, 171, 172, 182, 61, 149, 185, 49, 178, 179, + 52, 82, 61, 198, 159, 159, 187, 187, 188, 201, + 398, 201, 173, 191, 200, 403, 192, 10, 202, 198, + 187, 14, 15, 16, 193, 194, 195, 196, 197, 22, + 23, 269, 420, 202, 198, 187, 29, 30, 198, 187, + 33, 160, 35, 105, 37, 38, 165, 128, 41, 143, + 252, 12, 140, 170, 188, 136, 130, 50, 139, 158, + 209, 54, 193, 194, 195, 196, 197, 60, 365, 62, + 158, 29, 255, 297, 126, 163, 164, 400, 71, 72, + 161, -1, 75, 76, 414, 166, -1, 80, 81, -1, + -1, 84, 85, -1, -1, -1, -1, -1, -1, 337, + 93, -1, 154, 155, 156, 157, -1, -1, -1, -1, + 162, -1, -1, 106, 107, 108, -1, -1, -1, -1, + 113, -1, -1, 8, -1, -1, -1, 12, -1, 122, + -1, -1, -1, 18, 127, -1, 129, -1, 131, 132, + -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, + 143, 144, 145, 146, 147, 148, -1, -1, 151, -1, + 153, -1, 9, -1, -1, -1, -1, -1, -1, 162, + 17, -1, -1, 388, 167, 168, 169, 10, 171, 172, + -1, 14, 15, 16, 69, 178, 179, -1, -1, 22, + 23, -1, -1, 13, 187, 188, 29, 30, -1, 19, + 33, 21, 35, -1, 37, 38, 53, 54, 41, -1, + -1, -1, -1, -1, -1, -1, -1, 50, 103, 104, + -1, 54, -1, 70, -1, -1, -1, 60, 48, 62, + 56, 57, 58, 59, -1, 120, -1, -1, 71, 72, + 125, -1, 75, 76, -1, 92, -1, 80, 81, -1, + -1, 84, 85, 100, -1, 102, -1, -1, -1, -1, + 93, 87, -1, 89, -1, 91, -1, 152, 88, 116, + 90, 97, -1, 106, 107, 108, 96, -1, 98, -1, + 113, 101, -1, -1, -1, -1, -1, 134, 135, 122, + 175, 176, 177, -1, 127, -1, 129, -1, 131, 132, + -1, -1, -1, 123, 124, -1, -1, -1, 141, 142, + 143, 144, 145, 146, 147, 148, -1, -1, 151, -1, + 153, -1, 47, 170, -1, 172, -1, -1, -1, 162, + 55, -1, -1, 180, 167, 168, 169, 184, 171, 172, + -1, -1, -1, -1, -1, 178, 179, -1, 73, 74, + -1, -1, 77, -1, -1, 188, -1, -1, 83, -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, 110, 111, -1, -1, 114, - 115, -1, 117, 118, 119, -1, 121, -1, -1, 123, - 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 115, -1, 117, 118, 119, -1, 121, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 179 + -1, -1, -1, -1, -1, 180 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 1, 10, 14, 15, 16, 22, 23, 29, 30, 33, 35, 37, 38, 41, 50, 54, 60, 62, 71, 72, 75, 76, 80, 81, 84, 85, 93, 106, 107, - 108, 113, 122, 126, 128, 130, 131, 140, 141, 142, - 143, 144, 145, 146, 147, 150, 152, 161, 166, 167, - 168, 170, 171, 177, 178, 187, 203, 204, 205, 206, - 207, 219, 220, 221, 222, 226, 231, 239, 248, 253, - 257, 262, 266, 267, 268, 269, 270, 278, 279, 282, - 293, 294, 186, 61, 61, 223, 8, 12, 18, 69, - 103, 104, 120, 151, 174, 175, 176, 258, 259, 260, - 261, 11, 99, 104, 242, 243, 244, 158, 271, 258, - 20, 24, 82, 127, 135, 138, 160, 165, 233, 66, - 68, 158, 208, 209, 210, 158, 158, 158, 158, 276, - 277, 208, 290, 61, 56, 57, 58, 59, 87, 89, - 91, 97, 245, 246, 247, 290, 158, 158, 289, 61, - 7, 8, 25, 64, 94, 159, 164, 283, 284, 27, - 66, 68, 148, 208, 209, 61, 42, 95, 149, 254, - 255, 256, 158, 272, 232, 233, 158, 6, 31, 49, - 52, 125, 153, 154, 155, 156, 161, 263, 264, 265, - 13, 19, 21, 48, 88, 90, 96, 98, 101, 123, - 124, 227, 228, 229, 230, 209, 61, 198, 286, 287, - 288, 61, 285, 0, 205, 186, 208, 208, 32, 61, - 292, 61, 158, 158, 34, 55, 79, 281, 200, 28, - 51, 54, 136, 137, 143, 224, 225, 259, 243, 61, - 32, 234, 3, 43, 44, 45, 46, 139, 157, 162, - 163, 249, 250, 251, 252, 158, 205, 277, 208, 246, - 61, 158, 284, 240, 27, 27, 240, 240, 86, 255, - 61, 197, 233, 264, 292, 39, 61, 169, 291, 228, - 61, 292, 274, 61, 287, 61, 186, 211, 5, 65, - 67, 158, 182, 280, 188, 189, 295, 296, 297, 61, - 158, 29, 37, 40, 78, 109, 172, 235, 236, 237, - 158, 158, 61, 250, 292, 291, 47, 55, 73, 74, - 77, 83, 110, 111, 114, 115, 117, 118, 119, 121, - 179, 241, 240, 240, 209, 158, 62, 132, 275, 36, - 9, 17, 53, 54, 70, 92, 100, 102, 116, 133, - 134, 169, 171, 179, 183, 212, 213, 214, 215, 216, - 217, 218, 146, 296, 298, 299, 301, 186, 197, 158, - 4, 26, 105, 112, 129, 181, 184, 238, 240, 27, - 273, 209, 61, 61, 61, 173, 158, 197, 186, 201, - 299, 200, 292, 199, 208, 190, 300, 197, 191, 302, - 303, 292, 197, 201, 303, 186, 292, 200, 192, 193, - 194, 195, 196, 304, 305, 306, 201, 305, 186, 197, - 186, 292 + 108, 113, 122, 127, 129, 131, 132, 141, 142, 143, + 144, 145, 146, 147, 148, 151, 153, 162, 167, 168, + 169, 171, 172, 178, 179, 188, 204, 205, 206, 207, + 208, 220, 221, 222, 223, 227, 232, 240, 249, 254, + 258, 263, 267, 268, 269, 270, 271, 279, 280, 283, + 294, 295, 187, 61, 61, 224, 8, 12, 18, 69, + 103, 104, 120, 125, 152, 175, 176, 177, 259, 260, + 261, 262, 11, 99, 104, 243, 244, 245, 159, 272, + 259, 20, 24, 82, 128, 136, 139, 161, 166, 234, + 66, 68, 159, 209, 210, 211, 159, 159, 159, 159, + 277, 278, 209, 291, 61, 56, 57, 58, 59, 87, + 89, 91, 97, 246, 247, 248, 291, 159, 159, 290, + 61, 7, 8, 25, 64, 94, 160, 165, 284, 285, + 27, 66, 68, 149, 209, 210, 61, 42, 95, 150, + 255, 256, 257, 159, 273, 233, 234, 159, 6, 31, + 49, 52, 126, 154, 155, 156, 157, 162, 264, 265, + 266, 13, 19, 21, 48, 88, 90, 96, 98, 101, + 123, 124, 228, 229, 230, 231, 210, 61, 199, 287, + 288, 289, 61, 286, 0, 206, 187, 209, 209, 32, + 61, 293, 61, 159, 159, 34, 55, 79, 282, 201, + 28, 51, 54, 137, 138, 144, 225, 226, 260, 244, + 61, 32, 235, 3, 43, 44, 45, 46, 140, 158, + 163, 164, 250, 251, 252, 253, 159, 206, 278, 209, + 247, 61, 159, 285, 241, 27, 27, 241, 241, 86, + 256, 61, 198, 234, 265, 293, 39, 61, 170, 292, + 229, 61, 293, 275, 61, 288, 61, 187, 212, 5, + 65, 67, 159, 183, 281, 189, 190, 296, 297, 298, + 61, 159, 29, 37, 40, 78, 109, 173, 236, 237, + 238, 159, 159, 61, 251, 293, 292, 47, 55, 73, + 74, 77, 83, 110, 111, 114, 115, 117, 118, 119, + 121, 180, 242, 241, 241, 210, 159, 62, 133, 276, + 36, 9, 17, 53, 54, 70, 92, 100, 102, 116, + 134, 135, 170, 172, 180, 184, 213, 214, 215, 216, + 217, 218, 219, 147, 297, 299, 300, 302, 187, 198, + 159, 4, 26, 105, 112, 130, 182, 185, 239, 241, + 27, 274, 210, 61, 61, 61, 174, 159, 198, 187, + 202, 300, 201, 293, 200, 209, 191, 301, 198, 192, + 303, 304, 293, 198, 202, 304, 187, 293, 201, 193, + 194, 195, 196, 197, 305, 306, 307, 202, 306, 187, + 198, 187, 293 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 203, 204, 205, 205, 205, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 207, 208, 208, 208, 208, 208, 209, 209, 210, 211, + 211, 212, 212, 213, 213, 213, 214, 215, 215, 215, + 215, 215, 215, 215, 215, 216, 216, 217, 217, 217, + 217, 217, 217, 218, 219, 220, 221, 221, 222, 222, + 222, 222, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 224, 224, 225, 225, 226, 226, 226, 226, 226, + 227, 228, 228, 229, 229, 229, 230, 230, 230, 230, + 230, 230, 231, 231, 231, 231, 232, 232, 232, 233, + 233, 234, 234, 234, 234, 234, 234, 234, 234, 235, + 235, 236, 236, 236, 236, 237, 237, 238, 238, 239, + 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, + 240, 240, 240, 240, 241, 241, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 243, 243, 244, 245, 245, 245, 246, 246, 247, + 248, 248, 248, 248, 248, 248, 248, 248, 249, 250, + 250, 251, 251, 251, 251, 251, 252, 252, 253, 253, + 253, 253, 254, 255, 255, 256, 257, 257, 257, 258, + 258, 259, 259, 260, 260, 261, 261, 261, 261, 261, + 261, 262, 262, 262, 262, 262, 262, 263, 264, 264, + 265, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 268, 268, 268, 269, 269, + 270, 270, 271, 271, 271, 272, 272, 272, 273, 274, + 274, 275, 275, 276, 276, 277, 277, 278, 279, 279, + 280, 280, 281, 281, 281, 281, 282, 282, 282, 283, + 284, 284, 285, 285, 285, 285, 285, 285, 285, 286, + 286, 287, 287, 288, 288, 289, 290, 290, 291, 291, + 292, 292, 292, 293, 293, 294, 295, 296, 296, 297, + 298, 298, 299, 299, 300, 301, 302, 303, 303, 304, + 305, 305, 306, 307, 307, 307, 307, 307 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 3, 2, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 0, 2, 2, 2, 1, 1, 1, 1, 1, + 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, + 3, 4, 4, 3, 0, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 2, 1, 1, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, + 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 3, 1, 2, + 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 4, 1, + 0, 0, 2, 2, 2, 2, 1, 1, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 2, 1, 1, 1, 5, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 5, 1, 3, 2, 3, + 1, 1, 2, 1, 5, 4, 3, 2, 1, 6, + 3, 2, 3, 1, 1, 1, 1, 1 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + #define YYRECOVERING() (!!yyerrstatus) @@ -1584,27 +1458,15 @@ do \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) + YYERROR; \ + } \ +while (0) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -1614,40 +1476,36 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { FILE *yyo = yyoutput; YYUSE (yyo); @@ -1656,8 +1514,6 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif YYUSE (yytype); } @@ -1667,22 +1523,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); @@ -1693,16 +1538,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -1713,49 +1550,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1769,7 +1599,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1792,15 +1622,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -1816,16 +1639,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1855,27 +1670,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1898,11 +1713,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1910,10 +1725,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -1963,7 +1774,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -2030,26 +1841,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif { YYUSE (yyvaluep); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2058,18 +1860,8 @@ yydestruct (yymsg, yytype, yyvaluep) /* The lookahead symbol. */ int yychar; - -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - /* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); - +YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; @@ -2078,35 +1870,16 @@ int yynerrs; | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. + 'yyss': related to states. + 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -2174,23 +1947,23 @@ yyparse () #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -2198,22 +1971,22 @@ yyparse () # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -2222,10 +1995,10 @@ yyparse () yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -2254,7 +2027,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (); } if (yychar <= YYEOF) @@ -2319,7 +2092,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -2333,8 +2106,7 @@ yyreduce: switch (yyn) { case 5: -/* Line 1787 of yacc.c */ -#line 376 "../../ntpd/ntp_parser.y" +#line 377 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { /* I will need to incorporate much more fine grained * error messages. The following should suffice for @@ -2347,433 +2119,433 @@ yyreduce: ip_ctx->errpos.nline, ip_ctx->errpos.ncol); } +#line 2123 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 20: -/* Line 1787 of yacc.c */ -#line 412 "../../ntpd/ntp_parser.y" +#line 413 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { peer_node *my_node; - my_node = create_peer_node((yyvsp[(1) - (3)].Integer), (yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo)); + my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.peers, my_node); } +#line 2134 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 27: -/* Line 1787 of yacc.c */ -#line 431 "../../ntpd/ntp_parser.y" - { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), (yyvsp[(1) - (2)].Integer)); } +#line 432 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); } +#line 2140 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 28: -/* Line 1787 of yacc.c */ -#line 436 "../../ntpd/ntp_parser.y" - { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), AF_UNSPEC); } +#line 437 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); } +#line 2146 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 29: -/* Line 1787 of yacc.c */ -#line 441 "../../ntpd/ntp_parser.y" +#line 442 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = AF_INET; } +#line 2152 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 30: -/* Line 1787 of yacc.c */ -#line 443 "../../ntpd/ntp_parser.y" +#line 444 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = AF_INET6; } +#line 2158 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 31: -/* Line 1787 of yacc.c */ -#line 448 "../../ntpd/ntp_parser.y" +#line 449 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } +#line 2164 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 32: -/* Line 1787 of yacc.c */ -#line 450 "../../ntpd/ntp_parser.y" +#line 451 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2173 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 36: -/* Line 1787 of yacc.c */ -#line 464 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } +#line 465 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } +#line 2179 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 45: -/* Line 1787 of yacc.c */ -#line 480 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } +#line 481 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2185 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 46: -/* Line 1787 of yacc.c */ -#line 482 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_uval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } +#line 483 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2191 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 53: -/* Line 1787 of yacc.c */ -#line 496 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); } +#line 497 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } +#line 2197 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 55: -/* Line 1787 of yacc.c */ -#line 510 "../../ntpd/ntp_parser.y" +#line 511 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { unpeer_node *my_node; - my_node = create_unpeer_node((yyvsp[(2) - (2)].Address_node)); + my_node = create_unpeer_node((yyvsp[0].Address_node)); if (my_node) APPEND_G_FIFO(cfgt.unpeers, my_node); } +#line 2209 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 58: -/* Line 1787 of yacc.c */ -#line 531 "../../ntpd/ntp_parser.y" +#line 532 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.broadcastclient = 1; } +#line 2215 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 59: -/* Line 1787 of yacc.c */ -#line 533 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[(2) - (2)].Address_fifo)); } +#line 534 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); } +#line 2221 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 60: -/* Line 1787 of yacc.c */ -#line 535 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[(2) - (2)].Address_fifo)); } +#line 536 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); } +#line 2227 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 61: -/* Line 1787 of yacc.c */ -#line 537 "../../ntpd/ntp_parser.y" - { cfgt.mdnstries = (yyvsp[(2) - (2)].Integer); } +#line 538 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { cfgt.mdnstries = (yyvsp[0].Integer); } +#line 2233 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 62: -/* Line 1787 of yacc.c */ -#line 548 "../../ntpd/ntp_parser.y" +#line 549 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *atrv; - atrv = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); + atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); APPEND_G_FIFO(cfgt.vars, atrv); } +#line 2244 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 63: -/* Line 1787 of yacc.c */ -#line 555 "../../ntpd/ntp_parser.y" - { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); } +#line 556 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { cfgt.auth.control_key = (yyvsp[0].Integer); } +#line 2250 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 64: -/* Line 1787 of yacc.c */ -#line 557 "../../ntpd/ntp_parser.y" +#line 558 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.cryptosw++; - CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Attr_val_fifo)); + CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo)); } +#line 2259 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 65: -/* Line 1787 of yacc.c */ -#line 562 "../../ntpd/ntp_parser.y" - { cfgt.auth.keys = (yyvsp[(2) - (2)].String); } +#line 563 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { cfgt.auth.keys = (yyvsp[0].String); } +#line 2265 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 66: -/* Line 1787 of yacc.c */ -#line 564 "../../ntpd/ntp_parser.y" - { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); } +#line 565 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { cfgt.auth.keysdir = (yyvsp[0].String); } +#line 2271 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 67: -/* Line 1787 of yacc.c */ -#line 566 "../../ntpd/ntp_parser.y" - { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); } +#line 567 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { cfgt.auth.request_key = (yyvsp[0].Integer); } +#line 2277 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 68: -/* Line 1787 of yacc.c */ -#line 568 "../../ntpd/ntp_parser.y" - { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); } +#line 569 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { cfgt.auth.revoke = (yyvsp[0].Integer); } +#line 2283 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 69: -/* Line 1787 of yacc.c */ -#line 570 "../../ntpd/ntp_parser.y" +#line 571 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Attr_val_fifo); + cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo); // if (!cfgt.auth.trusted_key_list) // cfgt.auth.trusted_key_list = $2; // else // LINK_SLIST(cfgt.auth.trusted_key_list, $2, link); } +#line 2296 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 70: -/* Line 1787 of yacc.c */ -#line 579 "../../ntpd/ntp_parser.y" - { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); } +#line 580 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); } +#line 2302 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 71: -/* Line 1787 of yacc.c */ -#line 584 "../../ntpd/ntp_parser.y" +#line 585 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } +#line 2308 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 72: -/* Line 1787 of yacc.c */ -#line 586 "../../ntpd/ntp_parser.y" +#line 587 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2317 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 73: -/* Line 1787 of yacc.c */ -#line 594 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); } +#line 595 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } +#line 2323 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 74: -/* Line 1787 of yacc.c */ -#line 596 "../../ntpd/ntp_parser.y" +#line 597 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = NULL; - cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); + cfgt.auth.revoke = (yyvsp[0].Integer); msyslog(LOG_WARNING, "'crypto revoke %d' is deprecated, " "please use 'revoke %d' instead.", cfgt.auth.revoke, cfgt.auth.revoke); } +#line 2336 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 80: -/* Line 1787 of yacc.c */ -#line 621 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[(2) - (2)].Attr_val_fifo)); } +#line 622 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); } +#line 2342 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 81: -/* Line 1787 of yacc.c */ -#line 626 "../../ntpd/ntp_parser.y" +#line 627 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2351 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 82: -/* Line 1787 of yacc.c */ -#line 631 "../../ntpd/ntp_parser.y" +#line 632 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2360 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 83: -/* Line 1787 of yacc.c */ -#line 639 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); } +#line 640 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); } +#line 2366 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 84: -/* Line 1787 of yacc.c */ -#line 641 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); } +#line 642 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } +#line 2372 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 85: -/* Line 1787 of yacc.c */ -#line 643 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); } +#line 644 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); } +#line 2378 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 96: -/* Line 1787 of yacc.c */ -#line 669 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[(2) - (2)].Int_fifo)); } +#line 670 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); } +#line 2384 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 97: -/* Line 1787 of yacc.c */ -#line 671 "../../ntpd/ntp_parser.y" +#line 672 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { - cfgt.stats_dir = (yyvsp[(2) - (2)].String); + cfgt.stats_dir = (yyvsp[0].String); } else { - YYFREE((yyvsp[(2) - (2)].String)); + YYFREE((yyvsp[0].String)); yyerror("statsdir remote configuration ignored"); } } +#line 2397 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 98: -/* Line 1787 of yacc.c */ -#line 680 "../../ntpd/ntp_parser.y" +#line 681 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { filegen_node *fgn; - fgn = create_filegen_node((yyvsp[(2) - (3)].Integer), (yyvsp[(3) - (3)].Attr_val_fifo)); + fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.filegen_opts, fgn); } +#line 2408 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 99: -/* Line 1787 of yacc.c */ -#line 690 "../../ntpd/ntp_parser.y" +#line 691 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo); - APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer))); + (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); + APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } +#line 2417 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 100: -/* Line 1787 of yacc.c */ -#line 695 "../../ntpd/ntp_parser.y" +#line 696 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; - APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer))); + APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } +#line 2426 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 109: -/* Line 1787 of yacc.c */ -#line 714 "../../ntpd/ntp_parser.y" +#line 715 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } +#line 2432 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 110: -/* Line 1787 of yacc.c */ -#line 716 "../../ntpd/ntp_parser.y" +#line 717 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2441 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 111: -/* Line 1787 of yacc.c */ -#line 724 "../../ntpd/ntp_parser.y" +#line 725 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { - (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); + (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } else { (yyval.Attr_val) = NULL; - YYFREE((yyvsp[(2) - (2)].String)); + YYFREE((yyvsp[0].String)); yyerror("filegen file remote config ignored"); } } +#line 2455 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 112: -/* Line 1787 of yacc.c */ -#line 734 "../../ntpd/ntp_parser.y" +#line 735 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { - (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); + (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } else { (yyval.Attr_val) = NULL; yyerror("filegen type remote config ignored"); } } +#line 2468 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 113: -/* Line 1787 of yacc.c */ -#line 743 "../../ntpd/ntp_parser.y" +#line 744 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { const char *err; if (lex_from_file()) { - (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); + (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } else { (yyval.Attr_val) = NULL; - if (T_Link == (yyvsp[(1) - (1)].Integer)) + if (T_Link == (yyvsp[0].Integer)) err = "filegen link remote config ignored"; else err = "filegen nolink remote config ignored"; yyerror(err); } } +#line 2487 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 114: -/* Line 1787 of yacc.c */ -#line 758 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } +#line 759 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } +#line 2493 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 126: -/* Line 1787 of yacc.c */ -#line 788 "../../ntpd/ntp_parser.y" +#line 789 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); + CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo)); } +#line 2501 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 127: -/* Line 1787 of yacc.c */ -#line 792 "../../ntpd/ntp_parser.y" +#line 793 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); + CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo)); } +#line 2509 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 128: -/* Line 1787 of yacc.c */ -#line 796 "../../ntpd/ntp_parser.y" +#line 797 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; - rn = create_restrict_node((yyvsp[(2) - (3)].Address_node), NULL, (yyvsp[(3) - (3)].Int_fifo), + rn = create_restrict_node((yyvsp[-1].Address_node), NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } +#line 2521 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 129: -/* Line 1787 of yacc.c */ -#line 804 "../../ntpd/ntp_parser.y" +#line 805 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; - rn = create_restrict_node((yyvsp[(2) - (5)].Address_node), (yyvsp[(4) - (5)].Address_node), (yyvsp[(5) - (5)].Int_fifo), + rn = create_restrict_node((yyvsp[-3].Address_node), (yyvsp[-1].Address_node), (yyvsp[0].Int_fifo), lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } +#line 2533 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 130: -/* Line 1787 of yacc.c */ -#line 812 "../../ntpd/ntp_parser.y" +#line 813 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; - rn = create_restrict_node(NULL, NULL, (yyvsp[(3) - (3)].Int_fifo), + rn = create_restrict_node(NULL, NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } +#line 2545 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 131: -/* Line 1787 of yacc.c */ -#line 820 "../../ntpd/ntp_parser.y" +#line 821 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2784,15 +2556,15 @@ yyreduce: create_address_node( estrdup("0.0.0.0"), AF_INET), - (yyvsp[(4) - (4)].Int_fifo), + (yyvsp[0].Int_fifo), lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } +#line 2564 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 132: -/* Line 1787 of yacc.c */ -#line 835 "../../ntpd/ntp_parser.y" +#line 836 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2803,327 +2575,327 @@ yyreduce: create_address_node( estrdup("::"), AF_INET6), - (yyvsp[(4) - (4)].Int_fifo), + (yyvsp[0].Int_fifo), lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } +#line 2583 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 133: -/* Line 1787 of yacc.c */ -#line 850 "../../ntpd/ntp_parser.y" +#line 851 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { restrict_node * rn; - APPEND_G_FIFO((yyvsp[(3) - (3)].Int_fifo), create_int_node((yyvsp[(2) - (3)].Integer))); + APPEND_G_FIFO((yyvsp[0].Int_fifo), create_int_node((yyvsp[-1].Integer))); rn = create_restrict_node( - NULL, NULL, (yyvsp[(3) - (3)].Int_fifo), lex_current()->curpos.nline); + NULL, NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline); APPEND_G_FIFO(cfgt.restrict_opts, rn); } +#line 2596 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 134: -/* Line 1787 of yacc.c */ -#line 862 "../../ntpd/ntp_parser.y" +#line 863 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; } +#line 2602 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 135: -/* Line 1787 of yacc.c */ -#line 864 "../../ntpd/ntp_parser.y" +#line 865 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo); - APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer))); + (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); + APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } +#line 2611 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 151: -/* Line 1787 of yacc.c */ -#line 890 "../../ntpd/ntp_parser.y" +#line 891 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2620 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 152: -/* Line 1787 of yacc.c */ -#line 895 "../../ntpd/ntp_parser.y" +#line 896 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2629 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 153: -/* Line 1787 of yacc.c */ -#line 903 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } +#line 904 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2635 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 157: -/* Line 1787 of yacc.c */ -#line 914 "../../ntpd/ntp_parser.y" +#line 915 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2644 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 158: -/* Line 1787 of yacc.c */ -#line 919 "../../ntpd/ntp_parser.y" +#line 920 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2653 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 159: -/* Line 1787 of yacc.c */ -#line 927 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } +#line 928 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2659 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 168: -/* Line 1787 of yacc.c */ -#line 947 "../../ntpd/ntp_parser.y" +#line 948 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { addr_opts_node *aon; - aon = create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo)); + aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.fudge, aon); } +#line 2670 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 169: -/* Line 1787 of yacc.c */ -#line 957 "../../ntpd/ntp_parser.y" +#line 958 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2679 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 170: -/* Line 1787 of yacc.c */ -#line 962 "../../ntpd/ntp_parser.y" +#line 963 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2688 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 171: -/* Line 1787 of yacc.c */ -#line 970 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); } +#line 971 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } +#line 2694 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 172: -/* Line 1787 of yacc.c */ -#line 972 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } +#line 973 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2700 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 173: -/* Line 1787 of yacc.c */ -#line 974 "../../ntpd/ntp_parser.y" +#line 975 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].Integer) >= 0 && (yyvsp[(2) - (2)].Integer) <= 16) { - (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); + 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 2713 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 174: -/* Line 1787 of yacc.c */ -#line 983 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); } +#line 984 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } +#line 2719 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 175: -/* Line 1787 of yacc.c */ -#line 985 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); } +#line 986 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } +#line 2725 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 182: -/* Line 1787 of yacc.c */ -#line 1006 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[(2) - (2)].Attr_val_fifo)); } +#line 1007 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); } +#line 2731 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 183: -/* Line 1787 of yacc.c */ -#line 1011 "../../ntpd/ntp_parser.y" +#line 1012 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2740 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 184: -/* Line 1787 of yacc.c */ -#line 1016 "../../ntpd/ntp_parser.y" +#line 1017 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2749 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 185: -/* Line 1787 of yacc.c */ -#line 1024 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } +#line 1025 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2755 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 189: -/* Line 1787 of yacc.c */ -#line 1040 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); } +#line 1041 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); } +#line 2761 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 190: -/* Line 1787 of yacc.c */ -#line 1042 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); } +#line 1043 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); } +#line 2767 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 191: -/* Line 1787 of yacc.c */ -#line 1047 "../../ntpd/ntp_parser.y" +#line 1048 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2776 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 192: -/* Line 1787 of yacc.c */ -#line 1052 "../../ntpd/ntp_parser.y" +#line 1053 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2785 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 193: -/* Line 1787 of yacc.c */ -#line 1060 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } +#line 1061 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } +#line 2791 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 194: -/* Line 1787 of yacc.c */ -#line 1062 "../../ntpd/ntp_parser.y" +#line 1063 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { - (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); + (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } else { char err_str[128]; (yyval.Attr_val) = NULL; snprintf(err_str, sizeof(err_str), "enable/disable %s remote configuration ignored", - keyword((yyvsp[(1) - (1)].Integer))); + keyword((yyvsp[0].Integer))); yyerror(err_str); } } +#line 2809 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 206: -/* Line 1787 of yacc.c */ -#line 1100 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[(2) - (2)].Attr_val_fifo)); } + case 207: +#line 1102 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); } +#line 2815 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 207: -/* Line 1787 of yacc.c */ -#line 1105 "../../ntpd/ntp_parser.y" + case 208: +#line 1107 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2824 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 208: -/* Line 1787 of yacc.c */ -#line 1110 "../../ntpd/ntp_parser.y" + case 209: +#line 1112 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 2833 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 209: -/* Line 1787 of yacc.c */ -#line 1118 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); } + case 210: +#line 1120 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } +#line 2839 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 222: -/* Line 1787 of yacc.c */ -#line 1143 "../../ntpd/ntp_parser.y" + case 223: +#line 1145 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; - av = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); + av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); APPEND_G_FIFO(cfgt.vars, av); } +#line 2850 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 223: -/* Line 1787 of yacc.c */ -#line 1150 "../../ntpd/ntp_parser.y" + case 224: +#line 1152 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; - av = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); + av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); APPEND_G_FIFO(cfgt.vars, av); } +#line 2861 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 224: -/* Line 1787 of yacc.c */ -#line 1157 "../../ntpd/ntp_parser.y" + case 225: +#line 1159 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; - av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); + av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); APPEND_G_FIFO(cfgt.vars, av); } +#line 2872 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 225: -/* Line 1787 of yacc.c */ -#line 1164 "../../ntpd/ntp_parser.y" + case 226: +#line 1166 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { char error_text[64]; attr_val *av; if (lex_from_file()) { - av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); + av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); APPEND_G_FIFO(cfgt.vars, av); } else { - YYFREE((yyvsp[(2) - (2)].String)); + YYFREE((yyvsp[0].String)); snprintf(error_text, sizeof(error_text), "%s remote config ignored", - keyword((yyvsp[(1) - (2)].Integer))); + keyword((yyvsp[-1].Integer))); yyerror(error_text); } } +#line 2892 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 226: -/* Line 1787 of yacc.c */ -#line 1180 "../../ntpd/ntp_parser.y" + case 227: +#line 1182 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (!lex_from_file()) { - YYFREE((yyvsp[(2) - (3)].String)); /* avoid leak */ + YYFREE((yyvsp[-1].String)); /* avoid leak */ yyerror("remote includefile ignored"); break; } @@ -3131,108 +2903,108 @@ yyreduce: fprintf(stderr, "getconfig: Maximum include file level exceeded.\n"); msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded."); } else { - const char * path = FindConfig((yyvsp[(2) - (3)].String)); /* might return $2! */ + const char * path = FindConfig((yyvsp[-1].String)); /* might return $2! */ if (!lex_push_file(path, "r")) { fprintf(stderr, "getconfig: Couldn't open <%s>\n", path); msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", path); } } - YYFREE((yyvsp[(2) - (3)].String)); /* avoid leak */ + YYFREE((yyvsp[-1].String)); /* avoid leak */ } - break; - - case 227: -/* Line 1787 of yacc.c */ -#line 1199 "../../ntpd/ntp_parser.y" - { lex_flush_stack(); } +#line 2915 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 228: -/* Line 1787 of yacc.c */ -#line 1201 "../../ntpd/ntp_parser.y" - { /* see drift_parm below for actions */ } +#line 1201 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { lex_flush_stack(); } +#line 2921 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 229: -/* Line 1787 of yacc.c */ -#line 1203 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[(2) - (2)].Attr_val_fifo)); } +#line 1203 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { /* see drift_parm below for actions */ } +#line 2927 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 230: -/* Line 1787 of yacc.c */ -#line 1205 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[(2) - (2)].String_fifo)); } +#line 1205 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); } +#line 2933 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 231: -/* Line 1787 of yacc.c */ -#line 1207 "../../ntpd/ntp_parser.y" - { APPEND_G_FIFO(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); } +#line 1207 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); } +#line 2939 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 232: -/* Line 1787 of yacc.c */ -#line 1209 "../../ntpd/ntp_parser.y" +#line 1209 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); } +#line 2945 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + break; + + case 233: +#line 1211 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { addr_opts_node *aon; - aon = create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo)); + aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.trap, aon); } +#line 2956 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 233: -/* Line 1787 of yacc.c */ -#line 1216 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[(2) - (2)].Attr_val_fifo)); } + case 234: +#line 1218 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); } +#line 2962 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 238: -/* Line 1787 of yacc.c */ -#line 1231 "../../ntpd/ntp_parser.y" + case 239: +#line 1233 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { #ifndef LEAP_SMEAR yyerror("Built without LEAP_SMEAR support."); #endif } +#line 2972 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 244: -/* Line 1787 of yacc.c */ -#line 1251 "../../ntpd/ntp_parser.y" + case 245: +#line 1253 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { attr_val *av; - av = create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String)); + av = create_attr_sval(T_Driftfile, (yyvsp[0].String)); APPEND_G_FIFO(cfgt.vars, av); } else { - YYFREE((yyvsp[(1) - (1)].String)); + YYFREE((yyvsp[0].String)); yyerror("driftfile remote configuration ignored"); } } +#line 2987 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 245: -/* Line 1787 of yacc.c */ -#line 1262 "../../ntpd/ntp_parser.y" + case 246: +#line 1264 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { attr_val *av; - av = create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String)); + av = create_attr_sval(T_Driftfile, (yyvsp[-1].String)); APPEND_G_FIFO(cfgt.vars, av); - av = create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double)); + av = create_attr_dval(T_WanderThreshold, (yyvsp[0].Double)); APPEND_G_FIFO(cfgt.vars, av); } else { - YYFREE((yyvsp[(1) - (2)].String)); + YYFREE((yyvsp[-1].String)); yyerror("driftfile remote configuration ignored"); } } +#line 3004 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 246: -/* Line 1787 of yacc.c */ -#line 1275 "../../ntpd/ntp_parser.y" + case 247: +#line 1277 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { if (lex_from_file()) { attr_val *av; @@ -3242,386 +3014,386 @@ yyreduce: yyerror("driftfile remote configuration ignored"); } } +#line 3018 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 247: -/* Line 1787 of yacc.c */ -#line 1288 "../../ntpd/ntp_parser.y" - { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), (yyvsp[(4) - (4)].Integer)); } + case 248: +#line 1290 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); } +#line 3024 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 249: -/* Line 1787 of yacc.c */ -#line 1294 "../../ntpd/ntp_parser.y" + case 250: +#line 1296 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 0; } +#line 3030 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 250: -/* Line 1787 of yacc.c */ -#line 1299 "../../ntpd/ntp_parser.y" + case 251: +#line 1301 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } +#line 3036 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 251: -/* Line 1787 of yacc.c */ -#line 1301 "../../ntpd/ntp_parser.y" + case 252: +#line 1303 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (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 */ break; - case 252: -/* Line 1787 of yacc.c */ -#line 1309 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } + case 253: +#line 1311 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 3051 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 253: -/* Line 1787 of yacc.c */ -#line 1311 "../../ntpd/ntp_parser.y" + case 254: +#line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), estrdup((yyvsp[(2) - (2)].Address_node)->address)); - destroy_address_node((yyvsp[(2) - (2)].Address_node)); + (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address)); + destroy_address_node((yyvsp[0].Address_node)); } +#line 3060 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 254: -/* Line 1787 of yacc.c */ -#line 1319 "../../ntpd/ntp_parser.y" + case 255: +#line 1321 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 3069 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 255: -/* Line 1787 of yacc.c */ -#line 1324 "../../ntpd/ntp_parser.y" + case 256: +#line 1326 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 3078 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 256: -/* Line 1787 of yacc.c */ -#line 1332 "../../ntpd/ntp_parser.y" + case 257: +#line 1334 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { char prefix; char * type; - switch ((yyvsp[(1) - (1)].String)[0]) { + switch ((yyvsp[0].String)[0]) { case '+': case '-': case '=': - prefix = (yyvsp[(1) - (1)].String)[0]; - type = (yyvsp[(1) - (1)].String) + 1; + prefix = (yyvsp[0].String)[0]; + type = (yyvsp[0].String) + 1; break; default: prefix = '='; - type = (yyvsp[(1) - (1)].String); + type = (yyvsp[0].String); } (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type)); - YYFREE((yyvsp[(1) - (1)].String)); + YYFREE((yyvsp[0].String)); } +#line 3104 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 257: -/* Line 1787 of yacc.c */ -#line 1357 "../../ntpd/ntp_parser.y" + case 258: +#line 1359 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { nic_rule_node *nrn; - nrn = create_nic_rule_node((yyvsp[(3) - (3)].Integer), NULL, (yyvsp[(2) - (3)].Integer)); + nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer)); APPEND_G_FIFO(cfgt.nic_rules, nrn); } +#line 3115 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 258: -/* Line 1787 of yacc.c */ -#line 1364 "../../ntpd/ntp_parser.y" + case 259: +#line 1366 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { nic_rule_node *nrn; - nrn = create_nic_rule_node(0, (yyvsp[(3) - (3)].String), (yyvsp[(2) - (3)].Integer)); + nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer)); APPEND_G_FIFO(cfgt.nic_rules, nrn); } - break; - - case 268: -/* Line 1787 of yacc.c */ -#line 1392 "../../ntpd/ntp_parser.y" - { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[(2) - (2)].Int_fifo)); } +#line 3126 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 269: -/* Line 1787 of yacc.c */ -#line 1397 "../../ntpd/ntp_parser.y" - { - (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo); - APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer))); - } +#line 1394 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); } +#line 3132 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 270: -/* Line 1787 of yacc.c */ -#line 1402 "../../ntpd/ntp_parser.y" +#line 1399 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Int_fifo) = NULL; - APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer))); + (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); + APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } +#line 3141 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 278: -/* Line 1787 of yacc.c */ -#line 1426 "../../ntpd/ntp_parser.y" + case 271: +#line 1404 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(2) - (2)].Integer))); + (yyval.Int_fifo) = NULL; + APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } +#line 3150 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 279: -/* Line 1787 of yacc.c */ -#line 1431 "../../ntpd/ntp_parser.y" +#line 1428 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(1) - (1)].Integer))); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer))); } +#line 3159 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 280: -/* Line 1787 of yacc.c */ -#line 1439 "../../ntpd/ntp_parser.y" +#line 1433 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); + (yyval.Attr_val_fifo) = NULL; + APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer))); } +#line 3168 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 281: -/* Line 1787 of yacc.c */ -#line 1444 "../../ntpd/ntp_parser.y" +#line 1441 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } +#line 3177 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 282: -/* Line 1787 of yacc.c */ -#line 1452 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[(1) - (1)].Integer)); } +#line 1446 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { + (yyval.Attr_val_fifo) = NULL; + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); + } +#line 3186 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 284: -/* Line 1787 of yacc.c */ -#line 1458 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); } + case 283: +#line 1454 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); } +#line 3192 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 285: -/* Line 1787 of yacc.c */ -#line 1463 "../../ntpd/ntp_parser.y" - { - (yyval.String_fifo) = (yyvsp[(1) - (2)].String_fifo); - APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(2) - (2)].String))); - } +#line 1460 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); } +#line 3198 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 286: -/* Line 1787 of yacc.c */ -#line 1468 "../../ntpd/ntp_parser.y" +#line 1465 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.String_fifo) = NULL; - APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(1) - (1)].String))); + (yyval.String_fifo) = (yyvsp[-1].String_fifo); + APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String))); } +#line 3207 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 287: -/* Line 1787 of yacc.c */ -#line 1476 "../../ntpd/ntp_parser.y" +#line 1470 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Address_fifo) = (yyvsp[(1) - (2)].Address_fifo); - APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(2) - (2)].Address_node)); + (yyval.String_fifo) = NULL; + APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String))); } +#line 3216 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 288: -/* Line 1787 of yacc.c */ -#line 1481 "../../ntpd/ntp_parser.y" +#line 1478 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Address_fifo) = NULL; - APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(1) - (1)].Address_node)); + (yyval.Address_fifo) = (yyvsp[-1].Address_fifo); + APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node)); } +#line 3225 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 289: -/* Line 1787 of yacc.c */ -#line 1489 "../../ntpd/ntp_parser.y" +#line 1483 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { + (yyval.Address_fifo) = NULL; + APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node)); + } +#line 3234 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + break; + + case 290: +#line 1491 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (1)].Integer) != 0 && (yyvsp[(1) - (1)].Integer) != 1) { + if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) { yyerror("Integer value is not boolean (0 or 1). Assuming 1"); (yyval.Integer) = 1; } else { - (yyval.Integer) = (yyvsp[(1) - (1)].Integer); + (yyval.Integer) = (yyvsp[0].Integer); } } +#line 3247 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 290: -/* Line 1787 of yacc.c */ -#line 1497 "../../ntpd/ntp_parser.y" + case 291: +#line 1499 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 1; } +#line 3253 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 291: -/* Line 1787 of yacc.c */ -#line 1498 "../../ntpd/ntp_parser.y" + case 292: +#line 1500 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 0; } +#line 3259 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 292: -/* Line 1787 of yacc.c */ -#line 1502 "../../ntpd/ntp_parser.y" - { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); } + case 293: +#line 1504 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Double) = (double)(yyvsp[0].Integer); } +#line 3265 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 294: -/* Line 1787 of yacc.c */ -#line 1513 "../../ntpd/ntp_parser.y" + case 295: +#line 1515 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { sim_node *sn; - sn = create_sim_node((yyvsp[(3) - (5)].Attr_val_fifo), (yyvsp[(4) - (5)].Sim_server_fifo)); + sn = create_sim_node((yyvsp[-2].Attr_val_fifo), (yyvsp[-1].Sim_server_fifo)); APPEND_G_FIFO(cfgt.sim_details, sn); /* Revert from ; to \n for end-of-command */ old_config_style = 1; } +#line 3279 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 295: -/* Line 1787 of yacc.c */ -#line 1530 "../../ntpd/ntp_parser.y" + case 296: +#line 1532 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { old_config_style = 0; } +#line 3285 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 296: -/* Line 1787 of yacc.c */ -#line 1535 "../../ntpd/ntp_parser.y" + case 297: +#line 1537 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } +#line 3294 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 297: -/* Line 1787 of yacc.c */ -#line 1540 "../../ntpd/ntp_parser.y" + case 298: +#line 1542 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } +#line 3303 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 298: -/* Line 1787 of yacc.c */ -#line 1548 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } + case 299: +#line 1550 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); } +#line 3309 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 301: -/* Line 1787 of yacc.c */ -#line 1558 "../../ntpd/ntp_parser.y" + case 302: +#line 1560 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Sim_server_fifo) = (yyvsp[(1) - (2)].Sim_server_fifo); - APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(2) - (2)].Sim_server)); + (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo); + APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server)); } +#line 3318 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 302: -/* Line 1787 of yacc.c */ -#line 1563 "../../ntpd/ntp_parser.y" + case 303: +#line 1565 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_server_fifo) = NULL; - APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(1) - (1)].Sim_server)); + APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server)); } - break; - - case 303: -/* Line 1787 of yacc.c */ -#line 1571 "../../ntpd/ntp_parser.y" - { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Sim_script_fifo))); } +#line 3327 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 304: -/* Line 1787 of yacc.c */ -#line 1576 "../../ntpd/ntp_parser.y" - { (yyval.Double) = (yyvsp[(3) - (4)].Double); } +#line 1573 "../../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 3333 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 305: -/* Line 1787 of yacc.c */ -#line 1581 "../../ntpd/ntp_parser.y" - { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); } +#line 1578 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Double) = (yyvsp[-1].Double); } +#line 3339 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 306: -/* Line 1787 of yacc.c */ -#line 1586 "../../ntpd/ntp_parser.y" - { - (yyval.Sim_script_fifo) = (yyvsp[(1) - (2)].Sim_script_fifo); - APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(2) - (2)].Sim_script)); - } +#line 1583 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Address_node) = (yyvsp[0].Address_node); } +#line 3345 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 307: -/* Line 1787 of yacc.c */ -#line 1591 "../../ntpd/ntp_parser.y" +#line 1588 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Sim_script_fifo) = NULL; - APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(1) - (1)].Sim_script)); + (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo); + APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script)); } +#line 3354 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 308: -/* Line 1787 of yacc.c */ -#line 1599 "../../ntpd/ntp_parser.y" - { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Attr_val_fifo))); } +#line 1593 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { + (yyval.Sim_script_fifo) = NULL; + APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script)); + } +#line 3363 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; case 309: -/* Line 1787 of yacc.c */ -#line 1604 "../../ntpd/ntp_parser.y" +#line 1601 "../../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 3369 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + break; + + case 310: +#line 1606 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { - (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo); - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val)); + (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } +#line 3378 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 310: -/* Line 1787 of yacc.c */ -#line 1609 "../../ntpd/ntp_parser.y" + case 311: +#line 1611 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; - APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val)); + APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } +#line 3387 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; - case 311: -/* Line 1787 of yacc.c */ -#line 1617 "../../ntpd/ntp_parser.y" - { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } + case 312: +#line 1619 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); } +#line 3393 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ break; -/* Line 1787 of yacc.c */ -#line 3625 "ntp_parser.c" +#line 3397 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3643,7 +3415,7 @@ yyreduce: *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -3658,9 +3430,9 @@ yyreduce: goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -3711,20 +3483,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -3743,7 +3515,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -3756,29 +3528,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -3829,14 +3601,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -3847,13 +3619,9 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -/* Line 2050 of yacc.c */ -#line 1628 "../../ntpd/ntp_parser.y" +#line 1630 "../../ntpd/ntp_parser.y" /* yacc.c:1906 */ void diff --git a/contrib/ntp/ntpd/ntp_parser.h b/contrib/ntp/ntpd/ntp_parser.h index ae729b5f8..3409e25a0 100644 --- a/contrib/ntp/ntpd/ntp_parser.h +++ b/contrib/ntp/ntpd/ntp_parser.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_YY_NTP_PARSER_H_INCLUDED -# define YY_YY_NTP_PARSER_H_INCLUDED -/* Enabling traces. */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif @@ -40,207 +40,207 @@ extern int yydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - T_Abbrev = 258, - T_Age = 259, - T_All = 260, - T_Allan = 261, - T_Allpeers = 262, - T_Auth = 263, - T_Autokey = 264, - T_Automax = 265, - T_Average = 266, - T_Bclient = 267, - T_Beacon = 268, - T_Broadcast = 269, - T_Broadcastclient = 270, - T_Broadcastdelay = 271, - T_Burst = 272, - T_Calibrate = 273, - T_Ceiling = 274, - T_Clockstats = 275, - T_Cohort = 276, - T_ControlKey = 277, - T_Crypto = 278, - T_Cryptostats = 279, - T_Ctl = 280, - T_Day = 281, - T_Default = 282, - T_Digest = 283, - T_Disable = 284, - T_Discard = 285, - T_Dispersion = 286, - T_Double = 287, - T_Driftfile = 288, - T_Drop = 289, - T_Dscp = 290, - T_Ellipsis = 291, - T_Enable = 292, - T_End = 293, - T_False = 294, - T_File = 295, - T_Filegen = 296, - T_Filenum = 297, - T_Flag1 = 298, - T_Flag2 = 299, - T_Flag3 = 300, - T_Flag4 = 301, - T_Flake = 302, - T_Floor = 303, - T_Freq = 304, - T_Fudge = 305, - T_Host = 306, - T_Huffpuff = 307, - T_Iburst = 308, - T_Ident = 309, - T_Ignore = 310, - T_Incalloc = 311, - T_Incmem = 312, - T_Initalloc = 313, - T_Initmem = 314, - T_Includefile = 315, - T_Integer = 316, - T_Interface = 317, - T_Intrange = 318, - T_Io = 319, - T_Ipv4 = 320, - T_Ipv4_flag = 321, - T_Ipv6 = 322, - T_Ipv6_flag = 323, - T_Kernel = 324, - T_Key = 325, - T_Keys = 326, - T_Keysdir = 327, - T_Kod = 328, - T_Mssntp = 329, - T_Leapfile = 330, - T_Leapsmearinterval = 331, - T_Limited = 332, - T_Link = 333, - T_Listen = 334, - T_Logconfig = 335, - T_Logfile = 336, - T_Loopstats = 337, - T_Lowpriotrap = 338, - T_Manycastclient = 339, - T_Manycastserver = 340, - T_Mask = 341, - T_Maxage = 342, - T_Maxclock = 343, - T_Maxdepth = 344, - T_Maxdist = 345, - T_Maxmem = 346, - T_Maxpoll = 347, - T_Mdnstries = 348, - T_Mem = 349, - T_Memlock = 350, - T_Minclock = 351, - T_Mindepth = 352, - T_Mindist = 353, - T_Minimum = 354, - T_Minpoll = 355, - T_Minsane = 356, - T_Mode = 357, - T_Mode7 = 358, - T_Monitor = 359, - T_Month = 360, - T_Mru = 361, - T_Multicastclient = 362, - T_Nic = 363, - T_Nolink = 364, - T_Nomodify = 365, - T_Nomrulist = 366, - T_None = 367, - T_Nonvolatile = 368, - T_Nopeer = 369, - T_Noquery = 370, - T_Noselect = 371, - T_Noserve = 372, - T_Notrap = 373, - T_Notrust = 374, - T_Ntp = 375, - T_Ntpport = 376, - T_NtpSignDsocket = 377, - T_Orphan = 378, - T_Orphanwait = 379, - T_Panic = 380, - T_Peer = 381, - T_Peerstats = 382, - T_Phone = 383, - T_Pid = 384, - T_Pidfile = 385, - T_Pool = 386, - T_Port = 387, - T_Preempt = 388, - T_Prefer = 389, - T_Protostats = 390, - T_Pw = 391, - T_Randfile = 392, - T_Rawstats = 393, - T_Refid = 394, - T_Requestkey = 395, - T_Reset = 396, - T_Restrict = 397, - T_Revoke = 398, - T_Rlimit = 399, - T_Saveconfigdir = 400, - T_Server = 401, - T_Setvar = 402, - T_Source = 403, - T_Stacksize = 404, - T_Statistics = 405, - T_Stats = 406, - T_Statsdir = 407, - T_Step = 408, - T_Stepback = 409, - T_Stepfwd = 410, - T_Stepout = 411, - T_Stratum = 412, - T_String = 413, - T_Sys = 414, - T_Sysstats = 415, - T_Tick = 416, - T_Time1 = 417, - T_Time2 = 418, - T_Timer = 419, - T_Timingstats = 420, - T_Tinker = 421, - T_Tos = 422, - T_Trap = 423, - T_True = 424, - T_Trustedkey = 425, - T_Ttl = 426, - T_Type = 427, - T_U_int = 428, - T_UEcrypto = 429, - T_UEcryptonak = 430, - T_UEdigest = 431, - T_Unconfig = 432, - T_Unpeer = 433, - T_Version = 434, - T_WanderThreshold = 435, - T_Week = 436, - T_Wildcard = 437, - T_Xleave = 438, - T_Year = 439, - T_Flag = 440, - T_EOC = 441, - T_Simulate = 442, - T_Beep_Delay = 443, - T_Sim_Duration = 444, - T_Server_Offset = 445, - T_Duration = 446, - T_Freq_Offset = 447, - T_Wander = 448, - T_Jitter = 449, - T_Prop_Delay = 450, - T_Proc_Delay = 451 - }; + enum yytokentype + { + T_Abbrev = 258, + T_Age = 259, + T_All = 260, + T_Allan = 261, + T_Allpeers = 262, + T_Auth = 263, + T_Autokey = 264, + T_Automax = 265, + T_Average = 266, + T_Bclient = 267, + T_Beacon = 268, + T_Broadcast = 269, + T_Broadcastclient = 270, + T_Broadcastdelay = 271, + T_Burst = 272, + T_Calibrate = 273, + T_Ceiling = 274, + T_Clockstats = 275, + T_Cohort = 276, + T_ControlKey = 277, + T_Crypto = 278, + T_Cryptostats = 279, + T_Ctl = 280, + T_Day = 281, + T_Default = 282, + T_Digest = 283, + T_Disable = 284, + T_Discard = 285, + T_Dispersion = 286, + T_Double = 287, + T_Driftfile = 288, + T_Drop = 289, + T_Dscp = 290, + T_Ellipsis = 291, + T_Enable = 292, + T_End = 293, + T_False = 294, + T_File = 295, + T_Filegen = 296, + T_Filenum = 297, + T_Flag1 = 298, + T_Flag2 = 299, + T_Flag3 = 300, + T_Flag4 = 301, + T_Flake = 302, + T_Floor = 303, + T_Freq = 304, + T_Fudge = 305, + T_Host = 306, + T_Huffpuff = 307, + T_Iburst = 308, + T_Ident = 309, + T_Ignore = 310, + T_Incalloc = 311, + T_Incmem = 312, + T_Initalloc = 313, + T_Initmem = 314, + T_Includefile = 315, + T_Integer = 316, + T_Interface = 317, + T_Intrange = 318, + T_Io = 319, + T_Ipv4 = 320, + T_Ipv4_flag = 321, + T_Ipv6 = 322, + T_Ipv6_flag = 323, + T_Kernel = 324, + T_Key = 325, + T_Keys = 326, + T_Keysdir = 327, + T_Kod = 328, + T_Mssntp = 329, + T_Leapfile = 330, + T_Leapsmearinterval = 331, + T_Limited = 332, + T_Link = 333, + T_Listen = 334, + T_Logconfig = 335, + T_Logfile = 336, + T_Loopstats = 337, + T_Lowpriotrap = 338, + T_Manycastclient = 339, + T_Manycastserver = 340, + T_Mask = 341, + T_Maxage = 342, + T_Maxclock = 343, + T_Maxdepth = 344, + T_Maxdist = 345, + T_Maxmem = 346, + T_Maxpoll = 347, + T_Mdnstries = 348, + T_Mem = 349, + T_Memlock = 350, + T_Minclock = 351, + T_Mindepth = 352, + T_Mindist = 353, + T_Minimum = 354, + T_Minpoll = 355, + T_Minsane = 356, + T_Mode = 357, + T_Mode7 = 358, + T_Monitor = 359, + T_Month = 360, + T_Mru = 361, + T_Multicastclient = 362, + T_Nic = 363, + T_Nolink = 364, + T_Nomodify = 365, + T_Nomrulist = 366, + T_None = 367, + T_Nonvolatile = 368, + T_Nopeer = 369, + T_Noquery = 370, + T_Noselect = 371, + T_Noserve = 372, + T_Notrap = 373, + T_Notrust = 374, + T_Ntp = 375, + T_Ntpport = 376, + T_NtpSignDsocket = 377, + T_Orphan = 378, + T_Orphanwait = 379, + T_PCEdigest = 380, + T_Panic = 381, + T_Peer = 382, + T_Peerstats = 383, + T_Phone = 384, + T_Pid = 385, + T_Pidfile = 386, + T_Pool = 387, + T_Port = 388, + T_Preempt = 389, + T_Prefer = 390, + T_Protostats = 391, + T_Pw = 392, + T_Randfile = 393, + T_Rawstats = 394, + T_Refid = 395, + T_Requestkey = 396, + T_Reset = 397, + T_Restrict = 398, + T_Revoke = 399, + T_Rlimit = 400, + T_Saveconfigdir = 401, + T_Server = 402, + T_Setvar = 403, + T_Source = 404, + T_Stacksize = 405, + T_Statistics = 406, + T_Stats = 407, + T_Statsdir = 408, + T_Step = 409, + T_Stepback = 410, + T_Stepfwd = 411, + T_Stepout = 412, + T_Stratum = 413, + T_String = 414, + T_Sys = 415, + T_Sysstats = 416, + T_Tick = 417, + T_Time1 = 418, + T_Time2 = 419, + T_Timer = 420, + T_Timingstats = 421, + T_Tinker = 422, + T_Tos = 423, + T_Trap = 424, + T_True = 425, + T_Trustedkey = 426, + T_Ttl = 427, + T_Type = 428, + T_U_int = 429, + T_UEcrypto = 430, + T_UEcryptonak = 431, + T_UEdigest = 432, + T_Unconfig = 433, + T_Unpeer = 434, + T_Version = 435, + T_WanderThreshold = 436, + T_Week = 437, + T_Wildcard = 438, + T_Xleave = 439, + T_Year = 440, + T_Flag = 441, + T_EOC = 442, + T_Simulate = 443, + T_Beep_Delay = 444, + T_Sim_Duration = 445, + T_Server_Offset = 446, + T_Duration = 447, + T_Freq_Offset = 448, + T_Wander = 449, + T_Jitter = 450, + T_Prop_Delay = 451, + T_Proc_Delay = 452 + }; #endif /* Tokens. */ #define T_Abbrev 258 @@ -365,86 +365,86 @@ extern int yydebug; #define T_NtpSignDsocket 377 #define T_Orphan 378 #define T_Orphanwait 379 -#define T_Panic 380 -#define T_Peer 381 -#define T_Peerstats 382 -#define T_Phone 383 -#define T_Pid 384 -#define T_Pidfile 385 -#define T_Pool 386 -#define T_Port 387 -#define T_Preempt 388 -#define T_Prefer 389 -#define T_Protostats 390 -#define T_Pw 391 -#define T_Randfile 392 -#define T_Rawstats 393 -#define T_Refid 394 -#define T_Requestkey 395 -#define T_Reset 396 -#define T_Restrict 397 -#define T_Revoke 398 -#define T_Rlimit 399 -#define T_Saveconfigdir 400 -#define T_Server 401 -#define T_Setvar 402 -#define T_Source 403 -#define T_Stacksize 404 -#define T_Statistics 405 -#define T_Stats 406 -#define T_Statsdir 407 -#define T_Step 408 -#define T_Stepback 409 -#define T_Stepfwd 410 -#define T_Stepout 411 -#define T_Stratum 412 -#define T_String 413 -#define T_Sys 414 -#define T_Sysstats 415 -#define T_Tick 416 -#define T_Time1 417 -#define T_Time2 418 -#define T_Timer 419 -#define T_Timingstats 420 -#define T_Tinker 421 -#define T_Tos 422 -#define T_Trap 423 -#define T_True 424 -#define T_Trustedkey 425 -#define T_Ttl 426 -#define T_Type 427 -#define T_U_int 428 -#define T_UEcrypto 429 -#define T_UEcryptonak 430 -#define T_UEdigest 431 -#define T_Unconfig 432 -#define T_Unpeer 433 -#define T_Version 434 -#define T_WanderThreshold 435 -#define T_Week 436 -#define T_Wildcard 437 -#define T_Xleave 438 -#define T_Year 439 -#define T_Flag 440 -#define T_EOC 441 -#define T_Simulate 442 -#define T_Beep_Delay 443 -#define T_Sim_Duration 444 -#define T_Server_Offset 445 -#define T_Duration 446 -#define T_Freq_Offset 447 -#define T_Wander 448 -#define T_Jitter 449 -#define T_Prop_Delay 450 -#define T_Proc_Delay 451 - - +#define T_PCEdigest 380 +#define T_Panic 381 +#define T_Peer 382 +#define T_Peerstats 383 +#define T_Phone 384 +#define T_Pid 385 +#define T_Pidfile 386 +#define T_Pool 387 +#define T_Port 388 +#define T_Preempt 389 +#define T_Prefer 390 +#define T_Protostats 391 +#define T_Pw 392 +#define T_Randfile 393 +#define T_Rawstats 394 +#define T_Refid 395 +#define T_Requestkey 396 +#define T_Reset 397 +#define T_Restrict 398 +#define T_Revoke 399 +#define T_Rlimit 400 +#define T_Saveconfigdir 401 +#define T_Server 402 +#define T_Setvar 403 +#define T_Source 404 +#define T_Stacksize 405 +#define T_Statistics 406 +#define T_Stats 407 +#define T_Statsdir 408 +#define T_Step 409 +#define T_Stepback 410 +#define T_Stepfwd 411 +#define T_Stepout 412 +#define T_Stratum 413 +#define T_String 414 +#define T_Sys 415 +#define T_Sysstats 416 +#define T_Tick 417 +#define T_Time1 418 +#define T_Time2 419 +#define T_Timer 420 +#define T_Timingstats 421 +#define T_Tinker 422 +#define T_Tos 423 +#define T_Trap 424 +#define T_True 425 +#define T_Trustedkey 426 +#define T_Ttl 427 +#define T_Type 428 +#define T_U_int 429 +#define T_UEcrypto 430 +#define T_UEcryptonak 431 +#define T_UEdigest 432 +#define T_Unconfig 433 +#define T_Unpeer 434 +#define T_Version 435 +#define T_WanderThreshold 436 +#define T_Week 437 +#define T_Wildcard 438 +#define T_Xleave 439 +#define T_Year 440 +#define T_Flag 441 +#define T_EOC 442 +#define T_Simulate 443 +#define T_Beep_Delay 444 +#define T_Sim_Duration 445 +#define T_Server_Offset 446 +#define T_Duration 447 +#define T_Freq_Offset 448 +#define T_Wander 449 +#define T_Jitter 450 +#define T_Prop_Delay 451 +#define T_Proc_Delay 452 +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE + +union YYSTYPE { -/* Line 2053 of yacc.c */ -#line 51 "../../ntpd/ntp_parser.y" +#line 51 "../../ntpd/ntp_parser.y" /* yacc.c:1909 */ char * String; double Double; @@ -463,29 +463,17 @@ typedef union YYSTYPE script_info * Sim_script; script_info_fifo * Sim_script_fifo; +#line 467 "../../ntpd/ntp_parser.h" /* yacc.c:1909 */ +}; -/* Line 2053 of yacc.c */ -#line 469 "ntp_parser.h" -} YYSTYPE; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_YY_NTP_PARSER_H_INCLUDED */ +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ diff --git a/contrib/ntp/ntpd/ntp_proto.c b/contrib/ntp/ntpd/ntp_proto.c index 713a0c20d..513b99f68 100644 --- a/contrib/ntp/ntpd/ntp_proto.c +++ b/contrib/ntp/ntpd/ntp_proto.c @@ -165,7 +165,7 @@ u_long sys_limitrejected; /* rate exceeded */ u_long sys_kodsent; /* KoD sent */ /* - * Mechanism knobs: how soon do we unpeer()? + * Mechanism knobs: how soon do we peer_clear() or unpeer()? * * The default way is "on-receipt". If this was a packet from a * well-behaved source, on-receipt will offer the fastest recovery. @@ -173,6 +173,7 @@ u_long sys_kodsent; /* KoD sent */ * for a bad-guy to DoS us. So look and see what bites you harder * and choose according to your environment. */ +int peer_clear_digest_early = 1; /* bad digest (TEST5) and Autokey */ int unpeer_crypto_early = 1; /* bad crypto (TEST9) */ int unpeer_crypto_nak_early = 1; /* crypto_NAK (TEST5) */ int unpeer_digest_early = 1; /* bad digest (TEST5) */ @@ -277,10 +278,12 @@ valid_NAK( u_char hismode ) { - int base_packet_length = MIN_V4_PKT_LEN; - int remainder_size; - struct pkt *rpkt; - int keyid; + int base_packet_length = MIN_V4_PKT_LEN; + int remainder_size; + struct pkt * rpkt; + int keyid; + l_fp p_org; /* origin timestamp */ + const l_fp * myorg; /* selected peer origin */ /* * Check to see if there is something beyond the basic packet @@ -305,7 +308,7 @@ valid_NAK( hismode != MODE_ACTIVE && hismode != MODE_PASSIVE ) { - return (INVALIDNAK); + return INVALIDNAK; } /* @@ -314,18 +317,35 @@ valid_NAK( rpkt = &rbufp->recv_pkt; keyid = ntohl(((u_int32 *)rpkt)[base_packet_length / 4]); if (keyid != 0) { - return (INVALIDNAK); + return INVALIDNAK; } /* * Only valid if peer uses a key */ - if (peer->keyid > 0 || peer->flags & FLAG_SKEY) { - return (VALIDNAK); + if (!peer || !peer->keyid || !(peer->flags & FLAG_SKEY)) { + return INVALIDNAK; } - else { - return (INVALIDNAK); + + /* + * The ORIGIN must match, or this cannot be a valid NAK, either. + */ + NTOHL_FP(&rpkt->org, &p_org); + if (peer->flip > 0) + myorg = &peer->borg; + else + myorg = &peer->aorg; + + if (L_ISZERO(&p_org) || + L_ISZERO( myorg) || + !L_ISEQU(&p_org, myorg)) { + return INVALIDNAK; } + + /* If we ever passed all that checks, we should be safe. Well, + * as safe as we can ever be with an unauthenticated crypto-nak. + */ + return VALIDNAK; } @@ -568,7 +588,7 @@ receive( int kissCode = NOKISS; /* Kiss Code */ int has_mac; /* length of MAC field */ int authlen; /* offset of MAC field */ - int is_authentic = 0; /* cryptosum ok */ + int is_authentic = AUTH_NONE; /* cryptosum ok */ int crypto_nak_test; /* result of crypto-NAK check */ int retcode = AM_NOMATCH; /* match code */ keyid_t skeyid = 0; /* key IDs */ @@ -616,6 +636,8 @@ receive( hisleap = PKT_LEAP(pkt->li_vn_mode); hismode = (int)PKT_MODE(pkt->li_vn_mode); hisstratum = PKT_TO_STRATUM(pkt->stratum); + INSIST(0 != hisstratum); + if (restrict_mask & RES_IGNORE) { sys_restricted++; return; /* ignore everything */ @@ -1512,7 +1534,7 @@ receive( */ if (L_ISZERO(&p_xmt)) { peer->flash |= TEST3; /* unsynch */ - if (0 == hisstratum) { /* KoD packet */ + if (STRATUM_UNSPEC == hisstratum) { /* KoD packet */ peer->bogusorg++; /* for TEST2 or TEST3 */ msyslog(LOG_INFO, "receive: Unexpected zero transmit timestamp in KoD from %s", @@ -1531,17 +1553,22 @@ receive( return; /* - * If this is a broadcast mode packet, skip further checking. If - * an initial volley, bail out now and let the client do its - * stuff. If the origin timestamp is nonzero, this is an - * interleaved broadcast. so restart the protocol. + * If this is a broadcast mode packet, make sure hisstratum + * is appropriate. Don't do anything else here - we wait to + * see if this is an interleave broadcast packet until after + * we've validated the MAC that SHOULD be provided. + * + * hisstratum should never be 0. + * If hisstratum is 15, then we'll advertise as UNSPEC but + * at least we'll be able to sync with the broadcast server. */ } else if (hismode == MODE_BROADCAST) { - if (!L_ISZERO(&p_org) && !(peer->flags & FLAG_XB)) { - peer->flags |= FLAG_XB; - peer->aorg = p_xmt; - peer->borg = rbufp->recv_time; - report_event(PEVNT_XLEAVE, peer, NULL); + if ( 0 == hisstratum + || STRATUM_UNSPEC <= hisstratum) { + /* Is this a ++sys_declined or ??? */ + msyslog(LOG_INFO, + "receive: Unexpected stratum (%d) in broadcast from %s", + hisstratum, ntoa(&peer->srcadr)); return; } @@ -1558,7 +1585,7 @@ receive( * (nonzero) org, rec, and xmt timestamps set to the xmt timestamp * that we have previously sent out. Watch interleave mode. */ - } else if (0 == hisstratum) { + } else if (STRATUM_UNSPEC == hisstratum) { DEBUG_INSIST(!L_ISZERO(&p_xmt)); if ( L_ISZERO(&p_org) /* We checked p_xmt above */ || L_ISZERO(&p_rec)) { @@ -1617,6 +1644,7 @@ receive( */ } else if (peer->flip == 0) { INSIST(0 != hisstratum); + INSIST(STRATUM_UNSPEC != hisstratum); if (0) { } else if (L_ISZERO(&p_org)) { msyslog(LOG_INFO, @@ -1654,8 +1682,9 @@ receive( /* * Check for valid nonzero timestamp fields. */ - } else if (L_ISZERO(&p_org) || L_ISZERO(&p_rec) || - L_ISZERO(&peer->dst)) { + } else if ( L_ISZERO(&p_org) + || L_ISZERO(&p_rec) + || L_ISZERO(&peer->dst)) { peer->flash |= TEST3; /* unsynch */ /* @@ -1671,6 +1700,8 @@ receive( return; /* Bogus packet, we are done */ } + /**/ + /* * If this is a crypto_NAK, the server cannot authenticate a * client packet. The server might have just changed keys. Clear @@ -1687,8 +1718,9 @@ receive( return; } #ifdef AUTOKEY - if (peer->crypto) + if (peer->crypto) { peer_clear(peer, "AUTH"); + } #endif /* AUTOKEY */ return; @@ -1702,28 +1734,78 @@ receive( */ } else if (!AUTH(peer->keyid || has_mac || (restrict_mask & RES_DONTTRUST), is_authentic)) { + + if (peer->flash & PKT_TEST_MASK) { + msyslog(LOG_INFO, + "receive: Bad auth in packet with bad timestamps from %s denied - spoof?", + ntoa(&peer->srcadr)); + return; + } + report_event(PEVNT_AUTH, peer, "digest"); peer->flash |= TEST5; /* bad auth */ peer->badauth++; if ( has_mac - && (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE)) + && ( hismode == MODE_ACTIVE + || hismode == MODE_PASSIVE)) fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask); if (peer->flags & FLAG_PREEMPT) { if (unpeer_digest_early) { unpeer(peer); } - return; } #ifdef AUTOKEY - if (peer->crypto) + else if (peer_clear_digest_early && peer->crypto) { peer_clear(peer, "AUTH"); + } #endif /* AUTOKEY */ return; } /* - * Update the state variables. + * For broadcast packets: + * + * HMS: This next line never made much sense to me, even + * when it was up higher: + * If an initial volley, bail out now and let the + * client do its stuff. + * + * If the packet has not failed authentication, then + * - if the origin timestamp is nonzero this is an + * interleaved broadcast, so restart the protocol. + * - else, this is not an interleaved broadcast packet. */ + if (hismode == MODE_BROADCAST) { + if ( is_authentic == AUTH_OK + || is_authentic == AUTH_NONE) { + if (!L_ISZERO(&p_org)) { + if (!(peer->flags & FLAG_XB)) { + msyslog(LOG_INFO, + "receive: Broadcast server at %s is in interleave mode", + ntoa(&peer->srcadr)); + peer->flags |= FLAG_XB; + peer->aorg = p_xmt; + peer->borg = rbufp->recv_time; + report_event(PEVNT_XLEAVE, peer, NULL); + return; + } + } else if (peer->flags & FLAG_XB) { + msyslog(LOG_INFO, + "receive: Broadcast server at %s is no longer in interleave mode", + ntoa(&peer->srcadr)); + peer->flags &= ~FLAG_XB; + } + } else { + msyslog(LOG_INFO, + "receive: Bad broadcast auth (%d) from %s", + is_authentic, ntoa(&peer->srcadr)); + } + } + + + /* + ** Update the state variables. + */ if (peer->flip == 0) { if (hismode != MODE_BROADCAST) peer->rec = p_xmt; @@ -1766,6 +1848,12 @@ receive( return; /* Drop any other kiss code packets */ } + + /* + * XXX + */ + + /* * If: * - this is a *cast (uni-, broad-, or m-) server packet @@ -1963,9 +2051,9 @@ receive( /* - * process_packet - Packet Procedure, a la Section 3.4.4 of the - * specification. Or almost, at least. If we're in here we have a - * reasonable expectation that we will be having a long term + * process_packet - Packet Procedure, a la Section 3.4.4 of RFC-1305 + * Or almost, at least. If we're in here we have a reasonable + * expectation that we will be having a long term * relationship with this host. */ void @@ -1985,8 +2073,10 @@ process_packet( double etemp, ftemp, td; #endif /* ASSYM */ +#if 0 sys_processed++; peer->processed++; +#endif p_del = FPTOD(NTOHS_FP(pkt->rootdelay)); p_offset = 0; p_disp = FPTOD(NTOHS_FP(pkt->rootdisp)); @@ -1999,6 +2089,39 @@ process_packet( pversion = PKT_VERSION(pkt->li_vn_mode); pstratum = PKT_TO_STRATUM(pkt->stratum); + /**/ + + /**/ + + /* + * Verify the server is synchronized; that is, the leap bits, + * stratum and root distance are valid. + */ + if ( pleap == LEAP_NOTINSYNC /* test 6 */ + || pstratum < sys_floor || pstratum >= sys_ceiling) + peer->flash |= TEST6; /* bad synch or strat */ + if (p_del / 2 + p_disp >= MAXDISPERSE) /* test 7 */ + peer->flash |= TEST7; /* bad header */ + + /* + * If any tests fail at this point, the packet is discarded. + * Note that some flashers may have already been set in the + * receive() routine. + */ + if (peer->flash & PKT_TEST_MASK) { + peer->seldisptoolarge++; + DPRINTF(1, ("packet: flash header %04x\n", + peer->flash)); + return; + } + + /**/ + +#if 1 + sys_processed++; + peer->processed++; +#endif + /* * Capture the header values in the client/peer association.. */ @@ -2033,27 +2156,7 @@ process_packet( } poll_update(peer, peer->hpoll); - /* - * Verify the server is synchronized; that is, the leap bits, - * stratum and root distance are valid. - */ - if ( pleap == LEAP_NOTINSYNC /* test 6 */ - || pstratum < sys_floor || pstratum >= sys_ceiling) - peer->flash |= TEST6; /* bad synch or strat */ - if (p_del / 2 + p_disp >= MAXDISPERSE) /* test 7 */ - peer->flash |= TEST7; /* bad header */ - - /* - * If any tests fail at this point, the packet is discarded. - * Note that some flashers may have already been set in the - * receive() routine. - */ - if (peer->flash & PKT_TEST_MASK) { - peer->seldisptoolarge++; - DPRINTF(1, ("packet: flash header %04x\n", - peer->flash)); - return; - } + /**/ /* * If the peer was previously unreachable, raise a trap. In any @@ -4681,6 +4784,14 @@ proto_config( io_multicast_del(svalue); break; + /* + * Peer_clear Early policy choices + */ + + case PROTO_PCEDIGEST: /* Digest */ + peer_clear_digest_early = value; + break; + /* * Unpeer Early policy choices */ diff --git a/contrib/ntp/ntpd/ntpd-opts.c b/contrib/ntp/ntpd/ntpd-opts.c index 3e9a5c384..f19705bc7 100644 --- a/contrib/ntp/ntpd/ntpd-opts.c +++ b/contrib/ntp/ntpd/ntpd-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpd-opts.c) * - * It has been AutoGen-ed April 26, 2016 at 08:26:14 PM by AutoGen 5.18.5 + * It has been AutoGen-ed June 2, 2016 at 07:32:42 AM by AutoGen 5.18.5 * From the definitions ntpd-opts.def * and the template file options * @@ -75,7 +75,7 @@ extern FILE * option_usage_fp; * static const strings for ntpd options */ static char const ntpd_opt_strs[3129] = -/* 0 */ "ntpd 4.2.8p7\n" +/* 0 */ "ntpd 4.2.8p8\n" "Copyright (C) 1992-2016 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 @@ static char const ntpd_opt_strs[3129] = /* 2900 */ "output version information and exit\0" /* 2936 */ "version\0" /* 2944 */ "NTPD\0" -/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p7\n" +/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p8\n" "Usage: %s [ - [] | --[{=| }] ]... \\\n" "\t\t[ ... ]\n\0" /* 3080 */ "http://bugs.ntp.org, bugs@ntp.org\0" /* 3114 */ "\n\0" -/* 3116 */ "ntpd 4.2.8p7"; +/* 3116 */ "ntpd 4.2.8p8"; /** * ipv4 option description with @@ -1529,7 +1529,7 @@ static void bogus_function(void) { translate option names. */ /* referenced via ntpdOptions.pzCopyright */ - puts(_("ntpd 4.2.8p7\n\ + puts(_("ntpd 4.2.8p8\n\ Copyright (C) 1992-2016 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 @@ implied warranty.\n")); puts(_("output version information and exit")); /* referenced via ntpdOptions.pzUsageTitle */ - puts(_("ntpd - NTP daemon program - Ver. 4.2.8p7\n\ + puts(_("ntpd - NTP daemon program - Ver. 4.2.8p8\n\ Usage: %s [ - [] | --[{=| }] ]... \\\n\ \t\t[ ... ]\n")); @@ -1678,7 +1678,7 @@ Usage: %s [ - [] | --[{=| }] ]... \\\n\ puts(_("\n")); /* referenced via ntpdOptions.pzFullVersion */ - puts(_("ntpd 4.2.8p7")); + puts(_("ntpd 4.2.8p8")); /* referenced via ntpdOptions.pzFullUsage */ puts(_("<<>>")); diff --git a/contrib/ntp/ntpd/ntpd-opts.h b/contrib/ntp/ntpd/ntpd-opts.h index 818a5311c..069673ca3 100644 --- a/contrib/ntp/ntpd/ntpd-opts.h +++ b/contrib/ntp/ntpd/ntpd-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpd-opts.h) * - * It has been AutoGen-ed April 26, 2016 at 08:26:13 PM by AutoGen 5.18.5 + * It has been AutoGen-ed June 2, 2016 at 07:32:40 AM by AutoGen 5.18.5 * From the definitions ntpd-opts.def * and the template file options * @@ -106,9 +106,9 @@ typedef enum { /** count of all options for ntpd */ #define OPTION_CT 38 /** ntpd version */ -#define NTPD_VERSION "4.2.8p7" +#define NTPD_VERSION "4.2.8p8" /** Full ntpd version text */ -#define NTPD_FULL_VERSION "ntpd 4.2.8p7" +#define NTPD_FULL_VERSION "ntpd 4.2.8p8" /** * Interface defines for all options. Replace "n" with the UPPER_CASED diff --git a/contrib/ntp/ntpd/ntpd.1ntpdman b/contrib/ntp/ntpd/ntpd.1ntpdman index 03a3a1c6c..f449c20f7 100644 --- a/contrib/ntp/ntpd/ntpd.1ntpdman +++ b/contrib/ntp/ntpd/ntpd.1ntpdman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpd 1ntpdman "26 Apr 2016" "4.2.8p7" "User Commands" +.TH ntpd 1ntpdman "02 Jun 2016" "4.2.8p8" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-0uayDF/ag-avaqCF) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Jnai2U/ag-Ynaa1U) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:23 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:36:01 AM by AutoGen 5.18.5 .\" From the definitions ntpd-opts.def .\" and the template file agman-cmd.tpl .SH NAME diff --git a/contrib/ntp/ntpd/ntpd.1ntpdmdoc b/contrib/ntp/ntpd/ntpd.1ntpdmdoc index da8bf975e..16212744a 100644 --- a/contrib/ntp/ntpd/ntpd.1ntpdmdoc +++ b/contrib/ntp/ntpd/ntpd.1ntpdmdoc @@ -1,9 +1,9 @@ -.Dd April 26 2016 +.Dd June 2 2016 .Dt NTPD 1ntpdmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc) .\" -.\" It has been AutoGen-ed April 26, 2016 at 08:28:41 PM by AutoGen 5.18.5 +.\" It has been AutoGen-ed June 2, 2016 at 07:36:22 AM by AutoGen 5.18.5 .\" From the definitions ntpd-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME diff --git a/contrib/ntp/ntpd/ntpd.html b/contrib/ntp/ntpd/ntpd.html index 8c5c2be98..077f7235e 100644 --- a/contrib/ntp/ntpd/ntpd.html +++ b/contrib/ntp/ntpd/ntpd.html @@ -39,7 +39,7 @@ The program can operate in any of several modes, including client/server, symmetric and broadcast modes, and with both symmetric-key and public-key cryptography. -

This document applies to version 4.2.8p7 of ntpd. +

This document applies to version 4.2.8p8 of ntpd.

-
tos [beacon beacon | ceiling ceiling | cohort {0 | 1} | floor floor | maxclock maxclock | maxdist maxdist | minclock minclock | mindist mindist | minsane minsane | orphan stratum | orphanwait delay]
+
tos [bcpollbstep poll-gate | beacon beacon | ceiling ceiling | cohort {0 | 1} | floor floor | maxclock maxclock | maxdist maxdist | minclock minclock | mindist mindist | minsane minsane | orphan stratum | orphanwait delay]
This command alters certain system variables used by the the clock selection and clustering algorithms. The default values of these variables have been carefully optimized for a wide range of network speeds and reliability expectations. Very rarely is it necessary to change the default values; but, some folks can't resist twisting the knobs. It can be used to select the quality and quantity of peers used to synchronize the system clock and is most useful in dynamic server discovery schemes. The options are as follows:
+
bcpollbstep poll-gate
+
This option will cause the client to delay believing backward time steps from a broadcast server for bcpollbstep poll intervals. NTP Broadcast networks are expected to be trusted, and if the server's time gets stepped backwards then it's desireable that the clients follow this change as soon as possible. However, in spite of various protections built-in to the broadcast protocol, it is possible that an attacker could perform a carefully-constructed replay attack and cause clients to erroneously step their clocks backward. If the risk of a successful broadcast replay attack is greater than the risk of the clients being out of sync in the event that there is a backward step on the broadcast time servers, this option may be used to cause the clients to delay beliveving backward time steps until poll-gate consecutive polls have been received. The default is 0, which means the client will accept these steps upon receipt. Any value from 0 to 4 can be specified.
beacon beacon
The manycast server sends packets at intervals of 64 s if less than maxclock servers are available. Otherwise, it sends packets at the beacon interval in seconds. The default is 3600 s. See the Automatic Server Discovery page for further details.
ceiling ceiling
diff --git a/contrib/ntp/include/Makefile.am b/contrib/ntp/include/Makefile.am index 521ac146c..749a0c839 100644 --- a/contrib/ntp/include/Makefile.am +++ b/contrib/ntp/include/Makefile.am @@ -16,6 +16,7 @@ noinst_HEADERS = \ intreswork.h \ iosignal.h \ l_stdlib.h \ + libssl_compat.h \ lib_strbuf.h \ libntp.h \ mbg_gps166.h \ diff --git a/contrib/ntp/include/Makefile.in b/contrib/ntp/include/Makefile.in index ef92804d1..acd3bb5f8 100644 --- a/contrib/ntp/include/Makefile.in +++ b/contrib/ntp/include/Makefile.in @@ -501,6 +501,7 @@ noinst_HEADERS = \ intreswork.h \ iosignal.h \ l_stdlib.h \ + libssl_compat.h \ lib_strbuf.h \ libntp.h \ mbg_gps166.h \ diff --git a/contrib/ntp/include/libssl_compat.h b/contrib/ntp/include/libssl_compat.h new file mode 100644 index 000000000..a8938a151 --- /dev/null +++ b/contrib/ntp/include/libssl_compat.h @@ -0,0 +1,100 @@ +/* + * libssl_compat.h -- OpenSSL v1.1 compatibility shims + * + * --------------------------------------------------------------------- + * + * Written by Juergen Perlinger for the NTP project + * + * Based on an idea by Kurt Roeckx + * + * --------------------------------------------------------------------- + * This is a clean room implementation of shim functions that have + * counterparts in the OpenSSL v1.1 API but not in earlier versions. + * + * If the OpenSSL version used for compilation needs the shims (that is, + * does not provide the new functions) the names of these functions are + * redirected to our shims. + * --------------------------------------------------------------------- + */ + +#ifndef NTP_LIBSSL_COMPAT_H +#define NTP_LIBSSL_COMPAT_H + +#include "openssl/evp.h" +#include "openssl/dsa.h" +#include "openssl/rsa.h" + +/* ----------------------------------------------------------------- */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L +/* ----------------------------------------------------------------- */ + +# include +# include + +/* shim the new-style API on an old-style OpenSSL */ + +extern BN_GENCB* sslshimBN_GENCB_new(void); +extern void sslshimBN_GENCB_free(BN_GENCB*); + +extern EVP_MD_CTX* sslshim_EVP_MD_CTX_new(void); +extern void sslshim_EVP_MD_CTX_free(EVP_MD_CTX *ctx); + +extern int sslshim_EVP_PKEY_id(const EVP_PKEY * pkey); +extern int sslshim_EVP_PKEY_base_id(const EVP_PKEY * pkey); +extern RSA* sslshim_EVP_PKEY_get0_RSA(EVP_PKEY * pkey); +extern DSA* sslshim_EVP_PKEY_get0_DSA(EVP_PKEY * pkey); + +extern void sslshim_RSA_get0_key(const RSA *prsa, const BIGNUM **pn, + const BIGNUM **pe, const BIGNUM **pd); +extern int sslshim_RSA_set0_key(RSA *prsa, BIGNUM *n, + BIGNUM *e, BIGNUM *d); +extern void sslshim_RSA_get0_factors(const RSA *prsa, const BIGNUM **pp, + const BIGNUM **pq); +extern int sslshim_RSA_set0_factors(RSA *prsar, BIGNUM *p, BIGNUM *q); +extern int sslshim_RSA_set0_crt_params(RSA *prsa, BIGNUM *dmp1, + BIGNUM *dmq1, BIGNUM *iqmp); + +extern void sslshim_DSA_SIG_get0(const DSA_SIG *psig, const BIGNUM **pr, + const BIGNUM **ps); +extern int sslshim_DSA_SIG_set0(DSA_SIG *psig, BIGNUM *r, BIGNUM *s); +extern void sslshim_DSA_get0_pqg(const DSA *pdsa, const BIGNUM **pp, + const BIGNUM **pq, const BIGNUM **pg); +extern int sslshim_DSA_set0_pqg(DSA *pdsa, BIGNUM *p, BIGNUM *q, BIGNUM *g); +extern void sslshim_DSA_get0_key(const DSA *pdsa, const BIGNUM **ppub_key, + const BIGNUM **ppriv_key); +extern int sslshim_DSA_set0_key(DSA *pdsa, BIGNUM *pub_key, + BIGNUM *priv_key); + +extern int sslshim_X509_get_signature_nid(const X509 *x); + +#define BN_GENCB_new sslshimBN_GENCB_new +#define BN_GENCB_free sslshimBN_GENCB_free + +#define EVP_MD_CTX_new sslshim_EVP_MD_CTX_new +#define EVP_MD_CTX_free sslshim_EVP_MD_CTX_free + +#define EVP_PKEY_id sslshim_EVP_PKEY_id +#define EVP_PKEY_base_id sslshim_EVP_PKEY_base_id +#define EVP_PKEY_get0_RSA sslshim_EVP_PKEY_get0_RSA +#define EVP_PKEY_get0_DSA sslshim_EVP_PKEY_get0_DSA + +#define RSA_get0_key sslshim_RSA_get0_key +#define RSA_set0_key sslshim_RSA_set0_key +#define RSA_get0_factors sslshim_RSA_get0_factors +#define RSA_set0_factors sslshim_RSA_set0_factors +#define RSA_set0_crt_params sslshim_RSA_set0_crt_params + +#define DSA_SIG_get0 sslshim_DSA_SIG_get0 +#define DSA_SIG_set0 sslshim_DSA_SIG_set0 +#define DSA_get0_pqg sslshim_DSA_get0_pqg +#define DSA_set0_pqg sslshim_DSA_set0_pqg +#define DSA_get0_key sslshim_DSA_get0_key +#define DSA_set0_key sslshim_DSA_set0_key + +#define X509_get_signature_nid sslshim_X509_get_signature_nid + +/* ----------------------------------------------------------------- */ +#endif /* OPENSSL_VERSION_NUMBER < v1.1.0 */ +/* ----------------------------------------------------------------- */ + +#endif /* NTP_LIBSSL_COMPAT_H */ diff --git a/contrib/ntp/include/ntp.h b/contrib/ntp/include/ntp.h index 84c30d9fe..323135da4 100644 --- a/contrib/ntp/include/ntp.h +++ b/contrib/ntp/include/ntp.h @@ -391,7 +391,7 @@ struct peer { * Statistic counters */ u_long timereset; /* time stat counters were reset */ - u_long timelastrec; /* last packet received time */ + u_long timelastrec; /* last packet received time, incl. trash */ u_long timereceived; /* last (clean) packet received time */ u_long timereachable; /* last reachable/unreachable time */ @@ -419,8 +419,7 @@ struct peer { * MODE_BROADCAST and MODE_BCLIENT appear in the transition * function. MODE_CONTROL and MODE_PRIVATE can appear in packets, * but those never survive to the transition function. - * is a -/ */ + */ #define MODE_UNSPEC 0 /* unspecified (old version) */ #define MODE_ACTIVE 1 /* symmetric active mode */ #define MODE_PASSIVE 2 /* symmetric passive mode */ @@ -433,7 +432,7 @@ struct peer { #define MODE_CONTROL 6 /* control mode */ #define MODE_PRIVATE 7 /* private mode */ /* - * This is a madeup mode for broadcast client. + * This is a made-up mode for broadcast client. */ #define MODE_BCLIENT 6 /* broadcast client mode */ @@ -724,6 +723,7 @@ struct pkt { #define PROTO_UECRYPTONAK 30 #define PROTO_UEDIGEST 31 #define PROTO_PCEDIGEST 32 +#define PROTO_BCPOLLBSTEP 33 /* * Configuration items for the loop filter @@ -731,7 +731,7 @@ struct pkt { #define LOOP_DRIFTINIT 1 /* iniitialize frequency */ #define LOOP_KERN_CLEAR 2 /* set initial frequency offset */ #define LOOP_MAX 3 /* set both step offsets */ -#define LOOP_MAX_BACK 4 /* set bacward-step offset */ +#define LOOP_MAX_BACK 4 /* set backward-step offset */ #define LOOP_MAX_FWD 5 /* set forward-step offset */ #define LOOP_PANIC 6 /* set panic offseet */ #define LOOP_PHI 7 /* set dispersion rate */ diff --git a/contrib/ntp/include/ntp_intres.h b/contrib/ntp/include/ntp_intres.h index 1b6bd66e0..110913007 100644 --- a/contrib/ntp/include/ntp_intres.h +++ b/contrib/ntp/include/ntp_intres.h @@ -9,6 +9,9 @@ #ifdef WORKER #define INITIAL_DNS_RETRY 2 /* seconds between queries */ +/* flags for extended addrinfo version */ +#define GAIR_F_IGNDNSERR 0x0001 /* ignore DNS errors */ + /* * you call getaddrinfo_sometime(name, service, &hints, retry, callback_func, context); * later (*callback_func)(rescode, gai_errno, context, name, service, hints, ai_result) is called. @@ -19,6 +22,9 @@ typedef void (*gai_sometime_callback) extern int getaddrinfo_sometime(const char *, const char *, const struct addrinfo *, int, gai_sometime_callback, void *); +extern int getaddrinfo_sometime_ex(const char *, const char *, + const struct addrinfo *, int, + gai_sometime_callback, void *, u_int); /* * In gai_sometime_callback routines, the resulting addrinfo list is * only available until the callback returns. To hold on to the list diff --git a/contrib/ntp/include/ntpd.h b/contrib/ntp/include/ntpd.h index 362068c76..1f33bf456 100644 --- a/contrib/ntp/include/ntpd.h +++ b/contrib/ntp/include/ntpd.h @@ -483,6 +483,7 @@ extern int sys_bclient; /* we set our time to broadcasts */ extern double sys_bdelay; /* broadcast client default delay */ extern int sys_authenticate; /* requre authentication for config */ extern l_fp sys_authdelay; /* authentication delay */ +extern u_char sys_bcpollbstep; /* broadcast poll backstep gate */ extern u_long sys_epoch; /* last clock update time */ extern keyid_t sys_private; /* private value for session seed */ extern int sys_manycastserver; /* respond to manycast client pkts */ diff --git a/contrib/ntp/lib/isc/netaddr.c b/contrib/ntp/lib/isc/netaddr.c index 971046628..01f908043 100644 --- a/contrib/ntp/lib/isc/netaddr.c +++ b/contrib/ntp/lib/isc/netaddr.c @@ -280,7 +280,6 @@ isc_netaddr_masktoprefixlen(const isc_netaddr_t *s, unsigned int *lenp) { for (; i < ipbytes; i++) { if (p[i] != 0) return (ISC_R_MASKNONCONTIG); - i++; } *lenp = nbytes * 8 + nbits; return (ISC_R_SUCCESS); diff --git a/contrib/ntp/libntp/Makefile.am b/contrib/ntp/libntp/Makefile.am index 26a4709e8..874739a18 100644 --- a/contrib/ntp/libntp/Makefile.am +++ b/contrib/ntp/libntp/Makefile.am @@ -73,6 +73,7 @@ libntp_a_SRCS = \ iosignal.c \ is_ip_address.c \ lib_strbuf.c \ + libssl_compat.c \ machines.c \ mktime.c \ modetoa.c \ diff --git a/contrib/ntp/libntp/Makefile.in b/contrib/ntp/libntp/Makefile.in index 4c0fb4dbd..8dfa04c68 100644 --- a/contrib/ntp/libntp/Makefile.in +++ b/contrib/ntp/libntp/Makefile.in @@ -150,15 +150,15 @@ am__libntp_a_SOURCES_DIST = systime.c a_md5encrypt.c adjtime.c \ calyearstart.c clocktime.c clocktypes.c decodenetnum.c \ dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \ hextoint.c hextolfp.c humandate.c icom.c iosignal.c \ - is_ip_address.c lib_strbuf.c machines.c mktime.c modetoa.c \ - mstolfp.c msyslog.c netof.c ntp_calendar.c ntp_crypto_rnd.c \ - ntp_intres.c ntp_libopts.c ntp_lineedit.c ntp_random.c \ - ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c octtoint.c \ - prettydate.c refidsmear.c recvbuff.c refnumtoa.c snprintf.c \ - socket.c socktoa.c socktohost.c ssl_init.c statestr.c strdup.c \ - strl_obsd.c syssignal.c timetoa.c timevalops.c uglydate.c \ - vint64ops.c work_fork.c work_thread.c ymd2yd.c \ - $(srcdir)/../lib/isc/assertions.c \ + is_ip_address.c lib_strbuf.c libssl_compat.c machines.c \ + mktime.c modetoa.c mstolfp.c msyslog.c netof.c ntp_calendar.c \ + ntp_crypto_rnd.c ntp_intres.c ntp_libopts.c ntp_lineedit.c \ + ntp_random.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \ + octtoint.c prettydate.c refidsmear.c recvbuff.c refnumtoa.c \ + snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \ + statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \ + timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \ + ymd2yd.c $(srcdir)/../lib/isc/assertions.c \ $(srcdir)/../lib/isc/buffer.c \ $(srcdir)/../lib/isc/backtrace-emptytbl.c \ $(srcdir)/../lib/isc/backtrace.c \ @@ -209,20 +209,21 @@ am__objects_4 = a_md5encrypt.$(OBJEXT) adjtime.$(OBJEXT) \ getopt.$(OBJEXT) hextoint.$(OBJEXT) hextolfp.$(OBJEXT) \ humandate.$(OBJEXT) icom.$(OBJEXT) iosignal.$(OBJEXT) \ is_ip_address.$(OBJEXT) lib_strbuf.$(OBJEXT) \ - machines.$(OBJEXT) mktime.$(OBJEXT) modetoa.$(OBJEXT) \ - mstolfp.$(OBJEXT) msyslog.$(OBJEXT) netof.$(OBJEXT) \ - ntp_calendar.$(OBJEXT) ntp_crypto_rnd.$(OBJEXT) \ - ntp_intres.$(OBJEXT) ntp_libopts.$(OBJEXT) \ - ntp_lineedit.$(OBJEXT) ntp_random.$(OBJEXT) \ - ntp_rfc2553.$(OBJEXT) ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) \ - numtohost.$(OBJEXT) octtoint.$(OBJEXT) prettydate.$(OBJEXT) \ - refidsmear.$(OBJEXT) recvbuff.$(OBJEXT) refnumtoa.$(OBJEXT) \ - snprintf.$(OBJEXT) socket.$(OBJEXT) socktoa.$(OBJEXT) \ - socktohost.$(OBJEXT) ssl_init.$(OBJEXT) statestr.$(OBJEXT) \ - strdup.$(OBJEXT) strl_obsd.$(OBJEXT) syssignal.$(OBJEXT) \ - timetoa.$(OBJEXT) timevalops.$(OBJEXT) uglydate.$(OBJEXT) \ - vint64ops.$(OBJEXT) work_fork.$(OBJEXT) work_thread.$(OBJEXT) \ - ymd2yd.$(OBJEXT) $(am__objects_3) $(am__objects_1) + libssl_compat.$(OBJEXT) machines.$(OBJEXT) mktime.$(OBJEXT) \ + modetoa.$(OBJEXT) mstolfp.$(OBJEXT) msyslog.$(OBJEXT) \ + netof.$(OBJEXT) ntp_calendar.$(OBJEXT) \ + ntp_crypto_rnd.$(OBJEXT) ntp_intres.$(OBJEXT) \ + ntp_libopts.$(OBJEXT) ntp_lineedit.$(OBJEXT) \ + ntp_random.$(OBJEXT) ntp_rfc2553.$(OBJEXT) \ + ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) numtohost.$(OBJEXT) \ + octtoint.$(OBJEXT) prettydate.$(OBJEXT) refidsmear.$(OBJEXT) \ + recvbuff.$(OBJEXT) refnumtoa.$(OBJEXT) snprintf.$(OBJEXT) \ + socket.$(OBJEXT) socktoa.$(OBJEXT) socktohost.$(OBJEXT) \ + ssl_init.$(OBJEXT) statestr.$(OBJEXT) strdup.$(OBJEXT) \ + strl_obsd.$(OBJEXT) syssignal.$(OBJEXT) timetoa.$(OBJEXT) \ + timevalops.$(OBJEXT) uglydate.$(OBJEXT) vint64ops.$(OBJEXT) \ + work_fork.$(OBJEXT) work_thread.$(OBJEXT) ymd2yd.$(OBJEXT) \ + $(am__objects_3) $(am__objects_1) am_libntp_a_OBJECTS = systime.$(OBJEXT) $(am__objects_4) libntp_a_OBJECTS = $(am_libntp_a_OBJECTS) libntpsim_a_AR = $(AR) $(ARFLAGS) @@ -233,15 +234,15 @@ am__libntpsim_a_SOURCES_DIST = systime_s.c a_md5encrypt.c adjtime.c \ calyearstart.c clocktime.c clocktypes.c decodenetnum.c \ dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \ hextoint.c hextolfp.c humandate.c icom.c iosignal.c \ - is_ip_address.c lib_strbuf.c machines.c mktime.c modetoa.c \ - mstolfp.c msyslog.c netof.c ntp_calendar.c ntp_crypto_rnd.c \ - ntp_intres.c ntp_libopts.c ntp_lineedit.c ntp_random.c \ - ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c octtoint.c \ - prettydate.c refidsmear.c recvbuff.c refnumtoa.c snprintf.c \ - socket.c socktoa.c socktohost.c ssl_init.c statestr.c strdup.c \ - strl_obsd.c syssignal.c timetoa.c timevalops.c uglydate.c \ - vint64ops.c work_fork.c work_thread.c ymd2yd.c \ - $(srcdir)/../lib/isc/assertions.c \ + is_ip_address.c lib_strbuf.c libssl_compat.c machines.c \ + mktime.c modetoa.c mstolfp.c msyslog.c netof.c ntp_calendar.c \ + ntp_crypto_rnd.c ntp_intres.c ntp_libopts.c ntp_lineedit.c \ + ntp_random.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \ + octtoint.c prettydate.c refidsmear.c recvbuff.c refnumtoa.c \ + snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \ + statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \ + timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \ + ymd2yd.c $(srcdir)/../lib/isc/assertions.c \ $(srcdir)/../lib/isc/buffer.c \ $(srcdir)/../lib/isc/backtrace-emptytbl.c \ $(srcdir)/../lib/isc/backtrace.c \ @@ -665,6 +666,7 @@ libntp_a_SRCS = \ iosignal.c \ is_ip_address.c \ lib_strbuf.c \ + libssl_compat.c \ machines.c \ mktime.c \ modetoa.c \ @@ -813,6 +815,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_ip_address.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_strbuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libssl_compat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/machines.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ diff --git a/contrib/ntp/libntp/a_md5encrypt.c b/contrib/ntp/libntp/a_md5encrypt.c index 618ccd9de..7edcd2e30 100644 --- a/contrib/ntp/libntp/a_md5encrypt.c +++ b/contrib/ntp/libntp/a_md5encrypt.c @@ -11,6 +11,7 @@ #include "ntp.h" #include "ntp_md5.h" /* provides OpenSSL digest API */ #include "isc/string.h" +#include "libssl_compat.h" /* * MD5authencrypt - generate message digest * @@ -26,7 +27,7 @@ MD5authencrypt( { u_char digest[EVP_MAX_MD_SIZE]; u_int len; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; /* * Compute digest of key concatenated with packet. Note: the @@ -34,18 +35,20 @@ MD5authencrypt( * was creaded. */ INIT_SSL(); -#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL - if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) { + ctx = EVP_MD_CTX_new(); + if (!(ctx && EVP_DigestInit(ctx, EVP_get_digestbynid(type)))) { msyslog(LOG_ERR, "MAC encrypt: digest init failed"); + EVP_MD_CTX_free(ctx); return (0); } -#else - EVP_DigestInit(&ctx, EVP_get_digestbynid(type)); -#endif - EVP_DigestUpdate(&ctx, key, cache_secretsize); - EVP_DigestUpdate(&ctx, (u_char *)pkt, length); - EVP_DigestFinal(&ctx, digest, &len); + EVP_DigestUpdate(ctx, key, cache_secretsize); + EVP_DigestUpdate(ctx, (u_char *)pkt, length); + EVP_DigestFinal(ctx, digest, &len); + EVP_MD_CTX_free(ctx); + /* If the MAC is longer than the MAX then truncate it. */ + if (len > MAX_MAC_LEN - 4) + len = MAX_MAC_LEN - 4; memmove((u_char *)pkt + length + 4, digest, len); return (len + 4); } @@ -67,7 +70,7 @@ MD5authdecrypt( { u_char digest[EVP_MAX_MD_SIZE]; u_int len; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; /* * Compute digest of key concatenated with packet. Note: the @@ -75,24 +78,26 @@ MD5authdecrypt( * was created. */ INIT_SSL(); -#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL - if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) { + ctx = EVP_MD_CTX_new(); + if (!(ctx && EVP_DigestInit(ctx, EVP_get_digestbynid(type)))) { msyslog(LOG_ERR, "MAC decrypt: digest init failed"); + EVP_MD_CTX_free(ctx); return (0); } -#else - EVP_DigestInit(&ctx, EVP_get_digestbynid(type)); -#endif - EVP_DigestUpdate(&ctx, key, cache_secretsize); - EVP_DigestUpdate(&ctx, (u_char *)pkt, length); - EVP_DigestFinal(&ctx, digest, &len); + EVP_DigestUpdate(ctx, key, cache_secretsize); + EVP_DigestUpdate(ctx, (u_char *)pkt, length); + EVP_DigestFinal(ctx, digest, &len); + EVP_MD_CTX_free(ctx); + /* If the MAC is longer than the MAX then truncate it. */ + if (len > MAX_MAC_LEN - 4) + len = MAX_MAC_LEN - 4; if (size != (size_t)len + 4) { msyslog(LOG_ERR, "MAC decrypt: MAC length error"); return (0); } - return !isc_tsmemcmp(digest, (const char *)pkt + length + 4, len); + return !isc_tsmemcmp(digest, (u_char *)pkt + length + 4, len); } /* @@ -106,7 +111,7 @@ addr2refid(sockaddr_u *addr) { u_char digest[20]; u_int32 addr_refid; - EVP_MD_CTX ctx; + EVP_MD_CTX *ctx; u_int len; if (IS_IPV4(addr)) @@ -114,24 +119,23 @@ addr2refid(sockaddr_u *addr) INIT_SSL(); -#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL - EVP_MD_CTX_init(&ctx); + ctx = EVP_MD_CTX_new(); + EVP_MD_CTX_init(ctx); #ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW /* MD5 is not used as a crypto hash here. */ - EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); + EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); #endif - if (!EVP_DigestInit_ex(&ctx, EVP_md5(), NULL)) { + if (!EVP_DigestInit_ex(ctx, EVP_md5(), NULL)) { msyslog(LOG_ERR, "MD5 init failed"); + EVP_MD_CTX_free(ctx); /* pedantic... but safe */ exit(1); } -#else - EVP_DigestInit(&ctx, EVP_md5()); -#endif - EVP_DigestUpdate(&ctx, (u_char *)PSOCK_ADDR6(addr), + EVP_DigestUpdate(ctx, (u_char *)PSOCK_ADDR6(addr), sizeof(struct in6_addr)); - EVP_DigestFinal(&ctx, digest, &len); + EVP_DigestFinal(ctx, digest, &len); + EVP_MD_CTX_free(ctx); memcpy(&addr_refid, digest, sizeof(addr_refid)); return (addr_refid); } diff --git a/contrib/ntp/libntp/audio.c b/contrib/ntp/libntp/audio.c index 726dfa94d..3b0a0b364 100644 --- a/contrib/ntp/libntp/audio.c +++ b/contrib/ntp/libntp/audio.c @@ -55,7 +55,7 @@ static struct audio_device device; /* audio device ident */ #ifdef PCM_STYLE_SOUND # define INIT_FILE "/etc/ntp.audio" int agc = SOUND_MIXER_WRITE_RECLEV; /* or IGAIN or LINE */ -int monitor = SOUND_MIXER_WRITE_VOLUME; /* or OGAIN */ +int audiomonitor = SOUND_MIXER_WRITE_VOLUME; /* or OGAIN */ int devmask = 0; int recmask = 0; char cf_c_dev[100], cf_i_dev[100], cf_agc[100], cf_monitor[100]; @@ -334,7 +334,7 @@ audio_init( /* devmask */ i = mixer_name(cf_monitor, devmask); if (i >= 0) - monitor = MIXER_WRITE(i); + audiomonitor = MIXER_WRITE(i); else printf("monitor %s not in devmask %#x\n", cf_monitor, devmask); @@ -412,7 +412,7 @@ audio_gain( # endif l |= r << 8; if (cf_monitor[0] != '\0') - rval = ioctl(ctl_fd, monitor, &l ); + rval = ioctl(ctl_fd, audiomonitor, &l ); else rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_VOLUME, &l); diff --git a/contrib/ntp/libntp/libssl_compat.c b/contrib/ntp/libntp/libssl_compat.c new file mode 100644 index 000000000..ce6acb7d3 --- /dev/null +++ b/contrib/ntp/libntp/libssl_compat.c @@ -0,0 +1,335 @@ +/* + * libssl_compat.c -- OpenSSL v1.1 compatibility functions + * + * --------------------------------------------------------------------- + * Written by Juergen Perlinger for the NTP project + * + * Based on an idea by Kurt Roeckx + * + * --------------------------------------------------------------------- + * This is a clean room implementation of shim functions that have + * counterparts in the OpenSSL v1.1 API but not in earlier versions. So + * while OpenSSL broke binary compatibility with v1.1, this shim module + * should provide the necessary source code compatibility with older + * versions of OpenSSL. + * --------------------------------------------------------------------- + */ +#include "config.h" + +#include +#include +#include + +#include "ntp_types.h" + +/* ----------------------------------------------------------------- */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L +/* ----------------------------------------------------------------- */ + +#include "libssl_compat.h" +#include "ntp_assert.h" + +/* -------------------------------------------------------------------- + * replace a BIGNUM owned by the caller with another one if it's not + * NULL, taking over the ownership of the new value. This clears & frees + * the old value -- the clear might be overkill, but it's better to err + * on the side of paranoia here. + */ +static void +replace_bn_nn( + BIGNUM ** ps, + BIGNUM * n + ) +{ + if (n) { + REQUIRE(*ps != n); + BN_clear_free(*ps); + *ps = n; + } +} + +/* -------------------------------------------------------------------- + * allocation and deallocation of prime number callbacks + */ +BN_GENCB* +sslshimBN_GENCB_new(void) +{ + return calloc(1,sizeof(BN_GENCB)); +} + +void +sslshimBN_GENCB_free( + BN_GENCB *cb + ) +{ + free(cb); +} + +/* -------------------------------------------------------------------- + * allocation and deallocation of message digests + */ +EVP_MD_CTX* +sslshim_EVP_MD_CTX_new(void) +{ + return calloc(1, sizeof(EVP_MD_CTX)); +} + +void +sslshim_EVP_MD_CTX_free( + EVP_MD_CTX * pctx + ) +{ + free(pctx); +} + +/* -------------------------------------------------------------------- + * get EVP keys and key type + */ +int +sslshim_EVP_PKEY_id( + const EVP_PKEY *pkey + ) +{ + return (pkey) ? pkey->type : EVP_PKEY_NONE; +} + +int +sslshim_EVP_PKEY_base_id( + const EVP_PKEY *pkey + ) +{ + return (pkey) ? EVP_PKEY_type(pkey->type) : EVP_PKEY_NONE; +} + +RSA* +sslshim_EVP_PKEY_get0_RSA( + EVP_PKEY * pkey + ) +{ + return (pkey) ? pkey->pkey.rsa : NULL; +} + +DSA* +sslshim_EVP_PKEY_get0_DSA( + EVP_PKEY * pkey + ) +{ + return (pkey) ? pkey->pkey.dsa : NULL; +} + +/* -------------------------------------------------------------------- + * set/get RSA params + */ +void +sslshim_RSA_get0_key( + const RSA * prsa, + const BIGNUM ** pn, + const BIGNUM ** pe, + const BIGNUM ** pd + ) +{ + REQUIRE(prsa != NULL); + + if (pn) + *pn = prsa->n; + if (pe) + *pe = prsa->e; + if (pd) + *pd = prsa->d; +} + +int +sslshim_RSA_set0_key( + RSA * prsa, + BIGNUM * n, + BIGNUM * e, + BIGNUM * d + ) +{ + REQUIRE(prsa != NULL); + if (!((prsa->n || n) && (prsa->e || e))) + return 0; + + replace_bn_nn(&prsa->n, n); + replace_bn_nn(&prsa->e, e); + replace_bn_nn(&prsa->d, d); + + return 1; +} + +void +sslshim_RSA_get0_factors( + const RSA * prsa, + const BIGNUM ** pp, + const BIGNUM ** pq + ) +{ + REQUIRE(prsa != NULL); + + if (pp) + *pp = prsa->p; + if (pq) + *pq = prsa->q; +} + +int +sslshim_RSA_set0_factors( + RSA * prsa, + BIGNUM * p, + BIGNUM * q + ) +{ + REQUIRE(prsa != NULL); + if (!((prsa->p || p) && (prsa->q || q))) + return 0; + + replace_bn_nn(&prsa->p, p); + replace_bn_nn(&prsa->q, q); + + return 1; +} + +int +sslshim_RSA_set0_crt_params( + RSA * prsa, + BIGNUM * dmp1, + BIGNUM * dmq1, + BIGNUM * iqmp + ) +{ + REQUIRE(prsa != NULL); + if (!((prsa->dmp1 || dmp1) && + (prsa->dmq1 || dmq1) && + (prsa->iqmp || iqmp) )) + return 0; + + replace_bn_nn(&prsa->dmp1, dmp1); + replace_bn_nn(&prsa->dmq1, dmq1); + replace_bn_nn(&prsa->iqmp, iqmp); + + return 1; +} + +/* -------------------------------------------------------------------- + * set/get DSA signature parameters + */ +void +sslshim_DSA_SIG_get0( + const DSA_SIG * psig, + const BIGNUM ** pr, + const BIGNUM ** ps + ) +{ + REQUIRE(psig != NULL); + + if (pr != NULL) + *pr = psig->r; + if (ps != NULL) + *ps = psig->s; +} + +int +sslshim_DSA_SIG_set0( + DSA_SIG * psig, + BIGNUM * r, + BIGNUM * s + ) +{ + REQUIRE(psig != NULL); + if (!(r && s)) + return 0; + + replace_bn_nn(&psig->r, r); + replace_bn_nn(&psig->s, s); + + return 1; +} + +/* -------------------------------------------------------------------- + * get/set DSA parameters + */ +void +sslshim_DSA_get0_pqg( + const DSA * pdsa, + const BIGNUM ** pp, + const BIGNUM ** pq, + const BIGNUM ** pg + ) +{ + REQUIRE(pdsa != NULL); + + if (pp != NULL) + *pp = pdsa->p; + if (pq != NULL) + *pq = pdsa->q; + if (pg != NULL) + *pg = pdsa->g; +} + +int +sslshim_DSA_set0_pqg( + DSA * pdsa, + BIGNUM * p, + BIGNUM * q, + BIGNUM * g + ) +{ + if (!((pdsa->p || p) && (pdsa->q || q) && (pdsa->g || g))) + return 0; + + replace_bn_nn(&pdsa->p, p); + replace_bn_nn(&pdsa->q, q); + replace_bn_nn(&pdsa->g, g); + + return 1; +} + +void +sslshim_DSA_get0_key( + const DSA * pdsa, + const BIGNUM ** ppub_key, + const BIGNUM ** ppriv_key + ) +{ + REQUIRE(pdsa != NULL); + + if (ppub_key != NULL) + *ppub_key = pdsa->pub_key; + if (ppriv_key != NULL) + *ppriv_key = pdsa->priv_key; +} + +int +sslshim_DSA_set0_key( + DSA * pdsa, + BIGNUM * pub_key, + BIGNUM * priv_key + ) +{ + REQUIRE(pdsa != NULL); + if (!(pdsa->pub_key || pub_key)) + return 0; + + replace_bn_nn(&pdsa->pub_key, pub_key); + replace_bn_nn(&pdsa->priv_key, priv_key); + + return 1; +} + +int +sslshim_X509_get_signature_nid( + const X509 *x + ) +{ + return OBJ_obj2nid(x->sig_alg->algorithm); +} + +/* ----------------------------------------------------------------- */ +#else /* OPENSSL_VERSION_NUMBER >= v1.1.0 */ +/* ----------------------------------------------------------------- */ + +NONEMPTY_TRANSLATION_UNIT + +/* ----------------------------------------------------------------- */ +#endif +/* ----------------------------------------------------------------- */ diff --git a/contrib/ntp/libntp/ntp_calendar.c b/contrib/ntp/libntp/ntp_calendar.c index ff6ead364..4bfb0e723 100644 --- a/contrib/ntp/libntp/ntp_calendar.c +++ b/contrib/ntp/libntp/ntp_calendar.c @@ -91,7 +91,7 @@ /* *--------------------------------------------------------------------- * replacing the 'time()' function - * -------------------------------------------------------------------- + *--------------------------------------------------------------------- */ static systime_func_ptr systime_func = &time; @@ -395,7 +395,7 @@ ntpcal_get_build_date( /* *--------------------------------------------------------------------- * basic calendar stuff - * -------------------------------------------------------------------- + *--------------------------------------------------------------------- */ /* month table for a year starting with March,1st */ @@ -443,11 +443,11 @@ static const uint16_t real_month_table[2][13] = { */ /* - * ================================================================== + * ==================================================================== * * General algorithmic stuff * - * ================================================================== + * ==================================================================== */ /* @@ -495,7 +495,7 @@ static const uint16_t real_month_table[2][13] = { * 32/16bit divisions and is still performant is a bit more * difficult. Since most usecases can be coded in a way that does only * require the 32-bit version a 64bit version is NOT provided here. - * --------------------------------------------------------------------- + *--------------------------------------------------------------------- */ int32_t ntpcal_periodic_extend( @@ -542,8 +542,35 @@ ntpcal_periodic_extend( return pivot; } +/*--------------------------------------------------------------------- + * Note to the casual reader + * + * In the next two functions you will find (or would have found...) + * the expression + * + * res.Q_s -= 0x80000000; + * + * There was some ruckus about a possible programming error due to + * integer overflow and sign propagation. + * + * This assumption is based on a lack of understanding of the C + * standard. (Though this is admittedly not one of the most 'natural' + * aspects of the 'C' language and easily to get wrong.) + * + * see + * http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf + * "ISO/IEC 9899:201x Committee Draft — April 12, 2011" + * 6.4.4.1 Integer constants, clause 5 + * + * why there is no sign extension/overflow problem here. + * + * But to ease the minds of the doubtful, I added back the 'u' qualifiers + * that somehow got lost over the last years. + */ + + /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Convert a timestamp in NTP scale to a 64bit seconds value in the UN*X * scale with proper epoch unfolding around a given pivot or the current * system time. This function happily accepts negative pivot values as @@ -553,7 +580,7 @@ ntpcal_periodic_extend( * This is also a periodic extension, but since the cycle is 2^32 and * the shift is 2^31, we can do some *very* fast math without explicit * divisions. - *------------------------------------------------------------------- + *--------------------------------------------------------------------- */ vint64 ntpcal_ntp_to_time( @@ -568,7 +595,7 @@ ntpcal_ntp_to_time( res.q_s = (pivot != NULL) ? *pivot : now(); - res.Q_s -= 0x80000000; /* unshift of half range */ + res.Q_s -= 0x80000000u; /* unshift of half range */ ntp -= (uint32_t)JAN_1970; /* warp into UN*X domain */ ntp -= res.D_s.lo; /* cycle difference */ res.Q_s += (uint64_t)ntp; /* get expanded time */ @@ -581,7 +608,7 @@ ntpcal_ntp_to_time( ? *pivot : now(); res = time_to_vint64(&tmp); - M_SUB(res.D_s.hi, res.D_s.lo, 0, 0x80000000); + M_SUB(res.D_s.hi, res.D_s.lo, 0, 0x80000000u); ntp -= (uint32_t)JAN_1970; /* warp into UN*X domain */ ntp -= res.D_s.lo; /* cycle difference */ M_ADD(res.D_s.hi, res.D_s.lo, 0, ntp); @@ -592,7 +619,7 @@ ntpcal_ntp_to_time( } /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Convert a timestamp in NTP scale to a 64bit seconds value in the NTP * scale with proper epoch unfolding around a given pivot or the current * system time. @@ -602,7 +629,7 @@ ntpcal_ntp_to_time( * This is also a periodic extension, but since the cycle is 2^32 and * the shift is 2^31, we can do some *very* fast math without explicit * divisions. - *------------------------------------------------------------------- + *--------------------------------------------------------------------- */ vint64 ntpcal_ntp_to_ntp( @@ -617,7 +644,7 @@ ntpcal_ntp_to_ntp( res.q_s = (pivot) ? *pivot : now(); - res.Q_s -= 0x80000000; /* unshift of half range */ + res.Q_s -= 0x80000000u; /* unshift of half range */ res.Q_s += (uint32_t)JAN_1970; /* warp into NTP domain */ ntp -= res.D_s.lo; /* cycle difference */ res.Q_s += (uint64_t)ntp; /* get expanded time */ @@ -642,20 +669,20 @@ ntpcal_ntp_to_ntp( /* - * ================================================================== + * ==================================================================== * * Splitting values to composite entities * - * ================================================================== + * ==================================================================== */ /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Split a 64bit seconds value into elapsed days in 'res.hi' and * elapsed seconds since midnight in 'res.lo' using explicit floor * division. This function happily accepts negative time values as * timestamps before the respective epoch start. - * ------------------------------------------------------------------- + *--------------------------------------------------------------------- */ ntpcal_split ntpcal_daysplit( @@ -736,11 +763,11 @@ ntpcal_daysplit( } /* - *------------------------------------------------------------------- + *--------------------------------------------------------------------- * Split a 32bit seconds value into h/m/s and excessive days. This * function happily accepts negative time values as timestamps before * midnight. - * ------------------------------------------------------------------- + *--------------------------------------------------------------------- */ static int32_t priv_timesplit( @@ -773,7 +800,7 @@ priv_timesplit( } /* - * --------------------------------------------------------------------- + *--------------------------------------------------------------------- * Given the number of elapsed days in the calendar era, split this * number into the number of elapsed years in 'res.hi' and the number * of elapsed days of that year in 'res.lo'. @@ -1053,11 +1080,11 @@ ntpcal_time_to_date( /* - * ================================================================== + * ==================================================================== * * merging composite entities * - * ================================================================== + * ==================================================================== */ /* @@ -1251,8 +1278,8 @@ ntpcal_edate_to_eradays( * Convert ELAPSED years/months/days of gregorian calendar to elapsed * days in year. * - * Note: This will give the true difference to the start of the given year, - * even if months & days are off-scale. + * Note: This will give the true difference to the start of the given + * year, even if months & days are off-scale. *--------------------------------------------------------------------- */ int32_t @@ -1434,11 +1461,11 @@ ntpcal_date_to_time( /* - * ================================================================== + * ==================================================================== * * extended and unchecked variants of caljulian/caltontp * - * ================================================================== + * ==================================================================== */ int ntpcal_ntp64_to_date( @@ -1500,11 +1527,11 @@ ntpcal_date_to_ntp( /* - * ================================================================== + * ==================================================================== * * day-of-week calculations * - * ================================================================== + * ==================================================================== */ /* * Given a RataDie and a day-of-week, calculate a RDN that is reater-than, @@ -1557,7 +1584,7 @@ ntpcal_weekday_lt( } /* - * ================================================================== + * ==================================================================== * * ISO week-calendar conversions * @@ -1601,7 +1628,7 @@ ntpcal_weekday_lt( * smallest possible powers of two, so the division can be implemented * as shifts if the optimiser chooses to do so. * - * ================================================================== + * ==================================================================== */ /* diff --git a/contrib/ntp/libntp/ntp_intres.c b/contrib/ntp/libntp/ntp_intres.c index 0b5bb7534..7aa288af5 100644 --- a/contrib/ntp/libntp/ntp_intres.c +++ b/contrib/ntp/libntp/ntp_intres.c @@ -118,14 +118,16 @@ * is managed by the code which calls the *_complete routines. */ + /* === typedefs === */ typedef struct blocking_gai_req_tag { /* marshalled args */ size_t octets; u_int dns_idx; time_t scheduled; time_t earliest; - struct addrinfo hints; int retry; + struct addrinfo hints; + u_int qflags; gai_sometime_callback callback; void * context; size_t nodesize; @@ -205,8 +207,8 @@ static dnsworker_ctx * get_worker_context(blocking_child *, u_int); static void scheduled_sleep(time_t, time_t, dnsworker_ctx *); static void manage_dns_retry_interval(time_t *, time_t *, - int *, - time_t *); + int *, time_t *, + int/*BOOL*/); static int should_retry_dns(int, int); #ifdef HAVE_RES_INIT static void reload_resolv_conf(dnsworker_ctx *); @@ -230,13 +232,14 @@ static void getnameinfo_sometime_complete(blocking_work_req, * invokes provided callback completion function. */ int -getaddrinfo_sometime( +getaddrinfo_sometime_ex( const char * node, const char * service, const struct addrinfo * hints, int retry, gai_sometime_callback callback, - void * context + void * context, + u_int qflags ) { blocking_gai_req * gai_req; @@ -277,6 +280,7 @@ getaddrinfo_sometime( gai_req->context = context; gai_req->nodesize = nodesize; gai_req->servsize = servsize; + gai_req->qflags = qflags; memcpy((char *)gai_req + sizeof(*gai_req), node, nodesize); memcpy((char *)gai_req + sizeof(*gai_req) + nodesize, service, @@ -451,6 +455,20 @@ blocking_getaddrinfo( return 0; } +int +getaddrinfo_sometime( + const char * node, + const char * service, + const struct addrinfo * hints, + int retry, + gai_sometime_callback callback, + void * context + ) +{ + return getaddrinfo_sometime_ex(node, service, hints, retry, + callback, context, 0); +} + static void getaddrinfo_sometime_complete( @@ -470,7 +488,7 @@ getaddrinfo_sometime_complete( char * service; char * canon_start; time_t time_now; - int again; + int again, noerr; int af; const char * fam_spec; int i; @@ -498,8 +516,9 @@ getaddrinfo_sometime_complete( gai_req->dns_idx, humantime(time_now))); } } else { - again = should_retry_dns(gai_resp->retcode, - gai_resp->gai_errno); + noerr = !!(gai_req->qflags & GAIR_F_IGNDNSERR); + again = noerr || should_retry_dns( + gai_resp->retcode, gai_resp->gai_errno); /* * exponential backoff of DNS retries to 64s */ @@ -528,9 +547,10 @@ getaddrinfo_sometime_complete( gai_strerror(gai_resp->retcode), gai_resp->retcode); } - manage_dns_retry_interval(&gai_req->scheduled, - &gai_req->earliest, &gai_req->retry, - &child_ctx->next_dns_timeslot); + manage_dns_retry_interval( + &gai_req->scheduled, &gai_req->earliest, + &gai_req->retry, &child_ctx->next_dns_timeslot, + noerr); if (!queue_blocking_request( BLOCKING_GETADDRINFO, gai_req, @@ -826,7 +846,7 @@ getnameinfo_sometime_complete( if (gni_req->retry > 0) manage_dns_retry_interval(&gni_req->scheduled, &gni_req->earliest, &gni_req->retry, - &child_ctx->next_dns_timeslot); + &child_ctx->next_dns_timeslot, FALSE); if (gni_req->retry > 0 && again) { if (!queue_blocking_request( @@ -1033,18 +1053,32 @@ manage_dns_retry_interval( time_t * pscheduled, time_t * pwhen, int * pretry, - time_t * pnext_timeslot + time_t * pnext_timeslot, + int forever ) { time_t now; time_t when; int retry; + int retmax; now = time(NULL); retry = *pretry; when = max(now + retry, *pnext_timeslot); *pnext_timeslot = when; - retry = min(64, retry << 1); + + /* this exponential backoff is slower than doubling up: The + * sequence goes 2-3-4-6-8-12-16-24-32... and the upper limit is + * 64 seconds for things that should not repeat forever, and + * 1024 when repeated forever. + */ + retmax = forever ? 1024 : 64; + retry <<= 1; + if (retry & (retry - 1)) + retry &= (retry - 1); + else + retry -= (retry >> 2); + retry = min(retmax, retry); *pscheduled = now; *pwhen = when; diff --git a/contrib/ntp/libntp/ssl_init.c b/contrib/ntp/libntp/ssl_init.c index a9d1d546d..ef0f1c185 100644 --- a/contrib/ntp/libntp/ssl_init.c +++ b/contrib/ntp/libntp/ssl_init.c @@ -15,6 +15,7 @@ #ifdef OPENSSL #include "openssl/err.h" #include "openssl/evp.h" +#include "libssl_compat.h" void atexit_ssl_cleanup(void); @@ -62,6 +63,7 @@ ssl_check_version(void) INIT_SSL(); } + #endif /* OPENSSL */ @@ -84,7 +86,6 @@ keytype_from_text( u_char digest[EVP_MAX_MD_SIZE]; char * upcased; char * pch; - EVP_MD_CTX ctx; /* * OpenSSL digest short names are capitalized, so uppercase the @@ -110,8 +111,12 @@ keytype_from_text( if (NULL != pdigest_len) { #ifdef OPENSSL - EVP_DigestInit(&ctx, EVP_get_digestbynid(key_type)); - EVP_DigestFinal(&ctx, digest, &digest_len); + EVP_MD_CTX *ctx; + + ctx = EVP_MD_CTX_new(); + EVP_DigestInit(ctx, EVP_get_digestbynid(key_type)); + EVP_DigestFinal(ctx, digest, &digest_len); + EVP_MD_CTX_free(ctx); if (digest_len > max_digest_len) { fprintf(stderr, "key type %s %u octet digests are too big, max %lu\n", diff --git a/contrib/ntp/libntp/work_fork.c b/contrib/ntp/libntp/work_fork.c index 6c9545aa9..8223fdd2f 100644 --- a/contrib/ntp/libntp/work_fork.c +++ b/contrib/ntp/libntp/work_fork.c @@ -114,18 +114,24 @@ interrupt_worker_sleep(void) /* * harvest_child_status() runs in the parent. + * + * Note the error handling -- this is an interaction with SIGCHLD. + * SIG_IGN on SIGCHLD on some OSes means do not wait but reap + * automatically. Since we're not really interested in the result code, + * we simply ignore the error. */ static void harvest_child_status( blocking_child * c ) { - if (c->pid) - { + if (c->pid) { /* Wait on the child so it can finish terminating */ if (waitpid(c->pid, NULL, 0) == c->pid) TRACE(4, ("harvested child %d\n", c->pid)); - else msyslog(LOG_ERR, "error waiting on child %d: %m", c->pid); + else if (errno != ECHILD) + msyslog(LOG_ERR, "error waiting on child %d: %m", c->pid); + c->pid = 0; } } @@ -162,7 +168,6 @@ cleanup_after_child( close(c->resp_read_pipe); c->resp_read_pipe = -1; } - c->pid = 0; c->resp_read_ctx = NULL; DEBUG_INSIST(-1 == c->req_read_pipe); DEBUG_INSIST(-1 == c->resp_write_pipe); @@ -461,7 +466,10 @@ fork_blocking_child( fflush(stdout); fflush(stderr); - signal_no_reset(SIGCHLD, SIG_IGN); + /* [BUG 3050] setting SIGCHLD to SIG_IGN likely causes unwanted + * or undefined effects. We don't do it and leave SIGCHLD alone. + */ + /* signal_no_reset(SIGCHLD, SIG_IGN); */ childpid = fork(); if (-1 == childpid) { diff --git a/contrib/ntp/libparse/clk_hopf6021.c b/contrib/ntp/libparse/clk_hopf6021.c index 235962890..c5980ef13 100644 --- a/contrib/ntp/libparse/clk_hopf6021.c +++ b/contrib/ntp/libparse/clk_hopf6021.c @@ -113,13 +113,10 @@ static struct format hopf6021_fmt = #define OFFS(x) format->field_offsets[(x)].offset #define STOI(x, y) Stoi(&buffer[OFFS(x)], y, format->field_offsets[(x)].length) -#define hexval(x) (('0' <= (x) && (x) <= '9') ? (x) - '0' : \ - ('a' <= (x) && (x) <= 'f') ? (x) - 'a' + 10 : \ - ('A' <= (x) && (x) <= 'F') ? (x) - 'A' + 10 : \ - -1) static parse_cvt_fnc_t cvt_hopf6021; static parse_inp_fnc_t inp_hopf6021; +static unsigned char hexval(unsigned char); clockformat_t clock_hopf6021 = { @@ -160,40 +157,40 @@ cvt_hopf6021( return CVT_FAIL|CVT_BADFMT; } - clock_time->usecond = 0; - clock_time->utcoffset = 0; + clock_time->usecond = 0; + clock_time->flags = 0; - status = (u_char) hexval(buffer[OFFS(O_FLAGS)]); - weekday= (u_char) hexval(buffer[OFFS(O_WDAY)]); + status = hexval(buffer[OFFS(O_FLAGS)]); + weekday = hexval(buffer[OFFS(O_WDAY)]); if ((status == 0xFF) || (weekday == 0xFF)) { return CVT_FAIL|CVT_BADFMT; } - clock_time->flags = 0; - if (weekday & HOPF_UTC) { - clock_time->flags |= PARSEB_UTC; + clock_time->flags |= PARSEB_UTC; + clock_time->utcoffset = 0; + } + else if (status & HOPF_DST) + { + clock_time->flags |= PARSEB_DST; + clock_time->utcoffset = -2*60*60; /* MET DST */ } else { - if (status & HOPF_DST) - { - clock_time->flags |= PARSEB_DST; - clock_time->utcoffset = -2*60*60; /* MET DST */ - } - else - { - clock_time->utcoffset = -1*60*60; /* MET */ - } + clock_time->utcoffset = -1*60*60; /* MET */ } - clock_time->flags |= (status & HOPF_DSTWARN) ? PARSEB_ANNOUNCE : 0; - + if (status & HOPF_DSTWARN) + { + clock_time->flags |= PARSEB_ANNOUNCE; + } + switch (status & HOPF_MODE) { + default: /* dummy: we cover all 4 cases. */ case HOPF_INVALID: /* Time/Date invalid */ clock_time->flags |= PARSEB_POWERUP; break; @@ -205,9 +202,6 @@ cvt_hopf6021( case HOPF_RADIO: /* Radio clock */ case HOPF_RADIOHP: /* Radio clock high precision */ break; - - default: - return CVT_FAIL|CVT_BADFMT; } return CVT_OK; @@ -244,6 +238,30 @@ inp_hopf6021( } } +/* + * convert a hex-digit to numeric value + */ +static unsigned char +hexval( + unsigned char ch + ) +{ + unsigned int dv; + + if ((dv = ch - '0') >= 10u) + { + if ((dv -= 'A'-'0') < 6u || (dv -= 'a'-'A') < 6u) + { + dv += 10; + } + else + { + dv = 0xFF; + } + } + return (unsigned char)dv; +} + #else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_HOPF6021) */ int clk_hopf6021_bs; #endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_HOPF6021) */ diff --git a/contrib/ntp/ntpd/complete.conf.in b/contrib/ntp/ntpd/complete.conf.in index 2c547fac7..4c6c0459b 100644 --- a/contrib/ntp/ntpd/complete.conf.in +++ b/contrib/ntp/ntpd/complete.conf.in @@ -26,7 +26,7 @@ controlkey 12 requestkey 12 enable auth ntp monitor stats disable bclient calibrate kernel mode7 peer_clear_digest_early unpeer_crypto_early unpeer_crypto_nak_early unpeer_digest_early -tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300 +tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300 bcpollbstep 3 rlimit@HAVE_RLIMIT_MEMLOCK@@HAVE_RLIMIT_STACK@ tinker allan 1500 dispersion 15 freq 0 huffpuff 7200 panic 1000 step 0.128 stepout 900 tick 0.01 broadcastclient diff --git a/contrib/ntp/ntpd/invoke-ntp.conf.texi b/contrib/ntp/ntpd/invoke-ntp.conf.texi index 7efeceebb..afd92ffd9 100644 --- a/contrib/ntp/ntpd/invoke-ntp.conf.texi +++ b/contrib/ntp/ntpd/invoke-ntp.conf.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.conf.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:36:07 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:01:55 AM by AutoGen 5.18.5 # From the definitions ntp.conf.def # and the template file agtexi-file.tpl @end ignore @@ -1925,6 +1925,21 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +@subsubsection Broadcast Options +@table @asis +@item @code{tos} @code{[@code{bcpollbstep} @kbd{gate}]} +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. @subsubsection Manycast Options @table @asis @item @code{tos} @code{[@code{ceiling} @kbd{ceiling} | @code{cohort} @code{@{} @code{0} | @code{1} @code{@}} | @code{floor} @kbd{floor} | @code{minclock} @kbd{minclock} | @code{minsane} @kbd{minsane}]} diff --git a/contrib/ntp/ntpd/invoke-ntp.keys.texi b/contrib/ntp/ntpd/invoke-ntp.keys.texi index 8585e65b6..5982f036d 100644 --- a/contrib/ntp/ntpd/invoke-ntp.keys.texi +++ b/contrib/ntp/ntpd/invoke-ntp.keys.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.keys.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:36:10 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:01:58 AM by AutoGen 5.18.5 # From the definitions ntp.keys.def # and the template file agtexi-file.tpl @end ignore diff --git a/contrib/ntp/ntpd/invoke-ntpd.texi b/contrib/ntp/ntpd/invoke-ntpd.texi index 7c1275ab7..975494be7 100644 --- a/contrib/ntp/ntpd/invoke-ntpd.texi +++ b/contrib/ntp/ntpd/invoke-ntpd.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpd.texi) # -# It has been AutoGen-ed June 2, 2016 at 07:36:12 AM by AutoGen 5.18.5 +# It has been AutoGen-ed November 21, 2016 at 08:02:00 AM by AutoGen 5.18.5 # From the definitions ntpd-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -142,7 +142,7 @@ with a status code of 0. @exampleindent 0 @example -ntpd - NTP daemon program - Ver. 4.2.8p8 +ntpd - NTP daemon program - Ver. 4.2.8p9 Usage: ntpd [ - [] | --[@{=| @}] ]... \ [ ... ] Flg Arg Option-Name Description diff --git a/contrib/ntp/ntpd/keyword-gen-utd b/contrib/ntp/ntpd/keyword-gen-utd index 69665c2d8..683453dc6 100644 --- a/contrib/ntp/ntpd/keyword-gen-utd +++ b/contrib/ntp/ntpd/keyword-gen-utd @@ -1 +1 @@ - * Generated 2016-05-19 06:35:34 UTC diff_ignore_line + * Generated 2016-11-09 11:39:28 UTC diff_ignore_line diff --git a/contrib/ntp/ntpd/keyword-gen.c b/contrib/ntp/ntpd/keyword-gen.c index 648b3ae01..c9d30bece 100644 --- a/contrib/ntp/ntpd/keyword-gen.c +++ b/contrib/ntp/ntpd/keyword-gen.c @@ -148,6 +148,7 @@ struct key_tok ntp_keywords[] = { { "cohort", T_Cohort, FOLLBY_TOKEN }, { "mindist", T_Mindist, FOLLBY_TOKEN }, { "maxdist", T_Maxdist, FOLLBY_TOKEN }, +{ "bcpollbstep", T_Bcpollbstep, FOLLBY_TOKEN }, { "beacon", T_Beacon, FOLLBY_TOKEN }, { "orphan", T_Orphan, FOLLBY_TOKEN }, { "orphanwait", T_Orphanwait, FOLLBY_TOKEN }, diff --git a/contrib/ntp/ntpd/ntp.conf.5man b/contrib/ntp/ntpd/ntp.conf.5man index b3fc3d80e..35fa0aae5 100644 --- a/contrib/ntp/ntpd/ntp.conf.5man +++ b/contrib/ntp/ntpd/ntp.conf.5man @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp.conf 5man "02 Jun 2016" "4.2.8p8" "File Formats" +.TH ntp.conf 5man "21 Nov 2016" "4.2.8p9" "File Formats" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OzaOIT/ag-3zaGHT) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Q_ai3f/ag-2_aa2f) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:35:50 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:01:41 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agman-cmd.tpl .SH NAME @@ -2174,7 +2174,23 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.SS Broadcast Options +.TP 7 +.NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]bcpollbstep\f[] \f\*[I-Font]gate\f[]] +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .SS Manycast Options +.RS .TP 7 .NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]ceiling\f[] \f\*[I-Font]ceiling\f[] | \f\*[B-Font]cohort\f[] { \f\*[B-Font]0\f[] | \f\*[B-Font]1\f[] } | \f\*[B-Font]floor\f[] \f\*[I-Font]floor\f[] | \f\*[B-Font]minclock\f[] \f\*[I-Font]minclock\f[] | \f\*[B-Font]minsane\f[] \f\*[I-Font]minsane\f[]] This command affects the clock selection and clustering @@ -2244,7 +2260,7 @@ In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31. -.PP +.RE .SH Reference Clock Support The NTP Version 4 daemon supports some three dozen different radio, satellite and modem reference clocks plus a special pseudo-clock @@ -2411,6 +2427,7 @@ option is used for this purpose. Except where noted, these options apply to all clock drivers. .SS Reference Clock Commands +.RS .TP 7 .NOP \f\*[B-Font]server\f[] \f[C]127.127.\f[]\f\*[I-Font]t\f[].\f\*[I-Font]u\f[] [\f\*[B-Font]prefer\f[]] [\f\*[B-Font]mode\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]minpoll\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]maxpoll\f[] \f\*[I-Font]int\f[]] This command can be used to configure reference clocks in @@ -2559,8 +2576,9 @@ Further information on the command can be found in \fIMonitoring\f[] \fIOptions\f[]. .RE -.PP +.RE .SH Miscellaneous Options +.RS .TP 7 .NOP \f\*[B-Font]broadcastdelay\f[] \f\*[I-Font]seconds\f[] The broadcast and multicast modes require a special calibration @@ -3079,8 +3097,9 @@ In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31. -.PP +.RE .SH "OPTIONS" +.RS .TP .NOP \f\*[B-Font]\-\-help\f[] Display usage information and exit. @@ -3092,7 +3111,7 @@ Pass the extended usage information through a pager. Output version of program and exit. The default mode is `v', a simple version. The `c' mode will print copyright information and `n' will print the full copyright notice. -.PP +.RE .SH "OPTION PRESETS" Any option that is not marked as \fInot presettable\fP may be preset by loading values from environment variables named: @@ -3103,6 +3122,7 @@ by loading values from environment variables named: .SH "ENVIRONMENT" See \fBOPTION PRESETS\fP for configuration environment variables. .SH FILES +.RS .TP 15 .NOP \fI/etc/ntp.conf\f[] the default name of the configuration file @@ -3126,9 +3146,10 @@ RSA public key .TP 15 .NOP \fIntp_dh\f[] Diffie-Hellman agreement parameters -.PP +.RE .SH "EXIT STATUS" One of the following exit values will be returned: +.RS .TP .NOP 0 " (EXIT_SUCCESS)" Successful program execution. @@ -3139,7 +3160,7 @@ The operation failed or the command syntax was not valid. .NOP 70 " (EX_SOFTWARE)" libopts had an internal operational error. Please report it to autogen-users@lists.sourceforge.net. Thank you. -.PP +.RE .SH "SEE ALSO" \fCntpd\f[]\fR(1ntpdmdoc)\f[], \fCntpdc\f[]\fR(1ntpdcmdoc)\f[], diff --git a/contrib/ntp/ntpd/ntp.conf.5mdoc b/contrib/ntp/ntpd/ntp.conf.5mdoc index 21806bc2e..3d328eb8d 100644 --- a/contrib/ntp/ntpd/ntp.conf.5mdoc +++ b/contrib/ntp/ntpd/ntp.conf.5mdoc @@ -1,9 +1,9 @@ -.Dd June 2 2016 +.Dd November 21 2016 .Dt NTP_CONF 5mdoc File Formats .Os .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed June 2, 2016 at 07:36:16 AM by AutoGen 5.18.5 +.\" It has been AutoGen-ed November 21, 2016 at 08:02:03 AM by AutoGen 5.18.5 .\" From the definitions ntp.conf.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -1995,6 +1995,25 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.Ss Broadcast Options +.Bl -tag -width indent +.It Xo Ic tos +.Oo +.Cm bcpollbstep Ar gate +.Oc +.Xc +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .Ss Manycast Options .Bl -tag -width indent .It Xo Ic tos diff --git a/contrib/ntp/ntpd/ntp.conf.def b/contrib/ntp/ntpd/ntp.conf.def index a62e97650..5ae8c382b 100644 --- a/contrib/ntp/ntpd/ntp.conf.def +++ b/contrib/ntp/ntpd/ntp.conf.def @@ -1997,6 +1997,25 @@ At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. +.Ss Broadcast Options +.Bl -tag -width indent +.It Xo Ic tos +.Oo +.Cm bcpollbstep Ar gate +.Oc +.Xc +This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. .Ss Manycast Options .Bl -tag -width indent .It Xo Ic tos diff --git a/contrib/ntp/ntpd/ntp.conf.html b/contrib/ntp/ntpd/ntp.conf.html index 2f0db057b..31cf87e47 100644 --- a/contrib/ntp/ntpd/ntp.conf.html +++ b/contrib/ntp/ntpd/ntp.conf.html @@ -33,9 +33,9 @@ Up: (dir)

This document describes the configuration file for the NTP Project's ntpd program. -

This document applies to version 4.2.8p8 of ntp.conf. +

This document applies to version 4.2.8p9 of ntp.conf. -

+

Short Contents

    NTP's Configuration File User Manual @@ -1926,9 +1926,25 @@ scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope. -
    Manycast Options
    +
    Broadcast Options
    +
    tos [bcpollbstep gate]
    This command provides a way to delay, +by the specified number of broadcast poll intervals, +believing backward time steps from a broadcast server. +Broadcast time networks are expected to be trusted. +In the event a broadcast server's time is stepped backwards, +there is clear benefit to having the clients notice this change +as soon as possible. +Attacks such as replay attacks can happen, however, +and even though there are a number of protections built in to +broadcast mode, attempts to perform a replay attack are possible. +This value defaults to 0, but can be changed +to any number of poll intervals between 0 and 4. + +
    Manycast Options
    + +
    tos [ceiling ceiling | cohort { 0 | 1 } | floor floor | minclock minclock | minsane minsane]
    This command affects the clock selection and clustering algorithms. It can be used to select the quality and @@ -1936,7 +1952,7 @@ quantity of peers used to synchronize the system clock and is most useful in manycast mode. The variables operate as follows: -
    +
    ceiling ceiling
    Peers with strata above ceiling will be discarded if there are at least @@ -1978,14 +1994,14 @@ Byzantine agreement, should be at least 4 in order to detect and discard a single falseticker.
    -
    ttl hop ...
    This command specifies a list of TTL values in increasing +
    ttl hop ...
    This command specifies a list of TTL values in increasing order, up to 8 values can be specified. In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31.
    -
    +



    @@ -1993,7 +2009,7 @@ multiples of 32 starting at 31.

    Reference Clock Support

    -

    The NTP Version 4 daemon supports some three dozen different radio, +

    The NTP Version 4 daemon supports some three dozen different radio, satellite and modem reference clocks plus a special pseudo-clock used for backup or when no other clock source is available. Detailed descriptions of individual device drivers and options can @@ -2030,7 +2046,7 @@ page provided in /usr/share/doc/ntp). -

    A reference clock will generally (though not always) be a radio +

    A reference clock will generally (though not always) be a radio timecode receiver which is synchronized to a source of standard time such as the services offered by the NRC in Canada and NIST and USNO in the US. @@ -2046,7 +2062,7 @@ or the hardware port has not been appropriately configured results in a scalding remark to the system log file, but is otherwise non hazardous. -

    For the purposes of configuration, +

    For the purposes of configuration, ntpd(1ntpdmdoc) treats reference clocks in a manner analogous to normal NTP peers as much @@ -2067,7 +2083,7 @@ While it may seem overkill, it is in fact sometimes useful to configure multiple reference clocks of the same type, in which case the unit numbers must be unique. -

    The +

    The server command is used to configure a reference clock, where the @@ -2105,7 +2121,7 @@ meaning only for selected clock drivers. See the individual clock driver document pages for additional information. -

    The +

    The fudge command is used to provide additional information for individual clock drivers and normally follows @@ -2127,7 +2143,7 @@ in the fudge command as well. -

    The stratum number of a reference clock is by default zero. +

    The stratum number of a reference clock is by default zero. Since the ntpd(1ntpdmdoc) daemon adds one to the stratum of each @@ -2150,11 +2166,11 @@ these options apply to all clock drivers.

    Reference Clock Commands
    -
    +
    server 127.127.t.u [prefer] [mode int] [minpoll int] [maxpoll int]
    This command can be used to configure reference clocks in special ways. The options are interpreted as follows: -
    +
    prefer
    Marks the reference clock as preferred. All other things being equal, this host will be chosen for synchronization among a set of @@ -2187,7 +2203,7 @@ defaults to 10 (17.1 m) and defaults to 14 (4.5 h). The allowable range is 4 (16 s) to 17 (36.4 h) inclusive.
    -
    fudge 127.127.t.u [time1 sec] [time2 sec] [stratum int] [refid string] [mode int] [flag1 0 | 1] [flag2 0 | 1] [flag3 0 | 1] [flag4 0 | 1]
    This command can be used to configure reference clocks in +
    fudge 127.127.t.u [time1 sec] [time2 sec] [stratum int] [refid string] [mode int] [flag1 0 | 1] [flag2 0 | 1] [flag3 0 | 1] [flag4 0 | 1]
    This command can be used to configure reference clocks in special ways. It must immediately follow the server @@ -2198,7 +2214,7 @@ is possible at run time using the program. The options are interpreted as follows: -
    +
    time1 sec
    Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used @@ -2269,8 +2285,8 @@ Further information on the command can be found in Monitoring Options.
    -
    -
    +
    +



    @@ -2278,7 +2294,7 @@ command can be found in

    Miscellaneous Options

    -
    +
    broadcastdelay seconds
    The broadcast and multicast modes require a special calibration to determine the network delay between the local and remote servers. @@ -2311,7 +2327,7 @@ frequency of zero and creates the file when writing it for the first time. If this command is not given, the daemon will always start with an initial frequency of zero. -

    The file format consists of a single line containing a single +

    The file format consists of a single line containing a single floating point number, which records the frequency offset measured in parts-per-million (PPM). The file is updated by first writing @@ -2331,7 +2347,7 @@ Note that all of these flags can be controlled remotely using the ntpdc(1ntpdcmdoc) utility program. -

    +
    auth
    Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using either public key or private key cryptography. @@ -2466,7 +2482,7 @@ The default for this flag is enable.
    -
    includefile includefile
    This command allows additional configuration commands +
    includefile includefile
    This command allows additional configuration commands to be included from a separate file. Include files may be nested to a depth of five; upon reaching the end of any @@ -2527,7 +2543,7 @@ and status messages (status). -

    Configuration keywords are formed by concatenating the message class with +

    Configuration keywords are formed by concatenating the message class with the event class. The all @@ -2539,20 +2555,20 @@ keyword to enable/disable all messages of the respective message class. Thus, a minimal log configuration could look like this: -

         
    -     logconfig =syncstatus +sysevents
    -
    +
              
    +          logconfig =syncstatus +sysevents
    +     
    -

    This would just list the synchronizations state of +

    This would just list the synchronizations state of ntpd(1ntpdmdoc) and the major system events. For a simple reference server, the following minimum message configuration could be useful: -

         
    -     logconfig =syncall +clockall
    -
    +
              
    +          logconfig =syncall +clockall
    +     
    -

    This configuration will list all clock information and +

    This configuration will list all clock information and synchronization information. All other events and messages about peers, system events and so on is suppressed. @@ -2611,8 +2627,8 @@ for them. Emphasis added: twisters are on their own and can expect no help from the support group. -

    The variables operate as follows: -

    +

    The variables operate as follows: +

    allan allan
    The argument becomes the new value for the minimum Allan intercept, which is a parameter of the PLL/FLL clock discipline algorithm. @@ -2661,8 +2677,8 @@ be set to any positive number in seconds. If set to zero, the stepout pulses will not be suppressed.
    -
    rlimit [memlock Nmegabytes | stacksize N4kPages filenum Nfiledescriptors]
    -
    +
    rlimit [memlock Nmegabytes | stacksize N4kPages filenum Nfiledescriptors]
    +
    memlock Nmegabytes
    Specify the number of megabytes of memory that should be allocated and locked. Probably only available under Linux, this option may be useful @@ -2679,7 +2695,7 @@ Defaults to 50 4k pages (200 4k pages in OpenBSD).
    filenum Nfiledescriptors
    Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
    -
    trap host_address [port port_number] [interface interface_address]
    This command configures a trap receiver at the given host +
    trap host_address [port port_number] [interface interface_address]
    This command configures a trap receiver at the given host address and port number for sending messages with the specified local interface address. If the port number is unspecified, a value @@ -2690,7 +2706,7 @@ message is sent through. Note that on a multihomed host the interface used may vary from time to time with routing changes. -

    The trap receiver will generally log event messages and other +

    The trap receiver will generally log event messages and other information from the server in a log file. While such monitor programs may also request their own trap dynamically, configuring a @@ -2704,11 +2720,11 @@ The default is eight multiples of 32 starting at 31.

    -

    This section was generated by AutoGen, +

    This section was generated by AutoGen, using the agtexi-cmd template and the option descriptions for the ntp.conf program. This software is released under the NTP license, <http://ntp.org/license>. -