Vendor import ntp-4.2.8p3.
Approved by: delphij (implicit, using SO hat) Security: VuXML: 0d0f3050-1f69-11e5-9ba9-d050996490d0 Security: http://bugs.ntp.org/show_bug.cgi?id=2853 Security: https://www.kb.cert.org/vuls/id/668167 Security: http://support.ntp.org/bin/view/Main/SecurityNotice#June_2015_NTP_Security_Vulnerabi
This commit is contained in:
parent
4ba32eb5a8
commit
873997f35a
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor/ntp/dist/; revision=284990 svn path=/vendor/ntp/4.2.8p3/; revision=284992; tag=vendor/ntp/4.2.8p3
138
ChangeLog
138
ChangeLog
@ -1,8 +1,145 @@
|
||||
---
|
||||
(4.2.8p3) 2015/06/29 Released by Harlan Stenn <stenn@ntp.org>
|
||||
|
||||
* [Sec 2853] Crafted remote config packet can crash some versions of
|
||||
ntpd. Aleksis Kauppinen, Juergen Perlinger, Harlan Stenn.
|
||||
* [Sec 2853] Initial work on tests/sec-2853/. Harlan Stenn.
|
||||
* [Bug 1060] Buffer overruns in libparse/clk_rawdcf.c. Helge Oldach.
|
||||
* [Bug 2846] Report 'unsynchronized' status during the leap second.
|
||||
Fixed in Martin's changes to Bug 2855. Martin Burnicki.
|
||||
* [Bug 2859] Improve raw DCF77 robustness deconding. Frank Kardel.
|
||||
* [Bug 2860] ntpq ifstats sanity check is too stringent. Frank Kardel.
|
||||
* README.leapsmear added. Martin Burnicki.
|
||||
* README.leapsmear edited. Harlan Stenn.
|
||||
* tests/libntp/msyslog.c: fixed a gcc warning. Tomasz Flendrich.
|
||||
* ntpd/ntp.conf.def: Document DSCP and leapsmearinterval. Harlan Stenn.
|
||||
* html/miscopt.html: Document leapsmearinterval, other cleanup. Harlan Stenn.
|
||||
---
|
||||
(4.2.8p3-RC3) 2015/06/27 Released by Harlan Stenn <stenn@ntp.org>
|
||||
|
||||
* [Bug 2855] Parser fix for conditional leap smear code. Harlan Stenn.
|
||||
* [Bug 2855] Report leap smear in the REFID. Harlan Stenn.
|
||||
* [Bug 2856] ntpd should wait() on terminated child processes. Paul Green.
|
||||
* [Bug 2857] Stratus VOS does not support SIGIO. Paul Green.
|
||||
* html/drivers/driver22.html: typo fix. Harlan Stenn.
|
||||
* refidsmear test cleanup. Tomasz Flendrich.
|
||||
* refidsmear function support and tests. Harlan Stenn.
|
||||
* sntp/tests/Makefile.am: remove g_nameresolution.cpp as it tested
|
||||
something that was only in the 4.2.6 sntp. Harlan Stenn.
|
||||
* Modified tests/bug-2803/Makefile.am so it builds Unity framework tests.
|
||||
Damir Tomić
|
||||
* Modified tests/libtnp/Makefile.am so it builds Unity framework tests.
|
||||
Damir Tomić
|
||||
* Modified sntp/tests/Makefile.am so it builds Unity framework tests.
|
||||
Damir Tomić
|
||||
* tests/sandbox/smeartest.c: Harlan Stenn, Damir Tomic, Juergen Perlinger.
|
||||
* Converted from gtest to Unity: tests/bug-2803/. Damir Tomić
|
||||
* Converted from gtest to Unity: tests/libntp/ a_md5encrypt, atoint.c,
|
||||
atouint.c, authkeys.c, buftvtots.c, calendar.c, caljulian.c,
|
||||
calyearstart.c, clocktime.c, hextoint.c, lfpfunc.c, modetoa.c,
|
||||
numtoa.c, numtohost.c, refnumtoa.c, ssl_init.c, statestr.c,
|
||||
timespecops.c, timevalops.c, uglydate.c, vi64ops.c, ymd2yd.c.
|
||||
Damir Tomić
|
||||
* Converted from gtest to Unity: sntp/tests/ kodDatabase.c, kodFile.c,
|
||||
networking.c, keyFile.c, utilities.cpp, sntptest.h,
|
||||
fileHandlingTest.h. Damir Tomić
|
||||
* Converted from gtest to Unity: sntp/tests/ caltontp.c, humandate.c,
|
||||
msyslog.c, prettydate.c, recvbuff.c, sfptostr.c, tstotv.c, tvtots.c,
|
||||
sntp/tests/packetProcessing.c. Tomasz Flendrich
|
||||
---
|
||||
(4.2.8p3-RC2) 2015/06/24 Released by Harlan Stenn <stenn@ntp.org>
|
||||
|
||||
* [Bug 2778] Implement "apeers" ntpq command to include associd.
|
||||
* [Bug 2805] ntpd fails to join multicast group.
|
||||
* [Bug 2824] Convert update-leap to perl. (also see 2769)
|
||||
* [Bug 2830] ntpd doesn't always transfer the correct TAI offset via autokey
|
||||
NTPD transfers the current TAI (instead of an announcement) now.
|
||||
This might still needed improvement.
|
||||
Update autokey data ASAP when 'sys_tai' changes.
|
||||
Fix unit test that was broken by changes for autokey update.
|
||||
Avoid potential signature length issue and use DPRINTF where possible
|
||||
in ntp_crypto.c.
|
||||
* [Bug 2832] refclock_jjy.c supports the TDC-300.
|
||||
* [Bug 2834] Correct a broken html tag in html/refclock.html
|
||||
* [Bug 2836] DFC77 patches from Frank Kardel to make decoding more
|
||||
robust, and require 2 consecutive timestamps to be consistent.
|
||||
* [Bug 2837] Allow a configurable DSCP value.
|
||||
* [Bug 2837] add test for DSCP to ntpd/complete.conf.in
|
||||
* [Bug 2842] Glitch in ntp.conf.def documentation stanza.
|
||||
* [Bug 2842] Bug in mdoc2man.
|
||||
* [Bug 2843] make check fails on 4.3.36
|
||||
Fixed compiler warnings about numeric range overflow
|
||||
(The original topic was fixed in a byplay to bug#2830)
|
||||
* [Bug 2845] Harden memory allocation in ntpd.
|
||||
* [Bug 2852] 'make check' can't find unity.h. Hal Murray.
|
||||
* [Bug 2854] Missing brace in libntp/strdup.c. Masanari Iida.
|
||||
* [Bug 2855] Implement conditional leap smear code. Martin Burnicki.
|
||||
* [Bug 2855] leap smear cleanup. Harlan Stenn.
|
||||
* Initial support for experimental leap smear code. Harlan Stenn.
|
||||
* Fixes to sntp/tests/fileHandlingTest.h.in. Harlan Stenn.
|
||||
* Report select() debug messages at debug level 3 now.
|
||||
* sntp/scripts/genLocInfo: treat raspbian as debian.
|
||||
* Unity test framework fixes.
|
||||
** Requires ruby for changes to tests.
|
||||
* Initial support for PACKAGE_VERSION tests.
|
||||
* sntp/libpkgver belongs in EXTRA_DIST, not DIST_SUBDIRS.
|
||||
* tests/bug-2803/Makefile.am must distribute bug-2803.h.
|
||||
* automake-1.15 cleanup for sntp/tests/fileHandlingTest.h.in . Harlan Stenn.
|
||||
---
|
||||
(4.2.8p3-RC1) 2015/05/12 Released by Harlan Stenn <stenn@ntp.org>
|
||||
|
||||
* CID 739725: Fix a rare resource leak in libevent/listener.c.
|
||||
* CID 1295478: Quiet a pedantic potential error from the fix for Bug 2776.
|
||||
* CID 1296235: Fix refclock_jjy.c and correcting type of the driver40-ja.html
|
||||
* CID 1269537: Clean up a line of dead code in getShmTime().
|
||||
* [Bug 2590] autogen-5.18.5.
|
||||
* [Bug 2612] restrict: Warn when 'monitor' can't be disabled because
|
||||
of 'limited'.
|
||||
* [Bug 2650] fix includefile processing.
|
||||
* [Bug 2745] ntpd -x steps clock on leap second
|
||||
Fixed an initial-value problem that caused misbehaviour in absence of
|
||||
any leapsecond information.
|
||||
Do leap second stepping only of the step adjustment is beyond the
|
||||
proper jump distance limit and step correction is allowed at all.
|
||||
* [Bug 2750] build for Win64
|
||||
Building for 32bit of loopback ppsapi needs def file
|
||||
* [Bug 2776] Improve ntpq's 'help keytype'.
|
||||
* [Bug 2782] Refactor refclock_shm.c, add memory barrier protection.
|
||||
* [Bug 2792] If the IFF_RUNNING interface flag is supported then an
|
||||
interface is ignored as long as this flag is not set since the
|
||||
interface is not usable (e.g., no link).
|
||||
* [Bug 2794] Clean up kernel clock status reports.
|
||||
* [Bug 2800] refclock_true.c true_debug() can't open debug log because
|
||||
of incompatible open/fdopen parameters.
|
||||
* [Bug 2804] install-local-data assumes GNU 'find' semantics.
|
||||
* [Bug 2806] refclock_jjy.c supports the Telephone JJY.
|
||||
* [Bug 2808] GPSD_JSON driver enhancements, step 1.
|
||||
Fix crash during cleanup if GPS device not present and char device.
|
||||
Increase internal token buffer to parse all JSON data, even SKY.
|
||||
Defer logging of errors during driver init until the first unit is
|
||||
started, so the syslog is not cluttered when the driver is not used.
|
||||
Various improvements, see http://bugs.ntp.org/2808 for details.
|
||||
Changed libjsmn to a more recent version.
|
||||
* [Bug 2810] refclock_shm.c memory barrier code needs tweaks for QNX.
|
||||
* [Bug 2813] HP-UX needs -D__STDC_VERSION__=199901L and limits.h.
|
||||
* [Bug 2815] net-snmp before v5.4 has circular library dependencies.
|
||||
* [Bug 2821] Add a missing NTP_PRINTF and a missing const.
|
||||
* [Bug 2822] New leap column in sntp broke NTP::Util.pm.
|
||||
* [Bug 2825] Quiet file installation in html/ .
|
||||
* [Bug 2830] ntpd doesn't always transfer the correct TAI offset via autokey
|
||||
NTPD transfers the current TAI (instead of an announcement) now.
|
||||
This might still needed improvement.
|
||||
* Add an assert to the ntpq ifstats code.
|
||||
* Clean up the RLIMIT_STACK code.
|
||||
* Improve the ntpq documentation around the controlkey keyid.
|
||||
* ntpq.c cleanup.
|
||||
* Windows port build cleanup.
|
||||
---
|
||||
(4.2.8p2) 2015/04/07 Released by Harlan Stenn <stenn@ntp.org>
|
||||
(4.2.8p2-RC3) 2015/04/03 Released by Harlan Stenn <stenn@ntp.org>
|
||||
|
||||
* [Bug 2763] Fix for different thresholds for forward and backward steps.
|
||||
* Initial import of the Unity test framework.
|
||||
---
|
||||
(4.2.8p2-RC2) 2015/04/03 Released by Harlan Stenn <stenn@ntp.org>
|
||||
|
||||
@ -62,6 +199,7 @@
|
||||
* [Sec 2781] Authentication doesn't protect symmetric associations against
|
||||
DoS attacks.
|
||||
* [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE.
|
||||
* [Bug 2784] Fix for 2782 uses clock_gettime() instead of get_ostime().
|
||||
* [Bug 2789] Quiet compiler warnings from libevent.
|
||||
* [Bug 2790] If ntpd sets the Windows MM timer highest resolution
|
||||
pause briefly before measuring system clock precision to yield
|
||||
|
12
Makefile.am
12
Makefile.am
@ -34,6 +34,7 @@ EXTRA_DIST = \
|
||||
NOTES.y2kfixes \
|
||||
README.bk \
|
||||
README.hackers \
|
||||
README.leapsmear \
|
||||
README.patches \
|
||||
README.refclocks \
|
||||
README.versions \
|
||||
@ -113,10 +114,13 @@ dist-hook:
|
||||
@find $(distdir) -type d -name SCCS -print | xargs rm -rf
|
||||
|
||||
install-data-local:
|
||||
( cd $(srcdir) && find html -name SCCS -prune -o -type d \
|
||||
-exec $(INSTALL) -d $(DESTDIR)$(htmldir)/{} ";" )
|
||||
( cd $(srcdir) && find html -name SCCS -prune -o -type f \
|
||||
-exec $(INSTALL_DATA) {} $(DESTDIR)$(htmldir)/{} ";" )
|
||||
@echo "Installing stand-alone HTML documentation"
|
||||
@( cd $(srcdir) && \
|
||||
for i in `find html -type d | grep -v SCCS` ; \
|
||||
do $(INSTALL) -d $(DESTDIR)$(htmldir)/$$i ; done )
|
||||
@( cd $(srcdir) && \
|
||||
for i in `find html -type f | grep -v SCCS` ; \
|
||||
do $(INSTALL_DATA) $$i $(DESTDIR)$(htmldir)/$$i ; done )
|
||||
|
||||
uninstall-local:
|
||||
rm -rf $(DESTDIR)$(htmldir)/html
|
||||
|
450
Makefile.in
450
Makefile.in
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -15,6 +14,61 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -34,18 +88,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/configure ChangeLog INSTALL NEWS TODO compile \
|
||||
config.guess config.sub depcomp install-sh ltmain.sh missing \
|
||||
sntp/libevent/build-aux/compile \
|
||||
sntp/libevent/build-aux/config.guess \
|
||||
sntp/libevent/build-aux/config.sub \
|
||||
sntp/libevent/build-aux/depcomp \
|
||||
sntp/libevent/build-aux/install-sh \
|
||||
sntp/libevent/build-aux/ltmain.sh \
|
||||
sntp/libevent/build-aux/missing sntp/libevent/build-aux/ylwrap \
|
||||
ylwrap
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \
|
||||
@ -76,6 +118,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -85,42 +128,99 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
distdir dist dist-all distcheck
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)config.h.in
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/ar-lib \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/compile \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/config.guess \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/config.sub \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/install-sh \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/ltmain.sh \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/missing ChangeLog \
|
||||
INSTALL NEWS README TODO compile config.guess config.sub \
|
||||
depcomp install-sh ltmain.sh missing \
|
||||
sntp/libevent/build-aux/ar-lib sntp/libevent/build-aux/compile \
|
||||
sntp/libevent/build-aux/config.guess \
|
||||
sntp/libevent/build-aux/config.sub \
|
||||
sntp/libevent/build-aux/depcomp \
|
||||
sntp/libevent/build-aux/install-sh \
|
||||
sntp/libevent/build-aux/ltmain.sh \
|
||||
sntp/libevent/build-aux/missing sntp/libevent/build-aux/ylwrap \
|
||||
ylwrap
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d "$(distdir)" \
|
||||
|| { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr "$(distdir)"; }; }
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
@ -148,7 +248,10 @@ am__relativize = \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -199,6 +302,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -315,6 +419,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -444,6 +549,7 @@ EXTRA_DIST = \
|
||||
NOTES.y2kfixes \
|
||||
README.bk \
|
||||
README.hackers \
|
||||
README.leapsmear \
|
||||
README.patches \
|
||||
README.refclocks \
|
||||
README.versions \
|
||||
@ -488,7 +594,7 @@ all: $(BUILT_SOURCES) config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
@ -503,7 +609,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -524,10 +629,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h1; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
|
||||
else :; fi
|
||||
@test -f $@ || rm -f stamp-h1
|
||||
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
@ -550,22 +653,25 @@ distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
@ -580,57 +686,12 @@ $(RECURSIVE_TARGETS):
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
@ -646,12 +707,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -663,15 +719,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -680,9 +732,31 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
cscope.files: clean-cscope cscopelist
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
@ -718,13 +792,10 @@ distdir: $(DISTFILES)
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
@ -756,36 +827,42 @@ distdir: $(DISTFILES)
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzma: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||
$(am__remove_distdir)
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
|
||||
$(am__remove_distdir)
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
@ -796,8 +873,8 @@ distcheck: dist
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lzma*) \
|
||||
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
@ -807,17 +884,19 @@ distcheck: dist
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
@ -840,13 +919,21 @@ distcheck: dist
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__remove_distdir)
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@$(am__cd) '$(distuninstallcheck_dir)' \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
@ -879,10 +966,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -967,26 +1059,27 @@ ps-am:
|
||||
|
||||
uninstall-am: uninstall-local
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
|
||||
ctags-recursive install install-am install-strip \
|
||||
tags-recursive
|
||||
.MAKE: $(am__recursive_targets) all check install install-am \
|
||||
install-strip
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am am--refresh check check-am clean clean-generic \
|
||||
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \
|
||||
dist-zip distcheck distclean distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am \
|
||||
install-data-local install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am uninstall-local
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--refresh check check-am clean clean-cscope clean-generic \
|
||||
clean-libtool cscope cscopelist-am ctags ctags-am dist \
|
||||
dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
|
||||
dist-tarZ dist-xz dist-zip distcheck distclean \
|
||||
distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-data-local install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am uninstall-local
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
.gcc-warning:
|
||||
@ -1032,10 +1125,13 @@ dist-hook:
|
||||
@find $(distdir) -type d -name SCCS -print | xargs rm -rf
|
||||
|
||||
install-data-local:
|
||||
( cd $(srcdir) && find html -name SCCS -prune -o -type d \
|
||||
-exec $(INSTALL) -d $(DESTDIR)$(htmldir)/{} ";" )
|
||||
( cd $(srcdir) && find html -name SCCS -prune -o -type f \
|
||||
-exec $(INSTALL_DATA) {} $(DESTDIR)$(htmldir)/{} ";" )
|
||||
@echo "Installing stand-alone HTML documentation"
|
||||
@( cd $(srcdir) && \
|
||||
for i in `find html -type d | grep -v SCCS` ; \
|
||||
do $(INSTALL) -d $(DESTDIR)$(htmldir)/$$i ; done )
|
||||
@( cd $(srcdir) && \
|
||||
for i in `find html -type f | grep -v SCCS` ; \
|
||||
do $(INSTALL_DATA) $$i $(DESTDIR)$(htmldir)/$$i ; done )
|
||||
|
||||
uninstall-local:
|
||||
rm -rf $(DESTDIR)$(htmldir)/html
|
||||
|
151
NEWS
151
NEWS
@ -1,5 +1,154 @@
|
||||
---
|
||||
NTP 4.2.8p2 (Harlan Stenn <stenn@ntp.org>, 2015/04/xx)
|
||||
NTP 4.2.8p3 (Harlan Stenn <stenn@ntp.org>, 2015/06/29)
|
||||
|
||||
Focus: 1 Security fix. Bug fixes and enhancements. Leap-second improvements.
|
||||
|
||||
Severity: MEDIUM
|
||||
|
||||
Security Fix:
|
||||
|
||||
* [Sec 2853] Crafted remote config packet can crash some versions of
|
||||
ntpd. Aleksis Kauppinen, Juergen Perlinger, Harlan Stenn.
|
||||
|
||||
Under specific circumstances an attacker can send a crafted packet to
|
||||
cause a vulnerable ntpd instance to crash. This requires each of the
|
||||
following to be true:
|
||||
|
||||
1) ntpd set up to allow remote configuration (not allowed by default), and
|
||||
2) knowledge of the configuration password, and
|
||||
3) access to a computer entrusted to perform remote configuration.
|
||||
|
||||
This vulnerability is considered low-risk.
|
||||
|
||||
New features in this release:
|
||||
|
||||
Optional (disabled by default) support to have ntpd provide smeared
|
||||
leap second time. A specially built and configured ntpd will only
|
||||
offer smeared time in response to client packets. These response
|
||||
packets will also contain a "refid" of 254.a.b.c, where the 24 bits
|
||||
of a, b, and c encode the amount of smear in a 2:22 integer:fraction
|
||||
format. See README.leapsmear and http://bugs.ntp.org/2855 for more
|
||||
information.
|
||||
|
||||
*IF YOU CHOOSE TO CONFIGURE NTPD TO PROVIDE LEAP SMEAR TIME*
|
||||
*BE SURE YOU DO NOT OFFER THAT TIME ON PUBLIC TIMESERVERS.*
|
||||
|
||||
We've imported the Unity test framework, and have begun converting
|
||||
the existing google-test items to this new framework. If you want
|
||||
to write new tests or change old ones, you'll need to have ruby
|
||||
installed. You don't need ruby to run the test suite.
|
||||
|
||||
Bug Fixes and Improvements:
|
||||
|
||||
* CID 739725: Fix a rare resource leak in libevent/listener.c.
|
||||
* CID 1295478: Quiet a pedantic potential error from the fix for Bug 2776.
|
||||
* CID 1296235: Fix refclock_jjy.c and correcting type of the driver40-ja.html
|
||||
* CID 1269537: Clean up a line of dead code in getShmTime().
|
||||
* [Bug 1060] Buffer overruns in libparse/clk_rawdcf.c. Helge Oldach.
|
||||
* [Bug 2590] autogen-5.18.5.
|
||||
* [Bug 2612] restrict: Warn when 'monitor' can't be disabled because
|
||||
of 'limited'.
|
||||
* [Bug 2650] fix includefile processing.
|
||||
* [Bug 2745] ntpd -x steps clock on leap second
|
||||
Fixed an initial-value problem that caused misbehaviour in absence of
|
||||
any leapsecond information.
|
||||
Do leap second stepping only of the step adjustment is beyond the
|
||||
proper jump distance limit and step correction is allowed at all.
|
||||
* [Bug 2750] build for Win64
|
||||
Building for 32bit of loopback ppsapi needs def file
|
||||
* [Bug 2776] Improve ntpq's 'help keytype'.
|
||||
* [Bug 2778] Implement "apeers" ntpq command to include associd.
|
||||
* [Bug 2782] Refactor refclock_shm.c, add memory barrier protection.
|
||||
* [Bug 2792] If the IFF_RUNNING interface flag is supported then an
|
||||
interface is ignored as long as this flag is not set since the
|
||||
interface is not usable (e.g., no link).
|
||||
* [Bug 2794] Clean up kernel clock status reports.
|
||||
* [Bug 2800] refclock_true.c true_debug() can't open debug log because
|
||||
of incompatible open/fdopen parameters.
|
||||
* [Bug 2804] install-local-data assumes GNU 'find' semantics.
|
||||
* [Bug 2805] ntpd fails to join multicast group.
|
||||
* [Bug 2806] refclock_jjy.c supports the Telephone JJY.
|
||||
* [Bug 2808] GPSD_JSON driver enhancements, step 1.
|
||||
Fix crash during cleanup if GPS device not present and char device.
|
||||
Increase internal token buffer to parse all JSON data, even SKY.
|
||||
Defer logging of errors during driver init until the first unit is
|
||||
started, so the syslog is not cluttered when the driver is not used.
|
||||
Various improvements, see http://bugs.ntp.org/2808 for details.
|
||||
Changed libjsmn to a more recent version.
|
||||
* [Bug 2810] refclock_shm.c memory barrier code needs tweaks for QNX.
|
||||
* [Bug 2813] HP-UX needs -D__STDC_VERSION__=199901L and limits.h.
|
||||
* [Bug 2815] net-snmp before v5.4 has circular library dependencies.
|
||||
* [Bug 2821] Add a missing NTP_PRINTF and a missing const.
|
||||
* [Bug 2822] New leap column in sntp broke NTP::Util.pm.
|
||||
* [Bug 2824] Convert update-leap to perl. (also see 2769)
|
||||
* [Bug 2825] Quiet file installation in html/ .
|
||||
* [Bug 2830] ntpd doesn't always transfer the correct TAI offset via autokey
|
||||
NTPD transfers the current TAI (instead of an announcement) now.
|
||||
This might still needed improvement.
|
||||
Update autokey data ASAP when 'sys_tai' changes.
|
||||
Fix unit test that was broken by changes for autokey update.
|
||||
Avoid potential signature length issue and use DPRINTF where possible
|
||||
in ntp_crypto.c.
|
||||
* [Bug 2832] refclock_jjy.c supports the TDC-300.
|
||||
* [Bug 2834] Correct a broken html tag in html/refclock.html
|
||||
* [Bug 2836] DFC77 patches from Frank Kardel to make decoding more
|
||||
robust, and require 2 consecutive timestamps to be consistent.
|
||||
* [Bug 2837] Allow a configurable DSCP value.
|
||||
* [Bug 2837] add test for DSCP to ntpd/complete.conf.in
|
||||
* [Bug 2842] Glitch in ntp.conf.def documentation stanza.
|
||||
* [Bug 2842] Bug in mdoc2man.
|
||||
* [Bug 2843] make check fails on 4.3.36
|
||||
Fixed compiler warnings about numeric range overflow
|
||||
(The original topic was fixed in a byplay to bug#2830)
|
||||
* [Bug 2845] Harden memory allocation in ntpd.
|
||||
* [Bug 2852] 'make check' can't find unity.h. Hal Murray.
|
||||
* [Bug 2854] Missing brace in libntp/strdup.c. Masanari Iida.
|
||||
* [Bug 2855] Parser fix for conditional leap smear code. Harlan Stenn.
|
||||
* [Bug 2855] Report leap smear in the REFID. Harlan Stenn.
|
||||
* [Bug 2855] Implement conditional leap smear code. Martin Burnicki.
|
||||
* [Bug 2856] ntpd should wait() on terminated child processes. Paul Green.
|
||||
* [Bug 2857] Stratus VOS does not support SIGIO. Paul Green.
|
||||
* [Bug 2859] Improve raw DCF77 robustness deconding. Frank Kardel.
|
||||
* [Bug 2860] ntpq ifstats sanity check is too stringent. Frank Kardel.
|
||||
* html/drivers/driver22.html: typo fix. Harlan Stenn.
|
||||
* refidsmear test cleanup. Tomasz Flendrich.
|
||||
* refidsmear function support and tests. Harlan Stenn.
|
||||
* sntp/tests/Makefile.am: remove g_nameresolution.cpp as it tested
|
||||
something that was only in the 4.2.6 sntp. Harlan Stenn.
|
||||
* Modified tests/bug-2803/Makefile.am so it builds Unity framework tests.
|
||||
Damir Tomić
|
||||
* Modified tests/libtnp/Makefile.am so it builds Unity framework tests.
|
||||
Damir Tomić
|
||||
* Modified sntp/tests/Makefile.am so it builds Unity framework tests.
|
||||
Damir Tomić
|
||||
* tests/sandbox/smeartest.c: Harlan Stenn, Damir Tomic, Juergen Perlinger.
|
||||
* Converted from gtest to Unity: tests/bug-2803/. Damir Tomić
|
||||
* Converted from gtest to Unity: tests/libntp/ a_md5encrypt, atoint.c,
|
||||
atouint.c, authkeys.c, buftvtots.c, calendar.c, caljulian.c,
|
||||
calyearstart.c, clocktime.c, hextoint.c, lfpfunc.c, modetoa.c,
|
||||
numtoa.c, numtohost.c, refnumtoa.c, ssl_init.c, statestr.c,
|
||||
timespecops.c, timevalops.c, uglydate.c, vi64ops.c, ymd2yd.c.
|
||||
Damir Tomić
|
||||
* Converted from gtest to Unity: sntp/tests/ kodDatabase.c, kodFile.c,
|
||||
networking.c, keyFile.c, utilities.cpp, sntptest.h,
|
||||
fileHandlingTest.h. Damir Tomić
|
||||
* Initial support for experimental leap smear code. Harlan Stenn.
|
||||
* Fixes to sntp/tests/fileHandlingTest.h.in. Harlan Stenn.
|
||||
* Report select() debug messages at debug level 3 now.
|
||||
* sntp/scripts/genLocInfo: treat raspbian as debian.
|
||||
* Unity test framework fixes.
|
||||
** Requires ruby for changes to tests.
|
||||
* Initial support for PACKAGE_VERSION tests.
|
||||
* sntp/libpkgver belongs in EXTRA_DIST, not DIST_SUBDIRS.
|
||||
* tests/bug-2803/Makefile.am must distribute bug-2803.h.
|
||||
* Add an assert to the ntpq ifstats code.
|
||||
* Clean up the RLIMIT_STACK code.
|
||||
* Improve the ntpq documentation around the controlkey keyid.
|
||||
* ntpq.c cleanup.
|
||||
* Windows port build cleanup.
|
||||
|
||||
---
|
||||
NTP 4.2.8p2 (Harlan Stenn <stenn@ntp.org>, 2015/04/07)
|
||||
|
||||
Focus: Security and Bug fixes, enhancements.
|
||||
|
||||
|
272
README.leapsmear
Normal file
272
README.leapsmear
Normal file
@ -0,0 +1,272 @@
|
||||
Leap Second Smearing with NTP
|
||||
-----------------------------
|
||||
|
||||
By Martin Burnicki
|
||||
with some edits by Harlan Stenn
|
||||
|
||||
The NTP software protocol and its reference implementation, ntpd, were
|
||||
originally designed to distribute UTC time over a network as accurately as
|
||||
possible.
|
||||
|
||||
Unfortunately, leap seconds are scheduled to be inserted into or deleted
|
||||
from the UTC time scale in irregular intervals to keep the UTC time scale
|
||||
synchronized with the Earth rotation. Deletions haven't happened, yet, but
|
||||
insertions have happened over 30 times.
|
||||
|
||||
The problem is that POSIX requires 86400 seconds in a day, and there is no
|
||||
prescribed way to handle leap seconds in POSIX.
|
||||
|
||||
Whenever a leap second is to be handled ntpd either:
|
||||
|
||||
- passes the leap second announcement down to the OS kernel (if the OS
|
||||
supports this) and the kernel handles the leap second automatically, or
|
||||
|
||||
- applies the leap second correction itself.
|
||||
|
||||
NTP servers also pass a leap second warning flag down to their clients via
|
||||
the normal NTP packet exchange, so clients also become aware of an
|
||||
approaching leap second, and can handle the leap second appropriately.
|
||||
|
||||
|
||||
The Problem on Unix-like Systems
|
||||
--------------------------------
|
||||
If a leap second is to be inserted then in most Unix-like systems the OS
|
||||
kernel just steps the time back by 1 second at the beginning of the leap
|
||||
second, so the last second of the UTC day is repeated and thus duplicate
|
||||
timestamps can occur.
|
||||
|
||||
Unfortunately there are lots of applications which get confused it the
|
||||
system time is stepped back, e.g. due to a leap second insertion. Thus,
|
||||
many users have been looking for ways to avoid this, and tried to introduce
|
||||
workarounds which may work properly, or not.
|
||||
|
||||
So even though these Unix kernels normally can handle leap seconds, the way
|
||||
they do this is not optimal for applications.
|
||||
|
||||
One good way to handle the leap second is to use ntp_gettime() instead of
|
||||
the usual calls, because ntp_gettime() includes a "clock state" variable
|
||||
that will actually tell you if the time you are receiving is OK or not, and
|
||||
if it is OK, if the current second is an in-progress leap second. But even
|
||||
though this mechanism has been available for about 20 years' time, almost
|
||||
nobody uses it.
|
||||
|
||||
|
||||
NTP Client for Windows Contains a Workaround
|
||||
--------------------------------------------
|
||||
The Windows system time knows nothing about leap seconds, so for many years
|
||||
the Windows port of ntpd provides a workaround where the system time is
|
||||
slewed by the client to compensate the leap second.
|
||||
|
||||
Thus it is not required to use a smearing NTP server for Windows clients,
|
||||
but of course the smearing server approach also works.
|
||||
|
||||
|
||||
The Leap Smear Approach
|
||||
-----------------------
|
||||
Due to the reasons mentioned above some support for leap smearing has
|
||||
recently been implemented in ntpd. This means that to insert a leap second
|
||||
an NTP server adds a certain increasing "smear" offset to the real UTC time
|
||||
sent to its clients, so that after some predefined interval the leap second
|
||||
offset is compensated. The smear interval should be long enough,
|
||||
e.g. several hours, so that NTP clients can easily follow the clock drift
|
||||
caused by the smeared time.
|
||||
|
||||
During the period while the leap smear is being performed, ntpd will include
|
||||
a specially-formatted 'refid' in time packets that contain "smeared" time.
|
||||
This refid is of the form 254.x.y.z, where x.y.z are 24 encoded bits of the
|
||||
smear value.
|
||||
|
||||
With this approach the time an NTP server sends to its clients still matches
|
||||
UTC before the leap second, up to the beginning of the smear interval, and
|
||||
again corresponds to UTC after the insertion of the leap second has
|
||||
finished, at the end of the smear interval. By examining the first byte of
|
||||
the refid, one can also determine if the server is offering smeared time or
|
||||
not.
|
||||
|
||||
Of course, clients which receive the "smeared" time from an NTP server don't
|
||||
have to (and even must not) care about the leap second anymore. Smearing is
|
||||
just transparent to the clients, and the clients don't even notice there's a
|
||||
leap second.
|
||||
|
||||
|
||||
Pros and Cons of the Smearing Approach
|
||||
--------------------------------------
|
||||
The disadvantages of this approach are:
|
||||
|
||||
- During the smear interval the time provided by smearing NTP servers
|
||||
differs significantly from UTC, and thus from the time provided by normal,
|
||||
non-smearing NTP servers. The difference can be up to 1 second, depending
|
||||
on the smear algorithm.
|
||||
|
||||
- Since smeared time differs from true UTC, and many applications require
|
||||
correct legal time (UTC), there may be legal consequences to using smeared
|
||||
time. Make sure you check to see if this requirement affects you.
|
||||
|
||||
However, for applications where it's only important that all computers have
|
||||
the same time and a temporary offset of up to 1 s to UTC is acceptable, a
|
||||
better approach may be to slew the time in a well defined way, over a
|
||||
certain interval, which is what we call smearing the leap second.
|
||||
|
||||
|
||||
The Motivation to Implement Leap Smearing
|
||||
-----------------------------------------
|
||||
Here is some historical background for ntpd, related to smearing/slewing
|
||||
time.
|
||||
|
||||
Up to ntpd 4.2.4, if kernel support for leap seconds was either not
|
||||
available or was not enabled, ntpd didn't care about the leap second at all.
|
||||
So if ntpd was run with -x and thus kernel support wasn't used, ntpd saw a
|
||||
sudden 1 s offset after the leap second and normally would have stepped the
|
||||
time by -1 s a few minutes later. However, 'ntpd -x' does not step the time
|
||||
but "slews" the 1-second correction, which takes 33 minutes and 20 seconds
|
||||
to complete. This could be considered a bug, but certainly this was only an
|
||||
accidental behavior.
|
||||
|
||||
However, as we learned in the discussion in http://bugs.ntp.org/2745, this
|
||||
behavior was very much appreciated since indeed the time was never stepped
|
||||
back, and even though the start of the slewing was somewhat undefined and
|
||||
depended on the poll interval. The system time was off by 1 second for
|
||||
several minutes before slewing even started.
|
||||
|
||||
In ntpd 4.2.6 some code was added which let ntpd step the time at UTC
|
||||
midnight to insert a leap second, if kernel support was not used.
|
||||
Unfortunately this also happened if ntpd was started with -x, so the folks
|
||||
who expected that the time was never stepped when ntpd was run with -x found
|
||||
this wasn't true anymore, and again from the discussion in NTP bug 2745 we
|
||||
learn that there were even some folks who patched ntpd to get the 4.2.4
|
||||
behavior back.
|
||||
|
||||
In 4.2.8 the leap second code was rewritten and some enhancements were
|
||||
introduced, but the resulting code still showed the behavior of 4.2.6,
|
||||
i.e. ntpd with -x would still step the time. This has only recently been
|
||||
fixed in the current ntpd stable code, but this fix is only available with a
|
||||
certain patch level of ntpd 4.2.8.
|
||||
|
||||
So a possible solution for users who were looking for a way to come over the
|
||||
leap second without the time being stepped could have been to check the
|
||||
version of ntpd installed on each of their systems. If it's still 4.2.4 be
|
||||
sure to start the client ntpd with -x. If it's 4.2.6 or 4.2.8 it won't work
|
||||
anyway except if you had a patched ntpd version instead of the original
|
||||
version. So you'd need to upgrade to the current -stable code to be able to
|
||||
run ntpd with -x and get the desired result, so you'd still have the
|
||||
requirement to check/update/configure every single machine in your network
|
||||
that runs ntpd.
|
||||
|
||||
Google's leap smear approach is a very efficient solution for this, for
|
||||
sites that do not require correct timestamps for legal purposes. You just
|
||||
have to take care that your NTP servers support leap smearing and configure
|
||||
those few servers accordingly. If the smear interval is long enough so that
|
||||
NTP clients can follow the smeared time it doesn't matter at all which
|
||||
version of ntpd is installed on a client machine, it just works, and it even
|
||||
works around kernel bugs due to the leap second.
|
||||
|
||||
Since all clients follow the same smeared time the time difference between
|
||||
the clients during the smear interval is as small as possible, compared to
|
||||
the -x approach. The current leap second code in ntpd determines the point
|
||||
in system time when the leap second is to be inserted, and given a
|
||||
particular smear interval it's easy to determine the start point of the
|
||||
smearing, and the smearing is finished when the leap second ends, i.e. the
|
||||
next UTC day begins.
|
||||
|
||||
The maximum error doesn't exceed what you'd get with the old smearing caused
|
||||
by -x in ntpd 4.2.4, so if users could accept the old behavior they would
|
||||
even accept the smearing at the server side.
|
||||
|
||||
In order to affect the local timekeeping as little as possible the leap
|
||||
smear support currently implemented in ntpd does not affect the internal
|
||||
system time at all. Only the timestamps and refid in outgoing reply packets
|
||||
*to clients* are modified by the smear offset, so this makes sure the basic
|
||||
functionality of ntpd is not accidentally broken. Also peer packets
|
||||
exchanged with other NTP servers are based on the real UTC system time and
|
||||
the normal refid, as usual.
|
||||
|
||||
The leap smear implementation is optionally available in ntp-4.2.8p3 and
|
||||
later, and the changes can be tracked via http://bugs.ntp.org/2855.
|
||||
|
||||
|
||||
Using NTP's Leap Second Smearing
|
||||
--------------------------------
|
||||
- Leap Second Smearing MUST NOT be used for public servers, e.g. servers
|
||||
provided by metrology institutes, or servers participating in the NTP pool
|
||||
project. There would be a high risk that NTP clients get the time from a
|
||||
mixture of smearing and non-smearing NTP servers which could result in
|
||||
undefined client behavior. Instead, leap second smearing should only be
|
||||
configured on time servers providing dedicated clients with time, if all
|
||||
those clients can accept smeared time.
|
||||
|
||||
- Leap Second Smearing is NOT configured by default. The only way to get
|
||||
this behavior is to invoke the ./configure script from the NTP source code
|
||||
package with the --enable-leap-smear parameter before the executables are
|
||||
built.
|
||||
|
||||
- Even if ntpd has been compiled to enable leap smearing support, leap
|
||||
smearing is only done if explicitly configured.
|
||||
|
||||
- The leap smear interval should be at least several hours' long, and up to
|
||||
1 day (86400s). If the interval is too short then the applied smear offset
|
||||
is applied too quickly for clients to follow. 86400s (1 day) is a good
|
||||
choice.
|
||||
|
||||
- If several NTP servers are set up for leap smearing then the *same* smear
|
||||
interval should be configured on each server.
|
||||
|
||||
- Smearing NTP servers DO NOT send a leap second warning flag to client time
|
||||
requests. Since the leap second is applied gradually the clients don't even
|
||||
notice there's a leap second being inserted, and thus there will be no log
|
||||
message or similar related to the leap second be visible on the clients.
|
||||
|
||||
- Since clients don't (and must not) become aware of the leap second at all,
|
||||
clients getting the time from a smearing NTP server MUST NOT be configured
|
||||
to use a leap second file. If they had a leap second file they would apply
|
||||
the leap second twice: the smeared one from the server, plus another one
|
||||
inserted by themselves due to the leap second file. As a result, the
|
||||
additional correction would soon be detected and corrected/adjusted.
|
||||
|
||||
- Clients MUST NOT be configured to poll both smearing and non-smearing NTP
|
||||
servers at the same time. During the smear interval they would get
|
||||
different times from different servers and wouldn't know which server(s) to
|
||||
accept.
|
||||
|
||||
|
||||
Setting Up A Smearing NTP Server
|
||||
--------------------------------
|
||||
If an NTP server should perform leap smearing then the leap smear interval
|
||||
(in seconds) needs to be specified in the NTP configuration file ntp.conf,
|
||||
e.g.:
|
||||
|
||||
leapsmearinterval 86400
|
||||
|
||||
Please keep in mind the leap smear interval should be between several and 24
|
||||
hours' long. With shorter values clients may not be able to follow the
|
||||
drift caused by the smeared time, and with longer values the discrepancy
|
||||
between system time and UTC will cause more problems when reconciling
|
||||
timestamp differences.
|
||||
|
||||
When ntpd starts and a smear interval has been specified then a log message
|
||||
is generated, e.g.:
|
||||
|
||||
ntpd[31120]: config: leap smear interval 86400 s
|
||||
|
||||
While ntpd is running with a leap smear interval specified the command:
|
||||
|
||||
ntpq -c rv
|
||||
|
||||
reports the smear status, e.g.:
|
||||
|
||||
# ntpq -c rv
|
||||
associd=0 status=4419 leap_add_sec, sync_uhf_radio, 1 event, leap_armed,
|
||||
version="ntpd 4.2.8p3-RC1@1.3349-o Mon Jun 22 14:24:09 UTC 2015 (26)",
|
||||
processor="i586", system="Linux/3.7.1", leap=01, stratum=1,
|
||||
precision=-18, rootdelay=0.000, rootdisp=1.075, refid=MRS,
|
||||
reftime=d93dab96.09666671 Tue, Jun 30 2015 23:58:14.036,
|
||||
clock=d93dab9b.3386a8d5 Tue, Jun 30 2015 23:58:19.201, peer=2335,
|
||||
tc=3, mintc=3, offset=-0.097015, frequency=44.627, sys_jitter=0.003815,
|
||||
clk_jitter=0.451, clk_wander=0.035, tai=35, leapsec=201507010000,
|
||||
expire=201512280000, leapsmearinterval=86400, leapsmearoffset=-932.087
|
||||
|
||||
In the example above 'leapsmearinterval' reports the configured leap smear
|
||||
interval all the time, while the 'leapsmearoffset' value is 0 outside the
|
||||
interval and increases from 0 to -1000 ms over the interval. So this can be
|
||||
used to monitor if and how the time sent to clients is smeared. With a
|
||||
leapsmearoffset of -.932087, the refid reported in smeared packets would be
|
||||
254.196.88.176.
|
796
aclocal.m4
vendored
796
aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -20,6 +19,61 @@
|
||||
# subdir to warn folks if there is another version there.
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -42,9 +96,6 @@ bin_PROGRAMS =
|
||||
libexec_PROGRAMS =
|
||||
sbin_PROGRAMS =
|
||||
EXTRA_PROGRAMS = adjtimed$(EXEEXT)
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/depsver.mf \
|
||||
$(top_srcdir)/includes.mf $(top_srcdir)/sntp/check-libntp.mf
|
||||
subdir = adjtimed
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
@ -76,6 +127,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -85,6 +137,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -98,9 +151,22 @@ adjtimed_LDADD = $(LDADD)
|
||||
am__DEPENDENCIES_1 =
|
||||
adjtimed_DEPENDENCIES = ../libntp/libntp.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
AM_V_lt = $(am__v_lt_$(V))
|
||||
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/sntp/libevent/build-aux/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -111,26 +177,48 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_$(V))
|
||||
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = adjtimed.c
|
||||
DIST_SOURCES = adjtimed.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/bincheck.mf \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/depcomp README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -181,6 +269,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -297,6 +386,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -418,7 +508,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/bincheck.mf $(top_sr
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign adjtimed/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign adjtimed/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -427,6 +516,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/sntp/check-libntp.mf $(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@ -438,14 +528,19 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__aclocal_m4_deps):
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -466,7 +561,8 @@ uninstall-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
||||
@ -481,14 +577,19 @@ clean-binPROGRAMS:
|
||||
rm -f $$list
|
||||
install-libexecPROGRAMS: $(libexec_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)"
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -509,7 +610,8 @@ uninstall-libexecPROGRAMS:
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
|
||||
@ -524,14 +626,19 @@ clean-libexecPROGRAMS:
|
||||
rm -f $$list
|
||||
install-sbinPROGRAMS: $(sbin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -552,7 +659,8 @@ uninstall-sbinPROGRAMS:
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
|
||||
@ -565,7 +673,8 @@ clean-sbinPROGRAMS:
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
adjtimed$(EXEEXT): $(adjtimed_OBJECTS) $(adjtimed_DEPENDENCIES)
|
||||
|
||||
adjtimed$(EXEEXT): $(adjtimed_OBJECTS) $(adjtimed_DEPENDENCIES) $(EXTRA_adjtimed_DEPENDENCIES)
|
||||
@rm -f adjtimed$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(adjtimed_OBJECTS) $(adjtimed_LDADD) $(LIBS)
|
||||
|
||||
@ -580,26 +689,23 @@ distclean-compile:
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -607,26 +713,15 @@ mostlyclean-libtool:
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -638,15 +733,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -655,6 +746,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -708,10 +814,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -801,22 +912,25 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libexecPROGRAMS \
|
||||
|
||||
.MAKE: all check install install-am install-exec-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libexecPROGRAMS clean-libtool \
|
||||
clean-sbinPROGRAMS ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-exec-hook \
|
||||
install-html install-html-am install-info install-info-am \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
|
||||
clean-binPROGRAMS clean-generic clean-libexecPROGRAMS \
|
||||
clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am \
|
||||
distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-binPROGRAMS \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-exec-hook install-html \
|
||||
install-html-am install-info install-info-am \
|
||||
install-libexecPROGRAMS install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-sbinPROGRAMS install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-libexecPROGRAMS uninstall-sbinPROGRAMS
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
install-exec-hook:
|
||||
@test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
|
||||
|
43
bootstrap
43
bootstrap
@ -50,6 +50,7 @@ AUTORECONF=${AUTORECONF:-autoreconf}
|
||||
# ;;
|
||||
# esac
|
||||
|
||||
## Old way
|
||||
# 20060629: HMS: Let's try checking in libopts and the autogen-generated files
|
||||
## The copy for ntp...
|
||||
#rm -rf libopts*
|
||||
@ -64,22 +65,34 @@ AUTORECONF=${AUTORECONF:-autoreconf}
|
||||
# tar -xvf -
|
||||
# mv libopts-*.*.* libopts )
|
||||
|
||||
def_files=`find [B-Za-z]* -type f -name '*.def' -print | fgrep -v /SCCS/`
|
||||
prog_opt_files=`grep -l '^prog.name' $def_files`
|
||||
## EOOld way
|
||||
|
||||
## Unity test runners
|
||||
# the ruby generator must be older than the test files.
|
||||
# the test files must be older than the runner files.
|
||||
|
||||
runner_files=`find [B-Za-z]* -type f -name 'run-*' -print | fgrep -v /SCCS/`
|
||||
l=
|
||||
lt=
|
||||
lr=
|
||||
for f in ${runner_files}
|
||||
do
|
||||
fb=`echo $f | sed -e 's/run-//'`
|
||||
lt="$lt $fb"
|
||||
lr="$lr $f" # Yes, lr and runner_files are eventually the same
|
||||
done
|
||||
touch $lt
|
||||
echo "Touching <$lt>"
|
||||
sleep 1
|
||||
touch $lr
|
||||
echo "Touching <$lr>"
|
||||
|
||||
## EOUnity test runners
|
||||
|
||||
## AutoGen stuff
|
||||
|
||||
#incdir=${PWD}/include
|
||||
|
||||
#for f in ${prog_opt_files}
|
||||
#do
|
||||
# ( cd $(dirname ${f})
|
||||
# echo "Running autogen on $f..."
|
||||
# autogen -L${incdir} $(basename ${f})
|
||||
# ) || exit 1
|
||||
#done
|
||||
|
||||
## Non-AutoGen stuff
|
||||
def_files=`find [B-Za-z]* -type f -name '*.def' -print | fgrep -v /SCCS/`
|
||||
prog_opt_files=`grep -l '^prog.name' $def_files`
|
||||
|
||||
# touch the stuff generated by the opt files
|
||||
|
||||
@ -129,6 +142,8 @@ esac
|
||||
|
||||
## EOAutoGen stuff
|
||||
|
||||
## Yacc/bison files
|
||||
|
||||
# Yacc/bison files ntp_parser.[ch] so we don't require the tool if
|
||||
# ntp_parser.y hasn't been updated. At the same time, keyword-gen-utd
|
||||
# and ntp_keyword.h which are derived from ntp_parser.h and
|
||||
@ -136,6 +151,8 @@ esac
|
||||
|
||||
touch ntpd/ntp_parser.[ch] ntpd/keyword-gen-utd ntpd/ntp_keyword.h
|
||||
|
||||
## EOYacc/bison files
|
||||
|
||||
cp bincheck.mf sntp/
|
||||
cp depsver.mf sntp/
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -16,6 +15,61 @@
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -35,9 +89,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = propdelay$(EXEEXT) chutest$(EXEEXT)
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf
|
||||
subdir = clockstuff
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
@ -69,6 +120,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -78,6 +130,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -89,14 +142,27 @@ chutest_LDADD = $(LDADD)
|
||||
am__DEPENDENCIES_1 =
|
||||
chutest_DEPENDENCIES = ../libntp/libntp.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
AM_V_lt = $(am__v_lt_$(V))
|
||||
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
propdelay_SOURCES = propdelay.c
|
||||
propdelay_OBJECTS = propdelay.$(OBJEXT)
|
||||
am__DEPENDENCIES_2 = ../libntp/libntp.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
propdelay_DEPENDENCIES = $(am__DEPENDENCIES_2)
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/sntp/libevent/build-aux/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -107,26 +173,47 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_$(V))
|
||||
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = chutest.c propdelay.c
|
||||
DIST_SOURCES = chutest.c propdelay.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depsver.mf \
|
||||
$(top_srcdir)/includes.mf $(top_srcdir)/sntp/check-libntp.mf \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/depcomp README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -177,6 +264,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -293,6 +381,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -416,7 +505,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/sntp/check-libntp.mf
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign clockstuff/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign clockstuff/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -425,6 +513,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(top_srcdir)/sntp/check-libntp.mf $(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@ -443,10 +532,12 @@ clean-noinstPROGRAMS:
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
chutest$(EXEEXT): $(chutest_OBJECTS) $(chutest_DEPENDENCIES)
|
||||
|
||||
chutest$(EXEEXT): $(chutest_OBJECTS) $(chutest_DEPENDENCIES) $(EXTRA_chutest_DEPENDENCIES)
|
||||
@rm -f chutest$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(chutest_OBJECTS) $(chutest_LDADD) $(LIBS)
|
||||
propdelay$(EXEEXT): $(propdelay_OBJECTS) $(propdelay_DEPENDENCIES)
|
||||
|
||||
propdelay$(EXEEXT): $(propdelay_OBJECTS) $(propdelay_DEPENDENCIES) $(EXTRA_propdelay_DEPENDENCIES)
|
||||
@rm -f propdelay$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(propdelay_OBJECTS) $(propdelay_LDADD) $(LIBS)
|
||||
|
||||
@ -462,26 +553,23 @@ distclean-compile:
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -489,26 +577,15 @@ mostlyclean-libtool:
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -520,15 +597,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -537,6 +610,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -587,10 +675,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -677,18 +770,21 @@ uninstall-am:
|
||||
|
||||
.MAKE: all check install install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstPROGRAMS ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
|
||||
ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
check-libntp: ../libntp/libntp.a
|
||||
|
16
config.h.in
16
config.h.in
@ -333,6 +333,9 @@
|
||||
/* Define to 1 if you have the <arpa/nameser.h> header file. */
|
||||
#undef HAVE_ARPA_NAMESER_H
|
||||
|
||||
/* Define to 1 if you have the `atomic_thread_fence' function. */
|
||||
#undef HAVE_ATOMIC_THREAD_FENCE
|
||||
|
||||
/* Do we have audio support? */
|
||||
#undef HAVE_AUDIO
|
||||
|
||||
@ -386,6 +389,9 @@
|
||||
/* Define to 1 if you have the <errno.h> header file. */
|
||||
#undef HAVE_ERRNO_H
|
||||
|
||||
/* Define to 1 if you have the `EVP_MD_do_all_sorted' function. */
|
||||
#undef HAVE_EVP_MD_DO_ALL_SORTED
|
||||
|
||||
/* Define to 1 if you have the `fchmod' function. */
|
||||
#undef HAVE_FCHMOD
|
||||
|
||||
@ -821,6 +827,9 @@
|
||||
/* Define to 1 if you have the <stdarg.h> header file. */
|
||||
#undef HAVE_STDARG_H
|
||||
|
||||
/* Define to 1 if you have the <stdatomic.h> header file. */
|
||||
#undef HAVE_STDATOMIC_H
|
||||
|
||||
/* Define to 1 if you have the <stdbool.h> header file. */
|
||||
#undef HAVE_STDBOOL_H
|
||||
|
||||
@ -1315,6 +1324,9 @@
|
||||
/* define to 1 if library is thread safe */
|
||||
#undef LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE
|
||||
|
||||
/* leap smear mechanism */
|
||||
#undef LEAP_SMEAR
|
||||
|
||||
/* Define to any value to include libseccomp sandboxing. */
|
||||
#undef LIBSECCOMP
|
||||
|
||||
@ -1473,8 +1485,8 @@
|
||||
/* Do we want the SCO clock hacks? */
|
||||
#undef SCO5_CLOCK
|
||||
|
||||
/* The size of `char*', as computed by sizeof. */
|
||||
#undef SIZEOF_CHARP
|
||||
/* The size of `char *', as computed by sizeof. */
|
||||
#undef SIZEOF_CHAR_P
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
79
configure.ac
79
configure.ac
@ -65,6 +65,7 @@ ntp_jupiter_ok=${ntp_jupiter_ok=no}
|
||||
|
||||
NTP_PROG_CC
|
||||
AC_PROG_CPP
|
||||
# Do we need CXX for anything besides google test?
|
||||
AC_PROG_CXX
|
||||
AC_PROG_YACC
|
||||
AC_PROG_CC_C_O
|
||||
@ -180,6 +181,15 @@ case "$PROG_NET_SNMP_CONFIG" in
|
||||
esac
|
||||
AC_MSG_RESULT([$PATH_NET_SNMP_CONFIG])
|
||||
|
||||
case "$PATH_NET_SNMP_CONFIG" in
|
||||
/*) AC_CACHE_CHECK(
|
||||
[for net-snmp version],
|
||||
[ntp_cv_net_snmp_version],
|
||||
[ntp_cv_net_snmp_version=`$PATH_NET_SNMP_CONFIG --version`]
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$host" in
|
||||
*-*-vxworks*)
|
||||
ac_link="$ac_link $VX_KERNEL"
|
||||
@ -291,7 +301,7 @@ AC_CHECK_HEADER(
|
||||
AC_CHECK_HEADERS([fcntl.h fnmatch.h ieeefp.h inttypes.h kvm.h math.h])
|
||||
|
||||
AC_CHECK_HEADERS([memory.h netdb.h poll.h])
|
||||
AC_CHECK_HEADERS([sgtty.h stdlib.h string.h termio.h])
|
||||
AC_CHECK_HEADERS([sgtty.h stdatomic.h stdlib.h string.h termio.h])
|
||||
AC_CHECK_HEADERS([termios.h timepps.h timex.h unistd.h])
|
||||
|
||||
case "$host" in
|
||||
@ -375,6 +385,28 @@ case "$host" in
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$ac_cv_header_stdatomic_h" in
|
||||
yes)
|
||||
AC_CHECK_FUNCS([atomic_thread_fence])
|
||||
AC_CACHE_CHECK(
|
||||
[for atomic_thread_fence()],
|
||||
[ntp_cv_func_atomic_thread_fence],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <stdatomic.h>
|
||||
]],
|
||||
[[
|
||||
atomic_thread_fence(memory_order_seq_cst);
|
||||
]]
|
||||
)]
|
||||
[ntp_cv_func_atomic_thread_fence=yes],
|
||||
[ntp_cv_func_atomic_thread_fence=no]
|
||||
)]
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$host" in
|
||||
*-*-solaris2.6)
|
||||
# Broken...
|
||||
@ -3426,6 +3458,9 @@ AC_CACHE_CHECK(
|
||||
*-sni-sysv*)
|
||||
ans=dosynctodr
|
||||
;;
|
||||
*-stratus-vos)
|
||||
ans=no
|
||||
;;
|
||||
*-*-aix*)
|
||||
ans=dosynctodr
|
||||
;;
|
||||
@ -3480,6 +3515,9 @@ AC_CACHE_CHECK(
|
||||
*-sni-sysv*)
|
||||
ans=noprintf
|
||||
;;
|
||||
*-stratus-vos)
|
||||
ans=no
|
||||
;;
|
||||
*-*-aix*)
|
||||
ans=noprintf
|
||||
;;
|
||||
@ -3873,6 +3911,11 @@ case "$ans" in
|
||||
case "$PATH_NET_SNMP_CONFIG" in
|
||||
/*)
|
||||
SNMP_LIBS=`$PATH_NET_SNMP_CONFIG --agent-libs`
|
||||
# Bug 2815. This is a bit of a hack, but it works...
|
||||
case "$ntp_cv_net_snmp_version" in
|
||||
5.3*) SNMP_LIBS=`echo $SNMP_LIBS | $SED -e 's/-lnetsnmpagent/-lnetsnmpagent -lnetsnmpmibs/'`
|
||||
;;
|
||||
esac
|
||||
AC_SUBST([SNMP_LIBS])
|
||||
# HMS: we really want to separate CPPFLAGS and CFLAGS
|
||||
foo=`$PATH_NET_SNMP_CONFIG --cflags`
|
||||
@ -3986,6 +4029,9 @@ case "$host" in
|
||||
*-sni-sysv*)
|
||||
ans=yes
|
||||
;;
|
||||
*-stratus-vos)
|
||||
ans=no
|
||||
;;
|
||||
*-univel-sysv*)
|
||||
ans=no
|
||||
;;
|
||||
@ -4306,6 +4352,31 @@ esac
|
||||
AM_CONDITIONAL([SAVECONFIG_ENABLED], [test x$ntp_saveconfig_enabled = x1])
|
||||
AC_MSG_RESULT([$ntp_ok])
|
||||
|
||||
###
|
||||
|
||||
AC_MSG_CHECKING([if we want the experimental leap smear code])
|
||||
AC_ARG_ENABLE(
|
||||
[leap-smear],
|
||||
[AS_HELP_STRING(
|
||||
[--enable-leap-smear],
|
||||
[- experimental leap smear code]
|
||||
)],
|
||||
[ntp_ok=$enableval],
|
||||
[ntp_ok=no]
|
||||
)
|
||||
ntp_leap_smear_enabled=0
|
||||
case "$ntp_ok" in
|
||||
yes)
|
||||
ntp_leap_smear_enabled=1
|
||||
AC_DEFINE([LEAP_SMEAR], [1], [leap smear mechanism])
|
||||
AC_SUBST([HAVE_LEAPSMEARINTERVAL])
|
||||
HAVE_LEAPSMEARINTERVAL="leapsmearinterval 0"
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$ntp_ok])
|
||||
|
||||
NTP_UNITYBUILD
|
||||
|
||||
dnl gtest is needed for our tests subdirs. It would be nice if we could
|
||||
dnl require a C++ compiler only if we will use gtest, but AC_PROG_CXX
|
||||
dnl can't be conditionalized.
|
||||
@ -4326,7 +4397,7 @@ AC_CONFIG_FILES([kernel/sys/Makefile])
|
||||
AC_CONFIG_FILES([libntp/Makefile])
|
||||
AC_CONFIG_FILES([libparse/Makefile])
|
||||
AC_CONFIG_FILES([ntpd/Makefile])
|
||||
AC_CONFIG_FILES([ntpd/complete.conf], [sed -e '/^rlimit$/d' < ntpd/complete.conf > ntpd/complete.conf.new && mv ntpd/complete.conf.new ntpd/complete.conf])
|
||||
AC_CONFIG_FILES([ntpd/complete.conf], [sed -e '/^rlimit$/d' -e '/^$/d' < ntpd/complete.conf > ntpd/complete.conf.new && mv ntpd/complete.conf.new ntpd/complete.conf])
|
||||
AC_CONFIG_FILES([ntpdate/Makefile])
|
||||
AC_CONFIG_FILES([ntpdc/Makefile])
|
||||
AC_CONFIG_FILES([ntpdc/nl.pl], [chmod +x ntpdc/nl.pl])
|
||||
@ -4349,9 +4420,13 @@ AC_CONFIG_FILES([scripts/ntpver], [chmod +x scripts/ntpver])
|
||||
AC_CONFIG_FILES([scripts/plot_summary], [chmod +x scripts/plot_summary])
|
||||
AC_CONFIG_FILES([scripts/summary], [chmod +x scripts/summary])
|
||||
AC_CONFIG_FILES([scripts/update-leap/Makefile])
|
||||
AC_CONFIG_FILES([scripts/update-leap/update-leap], [chmod +x scripts/update-leap/update-leap])
|
||||
AC_CONFIG_FILES([tests/Makefile])
|
||||
AC_CONFIG_FILES([tests/bug-2803/Makefile])
|
||||
AC_CONFIG_FILES([tests/libntp/Makefile])
|
||||
AC_CONFIG_FILES([tests/ntpd/Makefile])
|
||||
AC_CONFIG_FILES([tests/sandbox/Makefile])
|
||||
AC_CONFIG_FILES([tests/sec-2853/Makefile])
|
||||
AC_CONFIG_FILES([util/Makefile])
|
||||
|
||||
perllibdir="${datadir}/ntp/lib"
|
||||
|
@ -80,7 +80,7 @@
|
||||
<dd>Specifies PPS capture on the rising (assert) pulse edge if 0 (default) or falling
|
||||
(clear) pulse edge if 1. Not used under Windows - if the special <tt>serialpps.sys</tt> serial port driver is installed then the leading edge will <i>always</i> be used.</dd>
|
||||
<dt><tt>flag3 0 | 1</tt></dt>
|
||||
<dd>Controls the kernel PPS discipline: 0 for disable (default), 1 for enable. Not used under Windows - if the special <tt>serialpps.sys<\tt> serial port driver is used then kernel PPS will be available and used.</dd>
|
||||
<dd>Controls the kernel PPS discipline: 0 for disable (default), 1 for enable. Not used under Windows - if the special <tt>serialpps.sys</tt> serial port driver is used then kernel PPS will be available and used.</dd>
|
||||
<dt><tt>flag4 0 | 1</tt></dt>
|
||||
<dd>Record a timestamp once for each second if 1. Useful for constructing
|
||||
Allan deviation plots.</dd>
|
||||
|
534
html/drivers/driver40-ja.html
Normal file
534
html/drivers/driver40-ja.html
Normal file
@ -0,0 +1,534 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="ja">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<meta name="generator" content="HTML Tidy, see www.w3.org">
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
||||
<title>JJY Receivers</title>
|
||||
<link rev="made" href="http://www.bea.hi-ho.ne.jp/abetakao/">
|
||||
<link rel="start" href="http://www.eecis.udel.edu/~mills/ntp/html/refclock.html">
|
||||
<link href="scripts/style.css" type="text/css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h3>JJY Receivers</h3>
|
||||
<p>Last update:
|
||||
<!-- #BeginDate format:En2m -->15-May-2015 00:00<!-- #EndDate -->
|
||||
UTC <a href="driver40.html">ENGLISH(英語)</a> <a href="driver40-ja.html">JAPANESE(日本語)</a></p>
|
||||
<hr>
|
||||
<h4>Synopsis</h4>
|
||||
Address: 127.127.40.<em>u</em><br>
|
||||
Reference ID: <code>JJY</code><br>
|
||||
Driver ID: <code>JJY</code><br>
|
||||
Serial Port: <code>/dev/jjy<em>u</em></code>; それぞれのJJY受信機、GPS時計、テレフォンJJYを参照して下さい。
|
||||
<h4>Description</h4>
|
||||
<p>このドライバーは、以下の、日本で販売されている JJY受信機、GPS時計と、電話回線による時刻配信サービスをサポートしています。
|
||||
</p>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%" style="vertical-align:top;">
|
||||
<a href="#mode-1">トライステート TS-JJY01, TS-JJY02</a><br>
|
||||
<a href="#mode-2">シーデックス JST2000</a><br>
|
||||
<a href="#mode-3">エコー計測器 LT-2000</a><br>
|
||||
<a href="#mode-4">シチズンTIC JJY-200</a><br>
|
||||
<a href="#mode-5">トライステート TS-GPSclock-01</a><br>
|
||||
</td>
|
||||
<td width="50%" style="vertical-align:top; border-left:solid; padding:0px 0px 0px 10px;">
|
||||
<a href="#mode-6">セイコー タイム システム TDC-300</a><br>
|
||||
<a href="#mode-100">テレフォンJJY</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-1">トライステート TS-JJY01, TS-JJY02</a> <a href="http://www.tristate.ne.jp/">http://www.tristate.ne.jp/</a> (日本語)</p><br>
|
||||
<dl>
|
||||
<dt>NTPの設定 ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 1</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN flag1 0|1</dt>
|
||||
<dd>
|
||||
<p>Time1 は、受信機からの時刻に加算する調整時間を、固定小数点形式の秒で設定します。<br>
|
||||
この受信機には、数10ミリ秒 ( 0.0NN秒 ) から百数10ミリ秒 ( 0.1NN秒 ) の調整時間を設定すると良いでしょう。</p>
|
||||
<p>Flag1 は、時刻同期には無関係です。Flag1 を 1 に設定すると、状態を問い合わせるコマンドを DATE コマンドと STIM コマンドの前に発行して、応答を clockstats ファイルに記録します。</p>
|
||||
<table border="1" summary="fudge flag1">
|
||||
<tr><td>0 (Default)</td><td>DCST と STUS コマンドは、発行しません。</td></tr>
|
||||
<tr><td>1</td><td>DCST と STUS コマンドを、発行します。</td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>インターフェース</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 9600 BPS, 8ビット, パリティなし, 1ストップ・ビット</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>日時データの形式</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>コマンド</td>
|
||||
<td> --> </td>
|
||||
<td>応答</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>dcst{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>valid{CR}{LF} | invalid{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>stus{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>adjusted{CR}{LF} | unadjusted{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>time{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>date{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>YYYY/MM/DD WWW{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>stim{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>日付と時刻は、別々に問い合わせます。日付が深夜0時の前か後かの不確定をチェックするため、日付の問い合わせの前後に時刻を問い合わせています。</p><br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-2">シーデックス JST2000</a> <a href="http://www.c-dex.co.jp/">http://www.c-dex.co.jp/</a> (日本語)</p><br>
|
||||
<dl>
|
||||
<dt>NTPの設定 ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 2</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>インターフェース</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 9600 BPS, 8ビット, パリティなし, 1ストップ・ビット</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>日時データの形式</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>コマンド</td>
|
||||
<td> --> </td>
|
||||
<td>応答</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>{ENQ}1J{ETX}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>{STX}JYYMMDD HHMMSSS{ETX}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-3">エコー計測器 LT-2000</a> <a href="http://www.clock.co.jp/">http://www.clock.co.jp/</a> (日本語)</p><br>
|
||||
<dl>
|
||||
<dt>NTPの設定 ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 3</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Interface</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 9600 BPS, 8ビット, パリティなし, 1ストップ・ビット</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Time code format</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>コマンド</td>
|
||||
<td> --> </td>
|
||||
<td>応答</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>C</code></td>
|
||||
<td> --> </td>
|
||||
<td>( Mode 2 : Continuous )</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>( Every second before 0.5 second )</td>
|
||||
<td></td>
|
||||
<td><code>YYMMDDWHHMMSS{ST1}{ST2}{ST3}{ST4}{CR}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>#</code></td>
|
||||
<td> --> </td>
|
||||
<td>( Mode 1 : Request&Send )</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-4">シチズンTIC JJY-200</a> <a href="http://www.tic-citizen.co.jp/">http://www.tic-citizen.co.jp/</a> (日本語)</p><br>
|
||||
<dl>
|
||||
<dt>NTPの設定 ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 4</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>インターフェース</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 4800 BPS, 8ビット, パリティなし, 1ストップ・ビット</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>日時データの形式</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>コマンド</td>
|
||||
<td> --> </td>
|
||||
<td>応答</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>( Every second )</td>
|
||||
<td></td>
|
||||
<td><code>'XX YY/MM/DD W HH:MM:SS{CR}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-5">トライステート TS-GPSclock-01</a> <a href="http://www.tristate.ne.jp/">http://www.tristate.ne.jp/</a> (日本語)</p>
|
||||
<p>このドライバーは、JJY受信機ではないGPS時計のトライステート TS-GPSclock-01 のコマンド・レスポンス・モードをサポートします。<br>
|
||||
TS-GPSclock-01 は、オンボードのスイッチとメニューでコマンド・レスポンス・モードとタイム・ゾーンをJST(日本標準時)に設定しなければなりまん。<br>
|
||||
この Type 40 のドライバーの他, TS-GPSclock-01 のNMEAモードは、<a href="driver20.html">一般 NMEA GPS ドライバー ( Type 20 )</a> でも利用することができます。</p>
|
||||
<dl>
|
||||
<dt>NTPの設定 ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 5</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN flag1 0|1</dt>
|
||||
<dd>
|
||||
<p>Time1 は、受信機からの時刻に加算する調整時間を、固定小数点形式の秒で設定します</p>
|
||||
<p>Flag1 は、時刻同期には無関係です。Flag1 を 1 に設定すると、状態を問い合わせるコマンドを DATE コマンドと STIM コマンドの前に発行して、応答を clockstats ファイルに記録します。</p>
|
||||
<table border="1" summary="fudge flag1">
|
||||
<tr><td>0 (Default)</td><td>STUS コマンドは、発行しません。</td></tr>
|
||||
<tr><td>1</td><td>STUS コマンドを、発行します。</td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>インターフェース</dt>
|
||||
<dd>
|
||||
<p>USB ( /dev/ttyACM<em>0</em> )</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>日時データの形式</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>コマンド</td>
|
||||
<td> --> </td>
|
||||
<td>応答</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>stus{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>*R{CR}{LF} | *G{CR}{LF} | *U{CR}{LF} | +U{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>time{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>date{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>YYYY/MM/DD{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>time{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>日付と時刻は、別々に問い合わせます。日付が深夜0時の前か後かの不確定をチェックするため、日付の問い合わせの前後に時刻を問い合わせています。</p><br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-6">セイコー タイム システム TDC-300</a> <a href="http://www.seiko-sts.co.jp/">http://www.seiko-sts.co.jp/</a> (英語と日本語)</p><br>
|
||||
<p>TDC-300 は、フロント・パネルのメニュー表示とスイッチで type 3 のデータ形式に設定しなければなりません。</p>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 6</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>インターフェース</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 2400 BPS, 8-bits, no parity, 1 stop bit</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>日時データの形式</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>コマンド</td>
|
||||
<td> --> </td>
|
||||
<td>応答</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><code>{STX}YYMMDDWHHMMSS{ETX}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>( 5 to 10 mSec. before second )</td>
|
||||
<td></td>
|
||||
<td><code>{STX}{xE5}{ETX}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-100">テレフォンJJY</a> <a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a> (英語と日本語)</p>
|
||||
<p>テレフォンJJYは、電話回線による時刻配信サービスです。<br>
|
||||
このサービスは、国立研究開発法人 情報通信研究機構が提供しています。</p>
|
||||
<p>注意: このモード(テレフォンJJY)は、refclock_acts ( Type 18 ) のドライバーと同時に利用することはできません。
|
||||
設定ファイルの phone は、server と関係付けられていないため、ドライバーの refclock_acts ( type 18 ) も、この refclock_jjy ( type 40, mode 100 to 180 ) のいずれも、
|
||||
複数の phone のうち、どれが自分に関係するものか識別できないからです。</p>
|
||||
<dl>
|
||||
<dt>NTPの設定 ( ntp.conf )</dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode (100, 101 to 180) minpoll N</dt>
|
||||
<dd>
|
||||
<p>モード 100 を設定した場合、このドライバーは、遅延を計測するためのループバック・コマンドは発行せず、電話回線とシステムの処理による遅延は調整しません。<br>
|
||||
モード 101 から 180 を設定した場合、このドライバーは、ループバック・コマンドを発行して、テレフォンJJYのループバック回路を通して電話回線とシステムの処理による遅延を計測します。<br>
|
||||
テレフォンJJYのループバック回路を経由した往復の時間は、5回、計測されます。
|
||||
それぞれの遅延時間のうち、700ミリ秒を超えたものは、平均遅延時間の計算より除外されます。
|
||||
また、700ミリ秒以下の有効な遅延時間が、3回以上の場合は、そのうち、最大の遅延時間は、平均遅延時間の計算より除外され、
|
||||
4回以上の場合は、そのうち、最小の遅延時間は、平均遅延時間の計算より除外されます。
|
||||
調整時間は、往復時間 × ( モード番号 - 100 ) % で計算し、同期する時刻に加算されます。<br>
|
||||
モード 101 から 180 を設定して自動遅延補正を選択するなら、モード 145 から 165 が良いでしょう。</p>
|
||||
<p>デフォルトの日時問い合わせ処理間隔 6 ( 64 秒 ) は、このモードには、短すぎます。 "minpoll" は、8 ( 256 秒, 約 4 分 ) 以上を設定して下さい。<br>
|
||||
日時問い合わせ処理間隔は、秒数を 2 のべき乗で指定します。 minpoll の値が、12 なら 4096 秒(約1時間)、14 なら 16384 秒(約4.5時間)、16 なら 65536 秒(約18時間)となります。</p><br>
|
||||
</dd>
|
||||
<dt>fudge 127.127.40.X flag1 0|1 flag2 0|1 flag3 0|1 flag4 0|1</dt>
|
||||
<dd>
|
||||
<p>Time1 は、受信機からの時刻に加算する調整時間を、固定小数点形式の秒で設定します。<br>
|
||||
mode 100 の場合は、time1 で調整する時間を設定したほうが良いでしょう。<br>
|
||||
mode 101 から 180 の場合は、このドライバーが計測したループバックの遅延時間の一定の割合を同期時刻に加算しますので、time1 は設定しないほうが良いでしょう。</p>
|
||||
<div style="text-align:left;">Flag1 は、タッチ・トーンかダイヤル・パルスかを指定します。</div>
|
||||
<table border="1" summary="fudge flag1">
|
||||
<tr><td>0 (Default)</td><td>タッチ・トーン</td><td>ATDWTnn...nn</td></tr>
|
||||
<tr><td>1</td><td>ダイヤル・パルス</td><td>ATDWPnn...nn</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<div style="text-align:left;">Flag2 は、エラー訂正プロトコルを指定します。</div>
|
||||
<table border="1" summary="fudge flag2">
|
||||
<tr><td>0 (Default)</td><td>ノーマル(エラー訂正なし)</td><td>AT\N0</td></tr>
|
||||
<tr><td>1</td><td>V42, MNP, ノーマルの自動選択</td><td>AT\N3</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<div style="text-align:left;">Flag3 は、スピーカーのオン/オフを指定します。</div>
|
||||
<table border="1" summary="fudge flag3">
|
||||
<tr><td>0 (Default)</td><td>オフ</td><td>ATM0Ln</td></tr>
|
||||
<tr><td>1</td><td>オン</td><td>ATM2Ln</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<div style="text-align:left;">Flag4 は、スピーカーの音量を指定します。</div>
|
||||
<table border="1" summary="fudge flag4">
|
||||
<tr><td>0 (Default)</td><td>低</td><td>ATMnL1</td></tr>
|
||||
<tr><td>1</td><td>中</td><td>ATMnL2</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>phone 042NNNNNNN</dt>
|
||||
<dd>
|
||||
<p>電話番号は、<a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a> で公開されています。<br>
|
||||
電話番号の桁数をチェックしています。もし、日本国外から発信するために国際電話アクセス番号と国番号を付加すると、桁数制限を超えます。<br>
|
||||
また、電話番号の最初の2桁や3桁をチェックしています。日本の緊急番号や特別のサービスの番号を指定することはできません。<br>
|
||||
内線から外線に発信する時は、"0," ( ゼロとカンマ ) を先頭に付加して下さい。外線発信番号は、チェックしていて、それ以外の外線発信番号を指定することはできません。</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>インターフェース</dt>
|
||||
<dd>
|
||||
<p>RS-232C 又は USB, 2400 BPS, 8ビット, パリティなし, 1ストップ・ビット</p>
|
||||
<p>モデム制御コマンド:<br>
|
||||
<code>ATE0Q0V1, ATMnLn, AT&K4, AT+MS=V22B, AT%C0, AT\Nn, ATH1, ATDWxnn...nn</code><br>
|
||||
<code>+++, ATH0</code></p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>日時データの形式</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>プロンプト</td>
|
||||
<td> --> </td>
|
||||
<td>コマンド</td>
|
||||
<td> --> </td>
|
||||
<td>応答</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Name{SP}?{SP}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>TJJY{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>Welcome messages</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>LOOP{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>( Switch to the loopback circuit )</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code> </code></td>
|
||||
<td> </td>
|
||||
<td><code>( One char. )</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>( One char. )</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code> </code></td>
|
||||
<td> </td>
|
||||
<td><code>COM{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>( Exit from the loopback circuit )</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>TIME{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HHMMSS{CR}HHMMSS{CR}HHMMSS{CR}</code> 3 times on second</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>4DATE{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>YYYYMMDD{CR}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>LEAPSEC{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>{SP}0{CR} | +1{CR} | -1{CR}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>TIME{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HHMMSS{CR}HHMMSS{CR}HHMMSS{CR}</code> 3 times on second</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>BYE{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>Sayounara messages</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>日付と時刻は、別々に問い合わせます。日付が深夜0時の前か後かの不確定をチェックするため、日付の問い合わせの前後に時刻を問い合わせています。<br>
|
||||
うるう秒は、処理していません。情報として clockstats ファイルに記録しているだけです。</p>
|
||||
<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<p>JJY は、長波で日本標準時(JST)を送信している無線局で、国立研究開発法人 情報通信研究機構が運用しています。JJY の運用情報などは、 <a href="http://www.nict.go.jp/">http://www.nict.go.jp/</a>(英語と日本語)や <a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a>(英語と日本語)で提供されています。</p>
|
||||
<p>実際のシリアル・ポートのデバイスにシンボリック・リンクを作成して下さい。シンボリック・リンクを作成するコマンドは、以下のとおりです。</p>
|
||||
<p><code>ln -s /dev/ttyS0 /dev/jjy0</code></p>
|
||||
<p>RS-232C から USB への変換ケーブルを利用して、JJY受信機、GPS時計、モデムをRS-232Cポートではなく、USBに接続することができます。この場合のシンボリック・リンクを作成するコマンドは、以下のとおりです。</p>
|
||||
<p><code>ln -s /dev/ttyUSB0 /dev/jjy0</code></p>
|
||||
<p>Windows NT の場合は、 COM<em>X</em>: の数字部分がドライバーのユニット番号に使用されます。 ドライバーのユニット 1 は、COM1: にユニット 3 は、COM3: に対応します。</p>
|
||||
<h4>Monitor Data</h4>
|
||||
<p>このドライバーは、JJY受信機、GPS時計、モデムとの送受信データを <code>clockstats</code> ファイルに記録します。</p>
|
||||
<p><code>
|
||||
statsdir /var/log/ntpd/<br>
|
||||
filegen clockstats file clockstats type day enable
|
||||
</code></p>
|
||||
<div style="text-align:left;">レコード中のマークについて</div>
|
||||
<table border="1" summary="Clockstats">
|
||||
<tr><td><code>JJY</code> </td><td>情報(このドライバーの開始または終了)</td></tr>
|
||||
<tr><td><code>--></code> </td><td>送信データ</td></tr>
|
||||
<tr><td><code><--</code> </td><td>受信データ</td></tr>
|
||||
<tr><td><code>---</code> </td><td>情報</td></tr>
|
||||
<tr><td><code>===</code> </td><td>情報(ポーリングの開始、および、同期時刻)</td></tr>
|
||||
<tr><td><code>-W-</code> </td><td>警告メッセージ</td></tr>
|
||||
<tr><td><code>-X-</code> </td><td>エラー・メッセージ</td></tr>
|
||||
</table>
|
||||
<h4>Fudge Factors</h4>
|
||||
<dl>
|
||||
<dt><code>time1 <em>time</em></code></dt>
|
||||
<dd>受信機からの時刻に対する調整時間を、固定小数点形式の秒で設定します。デフォルトは、0.0秒です。</dd>
|
||||
<dt><code>time2 <em>time</em></code></dt>
|
||||
<dd>未使用。</dd>
|
||||
<dt><code>stratum <em>number</em></code></dt>
|
||||
<dd>NTPの階層番号を 0 から 15 で指定します。デフォルトは、0です。</dd>
|
||||
<dt><code>refid <em>string</em></code></dt>
|
||||
<dd>ドライバーIDで、ASCII の1文字から4文字で指定します。デフォルトは、<code>JJY</code> です。</dd>
|
||||
<dt><code>flag1 0 | 1</code></dt>
|
||||
<dd>それぞれのモードを参照して下さい。</dd>
|
||||
<dt><code>flag2 0 | 1</code></dt>
|
||||
<dd>それぞれのモードを参照して下さい。</dd>
|
||||
<dt><code>flag3 0 | 1</code></dt>
|
||||
<dd>それぞれのモードを参照して下さい。</dd>
|
||||
<dt><code>flag4 0 | 1</code></dt>
|
||||
<dd>それぞれのモードを参照して下さい。</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -5,6 +5,7 @@
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
|
||||
<meta name="generator" content="HTML Tidy, see www.w3.org">
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
||||
<title>JJY Receivers</title>
|
||||
<link rev="made" href="http://www.bea.hi-ho.ne.jp/abetakao/">
|
||||
@ -15,8 +16,8 @@
|
||||
<body>
|
||||
<h3>JJY Receivers</h3>
|
||||
<p>Last update:
|
||||
<!-- #BeginDate format:En2m -->3-May-2011 00:20<!-- #EndDate -->
|
||||
UTC</p>
|
||||
<!-- #BeginDate format:En2m -->15-May-2015 00:00<!-- #EndDate -->
|
||||
UTC <a href="driver40.html">ENGLISH</a> <a href="driver40-ja.html">JAPANESE</a></p>
|
||||
<hr>
|
||||
<h4>Synopsis</h4>
|
||||
Address: 127.127.40.<em>u</em><br>
|
||||
@ -24,19 +25,37 @@
|
||||
Driver ID: <code>JJY</code><br>
|
||||
Serial Port: <code>/dev/jjy<em>u</em></code>; See corresponding receiver
|
||||
<h4>Description</h4>
|
||||
<p>This driver supports the following JJY receivers sold in Japan.</p>
|
||||
<p>This driver supports the following the JJY receivers and the GPS clock sold in Japan, and the time service through a telephone line.
|
||||
</p>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%" style="vertical-align:top;">
|
||||
<a href="#mode-1">Tristate Ltd. TS-JJY01, TS-JJY02</a><br>
|
||||
<a href="#mode-2">C-DEX Co.,Ltd. JST2000</a><br>
|
||||
<a href="#mode-3">Echo Keisokuki Co.,Ltd. LT-2000</a><br>
|
||||
<a href="#mode-4">CITIZEN T.I.C. CO.,LTD. JJY-200</a><br>
|
||||
<a href="#mode-5">Tristate Ltd. TS-GPSclock-01</a><br>
|
||||
</td>
|
||||
<td width="50%" style="vertical-align:top; border-left:solid; padding:0px 0px 0px 10px;">
|
||||
<a href="#mode-6">SEIKO TIME SYSTEMS INC. TDC-300</a><br>
|
||||
<a href="#mode-100">Telephone JJY</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<p>Tristate Ltd. JJY01, JJY02 <a href="http://www.tristate.ne.jp/">http://www.tristate.ne.jp/</a> (Japanese only)</p><br>
|
||||
<p><a name="mode-1">Tristate Ltd. TS-JJY01, TS-JJY02</a> <a href="http://www.tristate.ne.jp/">http://www.tristate.ne.jp/</a> (Japanese only)</p><br>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd>
|
||||
<p>server 127.127.40.X mode 1</p>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>fudge 127.127.40.X flag1 0|1</dt>
|
||||
<dt>server 127.127.40.X mode 1</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN flag1 0|1</dt>
|
||||
<dd>
|
||||
<p>Flag1 has no effect for time synchronization. When a flag1 is set to 1, status commands are issued before DATE and STIM commands, and write a response text into a clockstats file.</p>
|
||||
<p>Time1 may specify a constant to be added to the time offset for the time from the receiver, a fixed-point decimal number in seconds. You may specify the time offset from several tens of milli-seconds ( 0.0NN seconds ) to a hundred and several tens of milli-seconds ( 0.1NN seconds ) for this clock.</p>
|
||||
<p>Flag1 has no effect for time synchronization. When flag1 is set to 1, status commands are issued before DATE and STIM commands, and write a response text into the clockstats file.</p>
|
||||
<table border="1" summary="fudge flag1">
|
||||
<tr><td>0 (Default)</td><td>DCST and STUS commands are not issued</td></tr>
|
||||
<tr><td>1</td><td>DCST and STUS commands are issued</td></tr>
|
||||
@ -47,7 +66,7 @@
|
||||
</dd>
|
||||
<dt>Interface</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 9600 baud, 8-bits, no parity, 1 stop bit</p>
|
||||
<p>RS-232C, 9600 BPS, 8-bits, no parity, 1 stop bit</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Time code format</dt>
|
||||
@ -58,6 +77,21 @@
|
||||
<td> --> </td>
|
||||
<td>Reply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>dcst{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>valid{CR}{LF} | invalid{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>stus{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>adjusted{CR}{LF} | unadjusted{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>time{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>date{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
@ -69,22 +103,26 @@
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<p>The date and time are requested separately. The time is requested before and after the date request to check uncertainty of the date whether it's before or after midnight.</p><br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p>C-DEX Co.,Ltd. JST2000 <a href="http://www.c-dex.co.jp/">http://www.c-dex.co.jp/</a> (Japanese only)</p><br>
|
||||
<p><a name="mode-2">C-DEX Co.,Ltd. JST2000</a> <a href="http://www.c-dex.co.jp/">http://www.c-dex.co.jp/</a> (Japanese only)</p><br>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd>
|
||||
<p>server 127.127.40.X mode 2</p>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 2</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Interface</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 9600 baud, 8-bits, no parity, 1 stop bit</p>
|
||||
<p>RS-232C, 9600 BPS, 8-bits, no parity, 1 stop bit</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Time code format</dt>
|
||||
@ -107,16 +145,20 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p>Echo Keisokuki Co.,Ltd. LT-2000 <a href="http://www.clock.co.jp/">http://www.clock.co.jp/</a> (Japanese only)</p><br>
|
||||
<p><a name="mode-3">Echo Keisokuki Co.,Ltd. LT-2000</a> <a href="http://www.clock.co.jp/">http://www.clock.co.jp/</a> (Japanese only)</p><br>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd>
|
||||
<p>server 127.127.40.X mode 3</p>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 3</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Interface</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 9600 baud, 8-bits, no parity, 1 stop bit</p>
|
||||
<p>RS-232C, 9600 BPS, 8-bits, no parity, 1 stop bit</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Time code format</dt>
|
||||
@ -149,16 +191,20 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p>CITIZEN T.I.C. CO.,LTD. JJY-200 <a href="http://www.tic-citizen.co.jp/">http://www.tic-citizen.co.jp/</a> (Japanese only)</p><br>
|
||||
<p><a name="mode-4">CITIZEN T.I.C. CO.,LTD. JJY-200</a> <a href="http://www.tic-citizen.co.jp/">http://www.tic-citizen.co.jp/</a> (Japanese only)</p><br>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd>
|
||||
<p>server 127.127.40.X mode 4</p>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 4</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Interface</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 4800 baud, 8-bits, no parity, 1 stop bit</p>
|
||||
<p>RS-232C, 4800 BPS, 8-bits, no parity, 1 stop bit</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Time code format</dt>
|
||||
@ -181,16 +227,18 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p>Tristate Ltd. TS-GPSclock-01 <a href="http://www.tristate.ne.jp/">http://www.tristate.ne.jp/</a> (Japanese only)</p>
|
||||
<p><a name="mode-5">Tristate Ltd. TS-GPSclock-01</a> <a href="http://www.tristate.ne.jp/">http://www.tristate.ne.jp/</a> (Japanese only)</p>
|
||||
<p>This driver supports the Tristate TS-GPSclock-01 in command/response mode, though it is a GPS clock, not JJY radio clock. Using the menus and the onboard switches, the TS-GPSclock-01 should be set to command/response mode and JST time zone.<br>
|
||||
Besides this driver ( Type 40 ), <a href="driver20.html">the generic NMEA GPS driver ( Type 20 )</a> supports the TS-GPSclock-01 in NMEA mode.</p>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd>
|
||||
<p>server 127.127.40.X mode 5</p>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>fudge 127.127.40.X flag1 0|1</dt>
|
||||
<dt>server 127.127.40.X mode 5</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN flag1 0|1</dt>
|
||||
<dd>
|
||||
<p>Time1 may specify a constant to be added to the time offset for the time from the receiver, a fixed-point decimal number in seconds.</p>
|
||||
<p>Flag1 has no effect for time synchronization. When a flag1 is set to 1, status command is issued before DATE and TIME commands, and write a response text into a clockstats file.</p>
|
||||
<table border="1" summary="fudge flag1">
|
||||
<tr><td>0 (Default)</td><td>STUS command is not issued</td></tr>
|
||||
@ -213,6 +261,16 @@
|
||||
<td> --> </td>
|
||||
<td>Reply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>stus{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>*R{CR}{LF} | *G{CR}{LF} | *U{CR}{LF} | +U{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>time{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>date{CR}{LF}</code></td>
|
||||
<td> --> </td>
|
||||
@ -224,38 +282,250 @@
|
||||
<td><code>HH:MM:SS{CR}{LF}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>The date and time are requested separately. The time is requested before and after the date request to check uncertainty of the date whether it's before or after midnight.</p><br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-6">SEIKO TIME SYSTEMS INC. TDC-300</a> <a href="http://www.seiko-sts.co.jp/">http://www.seiko-sts.co.jp/</a> (English and Japanese)</p><br>
|
||||
<p>The TDC-300 must be set to the type 3 data format using the front panel menu display and the switches.</p>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode 6</dt>
|
||||
<dd><br></dd>
|
||||
<dt>fudge 127.127.40.X time1 0.NNN</dt>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Interface</dt>
|
||||
<dd>
|
||||
<p>RS-232C, 2400 BPS, 8-bits, no parity, 1 stop bit</p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Time code format</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>Command</td>
|
||||
<td> --> </td>
|
||||
<td>Reply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><code>{STX}YYMMDDWHHMMSS{ETX}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>( 5 to 10 mSec. before second )</td>
|
||||
<td></td>
|
||||
<td><code>{STX}{xE5}{ETX}</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p><a name="mode-100">Telephone JJY</a> <a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a> (English and Japanese)</p>
|
||||
<p>The telephone JJY is the time service through a public telephone line.<br>
|
||||
The service is provided by the National Institute of Information and Communications Technology in Japan.</p>
|
||||
<p>ATTENTION; This mode, the telephone JJY, can not be used with the refclock_acts ( type 18 ) at the same time.
|
||||
Because the "phone" statement in the ntp configuration file is not involved with the "server" statement,
|
||||
so the both the refclock_acts ( type 18 ) and this refclock_jjy ( type 40, mode 100 to 180 ) can not recognize the appropriate "phone" statement among the "phone" statements.</p>
|
||||
<dl>
|
||||
<dt>NTP configuration ( ntp.conf )</dt>
|
||||
<dd><br>
|
||||
<dl>
|
||||
<dt>server 127.127.40.X mode (100, 101 to 180) minpoll N</dt>
|
||||
<dd>
|
||||
<p>The mode 100 is specified, this driver does not issue the loopback command in order to measure the delay, and the delay of the telephone line and the system processing is not adjusted.<br>
|
||||
The mode 101 to 180 is specified, this driver issues the loopback command and measures the delay of the telephone line and the system processing through the Telphone JJY loopback circuit.<br>
|
||||
The round trip time through the Telphone JJY loopback circuit is measured 5 times, and each delay time is greater than 700 milli-seconds,
|
||||
that delay time is ignored during average delay time calculation. Also, if the valid delay time ( <= 700 mS. ) is measured more than 3 times, the maximum delay time among the valid delay times is ignored,
|
||||
and if the valid delay time is measured more than 4 times, the minimum delay time among them is ignored, like marking/grading sports judgment.<br>
|
||||
The adjustment time is calculated by the formula,<br>
|
||||
multiply ( the measured round trip time ) by ( ( the mode number ) - 100 ) %,<br>
|
||||
and the adjustment delay time is added to the syncronizing time.<br>
|
||||
If you choose the automatic delay ajustment, in other words, the mode 101 to 180 is specifed, the recommended mode number is 145 to 165.</p>
|
||||
<p>The default polling interval 6 ( 64 seconds ) is too short for this mode. The "minpoll" should be set to greater than or equal to 8 ( 256 seconds, about 4 minutes ).<br>
|
||||
The interval time is given the value in second power of 2. The minpoll value 12 is 4096 seconds interval ( about 1 hour ), 14 is 16384 seconds interval ( about 4.5 hours ), 16 is 65536 seconds ( about 18 hours ), respectively.</p><br>
|
||||
</dd>
|
||||
<dt>fudge 127.127.40.X flag1 0|1 flag2 0|1 flag3 0|1 flag4 0|1</dt>
|
||||
<dd>
|
||||
<p>Time1 may specify a constant to be added to the time offset for the time from the receiver, a fixed-point decimal number in seconds.<br>
|
||||
When the mode 100 is specified, the time1 may be specified in order to adjust the time offset.<br>
|
||||
When the mode 101 to 180 is specified, the time1 should not be specified because this driver adds some percentage of the measured loopback delay, depending on the value of the mode number.</p>
|
||||
<div style="text-align:left;">Flag1 is the modem dialing type.</div>
|
||||
<table border="1" summary="fudge flag1">
|
||||
<tr><td>0 (Default)</td><td>Tone</td><td>ATDWTnn...nn</td></tr>
|
||||
<tr><td>1</td><td>Pulse</td><td>ATDWPnn...nn</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<div style="text-align:left;">Flag2 is the modem error correction type.</div>
|
||||
<table border="1" summary="fudge flag2">
|
||||
<tr><td>0 (Default)</td><td>Normal</td><td>AT\N0</td></tr>
|
||||
<tr><td>1</td><td>Auto V42, MNP, Normal</td><td>AT\N3</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<div style="text-align:left;">Flag3 is the modem speaker switch.</div>
|
||||
<table border="1" summary="fudge flag3">
|
||||
<tr><td>0 (Default)</td><td>Off</td><td>ATM0Ln</td></tr>
|
||||
<tr><td>1</td><td>On</td><td>ATM2Ln</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<div style="text-align:left;">Flag4 is the modem speaker volume.</div>
|
||||
<table border="1" summary="fudge flag4">
|
||||
<tr><td>0 (Default)</td><td>Low</td><td>ATMnL1</td></tr>
|
||||
<tr><td>1</td><td>Middle</td><td>ATMnL2</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>phone 042NNNNNNN</dt>
|
||||
<dd>
|
||||
<p>The phone number is available at <a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a><br>
|
||||
The number of digits of the phone number is checked. If the international access number and the country number are added in order to call from outside of Japan, the number of digits is over the limit.<br>
|
||||
The first 2 or 3 digits are checked. The emergency service number and the special service number in Japan are not allowed.<br>
|
||||
Calling from extension line, the number for an outside line should be prefix "0," ( Zero, Comma ). The prefix is also checked, and no other outside access number is allowed.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Interface</dt>
|
||||
<dd>
|
||||
<p>RS-232C or USB, 2400 BPS, 8-bits, no parity, 1 stop bit</p>
|
||||
<p>Modem control commands:<br>
|
||||
<code>ATE0Q0V1, ATMnLn, AT&K4, AT+MS=V22B, AT%C0, AT\Nn, ATH1, ATDWxnn...nn</code><br>
|
||||
<code>+++, ATH0</code></p>
|
||||
<br>
|
||||
</dd>
|
||||
<dt>Time code format</dt>
|
||||
<dd><br>
|
||||
<table summary="CommandAndReply">
|
||||
<tr>
|
||||
<td>Prompt</td>
|
||||
<td> --> </td>
|
||||
<td>Command</td>
|
||||
<td> --> </td>
|
||||
<td>Reply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Name{SP}?{SP}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>TJJY{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>Welcome messages</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>LOOP{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>( Switch to the loopback circuit )</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code> </code></td>
|
||||
<td> </td>
|
||||
<td><code>( One char. )</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>( One char. )</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code> </code></td>
|
||||
<td> </td>
|
||||
<td><code>COM{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>( Exit from the loopback circuit )</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>TIME{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HHMMSS{CR}HHMMSS{CR}HHMMSS{CR}</code> 3 times on second</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>4DATE{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>YYYYMMDD{CR}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>LEAPSEC{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>{SP}0{CR} | +1{CR} | -1{CR}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>TIME{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td><code>HHMMSS{CR}HHMMSS{CR}HHMMSS{CR}</code> 3 times on second</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>></code></td>
|
||||
<td> --> </td>
|
||||
<td><code>BYE{CR}</code></td>
|
||||
<td> --> </td>
|
||||
<td>Sayounara messages</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>The date and time are requested separately. The time is requested before and after the date request to check uncertainty of the date whether it's before or after midnight.<br>
|
||||
The leap second is not handled, and only written in the clockstats file as an information.</p>
|
||||
<br>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<p>JJY is the radio station which transmites the JST (Japan Standard Time) in long wave radio. The station JJY is operated by the National Institute of Information and Communications Technology. An operating announcement and some information are avaiable from <a href="http://www.nict.go.jp/">http://www.nict.go.jp/</a> (English and Japanese) and <a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a> (English and Japanese)</p>
|
||||
|
||||
<p>The JJY is the radio station which transmits the JST (Japan Standard Time) in long wave radio. The station JJY is operated by the National Institute of Information and Communications Technology.
|
||||
An operating announcement and some information are available from <a href="http://www.nict.go.jp/">http://www.nict.go.jp/</a> (English and Japanese) and <a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a> (English and Japanese)</p>
|
||||
<p>The user is expected to provide a symbolic link to an available serial port device. This is typically performed by a command such as;</p>
|
||||
<p><code>ln -s /dev/ttyS0 /dev/jjy0</code></p>
|
||||
<p>Using RS232C to USB converter cable, the clock can be connected to an USB port instead of a serial port. In this case, typical symbolic link command is as follows;
|
||||
<p>Using an RS-232C to USB converter cable, the clock or a modem can be connected to a USB port instead of a serial port. In this case, the typical symbolic link command is as follows;</p>
|
||||
<p><code>ln -s /dev/ttyUSB0 /dev/jjy0</code></p>
|
||||
<p>Windows NT does not support symbolic links to device files. COM<em>X</em>: is the unit used by the driver, based on the refclock unit number, where unit 1 corresponds to COM1: and unit 3 corresponds to COM3:</p>
|
||||
<h4>Monitor Data</h4>
|
||||
<p>The driver writes each timecode as received to the <code>clockstats</code> file.</p>
|
||||
<p>The driver writes sent and received data to/from the JJY receivers, GPS clock, and the modem into the <code>clockstats</code> file.</p>
|
||||
<p><code>
|
||||
statsdir /var/log/ntpd/<br>
|
||||
filegen clockstats file clockstats type day enable
|
||||
</code></p>
|
||||
<div style="text-align:left;">Mark of the clockstats record</div>
|
||||
<table border="1" summary="Clockstats">
|
||||
<tr><td><code>JJY</code> </td><td>Infomation message ( This refclock starts or stops. )</td></tr>
|
||||
<tr><td><code>--></code> </td><td>Sent data</td></tr>
|
||||
<tr><td><code><--</code> </td><td>Received data</td></tr>
|
||||
<tr><td><code>---</code> </td><td>Infomation message</td></tr>
|
||||
<tr><td><code>===</code> </td><td>Infomation message ( Start of each polling, and sync. time. )</td></tr>
|
||||
<tr><td><code>-W-</code> </td><td>Warning message</td></tr>
|
||||
<tr><td><code>-X-</code> </td><td>Error message</td></tr>
|
||||
</table>
|
||||
<h4>Fudge Factors</h4>
|
||||
<dl>
|
||||
<dt><code>time1 <em>time</em></code>
|
||||
<dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
|
||||
<dt><code>time2 <em>time</em></code>
|
||||
<dd>Not used by this driver.
|
||||
<dt><code>stratum <em>number</em></code>
|
||||
<dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
|
||||
<dt><code>refid <em>string</em></code>
|
||||
<dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <code>JJY</code>.
|
||||
<dt><code>flag1 0 | 1</code>
|
||||
<dd>See corresponding receiver.
|
||||
<dt><code>flag2 0 | 1</code>
|
||||
<dd>Not used by this driver.
|
||||
<dt><code>flag3 0 | 1</code>
|
||||
<dd>Not used by this driver.
|
||||
<dt><code>flag4 0 | 1</code>
|
||||
<dt><code>time1 <em>time</em></code></dt>
|
||||
<dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.</dd>
|
||||
<dt><code>time2 <em>time</em></code></dt>
|
||||
<dd>Not used by this driver.
|
||||
<dt><code>stratum <em>number</em></code></dt>
|
||||
<dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.</dd>
|
||||
<dt><code>refid <em>string</em></code></dt>
|
||||
<dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <code>JJY</code>.</dd>
|
||||
<dt><code>flag1 0 | 1</code></dt>
|
||||
<dd>See corresponding receiver.</dd>
|
||||
<dt><code>flag2 0 | 1</code></dt>
|
||||
<dd>See corresponding receiver.</dd>
|
||||
<dt><code>flag3 0 | 1</code></dt>
|
||||
<dd>See corresponding receiver.</dd>
|
||||
<dt><code>flag4 0 | 1</code></dt>
|
||||
<dd>See corresponding receiver.</dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
|
||||
|
@ -14,7 +14,7 @@
|
||||
<body>
|
||||
<h3>GPSD NG client driver</h3>
|
||||
<p>Last update:
|
||||
<!-- #BeginDate format:En2m -->1-Mar-2014 03:48<!-- #EndDate -->
|
||||
<!-- #BeginDate format:En2m -->30-Apr-2015 05:53<!-- #EndDate -->
|
||||
UTC</p>
|
||||
<hr>
|
||||
<h4>Synopsis</h4>
|
||||
@ -28,8 +28,9 @@
|
||||
Features: <tt></tt>
|
||||
</p>
|
||||
|
||||
<h4>Description</h4>
|
||||
<!-- --------------------------------------------------------- -->
|
||||
|
||||
<br><h4>Description</h4>
|
||||
<p>
|
||||
This driver is a client driver to the <i>GPSD</i> daemon, which
|
||||
over the time became increasingly popular for UN*Xish
|
||||
@ -68,25 +69,37 @@
|
||||
<p>
|
||||
The overall accuracy depends on the receiver used. The driver
|
||||
uses the error estimations (95% probability limits) provided by
|
||||
<i>GPSD</i> to set the clock precision dynamically according to these
|
||||
readings.
|
||||
<i>GPSD</i> to set the clock precision dynamically according to
|
||||
these readings.
|
||||
</p>
|
||||
<p>
|
||||
The driver needs the VERSION, TPV, PPS and WATCH objects of
|
||||
the <i>GPSD</i> protocol. (Others are quietly ignored.)
|
||||
The driver needs the VERSION, TPV, PPS, WATCH and TOFF objects
|
||||
of the <i>GPSD</i> protocol. (Others are quietly ignored.) The
|
||||
driver can operate without the TOFF objects, which are available
|
||||
with the <i>protocol</i> version 3.10 and above. (Not to be
|
||||
confused with the <i>release</i> version of <i>GPSD</i>!)
|
||||
Running without TOFF objects has a negative impact on the jitter
|
||||
and offset of the serial timing information; if possible, a
|
||||
version of <i>GPSD</i> with support for TOFF objects should be
|
||||
used.
|
||||
</p>
|
||||
<p>The acronym <u>STI</u> is used here as a synonym for <i>serial
|
||||
time information</i> from the data channel of the receiver, no
|
||||
matter what objects were used to obtain it.
|
||||
</p>
|
||||
|
||||
<!-- --------------------------------------------------------- -->
|
||||
|
||||
<h4>Naming a Device</h4>
|
||||
<br><h4>Naming a Device</h4>
|
||||
<p>
|
||||
The <i>GPSD</i> driver uses the same name as the NMEA driver,
|
||||
namely <tt>/dev/gps<i>u</i></tt>. There is a simple reason for
|
||||
that: While the NMEA driver and the <i>GPSD</i> driver can be
|
||||
active at the same time <b>for different devices</b>,
|
||||
they cannot access the same device at a time. Having the same
|
||||
name helps on that. It also eases migration from using NMEA
|
||||
directly to using <i>GPSD</i>, as no new links etc need to be
|
||||
created.
|
||||
The <i>GPSD</i> driver uses the same device name as the NMEA
|
||||
driver, namely <tt>/dev/gps<i>u</i></tt>. There is a simple
|
||||
reason for that: While the NMEA driver and the <i>GPSD</i>
|
||||
driver can be active at the same time <b>for different
|
||||
devices</b>, they cannot access the same device at a
|
||||
time. Having the same name helps on that. It also eases
|
||||
migration from using NMEA directly to using <i>GPSD</i>, as no
|
||||
new links etc need to be created.
|
||||
</p>
|
||||
<p>
|
||||
<i>GPSD</i> is normally started with the device name to access;
|
||||
@ -97,14 +110,16 @@
|
||||
identification. This makes the migration from the built-in NMEA
|
||||
driver a bit easier.
|
||||
</p>
|
||||
<p><b>Note:</b> <i>GPSD</i> (as of version 3.10) cannot
|
||||
use kernel mode PPS on devices that are hot-plugged. This would
|
||||
require to attach the PPS line discipline to the file, which is
|
||||
not possible when running with root privileges dropped. This is
|
||||
not likely to change in the future.
|
||||
<p><b>Note:</b> <i>GPSD</i> (as of version 3.10) cannot use kernel
|
||||
mode PPS on devices that are hot-plugged. This would require to
|
||||
attach the PPS line discipline to the character special file,
|
||||
which is not possible when running with root privileges already
|
||||
dropped. This is not likely to change in the future.
|
||||
</p>
|
||||
|
||||
<h4>The 'mode' byte</h4>
|
||||
<!-- --------------------------------------------------------- -->
|
||||
|
||||
<br><h4>The 'mode' word</h4>
|
||||
<p>
|
||||
A few operation modes can be selected with the mode word.
|
||||
</p>
|
||||
@ -113,70 +128,234 @@
|
||||
<th colspan="3">The Mode Word</th>
|
||||
<tr> <td>Bits</td><td>Value</td><td>Description</td>
|
||||
</tr>
|
||||
<tr> <td rowspan="4"align="center">0..1</td><td align="center">0</td>
|
||||
<td>Uses TPV to get absolute time stamps for full
|
||||
synchronization. If PPS is available , it is used to improve
|
||||
the precision, but the clock can work without it.</td>
|
||||
<tr> <td rowspan="4"align="center">0..1</td>
|
||||
<td align="center">0</td>
|
||||
<td>STI only operation. This mode is affected by the timing
|
||||
stability of whatever protocol is used between the GPS
|
||||
device and GPSD.
|
||||
<br>
|
||||
Running on STI only is not recommended in general. Possible
|
||||
use cases include:
|
||||
<ul>
|
||||
<li>The receiver does not provide a PPS signal.
|
||||
<li>The receiver <i>does</i> provide a PPS signal and
|
||||
the secondary PPS unit is used.
|
||||
<li>The receiver has a stable serial timing and a proper
|
||||
fudge can be established.
|
||||
<li>You have other time sources available and want to
|
||||
establish a useful fudge value for <tt>time2</tt>.
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="center">1</td>
|
||||
<td>Require TPV <b>and</b> PPS to work.</td>
|
||||
<tr>
|
||||
<td align="center">1</td>
|
||||
<td>Strict operation. This mode needs a valid PPS and a
|
||||
valid STI to combine the absolute time from the STI with
|
||||
the time stamp from the PPS record. Does not feed clock
|
||||
samples if no valid PPS+STI pair is available.
|
||||
<br><br>
|
||||
This type of operation results in an ordinary clock with a
|
||||
very low jitter as long as the PPS data is available, but
|
||||
the clock fails once PPS drops out. This mode is a
|
||||
possible choice for receivers that provide a PPS signal
|
||||
most of the time but have an unstable serial timing that
|
||||
cannot be fudge-compensated.
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="center">2</td>
|
||||
<td>Ignore PPS data, run on TPV only. This is not a
|
||||
recommended mode unless the serial timing is very stable
|
||||
and GPSD provides an information element in TPV that
|
||||
indicates the receive time of the fix data.</td>
|
||||
<td>Automatic mode. Tries to operate in strict mode unless
|
||||
it fails to process valid samples for some time, currently
|
||||
120s. Then it reverts to STI-only operation until the PPS
|
||||
is stable again for 40s, when strict mode is engaged
|
||||
again.
|
||||
<br><br><b>Important Notice: This is an expiremental
|
||||
feature!</b><br> Switching between strict and STI-only
|
||||
mode will cause changes in offset and jitter. Use this
|
||||
mode only if STI-only works fairly well with your setup,
|
||||
or if you expect longer dropouts of the PPS signal and
|
||||
prefer to use STI alone over not getting synchronised at
|
||||
all.</td>
|
||||
</tr>
|
||||
<tr><td align="center">3</td>
|
||||
<td>PPS-only mode. Ignores TPV and does only the PPS phase
|
||||
correction. This means that some other source must get NTPD
|
||||
close to synchronisation; only after that happened and the
|
||||
phase shift between the system clock and the PPS pulse is
|
||||
less than 125msec the PPS lock will be engaged.</td>
|
||||
<tr>
|
||||
<td align="center">3</td>
|
||||
<td><i>(reserved for future extension, do not use)</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">2..31</td>
|
||||
<td colspan="2"><i>(reserved for future extension, do not
|
||||
use)</i></td>
|
||||
</tr>
|
||||
<tf colspan="3"><b>IMPORTANT: work in progress, mode
|
||||
word ignored right now. Fixed mode '0' operation.</b></tf>
|
||||
</table>
|
||||
</p>
|
||||
|
||||
<h4>Syslog flood throttle</h4>
|
||||
<p>This driver can create a lot of syslog messages when things go
|
||||
wrong, and cluttering the log files is frowned upon. So we attempt
|
||||
to log persistent or recurring errors only once per hour. On the
|
||||
other hand, when tracking a problem the syslog flood throttle can
|
||||
get into the way.</p>
|
||||
<p>Therefore, fudge <i>flag3</i> can be used to <i>disable</i> the
|
||||
flood throttle at any time; the throttle is engaged by
|
||||
default. Running with the syslog flood throttle disabled for
|
||||
lengthy time is not recommended unless the log files are closely
|
||||
monitored.</p>
|
||||
<!-- --------------------------------------------------------- -->
|
||||
|
||||
<h4>Fudge Factors</h4>
|
||||
<br><h4>Syslog flood throttle</h4>
|
||||
<p>This driver can create a lot of syslog messages when things go
|
||||
wrong, and cluttering the log files is frowned upon. So we
|
||||
attempt to log persistent or recurring errors only once per
|
||||
hour. On the other hand, when tracking a problem the syslog
|
||||
flood throttle can get into the way.</p>
|
||||
<p>Therefore, fudge <i>flag3</i> can be used to <i>disable</i> the
|
||||
flood throttle at any time; the throttle is engaged by
|
||||
default. Running with the syslog flood throttle disabled for
|
||||
lengthy time is not recommended unless the log files are closely
|
||||
monitored.</p>
|
||||
|
||||
<!-- --------------------------------------------------------- -->
|
||||
|
||||
<br><h4>PPS secondary clock unit</h4>
|
||||
<p>Units with numbers ≥128 act as secondary clock unit for the
|
||||
primary clock unit (u mod 128). A secondary unit processes only
|
||||
the PPS data from <i>GPSD</i> and needs the corresponding master
|
||||
unit to work<a href="#fn1" name="fn1bl"><sup>1</sup></a>. Use
|
||||
the 'noselect' keyword on the primary unit if you are not
|
||||
interested in its data.
|
||||
</p><p>The secondary unit employs the usual precautions before
|
||||
feeding clock samples:</p>
|
||||
<ul>
|
||||
<li>The system must be already in a synchronised state.
|
||||
<li>The system offset must be less than 400ms absolute.
|
||||
<li>The phase adjustment from the PPS signal must also be less
|
||||
than 400ms absolute.
|
||||
</ul>
|
||||
<p>If fudge flag <tt>flag1</tt> is set for the secondary unit, the
|
||||
unit asserts the PPS flag on the clock as long as PPS data is
|
||||
available. This makes the unit eligible as PPS peer and should
|
||||
only be used if the GPS receiver can be trusted for the quality
|
||||
of its PPS signal<a href="fn2"
|
||||
name="fn2bl"><sup>2</sup></a>. The PPS flag gets cleared if no
|
||||
PPS records can be aquired for some time. The unit also flushes
|
||||
the sample buffer at this point to avoid the use of stale PPS
|
||||
data.</p>
|
||||
<p><b>Attention:</b> This unit uses its own PPS fudge value
|
||||
which must be set as fudge <tt>time1</tt>. Only the fudge
|
||||
values <tt>time1</tt> and <tt>flag1</tt> have an impact on secondary
|
||||
units.</p>
|
||||
|
||||
<!-- --------------------------------------------------------- -->
|
||||
|
||||
<br><h4>Clockstats</h4>
|
||||
<p>If flag4 is set when the driver is polled, a clockstats record
|
||||
is written for the primary clock unit. (The secondary PPS unit
|
||||
does not provide clock stats on its own.) The first 3 fields are
|
||||
the normal date, time, and IP address common to all clockstats
|
||||
records.
|
||||
</p><p>
|
||||
<table border="1" frame="box" rules="all">
|
||||
<th colspan="2">The Clockstats Line</th>
|
||||
<tr> <td>field</td><td>Description</td> </tr>
|
||||
<tr>
|
||||
<td align="center">1</td>
|
||||
<td>Date as day number since NTP epoch.</td>
|
||||
</tr><tr>
|
||||
<td align="center">2</td>
|
||||
<td>Time as seconds since midnight.</td>
|
||||
</tr><tr>
|
||||
<td align="center">3</td>
|
||||
<td>(Pseudo-) IP address of clock unit.</td>
|
||||
</tr><tr>
|
||||
<td align="center">4</td>
|
||||
<td>Number of received known JSON records since last
|
||||
poll. The driver knows about TPV, PPS, TOFF, VERSION and
|
||||
WATCH records; others are silently ignored.
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td align="center">5</td>
|
||||
<td>Bad replies since last poll. A record is considered
|
||||
malformed or a bad reply when it is missing vital fields
|
||||
or the fields contain malformed data that cannot be
|
||||
parsed.
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td align="center">6</td>
|
||||
<td>Number of sample cycles since last poll that were
|
||||
discarded because there was no GPS fix. This is
|
||||
effectively the number of TPV records with a fix value
|
||||
< 2 or without a time stamp.
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td align="center">7</td>
|
||||
<td>Number of serial time information records (TPV or TOFF,
|
||||
depending on the GPSD version) received since last poll.
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td align="center">8</td>
|
||||
<td>Number of serial time information records used for
|
||||
clock samples since the last poll.
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td align="center">9</td>
|
||||
<td>Number of PPS records received since the last poll.</td>
|
||||
</tr><tr>
|
||||
<td align="center">10</td>
|
||||
<td>Number of PPS records used for clock samples on the
|
||||
secondary channel since the last poll.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
|
||||
<!-- --------------------------------------------------------- -->
|
||||
|
||||
<br><h4>Fudge Factors</h4>
|
||||
|
||||
<dl>
|
||||
<dt><tt>time1 <i>time</i></tt></dt>
|
||||
<dd>Specifies the PPS time offset calibration factor, in seconds
|
||||
and fraction, with default 0.0.</dd>
|
||||
<dt><a name="fudgetime2"><tt>time2 <i>time</i></tt></a></dt>
|
||||
<dd>Specifies the TPV time offset calibration factor, in seconds
|
||||
and fraction, with default 0.0.</dd>
|
||||
<dd><em>[Primary Unit]</em> Specifies the TPV/TIME time offset
|
||||
calibration factor, in seconds and fraction, with default
|
||||
0.0.</dd>
|
||||
<dt><tt>stratum <i>number</i></tt></dt>
|
||||
<dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.</dd>
|
||||
<dd>Specifies the driver stratum, in decimal from 0 to 15, with
|
||||
default 0.</dd>
|
||||
<dt><tt>refid <i>string</i></tt></dt>
|
||||
<dd>Specifies the driver reference identifier, an ASCII string
|
||||
from one to four characters, with default <tt>GPSD</tt>.</dd>
|
||||
<dt><tt>flag1 0 | 1</tt></dt><dd><i>(not used)</i></dd>
|
||||
<dt><tt>flag2 0 | 1</tt></dt><dd><i>(not used)</i></dd>
|
||||
<dt><tt>flag3 0 | 1</tt></dt><dd>If set, <i>disable</i> the
|
||||
log throttle. Useful when tracking problems in the interaction
|
||||
between <i>GPSD</i> and <i>NTPD</i>, since now all error
|
||||
events are logged. Persistent/recurrent errors can easily fill
|
||||
up the log, so this should only be enabled during bug
|
||||
hunts.</dd>
|
||||
<dt><tt>flag4 0 | 1</tt></dt><dd>If set, write a clock stats
|
||||
line on every poll cycle.</dd>
|
||||
<dt><tt>flag1 0 | 1</tt></dt><dd><em>[<b>Secondary</b>
|
||||
Unit]</em> When set, flags the secondary clock unit as a
|
||||
potential PPS peer as long as good PPS data is available.
|
||||
</dd>
|
||||
<dt><tt>flag2 0 | 1</tt></dt>
|
||||
<dd><em>[Primary Unit]</em> When set, <u>disables</u> the
|
||||
processing of incoming PPS records. Intended as an aide to
|
||||
test the effects of a PPS dropout when using automatic mode
|
||||
(mode 2).
|
||||
</dd>
|
||||
<dt><tt>flag3 0 | 1</tt></dt><dd><em>[Primary Unit]</em>
|
||||
If set, <u>disables</u> the log throttle. Useful when tracking
|
||||
problems in the interaction between <i>GPSD</i> and <i>NTPD</i>,
|
||||
since now all error events are logged. Persistent/recurrent
|
||||
errors can easily fill up the log, so this should only be
|
||||
enabled during bug hunts.</dd>
|
||||
<dt><tt>flag4 0 | 1</tt></dt><dd><em>[Primary Unit]</em>
|
||||
If set, write a clock stats line on every poll cycle.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<!-- -- footnotes -------------------------------------------- -->
|
||||
|
||||
<hr>
|
||||
<p><a name="fn1" href="#fn1bl"><sup>1</sup>) </a>Data transmission
|
||||
an decoding is done only once by the primary unit. The decoded
|
||||
data is then processed independently in both clock units. This
|
||||
avoids double transmission over two sockets and decoding the
|
||||
same data twice, but the primary unit is always needed as a
|
||||
downside of this approach.
|
||||
</p>
|
||||
<p><a name="fn2" href="#fn2bl"><sup>2</sup>) </a>The clock driver
|
||||
suppresses the processing PPS records when the TPV/TIME data
|
||||
indicates the receiver has no fix. It can also deal with
|
||||
situations where the PPS signal is not delivered
|
||||
to <i>GPSD</i>. But once it is available, it is also processed
|
||||
and used to create samples. If a receiver cannot be trusted for
|
||||
the precision of its PPS signal, it should not be used to create
|
||||
a possible PPS peer: These get extra clout and can effectively
|
||||
become the sole source of input for the control loop. You do not
|
||||
want to use sloppy data for that.
|
||||
<hr>
|
||||
<p>Additional Information</p>
|
||||
<p><a href="../refclock.html">Reference Clock Drivers</a></p>
|
||||
<hr>
|
||||
|
@ -3,6 +3,7 @@
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
|
||||
<title>Miscellaneous Commands and Options</title>
|
||||
<!-- Changed by: Harlan Stenn, 29-Jun-2015 -->
|
||||
<link href="scripts/style.css" type="text/css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
@ -10,7 +11,7 @@
|
||||
<img src="pic/boom3.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
|
||||
<p>We have three, now looking for more.</p>
|
||||
<p>Last update:
|
||||
<!-- #BeginDate format:En2m -->28-Feb-2015 12:01<!-- #EndDate -->
|
||||
<!-- #BeginDate format:En2m -->29-Jun-2015 05:56<!-- #EndDate -->
|
||||
UTC</p>
|
||||
<br clear="left">
|
||||
<h4>Related Links</h4>
|
||||
@ -26,6 +27,8 @@
|
||||
<dd>This command specifies the complete path and name of the file used to record the frequency of the local clock oscillator. This is the same operation as the <tt>-f</tt> command line option. This command is mutually exclusive with the <tt>freq</tt> option of the <tt>tinker</tt> command.</dd>
|
||||
<dd> If the file exists, it is read at startup in order to set the initial frequency and then updated once per hour or more with the current frequency computed by the daemon. If the file name is specified, but the file itself does not exist, the starts with an initial 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.</dd>
|
||||
<dd>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 the current drift value into a temporary file and then renaming this file to replace the old version.</dd>
|
||||
<dt id="dscp"><tt>dscp <i>dscp</i></tt></dt>
|
||||
<dd>This command specifies the Differentiated Services Code Point (DSCP) value that is used in sent NTP packets. The default value is 46 for Expedited Forwarding (EF).</dd>
|
||||
<dt id="enable"><tt>enable [auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats]</tt><br>
|
||||
<tt>disable [auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats]</tt></dt>
|
||||
<dd>Provides a way to enable or disable various system options. Flags not mentioned are unaffected. Note that most of these flags can be modified remotely using <a href="ntpq.html"><tt>ntpq</tt></a> utility program's <tt>:config</tt> and <tt>config-from-file</tt> commands.
|
||||
@ -57,6 +60,8 @@
|
||||
<dd>This command loads the NIST leapseconds file and initializes the leapsecond values for the next leapsecond time, expiration time and TAI offset. The file can be obtained directly from NIST national time servers using <tt>ftp</tt> as the ASCII file <tt>pub/leap-seconds</tt>.</dd>
|
||||
<dd>The <i>leapfile</i> is scanned when <tt>ntpd</tt> processes the <tt>leapfile</tt> directive or when <tt>ntpd</tt> detects that <i>leapfile</i> has changed. <tt>ntpd</tt> checks once a day to see if the <i>leapfile</i> has changed.</dd>
|
||||
<dd>While not strictly a security function, the Autokey protocol provides means to securely retrieve the current or updated leapsecond values from a server.</dd>
|
||||
<dt id="leapsmearinterval"><tt>leapsmearinterval <i>seconds</i></tt></dt>
|
||||
<dd>This EXPERIMENTAL option is only available if <tt>ntpd</tt> was built with the <tt>--enable-leap-smear</tt> option to the <tt>configure</tt> script. It specifies the interval over which a leap second correction will be applied. Recommended values for this option are between 7200 (2 hours) and 86400 (24 hours). <b>DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS!</b> See http://bugs.ntp.org/2855 for more information.</dd>
|
||||
<dt id="logconfig"><tt>logconfig <i>configkeyword</i></tt></dt>
|
||||
<dd>This command controls the amount and type of output written to the system <tt>syslog</tt> facility or the alternate <tt>logfile</tt> log file. All <i><tt>configkeyword</tt></i> keywords can be prefixed with <tt>=</tt>, <tt>+</tt> and <tt>-</tt>, where <tt>=</tt> sets the <tt>syslogmask</tt>, <tt>+</tt> adds and <tt>-</tt> removes messages. <tt>syslog messages</tt> can be controlled in four classes (<tt>clock</tt>, <tt>peer</tt>, <tt>sys</tt> and <tt>sync</tt>). Within these classes four types of messages can be controlled: informational messages (<tt>info</tt>), event messages (<tt>events</tt>), statistics messages (<tt>statistics</tt>) and status messages (<tt>status</tt>).</dd>
|
||||
<dd>Configuration keywords are formed by concatenating the message class with the event class. The <tt>all</tt> prefix can be used instead of a message class. A message class may also be followed by the <tt>all</tt> keyword to enable/disable all messages of the respective message class. By default, <tt>logconfig</tt> output is set to <tt>allsync</tt>.</dd>
|
||||
@ -95,6 +100,18 @@
|
||||
<dd>This command is used in conjunction with the ACTS modem driver (type 18). The arguments consist of a maximum of 10 telephone numbers used to dial USNO, NIST or European time services. The Hayes command ATDT is normally prepended to the number, which can contain other modem control codes as well.</dd>
|
||||
<dt id="reset"><tt>reset [allpeers] [auth] [ctl] [io] [mem] [sys] [timer]</tt></dt>
|
||||
<dd>Reset one or more groups of counters maintained by ntpd and exposed by <tt>ntpq</tt> and <tt>ntpdc</tt>.</dd>
|
||||
<dt id="rlimit"><tt>rlimit [memlock <i>Nmegabytes</i> | stacksize <i>N4kPages</i> | filenum <i>Nfiledescriptors</i>]</tt></dt>
|
||||
<dd>This command alters certain process storage allocation limits, and is only available on some operating systems. Options are as follows:</dd>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><tt>memlock <i>Nmegabytes</i></tt></dt>
|
||||
<dd>Specify the number of megabytes of memory that can be allocated. Probably only available under Linux, this option is useful when dropping root (the <tt>-i</tt> option). The default is 32 megabytes. Setting this to zero will prevent any attemp to lock memory.</dd>
|
||||
<dt><tt>stacksize <i>N4kPages</i></tt></dt>
|
||||
<dd>Specifies the maximum size of the process stack on systems with the <tt>mlockall()</tt> function. Defaults to 50 4k pages (200 4k pages in OpenBSD).</dd>
|
||||
<dt><tt>filenum <i>Nfiledescriptors</i></tt></dt>
|
||||
<dd>Specifies the maximum number of file descriptors ntp may have open at the same time. Defaults to system default.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt id="saveconfigdir"><tt>saveconfigdir <i>directory_path</i></tt></dt>
|
||||
<dd>Specify the directory in which to write configuration snapshots requested with <tt>ntpq</tt>'s <a href="ntpq.html#saveconfig">saveconfig</a> command. If <tt>saveconfigdir</tt> does not appear in the configuration file, saveconfig requests are rejected by ntpd.</dd>
|
||||
<dt id="setvar"><tt>setvar <i>variable</i> [default]</tt></dt>
|
||||
@ -120,18 +137,6 @@
|
||||
<dd>Specifies the stepout threshold in seconds. The default without this command is 300 s. Since this option also affects the training and startup intervals, it should not be set less than the default. Further details are on the <a href="clock.html">Clock State Machine</a> page.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt id="rlimit"><tt>rlimit [memlock <i>Nmegabytes</i> | stacksize <i>N4kPages</i> | filenum <i>Nfiledescriptors</i>]</tt></dt>
|
||||
<dd>This command alters certain process storage allocation limits, and is only available on some operating systems. Options are as follows:</dd>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><tt>memlock <i>Nmegabytes</i></tt></dt>
|
||||
<dd>Specify the number of megabytes of memory that can be allocated. Probably only available under Linux, this option is useful when dropping root (the <tt>-i</tt> option). The default is 32 megabytes. Setting this to zero will prevent any attemp to lock memory.</dd>
|
||||
<dt><tt>stacksize <i>N4kPages</i></tt></dt>
|
||||
<dd>Specifies the maximum size of the process stack on systems with the <tt>mlockall()</tt> function. Defaults to 50 4k pages (200 4k pages in OpenBSD).</dd>
|
||||
<dt><tt>filenum <i>Nfiledescriptors</i></tt></dt>
|
||||
<dd>Specifies the maximum number of file descriptors ntp may have open at the same time. Defaults to system default.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt id="tos"><tt>tos [beacon <i>beacon</i> | ceiling <i>ceiling</i> | cohort {0 | 1} | floor <i>floor</i> | maxclock <i>maxclock </i>| maxdist <i>maxdist</i> | minclock <i>minclock</i> | mindist <i>mindist </i>| minsane <i>minsane</i> | orphan <i>stratum</i> | orphanwait <em>delay</em>]</tt></dt>
|
||||
<dd>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:</dd>
|
||||
<dd>
|
||||
|
@ -28,7 +28,7 @@
|
||||
<p>NTP Version 4 supports almost four dozen satellite, radio and telephone modem reference clocks plus several audio devices for instrumentation signals. A general description of the reference clock support is on this page. Additional information about each reference clock driver can be found via links from this page. Additional information is on the <a href="rdebug.html">Debugging Hints for Reference Clock Drivers</a> and <a href="howto.html">How To Write a Reference Clock Driver</a> pages. Information on how to support pulse-per-second (PPS) signals produced by some devices is on the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. All reference clock drivers require that the reference clock use only Coordinated Universal Time (UTC). Timezone and standard/daylight adjustments are performed by the operating system kernel.</p>
|
||||
<p>A reference clock will generally (though not always) be a radio timecode receiver synchronized to standard time as provided by NIST and USNO in the US, NRC in Canada and their counterparts elsewhere in the world. A device driver specific to each reference clock must be compiled in the distribution; however, most common radio, satellite and telephone modem clocks are included by default and are activated by configuration commands.</p>
|
||||
<p>Reference clocks are supported in the same way as ordinary NTP clients and use the same filter, select, cluster and combine algorithms. Drivers have addresses in the form 127.127.<i>t.u</i>, where <i>t</i> is the driver type and <i>u</i> is a unit number in the range 0-3 to distinguish multiple instances of the same driver. The connection to the computer is device dependent, usually a serial port, parallel port or special bus peripheral, but some can work directly from an audio codec or sound card. The particular device is specified by adding a soft link from the name used by the driver to the particular device name.</p>
|
||||
<p>The <tt>server</tt> command is used to configure a reference clock. Only the <tt>mode>,<tt>minpoll</tt>, <tt>maxpoll</tt>, and <tt>prefer</tt> options are supported for reference clocks, as described on the <a href="clockopt.html">Reference Clock Commands</a> page. The <tt>prefer</tt> option is discussed on the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. Some of these options have meaning only for selected clock drivers.</p>
|
||||
<p>The <tt>server</tt> command is used to configure a reference clock. Only the <tt>mode</tt>, <tt>minpoll</tt>, <tt>maxpoll</tt>, and <tt>prefer</tt> options are supported for reference clocks, as described on the <a href="clockopt.html">Reference Clock Commands</a> page. The <tt>prefer</tt> option is discussed on the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. Some of these options have meaning only for selected clock drivers.</p>
|
||||
<p>The <tt>fudge</tt> command can be used to provide additional information for individual drivers and normally follows immediately after the <tt>server</tt> command. The reference clock stratum is by default 0, so that the server stratum appears to clients as 1. The <tt>stratum</tt> option can be used to set the stratum to any value in the range 0 through 15. The <tt>refid</tt> option can be used to change the reference identifier, as might in the case when the driver is disciplined by a pulse-per-second (PPS) source. The device-dependent <tt>mode</tt>, <tt>time</tt> and <tt>flag</tt> options can provide additional driver customization.</p>
|
||||
<h4 id="spec">Special Considerations</h4>
|
||||
<p>The <a href="audio.html">Audio Drivers</a> page describes three software drivers that process audio signals from an audio codec or sound card. One is for the NIST time and frequency stations WWV and WWVH, another for the Canadian time and frequency station CHU. These require an external shortwave radio and antenna. A third is for the generic IRIG signal produced by some timing devices. Currently, these are supported in FreeBSD, Solaris and SunOS and likely in other system as well.</p>
|
||||
|
@ -64,6 +64,7 @@ noinst_HEADERS = \
|
||||
parse_conf.h \
|
||||
recvbuff.h \
|
||||
refclock_atom.h \
|
||||
refidsmear.h \
|
||||
ssl_applink.c \
|
||||
timepps-SCO.h \
|
||||
timepps-Solaris.h \
|
||||
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -16,6 +15,61 @@
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -35,8 +89,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = include
|
||||
DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \
|
||||
@ -67,6 +119,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -76,34 +129,69 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
@ -179,6 +267,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -295,6 +384,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -455,6 +545,7 @@ noinst_HEADERS = \
|
||||
parse_conf.h \
|
||||
recvbuff.h \
|
||||
refclock_atom.h \
|
||||
refidsmear.h \
|
||||
ssl_applink.c \
|
||||
timepps-SCO.h \
|
||||
timepps-Solaris.h \
|
||||
@ -481,7 +572,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign include/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -507,22 +597,25 @@ clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
@ -537,57 +630,12 @@ $(RECURSIVE_TARGETS):
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
@ -603,12 +651,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -620,15 +663,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -637,6 +676,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -673,13 +727,10 @@ distdir: $(DISTFILES)
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
@ -714,10 +765,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -795,22 +851,22 @@ ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||
install-am install-strip tags-recursive
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am check check-am clean clean-generic clean-libtool \
|
||||
ctags ctags-recursive distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -16,6 +15,61 @@
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -35,8 +89,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = include/isc
|
||||
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \
|
||||
@ -67,6 +119,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -76,21 +129,52 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -141,6 +225,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -257,6 +342,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -373,7 +459,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/isc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign include/isc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -398,26 +483,15 @@ mostlyclean-libtool:
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -429,15 +503,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -446,6 +516,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -494,10 +579,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -577,19 +667,21 @@ uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool ctags distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool cscopelist-am ctags ctags-am distclean \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
@ -80,6 +80,7 @@ typedef enum {
|
||||
} nic_rule_action;
|
||||
|
||||
|
||||
extern int qos;
|
||||
SOCKET move_fd(SOCKET fd);
|
||||
isc_boolean_t get_broadcastclient_flag(void);
|
||||
extern int is_ip_address(const char *, u_short, sockaddr_u *);
|
||||
|
@ -102,26 +102,35 @@ extern u_int32 addr2refid (sockaddr_u *);
|
||||
/* emalloc.c */
|
||||
#ifndef EREALLOC_CALLSITE /* ntp_malloc.h defines */
|
||||
extern void * ereallocz (void *, size_t, size_t, int);
|
||||
#define erealloczsite(p, n, o, z, f, l) ereallocz(p, n, o, (z))
|
||||
#define emalloc(n) ereallocz(NULL, n, 0, FALSE)
|
||||
extern void * oreallocarray (void *optr, size_t nmemb, size_t size);
|
||||
#define erealloczsite(p, n, o, z, f, l) ereallocz((p), (n), (o), (z))
|
||||
#define emalloc(n) ereallocz(NULL, (n), 0, FALSE)
|
||||
#define emalloc_zero(c) ereallocz(NULL, (c), 0, TRUE)
|
||||
#define erealloc(p, c) ereallocz(p, (c), 0, FALSE)
|
||||
#define erealloc_zero(p, n, o) ereallocz(p, n, (o), TRUE)
|
||||
extern char * estrdup_impl (const char *);
|
||||
#define erealloc(p, c) ereallocz((p), (c), 0, FALSE)
|
||||
#define erealloc_zero(p, n, o) ereallocz((p), (n), (o), TRUE)
|
||||
#define ereallocarray(p, n, s) oreallocarray((p), (n), (s))
|
||||
#define eallocarray(n, s) oreallocarray(NULL, (n), (s))
|
||||
extern char * estrdup_impl(const char *);
|
||||
#define estrdup(s) estrdup_impl(s)
|
||||
#else
|
||||
extern void * ereallocz (void *, size_t, size_t, int,
|
||||
const char *, int);
|
||||
extern void * oreallocarray (void *optr, size_t nmemb, size_t size,
|
||||
const char *, int);
|
||||
#define erealloczsite ereallocz
|
||||
#define emalloc(c) ereallocz(NULL, (c), 0, FALSE, \
|
||||
__FILE__, __LINE__)
|
||||
#define emalloc_zero(c) ereallocz(NULL, (c), 0, TRUE, \
|
||||
__FILE__, __LINE__)
|
||||
#define erealloc(p, c) ereallocz(p, (c), 0, FALSE, \
|
||||
#define erealloc(p, c) ereallocz((p), (c), 0, FALSE, \
|
||||
__FILE__, __LINE__)
|
||||
#define erealloc_zero(p, n, o) ereallocz(p, n, (o), TRUE, \
|
||||
#define erealloc_zero(p, n, o) ereallocz((p), (n), (o), TRUE, \
|
||||
__FILE__, __LINE__)
|
||||
extern char * estrdup_impl (const char *, const char *, int);
|
||||
#define ereallocarray(p, n, s) oreallocarray((p), (n), (s), \
|
||||
__FILE__, __LINE__)
|
||||
#define eallocarray(n, s) oreallocarray(NULL, (n), (s), \
|
||||
__FILE__, __LINE__)
|
||||
extern char * estrdup_impl(const char *, const char *, int);
|
||||
#define estrdup(s) estrdup_impl((s), __FILE__, __LINE__)
|
||||
#endif
|
||||
|
||||
|
@ -19,6 +19,11 @@
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
/* Bug 2813 */
|
||||
#ifdef HAVE_LIMITS_H
|
||||
# include <limits.h>
|
||||
#endif
|
||||
|
||||
#include "ntp_machine.h"
|
||||
|
||||
|
||||
|
@ -201,6 +201,7 @@ extern keyid_t session_key (sockaddr_u *, sockaddr_u *, keyid_t,
|
||||
extern int make_keylist (struct peer *, struct interface *);
|
||||
extern void key_expire (struct peer *);
|
||||
extern void crypto_update (void);
|
||||
extern void crypto_update_taichange(void);
|
||||
extern void crypto_config (int, char *);
|
||||
extern void crypto_setup (void);
|
||||
extern u_int crypto_ident (struct peer *);
|
||||
@ -222,6 +223,7 @@ extern void receive (struct recvbuf *);
|
||||
extern void peer_clear (struct peer *, const char *);
|
||||
extern void process_packet (struct peer *, struct pkt *, u_int);
|
||||
extern void clock_select (void);
|
||||
extern void set_sys_leap (u_char);
|
||||
|
||||
extern u_long leapsec; /* seconds to next leap (proximity class) */
|
||||
extern int leapdif; /* TAI difference step at next leap second*/
|
||||
@ -532,6 +534,11 @@ extern u_long current_time; /* seconds since startup */
|
||||
extern u_long timer_timereset;
|
||||
extern u_long timer_overflows;
|
||||
extern u_long timer_xmtcalls;
|
||||
extern int leap_sec_in_progress;
|
||||
#ifdef LEAP_SMEAR
|
||||
extern struct leap_smear_info leap_smear;
|
||||
extern int leap_smear_intv;
|
||||
#endif
|
||||
#ifdef SYS_WINNT
|
||||
HANDLE WaitableTimerHandle;
|
||||
#endif
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* parse.h,v 4.12 2007/01/14 08:36:03 kardel RELEASE_20070114_A
|
||||
*
|
||||
* Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1995-2015 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -141,7 +141,7 @@ extern unsigned int splclock (void);
|
||||
* feature information
|
||||
*/
|
||||
#define PARSEB_S_LEAP 0x00010000 /* supports LEAP */
|
||||
#define PARSEB_S_ANTENNA 0x00020000 /* supports antenna information */
|
||||
#define PARSEB_S_CALLBIT 0x00020000 /* supports callbit information */
|
||||
#define PARSEB_S_PPS 0x00040000 /* supports PPS time stamping */
|
||||
#define PARSEB_S_POSITION 0x00080000 /* supports position information (GPS) */
|
||||
|
||||
@ -167,7 +167,7 @@ extern unsigned int splclock (void);
|
||||
#define PARSE_LEAPSECOND(x) (PARSE_SYNC(x) && ((x) & PARSEB_LEAP_SECOND))
|
||||
|
||||
#define PARSE_S_LEAP(x) ((x) & PARSEB_S_LEAP)
|
||||
#define PARSE_S_ANTENNA(x) ((x) & PARSEB_S_ANTENNA)
|
||||
#define PARSE_S_CALLBIT(x) ((x) & PARSEB_S_CALLBIT)
|
||||
#define PARSE_S_PPS(x) ((x) & PARSEB_S_PPS)
|
||||
#define PARSE_S_POSITION(x) ((x) & PARSEB_S_POSITION)
|
||||
|
||||
|
3
include/refidsmear.h
Normal file
3
include/refidsmear.h
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
extern l_fp convertRefIDToLFP(uint32_t r);
|
||||
extern uint32_t convertLFPToRefID(l_fp num);
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -15,6 +14,61 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -34,7 +88,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = kernel
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \
|
||||
@ -65,6 +118,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -74,33 +128,67 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
@ -176,6 +264,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -292,6 +381,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -404,7 +494,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign kernel/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign kernel/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -430,22 +519,25 @@ clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
@ -460,57 +552,12 @@ $(RECURSIVE_TARGETS):
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
@ -526,12 +573,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -543,15 +585,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -560,6 +598,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -596,13 +649,10 @@ distdir: $(DISTFILES)
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
@ -637,10 +687,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -718,22 +773,22 @@ ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||
install-am install-strip tags-recursive
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am check check-am clean clean-generic clean-libtool \
|
||||
ctags ctags-recursive distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -16,6 +15,61 @@
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -35,8 +89,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = kernel/sys
|
||||
DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \
|
||||
@ -67,6 +119,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -76,21 +129,52 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -141,6 +225,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -257,6 +342,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -371,7 +457,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign kernel/sys/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign kernel/sys/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -396,26 +481,15 @@ mostlyclean-libtool:
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -427,15 +501,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -444,6 +514,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -492,10 +577,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -575,19 +665,21 @@ uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool ctags distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool cscopelist-am ctags ctags-am distclean \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
@ -147,6 +147,14 @@ internal_current(isc_interfaceiter_t *iter) {
|
||||
ifa = iter->pos;
|
||||
|
||||
#ifdef __linux
|
||||
/*
|
||||
* [Bug 2792]
|
||||
* burnicki: iter->pos is usually never NULL here (anymore?),
|
||||
* so linux_if_inet6_current(iter) is never called here.
|
||||
* However, that routine would check (under Linux), if the
|
||||
* interface is in a tentative state, e.g. if there's no link
|
||||
* yet but an IPv6 address has already be assigned.
|
||||
*/
|
||||
if (iter->pos == NULL)
|
||||
return (linux_if_inet6_current(iter));
|
||||
#endif
|
||||
@ -154,6 +162,17 @@ internal_current(isc_interfaceiter_t *iter) {
|
||||
INSIST(ifa != NULL);
|
||||
INSIST(ifa->ifa_name != NULL);
|
||||
|
||||
|
||||
#ifdef IFF_RUNNING
|
||||
/*
|
||||
* [Bug 2792]
|
||||
* burnicki: if the interface is not running then
|
||||
* it may be in a tentative state. See above.
|
||||
*/
|
||||
if ((ifa->ifa_flags & IFF_RUNNING) == 0)
|
||||
return (ISC_R_IGNORE);
|
||||
#endif
|
||||
|
||||
if (ifa->ifa_addr == NULL)
|
||||
return (ISC_R_IGNORE);
|
||||
|
||||
|
@ -13,15 +13,23 @@ test: jsmn_test
|
||||
./jsmn_test
|
||||
|
||||
jsmn_test: jsmn_test.o
|
||||
$(CC) -L. -ljsmn $< -o $@
|
||||
$(CC) $(LDFLAGS) -L. -ljsmn $< -o $@
|
||||
|
||||
jsmn_test.o: jsmn_test.c libjsmn.a
|
||||
|
||||
simple_example: example/simple.o libjsmn.a
|
||||
$(CC) $(LDFLAGS) $^ -o $@
|
||||
|
||||
jsondump: example/jsondump.o libjsmn.a
|
||||
$(CC) $(LDFLAGS) $^ -o $@
|
||||
|
||||
clean:
|
||||
rm -f jsmn.o jsmn_test.o
|
||||
rm -f jsmn.o jsmn_test.o example/simple.o
|
||||
rm -f jsmn_test
|
||||
rm -f jsmn_test.exe
|
||||
rm -f libjsmn.a
|
||||
rm -f simple_example
|
||||
rm -f jsondump
|
||||
|
||||
.PHONY: all clean test
|
||||
|
||||
|
@ -82,9 +82,8 @@ To clone the repository you should have mercurial installed. Just run:
|
||||
|
||||
$ hg clone http://bitbucket.org/zserge/jsmn jsmn
|
||||
|
||||
Repository layout is simple: jsmn.c and jsmn.h are library files; demo.c is an
|
||||
example of how to use jsmn (it is also used in unit tests); test.sh is a test
|
||||
script. You will also find README, LICENSE and Makefile files inside.
|
||||
Repository layout is simple: jsmn.c and jsmn.h are library files, tests are in
|
||||
the jsmn\_test.c, you will also find README, LICENSE and Makefile files inside.
|
||||
|
||||
To build the library, run `make`. It is also recommended to run `make test`.
|
||||
Let me know, if some tests fail.
|
||||
@ -127,20 +126,27 @@ to simplify string extraction from JSON data.
|
||||
|
||||
All job is done by `jsmn_parser` object. You can initialize a new parser using:
|
||||
|
||||
struct jsmn_parser parser;
|
||||
jsmn_parser parser;
|
||||
jsmntok_t tokens[10];
|
||||
|
||||
jsmn_init(&parser);
|
||||
|
||||
// js - pointer to JSON string
|
||||
// tokens - an array of tokens available
|
||||
// 10 - number of tokens available
|
||||
jsmn_init_parser(&parser, js, tokens, 10);
|
||||
jsmn_parse(&parser, js, tokens, 10);
|
||||
|
||||
This will create a parser, that can parse up to 10 JSON tokens from `js` string.
|
||||
This will create a parser, and then it tries to parse up to 10 JSON tokens from
|
||||
the `js` string.
|
||||
|
||||
A non-negative reutrn value of `jsmn_parse` is the number of tokens actually
|
||||
used by the parser.
|
||||
Passing NULL instead of the tokens array would not store parsing results, but
|
||||
instead the function will return the value of tokens needed to parse the given
|
||||
string. This can be useful if you don't know yet how many tokens to allocate.
|
||||
|
||||
Later, you can use `jsmn_parse(&parser)` function to process JSON string with the parser.
|
||||
If something goes wrong, you will get an error. Error will be one of these:
|
||||
|
||||
* `JSMN_SUCCESS` - everything went fine. String was parsed
|
||||
* `JSMN_ERROR_INVAL` - bad token, JSON string is corrupted
|
||||
* `JSMN_ERROR_NOMEM` - not enough tokens, JSON string is too large
|
||||
* `JSMN_ERROR_PART` - JSON string is too short, expecting more JSON data
|
||||
|
112
libjsmn/example/jsondump.c
Normal file
112
libjsmn/example/jsondump.c
Normal file
@ -0,0 +1,112 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include "../jsmn.h"
|
||||
|
||||
/*
|
||||
* An example of reading JSON from stdin and printing its content to stdout.
|
||||
* The output looks like YAML, but I'm not sure if it's really compatible.
|
||||
*/
|
||||
|
||||
static int dump(const char *js, jsmntok_t *t, size_t count, int indent) {
|
||||
int i, j, k;
|
||||
if (count == 0) {
|
||||
return 0;
|
||||
}
|
||||
if (t->type == JSMN_PRIMITIVE) {
|
||||
printf("%.*s", t->end - t->start, js+t->start);
|
||||
return 1;
|
||||
} else if (t->type == JSMN_STRING) {
|
||||
printf("'%.*s'", t->end - t->start, js+t->start);
|
||||
return 1;
|
||||
} else if (t->type == JSMN_OBJECT) {
|
||||
printf("\n");
|
||||
j = 0;
|
||||
for (i = 0; i < t->size; i++) {
|
||||
for (k = 0; k < indent; k++) printf(" ");
|
||||
j += dump(js, t+1+j, count-j, indent+1);
|
||||
printf(": ");
|
||||
j += dump(js, t+1+j, count-j, indent+1);
|
||||
printf("\n");
|
||||
}
|
||||
return j+1;
|
||||
} else if (t->type == JSMN_ARRAY) {
|
||||
j = 0;
|
||||
printf("\n");
|
||||
for (i = 0; i < t->size; i++) {
|
||||
for (k = 0; k < indent-1; k++) printf(" ");
|
||||
printf(" - ");
|
||||
j += dump(js, t+1+j, count-j, indent+1);
|
||||
printf("\n");
|
||||
}
|
||||
return j+1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int r;
|
||||
int eof_expected = 0;
|
||||
char *js = NULL;
|
||||
size_t jslen = 0;
|
||||
char buf[BUFSIZ];
|
||||
|
||||
jsmn_parser p;
|
||||
jsmntok_t *tok;
|
||||
size_t tokcount = 2;
|
||||
|
||||
/* Prepare parser */
|
||||
jsmn_init(&p);
|
||||
|
||||
/* Allocate some tokens as a start */
|
||||
tok = malloc(sizeof(*tok) * tokcount);
|
||||
if (tok == NULL) {
|
||||
fprintf(stderr, "malloc(): errno=%d\n", errno);
|
||||
return 3;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
/* Read another chunk */
|
||||
r = fread(buf, 1, sizeof(buf), stdin);
|
||||
if (r < 0) {
|
||||
fprintf(stderr, "fread(): %d, errno=%d\n", r, errno);
|
||||
return 1;
|
||||
}
|
||||
if (r == 0) {
|
||||
if (eof_expected != 0) {
|
||||
return 0;
|
||||
} else {
|
||||
fprintf(stderr, "fread(): unexpected EOF\n");
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
js = realloc(js, jslen + r + 1);
|
||||
if (js == NULL) {
|
||||
fprintf(stderr, "realloc(): errno=%d\n", errno);
|
||||
return 3;
|
||||
}
|
||||
strncpy(js + jslen, buf, r);
|
||||
jslen = jslen + r;
|
||||
|
||||
again:
|
||||
r = jsmn_parse(&p, js, jslen, tok, tokcount);
|
||||
if (r < 0) {
|
||||
if (r == JSMN_ERROR_NOMEM) {
|
||||
tokcount = tokcount * 2;
|
||||
tok = realloc(tok, sizeof(*tok) * tokcount);
|
||||
if (tok == NULL) {
|
||||
fprintf(stderr, "realloc(): errno=%d\n", errno);
|
||||
return 3;
|
||||
}
|
||||
goto again;
|
||||
}
|
||||
} else {
|
||||
dump(js, tok, p.toknext, 0);
|
||||
eof_expected = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
75
libjsmn/example/simple.c
Normal file
75
libjsmn/example/simple.c
Normal file
@ -0,0 +1,75 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "../jsmn.h"
|
||||
|
||||
/*
|
||||
* A small example of jsmn parsing when JSON structure is known and number of
|
||||
* tokens is predictable.
|
||||
*/
|
||||
|
||||
const char *JSON_STRING =
|
||||
"{\"user\": \"johndoe\", \"admin\": false, \"uid\": 1000,\n "
|
||||
"\"groups\": [\"users\", \"wheel\", \"audio\", \"video\"]}";
|
||||
|
||||
static int jsoneq(const char *json, jsmntok_t *tok, const char *s) {
|
||||
if (tok->type == JSMN_STRING && (int) strlen(s) == tok->end - tok->start &&
|
||||
strncmp(json + tok->start, s, tok->end - tok->start) == 0) {
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int i;
|
||||
int r;
|
||||
jsmn_parser p;
|
||||
jsmntok_t t[128]; /* We expect no more than 128 tokens */
|
||||
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, JSON_STRING, strlen(JSON_STRING), t, sizeof(t)/sizeof(t[0]));
|
||||
if (r < 0) {
|
||||
printf("Failed to parse JSON: %d\n", r);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Assume the top-level element is an object */
|
||||
if (r < 1 || t[0].type != JSMN_OBJECT) {
|
||||
printf("Object expected\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Loop over all keys of the root object */
|
||||
for (i = 1; i < r; i++) {
|
||||
if (jsoneq(JSON_STRING, &t[i], "user") == 0) {
|
||||
/* We may use strndup() to fetch string value */
|
||||
printf("- User: %.*s\n", t[i+1].end-t[i+1].start,
|
||||
JSON_STRING + t[i+1].start);
|
||||
i++;
|
||||
} else if (jsoneq(JSON_STRING, &t[i], "admin") == 0) {
|
||||
/* We may additionally check if the value is either "true" or "false" */
|
||||
printf("- Admin: %.*s\n", t[i+1].end-t[i+1].start,
|
||||
JSON_STRING + t[i+1].start);
|
||||
i++;
|
||||
} else if (jsoneq(JSON_STRING, &t[i], "uid") == 0) {
|
||||
/* We may want to do strtol() here to get numeric value */
|
||||
printf("- UID: %.*s\n", t[i+1].end-t[i+1].start,
|
||||
JSON_STRING + t[i+1].start);
|
||||
i++;
|
||||
} else if (jsoneq(JSON_STRING, &t[i], "groups") == 0) {
|
||||
int j;
|
||||
printf("- Groups:\n");
|
||||
if (t[i+1].type != JSMN_ARRAY) {
|
||||
continue; /* We expect groups to be an array of strings */
|
||||
}
|
||||
for (j = 0; j < t[i+1].size; j++) {
|
||||
jsmntok_t *g = &t[i+j+2];
|
||||
printf(" * %.*s\n", g->end - g->start, JSON_STRING + g->start);
|
||||
}
|
||||
i += t[i+1].size + 1;
|
||||
} else {
|
||||
printf("Unexpected key: %.*s\n", t[i].end-t[i].start,
|
||||
JSON_STRING + t[i].start);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
107
libjsmn/jsmn.c
107
libjsmn/jsmn.c
@ -1,15 +1,14 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "jsmn.h"
|
||||
|
||||
/**
|
||||
* Allocates a fresh unused token from the token pull.
|
||||
*/
|
||||
static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser,
|
||||
static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser,
|
||||
jsmntok_t *tokens, size_t num_tokens) {
|
||||
jsmntok_t *tok;
|
||||
if ((size_t)parser->toknext >= num_tokens) {
|
||||
if (parser->toknext >= num_tokens) {
|
||||
return NULL;
|
||||
}
|
||||
tok = &tokens[parser->toknext++];
|
||||
@ -24,7 +23,7 @@ static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser,
|
||||
/**
|
||||
* Fills token type and boundaries.
|
||||
*/
|
||||
static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type,
|
||||
static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type,
|
||||
int start, int end) {
|
||||
token->type = type;
|
||||
token->start = start;
|
||||
@ -36,13 +35,13 @@ static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type,
|
||||
* Fills next available token with JSON primitive.
|
||||
*/
|
||||
static jsmnerr_t jsmn_parse_primitive(jsmn_parser *parser, const char *js,
|
||||
jsmntok_t *tokens, size_t num_tokens) {
|
||||
size_t len, jsmntok_t *tokens, size_t num_tokens) {
|
||||
jsmntok_t *token;
|
||||
int start;
|
||||
|
||||
start = parser->pos;
|
||||
|
||||
for (; js[parser->pos] != '\0'; parser->pos++) {
|
||||
for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) {
|
||||
switch (js[parser->pos]) {
|
||||
#ifndef JSMN_STRICT
|
||||
/* In strict mode primitive must be followed by "," or "}" or "]" */
|
||||
@ -64,6 +63,10 @@ static jsmnerr_t jsmn_parse_primitive(jsmn_parser *parser, const char *js,
|
||||
#endif
|
||||
|
||||
found:
|
||||
if (tokens == NULL) {
|
||||
parser->pos--;
|
||||
return 0;
|
||||
}
|
||||
token = jsmn_alloc_token(parser, tokens, num_tokens);
|
||||
if (token == NULL) {
|
||||
parser->pos = start;
|
||||
@ -74,14 +77,14 @@ static jsmnerr_t jsmn_parse_primitive(jsmn_parser *parser, const char *js,
|
||||
token->parent = parser->toksuper;
|
||||
#endif
|
||||
parser->pos--;
|
||||
return JSMN_SUCCESS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filsl next token with JSON string.
|
||||
*/
|
||||
static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js,
|
||||
jsmntok_t *tokens, size_t num_tokens) {
|
||||
size_t len, jsmntok_t *tokens, size_t num_tokens) {
|
||||
jsmntok_t *token;
|
||||
|
||||
int start = parser->pos;
|
||||
@ -89,11 +92,14 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js,
|
||||
parser->pos++;
|
||||
|
||||
/* Skip starting quote */
|
||||
for (; js[parser->pos] != '\0'; parser->pos++) {
|
||||
for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) {
|
||||
char c = js[parser->pos];
|
||||
|
||||
/* Quote: end of string */
|
||||
if (c == '\"') {
|
||||
if (tokens == NULL) {
|
||||
return 0;
|
||||
}
|
||||
token = jsmn_alloc_token(parser, tokens, num_tokens);
|
||||
if (token == NULL) {
|
||||
parser->pos = start;
|
||||
@ -103,13 +109,12 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js,
|
||||
#ifdef JSMN_PARENT_LINKS
|
||||
token->parent = parser->toksuper;
|
||||
#endif
|
||||
return JSMN_SUCCESS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Backslash: Quoted symbol expected */
|
||||
if (c == '\\') {
|
||||
int i = 0;
|
||||
|
||||
if (c == '\\' && parser->pos + 1 < len) {
|
||||
int i;
|
||||
parser->pos++;
|
||||
switch (js[parser->pos]) {
|
||||
/* Allowed escaped symbols */
|
||||
@ -119,7 +124,7 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js,
|
||||
/* Allows escaped symbol \uXXXX */
|
||||
case 'u':
|
||||
parser->pos++;
|
||||
for(; i < 4 && js[parser->pos] != '\0'; i++) {
|
||||
for(i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; i++) {
|
||||
/* If it isn't a hex character we have an error */
|
||||
if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */
|
||||
(js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */
|
||||
@ -145,19 +150,24 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js,
|
||||
/**
|
||||
* Parse JSON string and fill tokens.
|
||||
*/
|
||||
jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, jsmntok_t *tokens,
|
||||
unsigned int num_tokens) {
|
||||
jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, size_t len,
|
||||
jsmntok_t *tokens, unsigned int num_tokens) {
|
||||
jsmnerr_t r;
|
||||
int i;
|
||||
jsmntok_t *token;
|
||||
int count = 0;
|
||||
|
||||
for (; js[parser->pos] != '\0'; parser->pos++) {
|
||||
for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) {
|
||||
char c;
|
||||
jsmntype_t type;
|
||||
|
||||
c = js[parser->pos];
|
||||
switch (c) {
|
||||
case '{': case '[':
|
||||
count++;
|
||||
if (tokens == NULL) {
|
||||
break;
|
||||
}
|
||||
token = jsmn_alloc_token(parser, tokens, num_tokens);
|
||||
if (token == NULL)
|
||||
return JSMN_ERROR_NOMEM;
|
||||
@ -172,6 +182,8 @@ jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, jsmntok_t *tokens,
|
||||
parser->toksuper = parser->toknext - 1;
|
||||
break;
|
||||
case '}': case ']':
|
||||
if (tokens == NULL)
|
||||
break;
|
||||
type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY);
|
||||
#ifdef JSMN_PARENT_LINKS
|
||||
if (parser->toknext < 1) {
|
||||
@ -216,25 +228,56 @@ jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, jsmntok_t *tokens,
|
||||
#endif
|
||||
break;
|
||||
case '\"':
|
||||
r = jsmn_parse_string(parser, js, tokens, num_tokens);
|
||||
r = jsmn_parse_string(parser, js, len, tokens, num_tokens);
|
||||
if (r < 0) return r;
|
||||
if (parser->toksuper != -1)
|
||||
count++;
|
||||
if (parser->toksuper != -1 && tokens != NULL)
|
||||
tokens[parser->toksuper].size++;
|
||||
break;
|
||||
case '\t' : case '\r' : case '\n' : case ':' : case ',': case ' ':
|
||||
case '\t' : case '\r' : case '\n' : case ' ':
|
||||
break;
|
||||
case ':':
|
||||
parser->toksuper = parser->toknext - 1;
|
||||
break;
|
||||
case ',':
|
||||
if (tokens != NULL &&
|
||||
tokens[parser->toksuper].type != JSMN_ARRAY &&
|
||||
tokens[parser->toksuper].type != JSMN_OBJECT) {
|
||||
#ifdef JSMN_PARENT_LINKS
|
||||
parser->toksuper = tokens[parser->toksuper].parent;
|
||||
#else
|
||||
for (i = parser->toknext - 1; i >= 0; i--) {
|
||||
if (tokens[i].type == JSMN_ARRAY || tokens[i].type == JSMN_OBJECT) {
|
||||
if (tokens[i].start != -1 && tokens[i].end == -1) {
|
||||
parser->toksuper = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
#ifdef JSMN_STRICT
|
||||
/* In strict mode primitives are: numbers and booleans */
|
||||
case '-': case '0': case '1' : case '2': case '3' : case '4':
|
||||
case '5': case '6': case '7' : case '8': case '9':
|
||||
case 't': case 'f': case 'n' :
|
||||
/* And they must not be keys of the object */
|
||||
if (tokens != NULL) {
|
||||
jsmntok_t *t = &tokens[parser->toksuper];
|
||||
if (t->type == JSMN_OBJECT ||
|
||||
(t->type == JSMN_STRING && t->size != 0)) {
|
||||
return JSMN_ERROR_INVAL;
|
||||
}
|
||||
}
|
||||
#else
|
||||
/* In non-strict mode every unquoted value is a primitive */
|
||||
default:
|
||||
#endif
|
||||
r = jsmn_parse_primitive(parser, js, tokens, num_tokens);
|
||||
r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens);
|
||||
if (r < 0) return r;
|
||||
if (parser->toksuper != -1)
|
||||
count++;
|
||||
if (parser->toksuper != -1 && tokens != NULL)
|
||||
tokens[parser->toksuper].size++;
|
||||
break;
|
||||
|
||||
@ -243,22 +286,22 @@ jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, jsmntok_t *tokens,
|
||||
default:
|
||||
return JSMN_ERROR_INVAL;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
if (tokens != NULL) {
|
||||
for (i = parser->toknext - 1; i >= 0; i--) {
|
||||
/* Unmatched opened object or array */
|
||||
if (tokens[i].start != -1 && tokens[i].end == -1) {
|
||||
return JSMN_ERROR_PART;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = parser->toknext - 1; i >= 0; i--) {
|
||||
/* Unmatched opened object or array */
|
||||
if (tokens[i].start != -1 && tokens[i].end == -1) {
|
||||
return JSMN_ERROR_PART;
|
||||
}
|
||||
}
|
||||
|
||||
return JSMN_SUCCESS;
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new parser based over a given buffer with an array of tokens
|
||||
* Creates a new parser based over a given buffer with an array of tokens
|
||||
* available.
|
||||
*/
|
||||
void jsmn_init(jsmn_parser *parser) {
|
||||
|
@ -1,6 +1,12 @@
|
||||
#ifndef __JSMN_H_
|
||||
#define __JSMN_H_
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* JSON type identifier. Basic types are:
|
||||
* o Object
|
||||
@ -21,9 +27,7 @@ typedef enum {
|
||||
/* Invalid character inside JSON string */
|
||||
JSMN_ERROR_INVAL = -2,
|
||||
/* The string is not a full JSON packet, more bytes expected */
|
||||
JSMN_ERROR_PART = -3,
|
||||
/* Everything was fine */
|
||||
JSMN_SUCCESS = 0
|
||||
JSMN_ERROR_PART = -3
|
||||
} jsmnerr_t;
|
||||
|
||||
/**
|
||||
@ -48,7 +52,7 @@ typedef struct {
|
||||
*/
|
||||
typedef struct {
|
||||
unsigned int pos; /* offset in the JSON string */
|
||||
int toknext; /* next token to allocate */
|
||||
unsigned int toknext; /* next token to allocate */
|
||||
int toksuper; /* superior token node, e.g parent object or array */
|
||||
} jsmn_parser;
|
||||
|
||||
@ -61,7 +65,11 @@ void jsmn_init(jsmn_parser *parser);
|
||||
* Run JSON parser. It parses a JSON data string into and array of tokens, each describing
|
||||
* a single JSON object.
|
||||
*/
|
||||
jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js,
|
||||
jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, size_t len,
|
||||
jsmntok_t *tokens, unsigned int num_tokens);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __JSMN_H_ */
|
||||
|
@ -2,8 +2,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "jsmn.c"
|
||||
|
||||
static int test_passed = 0;
|
||||
static int test_failed = 0;
|
||||
|
||||
@ -40,6 +38,9 @@ static void test(int (*func)(void), const char *name) {
|
||||
printf("start: %d, end: %d, type: %d, size: %d\n", \
|
||||
(t).start, (t).end, (t).type, (t).size)
|
||||
|
||||
#define JSMN_STRICT
|
||||
#include "jsmn.c"
|
||||
|
||||
int test_empty() {
|
||||
const char *js;
|
||||
int r;
|
||||
@ -48,30 +49,30 @@ int test_empty() {
|
||||
|
||||
js = "{}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, t, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), t, 10);
|
||||
check(r >= 0);
|
||||
check(t[0].type == JSMN_OBJECT);
|
||||
check(t[0].start == 0 && t[0].end == 2);
|
||||
|
||||
js = "[]";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, t, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), t, 10);
|
||||
check(r >= 0);
|
||||
check(t[0].type == JSMN_ARRAY);
|
||||
check(t[0].start == 0 && t[0].end == 2);
|
||||
|
||||
js = "{\"a\":[]}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, t, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), t, 10);
|
||||
check(r >= 0);
|
||||
check(t[0].type == JSMN_OBJECT && t[0].start == 0 && t[0].end == 8);
|
||||
check(t[1].type == JSMN_STRING && t[1].start == 2 && t[1].end == 3);
|
||||
check(t[2].type == JSMN_ARRAY && t[2].start == 5 && t[2].end == 7);
|
||||
|
||||
js = "[{},{}]";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, t, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), t, 10);
|
||||
check(r >= 0);
|
||||
check(t[0].type == JSMN_ARRAY && t[0].start == 0 && t[0].end == 7);
|
||||
check(t[1].type == JSMN_OBJECT && t[1].start == 1 && t[1].end == 3);
|
||||
check(t[2].type == JSMN_OBJECT && t[2].start == 4 && t[2].end == 6);
|
||||
@ -87,8 +88,8 @@ int test_simple() {
|
||||
js = "{\"a\": 0}";
|
||||
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
check(TOKEN_EQ(tokens[0], 0, 8, JSMN_OBJECT));
|
||||
check(TOKEN_EQ(tokens[1], 2, 3, JSMN_STRING));
|
||||
check(TOKEN_EQ(tokens[2], 6, 7, JSMN_PRIMITIVE));
|
||||
@ -99,59 +100,59 @@ int test_simple() {
|
||||
|
||||
jsmn_init(&p);
|
||||
js = "[\"a\":{},\"b\":{}]";
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
jsmn_init(&p);
|
||||
js = "{\n \"Day\": 26,\n \"Month\": 9,\n \"Year\": 12\n }";
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_primitive() {
|
||||
#ifndef JSMN_STRICT
|
||||
int r;
|
||||
jsmn_parser p;
|
||||
jsmntok_t tok[10];
|
||||
const char *js;
|
||||
#ifndef JSMN_STRICT
|
||||
js = "\"boolVar\" : true";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_PRIMITIVE);
|
||||
check(TOKEN_STRING(js, tok[0], "boolVar"));
|
||||
check(TOKEN_STRING(js, tok[1], "true"));
|
||||
|
||||
js = "\"boolVar\" : false";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_PRIMITIVE);
|
||||
check(TOKEN_STRING(js, tok[0], "boolVar"));
|
||||
check(TOKEN_STRING(js, tok[1], "false"));
|
||||
|
||||
js = "\"intVar\" : 12345";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_PRIMITIVE);
|
||||
check(TOKEN_STRING(js, tok[0], "intVar"));
|
||||
check(TOKEN_STRING(js, tok[1], "12345"));
|
||||
|
||||
js = "\"floatVar\" : 12.345";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_PRIMITIVE);
|
||||
check(TOKEN_STRING(js, tok[0], "floatVar"));
|
||||
check(TOKEN_STRING(js, tok[1], "12.345"));
|
||||
|
||||
js = "\"nullVar\" : null";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_PRIMITIVE);
|
||||
check(TOKEN_STRING(js, tok[0], "nullVar"));
|
||||
check(TOKEN_STRING(js, tok[1], "null"));
|
||||
@ -167,24 +168,24 @@ int test_string() {
|
||||
|
||||
js = "\"strVar\" : \"hello world\"";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_STRING);
|
||||
check(TOKEN_STRING(js, tok[0], "strVar"));
|
||||
check(TOKEN_STRING(js, tok[1], "hello world"));
|
||||
|
||||
js = "\"strVar\" : \"escapes: \\/\\r\\n\\t\\b\\f\\\"\\\\\"";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_STRING);
|
||||
check(TOKEN_STRING(js, tok[0], "strVar"));
|
||||
check(TOKEN_STRING(js, tok[1], "escapes: \\/\\r\\n\\t\\b\\f\\\"\\\\"));
|
||||
|
||||
js = "\"strVar\" : \"\"";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_STRING);
|
||||
check(TOKEN_STRING(js, tok[0], "strVar"));
|
||||
check(TOKEN_STRING(js, tok[1], ""));
|
||||
@ -200,27 +201,37 @@ int test_partial_string() {
|
||||
|
||||
jsmn_init(&p);
|
||||
js = "\"x\": \"va";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_STRING);
|
||||
check(TOKEN_STRING(js, tok[0], "x"));
|
||||
check(p.toknext == 1);
|
||||
|
||||
jsmn_init(&p);
|
||||
char js_slash[9] = "\"x\": \"va\\";
|
||||
r = jsmn_parse(&p, js_slash, sizeof(js_slash), tok, 10);
|
||||
check(r == JSMN_ERROR_PART);
|
||||
|
||||
jsmn_init(&p);
|
||||
char js_unicode[10] = "\"x\": \"va\\u";
|
||||
r = jsmn_parse(&p, js_unicode, sizeof(js_unicode), tok, 10);
|
||||
check(r == JSMN_ERROR_PART);
|
||||
|
||||
js = "\"x\": \"valu";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_STRING);
|
||||
check(TOKEN_STRING(js, tok[0], "x"));
|
||||
check(p.toknext == 1);
|
||||
|
||||
js = "\"x\": \"value\"";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_STRING);
|
||||
check(TOKEN_STRING(js, tok[0], "x"));
|
||||
check(TOKEN_STRING(js, tok[1], "value"));
|
||||
|
||||
js = "\"x\": \"value\", \"y\": \"value y\"";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_STRING
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_STRING
|
||||
&& tok[1].type == JSMN_STRING && tok[2].type == JSMN_STRING
|
||||
&& tok[3].type == JSMN_STRING);
|
||||
check(TOKEN_STRING(js, tok[0], "x"));
|
||||
@ -241,8 +252,8 @@ int test_unquoted_keys() {
|
||||
jsmn_init(&p);
|
||||
js = "key1: \"value\"\nkey2 : 123";
|
||||
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_PRIMITIVE
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_PRIMITIVE
|
||||
&& tok[1].type == JSMN_STRING && tok[2].type == JSMN_PRIMITIVE
|
||||
&& tok[3].type == JSMN_PRIMITIVE);
|
||||
check(TOKEN_STRING(js, tok[0], "key1"));
|
||||
@ -261,19 +272,19 @@ int test_partial_array() {
|
||||
|
||||
jsmn_init(&p);
|
||||
js = " [ 1, true, ";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_ARRAY
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_ARRAY
|
||||
&& tok[1].type == JSMN_PRIMITIVE && tok[2].type == JSMN_PRIMITIVE);
|
||||
|
||||
js = " [ 1, true, [123, \"hello";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_ARRAY
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_ARRAY
|
||||
&& tok[1].type == JSMN_PRIMITIVE && tok[2].type == JSMN_PRIMITIVE
|
||||
&& tok[3].type == JSMN_ARRAY && tok[4].type == JSMN_PRIMITIVE);
|
||||
|
||||
js = " [ 1, true, [123, \"hello\"]";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_ARRAY
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r == JSMN_ERROR_PART && tok[0].type == JSMN_ARRAY
|
||||
&& tok[1].type == JSMN_PRIMITIVE && tok[2].type == JSMN_PRIMITIVE
|
||||
&& tok[3].type == JSMN_ARRAY && tok[4].type == JSMN_PRIMITIVE
|
||||
&& tok[5].type == JSMN_STRING);
|
||||
@ -281,8 +292,8 @@ int test_partial_array() {
|
||||
check(tok[3].size == 2);
|
||||
|
||||
js = " [ 1, true, [123, \"hello\"]]";
|
||||
r = jsmn_parse(&p, js, tok, 10);
|
||||
check(r == JSMN_SUCCESS && tok[0].type == JSMN_ARRAY
|
||||
r = jsmn_parse(&p, js, strlen(js), tok, 10);
|
||||
check(r >= 0 && tok[0].type == JSMN_ARRAY
|
||||
&& tok[1].type == JSMN_PRIMITIVE && tok[2].type == JSMN_PRIMITIVE
|
||||
&& tok[3].type == JSMN_ARRAY && tok[4].type == JSMN_PRIMITIVE
|
||||
&& tok[5].type == JSMN_STRING);
|
||||
@ -304,13 +315,13 @@ int test_array_nomem() {
|
||||
jsmn_init(&p);
|
||||
memset(toksmall, 0, sizeof(toksmall));
|
||||
memset(toklarge, 0, sizeof(toklarge));
|
||||
r = jsmn_parse(&p, js, toksmall, i);
|
||||
r = jsmn_parse(&p, js, strlen(js), toksmall, i);
|
||||
check(r == JSMN_ERROR_NOMEM);
|
||||
|
||||
memcpy(toklarge, toksmall, sizeof(toksmall));
|
||||
|
||||
r = jsmn_parse(&p, js, toklarge, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), toklarge, 10);
|
||||
check(r >= 0);
|
||||
|
||||
check(toklarge[0].type == JSMN_ARRAY && toklarge[0].size == 3);
|
||||
check(toklarge[3].type == JSMN_ARRAY && toklarge[3].size == 2);
|
||||
@ -319,7 +330,6 @@ int test_array_nomem() {
|
||||
}
|
||||
|
||||
int test_objects_arrays() {
|
||||
int i;
|
||||
int r;
|
||||
jsmn_parser p;
|
||||
jsmntok_t tokens[10];
|
||||
@ -327,27 +337,60 @@ int test_objects_arrays() {
|
||||
|
||||
js = "[10}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "[10]";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
js = "{\"a\": 1]";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "{\"a\": 1}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_issue_22() {
|
||||
int r;
|
||||
jsmn_parser p;
|
||||
jsmntok_t tokens[128];
|
||||
const char *js;
|
||||
|
||||
js = "{ \"height\":10, \"layers\":[ { \"data\":[6,6], \"height\":10, "
|
||||
"\"name\":\"Calque de Tile 1\", \"opacity\":1, \"type\":\"tilelayer\", "
|
||||
"\"visible\":true, \"width\":10, \"x\":0, \"y\":0 }], "
|
||||
"\"orientation\":\"orthogonal\", \"properties\": { }, \"tileheight\":32, "
|
||||
"\"tilesets\":[ { \"firstgid\":1, \"image\":\"..\\/images\\/tiles.png\", "
|
||||
"\"imageheight\":64, \"imagewidth\":160, \"margin\":0, \"name\":\"Tiles\", "
|
||||
"\"properties\":{}, \"spacing\":0, \"tileheight\":32, \"tilewidth\":32 }], "
|
||||
"\"tilewidth\":32, \"version\":1, \"width\":10 }";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 128);
|
||||
check(r >= 0);
|
||||
#if 0
|
||||
for (i = 1; tokens[i].end < tokens[0].end; i++) {
|
||||
if (tokens[i].type == JSMN_STRING || tokens[i].type == JSMN_PRIMITIVE) {
|
||||
printf("%.*s\n", tokens[i].end - tokens[i].start, js + tokens[i].start);
|
||||
} else if (tokens[i].type == JSMN_ARRAY) {
|
||||
printf("[%d elems]\n", tokens[i].size);
|
||||
} else if (tokens[i].type == JSMN_OBJECT) {
|
||||
printf("{%d elems}\n", tokens[i].size);
|
||||
} else {
|
||||
TOKEN_PRINT(tokens[i]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_unicode_characters() {
|
||||
jsmn_parser p;
|
||||
jsmntok_t tokens[10];
|
||||
@ -356,42 +399,193 @@ int test_unicode_characters() {
|
||||
int r;
|
||||
js = "{\"a\":\"\\uAbcD\"}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
js = "{\"a\":\"str\\u0000\"}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
js = "{\"a\":\"\\uFFFFstr\"}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
js = "{\"a\":\"str\\uFFGFstr\"}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "{\"a\":\"str\\u@FfF\"}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "{\"a\":[\"\\u028\"]}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "{\"a\":[\"\\u0280\"]}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, tokens, 10);
|
||||
check(r == JSMN_SUCCESS);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r >= 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_input_length() {
|
||||
const char *js;
|
||||
int r;
|
||||
jsmn_parser p;
|
||||
jsmntok_t tokens[10];
|
||||
|
||||
js = "{\"a\": 0}garbage";
|
||||
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, 8, tokens, 10);
|
||||
check(r == 3);
|
||||
check(TOKEN_STRING(js, tokens[0], "{\"a\": 0}"));
|
||||
check(TOKEN_STRING(js, tokens[1], "a"));
|
||||
check(TOKEN_STRING(js, tokens[2], "0"));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_count() {
|
||||
jsmn_parser p;
|
||||
const char *js;
|
||||
|
||||
js = "{}";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 1);
|
||||
|
||||
js = "[]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 1);
|
||||
|
||||
js = "[[]]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 2);
|
||||
|
||||
js = "[[], []]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 3);
|
||||
|
||||
js = "[[], []]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 3);
|
||||
|
||||
js = "[[], [[]], [[], []]]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 7);
|
||||
|
||||
js = "[\"a\", [[], []]]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 5);
|
||||
|
||||
js = "[[], \"[], [[]]\", [[]]]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 5);
|
||||
|
||||
js = "[1, 2, 3]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 4);
|
||||
|
||||
js = "[1, 2, [3, \"a\"], null]";
|
||||
jsmn_init(&p);
|
||||
check(jsmn_parse(&p, js, strlen(js), NULL, 0) == 7);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_keyvalue() {
|
||||
const char *js;
|
||||
int r;
|
||||
jsmn_parser p;
|
||||
jsmntok_t tokens[10];
|
||||
|
||||
js = "{\"a\": 0, \"b\": \"c\"}";
|
||||
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == 5);
|
||||
check(tokens[0].size == 2); /* two keys */
|
||||
check(tokens[1].size == 1 && tokens[3].size == 1); /* one value per key */
|
||||
check(tokens[2].size == 0 && tokens[4].size == 0); /* values have zero size */
|
||||
|
||||
js = "{\"a\"\n0}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "{\"a\", 0}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "{\"a\": {2}}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
js = "{\"a\": {2: 3}}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
|
||||
|
||||
js = "{\"a\": {\"a\": 2 3}}";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == JSMN_ERROR_INVAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** A huge redefinition of everything to include jsmn in non-script mode */
|
||||
#define jsmn_init jsmn_init_nonstrict
|
||||
#define jsmn_parse jsmn_parse_nonstrict
|
||||
#define jsmn_parser jsmn_parser_nonstrict
|
||||
#define jsmn_alloc_token jsmn_alloc_token_nonstrict
|
||||
#define jsmn_fill_token jsmn_fill_token_nonstrict
|
||||
#define jsmn_parse_primitive jsmn_parse_primitive_nonstrict
|
||||
#define jsmn_parse_string jsmn_parse_string_nonstrict
|
||||
#define jsmntype_t jsmntype_nonstrict_t
|
||||
#define jsmnerr_t jsmnerr_nonstrict_t
|
||||
#define jsmntok_t jsmntok_nonstrict_t
|
||||
#define JSMN_PRIMITIVE JSMN_PRIMITIVE_NONSTRICT
|
||||
#define JSMN_OBJECT JSMN_OBJECT_NONSTRICT
|
||||
#define JSMN_ARRAY JSMN_ARRAY_NONSTRICT
|
||||
#define JSMN_STRING JSMN_STRING_NONSTRICT
|
||||
#define JSMN_ERROR_NOMEM JSMN_ERROR_NOMEM_NONSTRICT
|
||||
#define JSMN_ERROR_INVAL JSMN_ERROR_INVAL_NONSTRICT
|
||||
#define JSMN_ERROR_PART JSMN_ERROR_PART_NONSTRICT
|
||||
#undef __JSMN_H_
|
||||
#undef JSMN_STRICT
|
||||
#include "jsmn.c"
|
||||
|
||||
int test_nonstrict() {
|
||||
const char *js;
|
||||
int r;
|
||||
jsmn_parser p;
|
||||
jsmntok_t tokens[10];
|
||||
|
||||
js = "a: 0garbage";
|
||||
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, 4, tokens, 10);
|
||||
check(r == 2);
|
||||
check(TOKEN_STRING(js, tokens[0], "a"));
|
||||
check(TOKEN_STRING(js, tokens[1], "0"));
|
||||
|
||||
js = "Day : 26\nMonth : Sep\n\nYear: 12";
|
||||
jsmn_init(&p);
|
||||
r = jsmn_parse(&p, js, strlen(js), tokens, 10);
|
||||
check(r == 6);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main() {
|
||||
test(test_empty, "general test for a empty JSON objects/arrays");
|
||||
test(test_simple, "general test for a simple JSON string");
|
||||
@ -403,6 +597,11 @@ int main() {
|
||||
test(test_unquoted_keys, "test unquoted keys (like in JavaScript)");
|
||||
test(test_objects_arrays, "test objects and arrays");
|
||||
test(test_unicode_characters, "test unicode characters");
|
||||
test(test_input_length, "test strings that are not null-terminated");
|
||||
test(test_issue_22, "test issue #22");
|
||||
test(test_count, "test tokens count estimation");
|
||||
test(test_nonstrict, "test for non-strict mode");
|
||||
test(test_keyvalue, "test for keys/values");
|
||||
printf("\nPASSED: %d\nFAILED: %d\n", test_passed, test_failed);
|
||||
return 0;
|
||||
}
|
||||
|
@ -89,6 +89,7 @@ libntp_a_SRCS = \
|
||||
numtohost.c \
|
||||
octtoint.c \
|
||||
prettydate.c \
|
||||
refidsmear.c \
|
||||
recvbuff.c \
|
||||
refnumtoa.c \
|
||||
snprintf.c \
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -60,6 +60,59 @@ ereallocz(
|
||||
return mem;
|
||||
}
|
||||
|
||||
/* oreallocarray.c is licensed under the following:
|
||||
* Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/*
|
||||
* This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
|
||||
* if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
|
||||
*/
|
||||
#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4))
|
||||
|
||||
void *
|
||||
oreallocarray(
|
||||
void *optr,
|
||||
size_t nmemb,
|
||||
size_t size
|
||||
#ifdef EREALLOC_CALLSITE /* ntp_malloc.h */
|
||||
,
|
||||
const char * file,
|
||||
int line
|
||||
#endif
|
||||
)
|
||||
{
|
||||
if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
|
||||
nmemb > 0 && SIZE_MAX / nmemb < size) {
|
||||
#ifndef EREALLOC_CALLSITE
|
||||
msyslog(LOG_ERR, "fatal allocation size overflow");
|
||||
#else
|
||||
msyslog(LOG_ERR,
|
||||
"fatal allocation size overflow %s line %d",
|
||||
file, line);
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
#ifndef EREALLOC_CALLSITE
|
||||
return ereallocz(optr, (size * nmemb), 0, FALSE);
|
||||
#else
|
||||
return ereallocz(optr, (size * nmemb), 0, FALSE, file, line);
|
||||
#endif
|
||||
}
|
||||
|
||||
char *
|
||||
estrdup_impl(
|
||||
|
58
libntp/refidsmear.c
Normal file
58
libntp/refidsmear.c
Normal file
@ -0,0 +1,58 @@
|
||||
#include <config.h>
|
||||
|
||||
#include <ntp.h>
|
||||
#include <ntp_fp.h>
|
||||
#include <refidsmear.h>
|
||||
|
||||
/*
|
||||
* we want to test a refid format of:
|
||||
* 254.x.y.x
|
||||
*
|
||||
* where x.y.z are 24 bits containing 2 (signed) integer bits
|
||||
* and 22 fractional bits.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
l_fp
|
||||
convertRefIDToLFP(uint32_t r)
|
||||
{
|
||||
l_fp temp;
|
||||
|
||||
r = ntohl(r);
|
||||
|
||||
// printf("%03d %08x: ", (r >> 24) & 0xFF, (r & 0x00FFFFFF) );
|
||||
|
||||
temp.l_uf = (r << 10); /* 22 fractional bits */
|
||||
|
||||
temp.l_ui = (r >> 22) & 0x3;
|
||||
temp.l_ui |= ~(temp.l_ui & 2) + 1;
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
uint32_t
|
||||
convertLFPToRefID(l_fp num)
|
||||
{
|
||||
uint32_t temp;
|
||||
|
||||
/* round the input with the highest bit to shift out from the
|
||||
* fraction, then keep just two bits from the integral part.
|
||||
*
|
||||
* TODO: check for overflows; should we clamp/saturate or just
|
||||
* complain?
|
||||
*/
|
||||
L_ADDUF(&num, 0x200);
|
||||
num.l_ui &= 3;
|
||||
|
||||
/* combine integral and fractional part to 24 bits */
|
||||
temp = (num.l_ui << 22) | (num.l_uf >> 10);
|
||||
|
||||
/* put in the leading 254.0.0.0 */
|
||||
temp |= UINT32_C(0xFE000000);
|
||||
|
||||
// printf("%03d %08x: ", (temp >> 24) & 0xFF, (temp & 0x00FFFFFF) );
|
||||
|
||||
return htonl(temp);
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
#include <config.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <ntp_assert.h>
|
||||
#include "ntp_malloc.h"
|
||||
#include <string.h>
|
||||
|
||||
#ifndef HAVE_STRDUP
|
||||
|
||||
@ -15,15 +16,13 @@ strdup(
|
||||
size_t octets;
|
||||
char * cp;
|
||||
|
||||
if (s) {
|
||||
octets = 1 + strlen(s);
|
||||
cp = malloc(octets);
|
||||
if (NULL != cp)
|
||||
memcpy(cp, s, octets);
|
||||
else
|
||||
cp = NULL;
|
||||
REQUIRE(s);
|
||||
octets = strlen(s) + 1;
|
||||
if ((cp = malloc(octets)) == NULL)
|
||||
return NULL;
|
||||
memcpy(cp, s, octets);
|
||||
|
||||
return(cp);
|
||||
return cp;
|
||||
}
|
||||
#else
|
||||
int strdup_c_nonempty_compilation_unit;
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <signal.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#include "iosignal.h"
|
||||
#include "ntp_stdlib.h"
|
||||
@ -111,6 +112,23 @@ interrupt_worker_sleep(void)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* harvest_child_status() runs in the parent.
|
||||
*/
|
||||
static void
|
||||
harvest_child_status(
|
||||
blocking_child * c
|
||||
)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* req_child_exit() runs in the parent.
|
||||
*/
|
||||
@ -124,6 +142,8 @@ req_child_exit(
|
||||
c->req_write_pipe = -1;
|
||||
return 0;
|
||||
}
|
||||
/* Closing the pipe forces the child to exit */
|
||||
harvest_child_status(c);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -136,10 +156,7 @@ cleanup_after_child(
|
||||
blocking_child * c
|
||||
)
|
||||
{
|
||||
if (-1 != c->req_write_pipe) {
|
||||
close(c->req_write_pipe);
|
||||
c->req_write_pipe = -1;
|
||||
}
|
||||
harvest_child_status(c);
|
||||
if (-1 != c->resp_read_pipe) {
|
||||
(*addremove_io_fd)(c->resp_read_pipe, c->ispipe, TRUE);
|
||||
close(c->resp_read_pipe);
|
||||
@ -209,6 +226,8 @@ send_blocking_req_internal(
|
||||
"send_blocking_req_internal: short write %d of %d",
|
||||
rc, octets);
|
||||
|
||||
/* Fatal error. Clean up the child process. */
|
||||
req_child_exit(c);
|
||||
exit(1); /* otherwise would be return -1 */
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -17,6 +16,61 @@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -36,9 +90,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = parsestreams$(EXEEXT) parsesolaris$(EXEEXT)
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf
|
||||
subdir = libparse
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
@ -70,6 +121,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -79,18 +131,17 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
ARFLAGS = cru
|
||||
AM_V_AR = $(am__v_AR_$(V))
|
||||
am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
AM_V_AR = $(am__v_AR_@AM_V@)
|
||||
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
am__v_AR_1 =
|
||||
libparse_a_AR = $(AR) $(ARFLAGS)
|
||||
libparse_a_LIBADD =
|
||||
am__objects_1 =
|
||||
@ -119,12 +170,25 @@ PROGRAMS = $(noinst_PROGRAMS)
|
||||
parsesolaris_SOURCES = parsesolaris.c
|
||||
parsesolaris_OBJECTS = parsesolaris.$(OBJEXT)
|
||||
parsesolaris_LDADD = $(LDADD)
|
||||
AM_V_lt = $(am__v_lt_$(V))
|
||||
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
parsestreams_SOURCES = parsestreams.c
|
||||
parsestreams_OBJECTS = parsestreams.$(OBJEXT)
|
||||
parsestreams_LDADD = $(LDADD)
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/sntp/libevent/build-aux/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -135,25 +199,49 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_$(V))
|
||||
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(libparse_a_SOURCES) $(libparse_kernel_a_SOURCES) \
|
||||
parsesolaris.c parsestreams.c
|
||||
DIST_SOURCES = $(libparse_a_SOURCES) $(libparse_kernel_a_SOURCES) \
|
||||
parsesolaris.c parsestreams.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depsver.mf \
|
||||
$(top_srcdir)/includes.mf $(top_srcdir)/sntp/check-libntp.mf \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/depcomp README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -204,6 +292,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -320,6 +409,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -506,7 +596,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/sntp/check-libntp.mf
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libparse/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign libparse/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -515,6 +604,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(top_srcdir)/sntp/check-libntp.mf $(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@ -527,11 +617,13 @@ $(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
libparse.a: $(libparse_a_OBJECTS) $(libparse_a_DEPENDENCIES)
|
||||
|
||||
libparse.a: $(libparse_a_OBJECTS) $(libparse_a_DEPENDENCIES) $(EXTRA_libparse_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libparse.a
|
||||
$(AM_V_AR)$(libparse_a_AR) libparse.a $(libparse_a_OBJECTS) $(libparse_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libparse.a
|
||||
libparse_kernel.a: $(libparse_kernel_a_OBJECTS) $(libparse_kernel_a_DEPENDENCIES)
|
||||
|
||||
libparse_kernel.a: $(libparse_kernel_a_OBJECTS) $(libparse_kernel_a_DEPENDENCIES) $(EXTRA_libparse_kernel_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libparse_kernel.a
|
||||
$(AM_V_AR)$(libparse_kernel_a_AR) libparse_kernel.a $(libparse_kernel_a_OBJECTS) $(libparse_kernel_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libparse_kernel.a
|
||||
@ -544,10 +636,12 @@ clean-noinstPROGRAMS:
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
parsesolaris$(EXEEXT): $(parsesolaris_OBJECTS) $(parsesolaris_DEPENDENCIES)
|
||||
|
||||
parsesolaris$(EXEEXT): $(parsesolaris_OBJECTS) $(parsesolaris_DEPENDENCIES) $(EXTRA_parsesolaris_DEPENDENCIES)
|
||||
@rm -f parsesolaris$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(parsesolaris_OBJECTS) $(parsesolaris_LDADD) $(LIBS)
|
||||
parsestreams$(EXEEXT): $(parsestreams_OBJECTS) $(parsestreams_DEPENDENCIES)
|
||||
|
||||
parsestreams$(EXEEXT): $(parsestreams_OBJECTS) $(parsestreams_DEPENDENCIES) $(EXTRA_parsestreams_DEPENDENCIES)
|
||||
@rm -f parsestreams$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(parsestreams_OBJECTS) $(parsestreams_LDADD) $(LIBS)
|
||||
|
||||
@ -584,26 +678,23 @@ distclean-compile:
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -611,26 +702,15 @@ mostlyclean-libtool:
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -642,15 +722,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -659,6 +735,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -709,10 +800,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -799,19 +895,21 @@ uninstall-am:
|
||||
|
||||
.MAKE: all check install install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \
|
||||
distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS \
|
||||
cscopelist-am ctags ctags-am distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am
|
||||
tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
vphack:
|
||||
|
@ -5,7 +5,7 @@
|
||||
*
|
||||
* Meinberg clock support
|
||||
*
|
||||
* Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1995-2015 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -400,7 +400,7 @@ cvt_meinberg(
|
||||
|
||||
if (format->flags & MBG_EXTENDED)
|
||||
{
|
||||
clock_time->flags |= PARSEB_S_ANTENNA;
|
||||
clock_time->flags |= PARSEB_S_CALLBIT;
|
||||
|
||||
/*
|
||||
* DCF77 does not encode the direction -
|
||||
|
@ -5,7 +5,7 @@
|
||||
*
|
||||
* Raw DCF77 pulse clock support
|
||||
*
|
||||
* Copyright (c) 1995-2006 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1995-2015 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,6 +41,7 @@
|
||||
#if defined(REFCLOCK) && defined(CLOCK_PARSE) && defined(CLOCK_RAWDCF)
|
||||
|
||||
#include "ntp_fp.h"
|
||||
#include "timevalops.h"
|
||||
#include "ntp_unixtime.h"
|
||||
#include "ntp_calendar.h"
|
||||
|
||||
@ -107,7 +108,9 @@ static parse_cvt_fnc_t cvt_rawdcf;
|
||||
static parse_inp_fnc_t inp_rawdcf;
|
||||
|
||||
typedef struct last_tcode {
|
||||
time_t tcode; /* last converted time code */
|
||||
time_t tcode; /* last converted time code */
|
||||
timestamp_t tminute; /* sample time for minute start */
|
||||
timestamp_t timeout; /* last timeout timestamp */
|
||||
} last_tcode_t;
|
||||
|
||||
#define BUFFER_MAX 61
|
||||
@ -230,14 +233,14 @@ convert_rawdcf(
|
||||
const unsigned char *c = dcfprm->zerobits;
|
||||
int i;
|
||||
|
||||
parseprintf(DD_RAWDCF,("parse: convert_rawdcf: \"%s\"\n", buffer));
|
||||
parseprintf(DD_RAWDCF,("parse: convert_rawdcf: \"%.*s\"\n", size, buffer));
|
||||
|
||||
if (size < 57)
|
||||
{
|
||||
#ifndef PARSEKERNEL
|
||||
msyslog(LOG_ERR, "parse: convert_rawdcf: INCOMPLETE DATA - time code only has %d bits", size);
|
||||
#endif
|
||||
return CVT_NONE;
|
||||
return CVT_FAIL|CVT_BADFMT;
|
||||
}
|
||||
|
||||
for (i = 0; i < size; i++)
|
||||
@ -250,7 +253,7 @@ convert_rawdcf(
|
||||
#ifndef PARSEKERNEL
|
||||
msyslog(LOG_ERR, "parse: convert_rawdcf: BAD DATA - no conversion");
|
||||
#endif
|
||||
return CVT_NONE;
|
||||
return CVT_FAIL|CVT_BADFMT;
|
||||
}
|
||||
if (*b) b++;
|
||||
if (*c) c++;
|
||||
@ -270,7 +273,7 @@ convert_rawdcf(
|
||||
*/
|
||||
parseprintf(DD_RAWDCF,("parse: convert_rawdcf: parity check passed\n"));
|
||||
|
||||
clock_time->flags = PARSEB_S_ANTENNA|PARSEB_S_LEAP;
|
||||
clock_time->flags = PARSEB_S_CALLBIT|PARSEB_S_LEAP;
|
||||
clock_time->utctime= 0;
|
||||
clock_time->usecond= 0;
|
||||
clock_time->second = 0;
|
||||
@ -310,7 +313,7 @@ convert_rawdcf(
|
||||
if (ext_bf(buffer, DCF_R, dcfprm->zerobits))
|
||||
clock_time->flags |= PARSEB_CALLBIT;
|
||||
|
||||
parseprintf(DD_RAWDCF,("parse: convert_rawdcf: TIME CODE OK: %d:%d, %d.%d.%d, flags 0x%lx\n",
|
||||
parseprintf(DD_RAWDCF,("parse: convert_rawdcf: TIME CODE OK: %02d:%02d, %02d.%02d.%02d, flags 0x%lx\n",
|
||||
(int)clock_time->hour, (int)clock_time->minute, (int)clock_time->day, (int)clock_time->month,(int) clock_time->year,
|
||||
(u_long)clock_time->flags));
|
||||
return CVT_OK;
|
||||
@ -321,7 +324,7 @@ convert_rawdcf(
|
||||
* bad format - not for us
|
||||
*/
|
||||
#ifndef PARSEKERNEL
|
||||
msyslog(LOG_ERR, "parse: convert_rawdcf: parity check FAILED for \"%s\"", buffer);
|
||||
msyslog(LOG_ERR, "parse: convert_rawdcf: start bit / parity check FAILED for \"%.*s\"", size, buffer);
|
||||
#endif
|
||||
return CVT_FAIL|CVT_BADFMT;
|
||||
}
|
||||
@ -484,6 +487,8 @@ cvt_rawdcf(
|
||||
if (*c) c++;
|
||||
}
|
||||
|
||||
*s = '\0';
|
||||
|
||||
if (rtc == CVT_NONE)
|
||||
{
|
||||
rtc = convert_rawdcf(buffer, size, &dcfparameter, clock_time);
|
||||
@ -494,13 +499,15 @@ cvt_rawdcf(
|
||||
newtime = parse_to_unixtime(clock_time, &rtc);
|
||||
if ((rtc == CVT_OK) && t)
|
||||
{
|
||||
if ((newtime - t->tcode) == 60) /* guard against multi bit errors */
|
||||
if ((newtime - t->tcode) <= 600) /* require a successful telegram within last 10 minutes */
|
||||
{
|
||||
parseprintf(DD_RAWDCF,("parse: cvt_rawdcf: recent timestamp check OK\n"));
|
||||
clock_time->utctime = newtime;
|
||||
}
|
||||
else
|
||||
{
|
||||
rtc = CVT_FAIL|CVT_BADTIME;
|
||||
parseprintf(DD_RAWDCF,("parse: cvt_rawdcf: recent timestamp check FAIL - ignore timestamp\n"));
|
||||
rtc = CVT_SKIP;
|
||||
}
|
||||
t->tcode = newtime;
|
||||
}
|
||||
@ -533,13 +540,63 @@ pps_rawdcf(
|
||||
return CVT_NONE;
|
||||
}
|
||||
|
||||
static long
|
||||
calc_usecdiff(
|
||||
timestamp_t *ref,
|
||||
timestamp_t *base,
|
||||
long offset
|
||||
)
|
||||
{
|
||||
struct timeval delta;
|
||||
long delta_usec = 0;
|
||||
|
||||
#ifdef PARSEKERNEL
|
||||
delta.tv_sec = ref->tv.tv_sec - offset - base->tv.tv_sec;
|
||||
delta.tv_usec = ref->tv.tv_usec - base->tv.tv_usec;
|
||||
if (delta.tv_usec < 0)
|
||||
{
|
||||
delta.tv_sec -= 1;
|
||||
delta.tv_usec += 1000000;
|
||||
}
|
||||
#else
|
||||
l_fp delt;
|
||||
|
||||
delt = ref->fp;
|
||||
delt.l_i -= offset;
|
||||
L_SUB(&delt, &base->fp);
|
||||
TSTOTV(&delt, &delta);
|
||||
#endif
|
||||
|
||||
delta_usec = 1000000 * (int32_t)delta.tv_sec + delta.tv_usec;
|
||||
return delta_usec;
|
||||
}
|
||||
|
||||
static u_long
|
||||
snt_rawdcf(
|
||||
parse_t *parseio,
|
||||
timestamp_t *ptime
|
||||
)
|
||||
{
|
||||
if ((parseio->parse_dtime.parse_status & CVT_MASK) == CVT_OK)
|
||||
/*
|
||||
* only synthesize if all of following conditions are met:
|
||||
* - CVT_OK parse_status (we have a time stamp base)
|
||||
* - ABS(ptime - tminute - (parse_index - 1) sec) < 500ms (spaced by 1 sec +- 500ms)
|
||||
* - minute marker is available (confirms minute raster as base)
|
||||
*/
|
||||
last_tcode_t *t = (last_tcode_t *)parseio->parse_pdata;
|
||||
long delta_usec = -1;
|
||||
|
||||
if (t != NULL && t->tminute.tv.tv_sec != 0) {
|
||||
delta_usec = calc_usecdiff(ptime, &t->tminute, parseio->parse_index - 1);
|
||||
if (delta_usec < 0)
|
||||
delta_usec = -delta_usec;
|
||||
}
|
||||
|
||||
parseprintf(DD_RAWDCF,("parse: snt_rawdcf: synth for offset %d seconds - absolute usec error %ld\n",
|
||||
parseio->parse_index - 1, delta_usec));
|
||||
|
||||
if (((parseio->parse_dtime.parse_status & CVT_MASK) == CVT_OK) &&
|
||||
(delta_usec < 500000 && delta_usec >= 0)) /* only if minute marker is available */
|
||||
{
|
||||
parseio->parse_dtime.parse_stime = *ptime;
|
||||
|
||||
@ -576,10 +633,43 @@ inp_rawdcf(
|
||||
|
||||
if (parse_timedout(parseio, tstamp, &timeout))
|
||||
{
|
||||
parseprintf(DD_PARSE, ("inp_rawdcf: time out seen\n"));
|
||||
|
||||
last_tcode_t *t = (last_tcode_t *)parseio->parse_pdata;
|
||||
long delta_usec;
|
||||
|
||||
parseprintf(DD_RAWDCF, ("inp_rawdcf: time out seen\n"));
|
||||
/* finish collection */
|
||||
(void) parse_end(parseio);
|
||||
|
||||
if (t != NULL)
|
||||
{
|
||||
/* remember minute start sample time if timeouts occur in minute raster */
|
||||
if (t->timeout.tv.tv_sec != 0)
|
||||
{
|
||||
delta_usec = calc_usecdiff(tstamp, &t->timeout, 60);
|
||||
if (delta_usec < 0)
|
||||
delta_usec = -delta_usec;
|
||||
}
|
||||
else
|
||||
{
|
||||
delta_usec = -1;
|
||||
}
|
||||
|
||||
if (delta_usec < 500000 && delta_usec >= 0)
|
||||
{
|
||||
parseprintf(DD_RAWDCF, ("inp_rawdcf: timeout time difference %ld usec - minute marker set\n", delta_usec));
|
||||
/* collect minute markers only if spaced by 60 seconds */
|
||||
t->tminute = *tstamp;
|
||||
}
|
||||
else
|
||||
{
|
||||
parseprintf(DD_RAWDCF, ("inp_rawdcf: timeout time difference %ld usec - minute marker cleared\n", delta_usec));
|
||||
memset((char *)&t->tminute, 0, sizeof(t->tminute));
|
||||
}
|
||||
t->timeout = *tstamp;
|
||||
}
|
||||
(void) parse_addchar(parseio, ch);
|
||||
|
||||
/* pass up to higher layers */
|
||||
return PARSE_INP_TIME;
|
||||
}
|
||||
else
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Schmid clock support
|
||||
* based on information and testing from Adam W. Feigin et. al (Swisstime iis.ethz.ch)
|
||||
*
|
||||
* Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1995-2015 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -184,7 +184,7 @@ cvt_schmid(
|
||||
}
|
||||
}
|
||||
|
||||
clock_time->flags |= PARSEB_S_LEAP|PARSEB_S_ANTENNA;
|
||||
clock_time->flags |= PARSEB_S_LEAP|PARSEB_S_CALLBIT;
|
||||
|
||||
return CVT_OK;
|
||||
}
|
||||
|
@ -697,14 +697,14 @@ timepacket(
|
||||
{
|
||||
case CVT_FAIL:
|
||||
parseio->parse_badformat++;
|
||||
break;
|
||||
return cvtrtc;
|
||||
|
||||
case CVT_NONE:
|
||||
/*
|
||||
* too bad - pretend bad format
|
||||
*/
|
||||
parseio->parse_badformat++;
|
||||
break;
|
||||
return CVT_NONE;
|
||||
|
||||
case CVT_OK:
|
||||
break;
|
||||
|
@ -232,6 +232,7 @@ libntpd_a_SOURCES = \
|
||||
ntp_timer.c \
|
||||
ntp_util.c \
|
||||
ppsapi_timepps.h \
|
||||
rc_cmdlength.c \
|
||||
refclock_acts.c \
|
||||
refclock_arbiter.c \
|
||||
refclock_arc.c \
|
||||
|
548
ntpd/Makefile.in
548
ntpd/Makefile.in
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -23,6 +22,61 @@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -43,11 +97,6 @@ build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = check_y2k$(EXEEXT) keyword-gen$(EXEEXT) ntpd$(EXEEXT) \
|
||||
ntpdsim$(EXEEXT)
|
||||
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/complete.conf.in \
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/check-libopts.mf \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf ntp_parser.c ntp_parser.h
|
||||
subdir = ntpd
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
@ -79,6 +128,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -88,18 +138,18 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = complete.conf
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
ARFLAGS = cru
|
||||
AM_V_AR = $(am__v_AR_$(V))
|
||||
am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
AM_V_AR = $(am__v_AR_@AM_V@)
|
||||
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
am__v_AR_1 =
|
||||
libntpd_a_AR = $(AR) $(ARFLAGS)
|
||||
libntpd_a_LIBADD =
|
||||
am__objects_1 =
|
||||
@ -109,28 +159,28 @@ am_libntpd_a_OBJECTS = cmd_args.$(OBJEXT) ntp_control.$(OBJEXT) \
|
||||
ntp_monitor.$(OBJEXT) ntp_peer.$(OBJEXT) ntp_proto.$(OBJEXT) \
|
||||
ntp_refclock.$(OBJEXT) ntp_request.$(OBJEXT) \
|
||||
ntp_restrict.$(OBJEXT) ntp_signd.$(OBJEXT) ntp_timer.$(OBJEXT) \
|
||||
ntp_util.$(OBJEXT) refclock_acts.$(OBJEXT) \
|
||||
refclock_arbiter.$(OBJEXT) refclock_arc.$(OBJEXT) \
|
||||
refclock_as2201.$(OBJEXT) refclock_atom.$(OBJEXT) \
|
||||
refclock_bancomm.$(OBJEXT) refclock_chronolog.$(OBJEXT) \
|
||||
refclock_chu.$(OBJEXT) refclock_conf.$(OBJEXT) \
|
||||
refclock_datum.$(OBJEXT) refclock_dumbclock.$(OBJEXT) \
|
||||
refclock_fg.$(OBJEXT) refclock_gpsdjson.$(OBJEXT) \
|
||||
refclock_gpsvme.$(OBJEXT) refclock_heath.$(OBJEXT) \
|
||||
refclock_hopfser.$(OBJEXT) refclock_hopfpci.$(OBJEXT) \
|
||||
refclock_hpgps.$(OBJEXT) refclock_irig.$(OBJEXT) \
|
||||
refclock_jjy.$(OBJEXT) refclock_jupiter.$(OBJEXT) \
|
||||
refclock_leitch.$(OBJEXT) refclock_local.$(OBJEXT) \
|
||||
refclock_mx4200.$(OBJEXT) refclock_neoclock4x.$(OBJEXT) \
|
||||
refclock_nmea.$(OBJEXT) refclock_oncore.$(OBJEXT) \
|
||||
refclock_palisade.$(OBJEXT) refclock_parse.$(OBJEXT) \
|
||||
refclock_pcf.$(OBJEXT) refclock_pst.$(OBJEXT) \
|
||||
refclock_ripencc.$(OBJEXT) refclock_shm.$(OBJEXT) \
|
||||
refclock_tpro.$(OBJEXT) refclock_true.$(OBJEXT) \
|
||||
refclock_tt560.$(OBJEXT) refclock_ulink.$(OBJEXT) \
|
||||
refclock_wwv.$(OBJEXT) refclock_wwvb.$(OBJEXT) \
|
||||
refclock_zyfer.$(OBJEXT) refclock_tsyncpci.$(OBJEXT) \
|
||||
$(am__objects_1)
|
||||
ntp_util.$(OBJEXT) rc_cmdlength.$(OBJEXT) \
|
||||
refclock_acts.$(OBJEXT) refclock_arbiter.$(OBJEXT) \
|
||||
refclock_arc.$(OBJEXT) refclock_as2201.$(OBJEXT) \
|
||||
refclock_atom.$(OBJEXT) refclock_bancomm.$(OBJEXT) \
|
||||
refclock_chronolog.$(OBJEXT) refclock_chu.$(OBJEXT) \
|
||||
refclock_conf.$(OBJEXT) refclock_datum.$(OBJEXT) \
|
||||
refclock_dumbclock.$(OBJEXT) refclock_fg.$(OBJEXT) \
|
||||
refclock_gpsdjson.$(OBJEXT) refclock_gpsvme.$(OBJEXT) \
|
||||
refclock_heath.$(OBJEXT) refclock_hopfser.$(OBJEXT) \
|
||||
refclock_hopfpci.$(OBJEXT) refclock_hpgps.$(OBJEXT) \
|
||||
refclock_irig.$(OBJEXT) refclock_jjy.$(OBJEXT) \
|
||||
refclock_jupiter.$(OBJEXT) refclock_leitch.$(OBJEXT) \
|
||||
refclock_local.$(OBJEXT) refclock_mx4200.$(OBJEXT) \
|
||||
refclock_neoclock4x.$(OBJEXT) refclock_nmea.$(OBJEXT) \
|
||||
refclock_oncore.$(OBJEXT) refclock_palisade.$(OBJEXT) \
|
||||
refclock_parse.$(OBJEXT) refclock_pcf.$(OBJEXT) \
|
||||
refclock_pst.$(OBJEXT) refclock_ripencc.$(OBJEXT) \
|
||||
refclock_shm.$(OBJEXT) refclock_tpro.$(OBJEXT) \
|
||||
refclock_true.$(OBJEXT) refclock_tt560.$(OBJEXT) \
|
||||
refclock_ulink.$(OBJEXT) refclock_wwv.$(OBJEXT) \
|
||||
refclock_wwvb.$(OBJEXT) refclock_zyfer.$(OBJEXT) \
|
||||
refclock_tsyncpci.$(OBJEXT) $(am__objects_1)
|
||||
libntpd_a_OBJECTS = $(am_libntpd_a_OBJECTS)
|
||||
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \
|
||||
"$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man1dir)" \
|
||||
@ -144,9 +194,10 @@ am__DEPENDENCIES_2 = version.o libntpd.a $(am__DEPENDENCIES_1)
|
||||
check_y2k_DEPENDENCIES = $(am__DEPENDENCIES_2) ../libntp/libntp.a \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
AM_V_lt = $(am__v_lt_$(V))
|
||||
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
keyword_gen_SOURCES = keyword-gen.c
|
||||
keyword_gen_OBJECTS = keyword-gen.$(OBJEXT)
|
||||
keyword_gen_DEPENDENCIES = ../libntp/libntp.a $(am__DEPENDENCIES_1) \
|
||||
@ -169,6 +220,18 @@ am_ntpdsim_OBJECTS = $(am__objects_2) ntpdsim-ntp_prio_q.$(OBJEXT) \
|
||||
ntpdsim_OBJECTS = $(am_ntpdsim_OBJECTS)
|
||||
ntpdsim_DEPENDENCIES = $(am__DEPENDENCIES_2) ../libntp/libntpsim.a \
|
||||
$(am__DEPENDENCIES_3)
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/sntp/libevent/build-aux/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -179,30 +242,37 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_$(V))
|
||||
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
|
||||
-e s/c++$$/h++/ -e s/c$$/h/
|
||||
YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
|
||||
LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
||||
AM_V_YACC = $(am__v_YACC_$(V))
|
||||
am__v_YACC_ = $(am__v_YACC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_YACC_0 = @echo " YACC " $@;
|
||||
$(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS)
|
||||
AM_V_YACC = $(am__v_YACC_@AM_V@)
|
||||
am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
|
||||
am__v_YACC_0 = @echo " YACC " $@;
|
||||
am__v_YACC_1 =
|
||||
YLWRAP = $(top_srcdir)/sntp/libevent/build-aux/ylwrap
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = $(libntpd_a_SOURCES) check_y2k.c keyword-gen.c \
|
||||
$(ntpd_SOURCES) $(ntpdsim_SOURCES)
|
||||
DIST_SOURCES = $(libntpd_a_SOURCES) check_y2k.c keyword-gen.c \
|
||||
$(ntpd_SOURCES) $(ntpdsim_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
@ -224,6 +294,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
man1dir = $(mandir)/man1
|
||||
man5dir = $(mandir)/man5
|
||||
man8dir = $(mandir)/man8
|
||||
@ -231,8 +307,32 @@ NROFF = nroff
|
||||
MANS = $(man1_MANS) $(man5_MANS) $(man8_MANS) $(man_MANS)
|
||||
DATA = $(html_DATA) $(noinst_DATA)
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/complete.conf.in \
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/check-libopts.mf \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/depcomp \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/ylwrap ntp_parser.c \
|
||||
ntp_parser.h
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -283,6 +383,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -399,6 +500,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -675,6 +777,7 @@ libntpd_a_SOURCES = \
|
||||
ntp_timer.c \
|
||||
ntp_util.c \
|
||||
ppsapi_timepps.h \
|
||||
rc_cmdlength.c \
|
||||
refclock_acts.c \
|
||||
refclock_arbiter.c \
|
||||
refclock_arc.c \
|
||||
@ -739,7 +842,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/bincheck.mf $(top_sr
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ntpd/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign ntpd/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -748,6 +850,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/check-libopts.mf $(top_srcdir)/sntp/check-libntp.mf $(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@ -762,20 +865,26 @@ complete.conf: $(top_builddir)/config.status $(srcdir)/complete.conf.in
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
libntpd.a: $(libntpd_a_OBJECTS) $(libntpd_a_DEPENDENCIES)
|
||||
|
||||
libntpd.a: $(libntpd_a_OBJECTS) $(libntpd_a_DEPENDENCIES) $(EXTRA_libntpd_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libntpd.a
|
||||
$(AM_V_AR)$(libntpd_a_AR) libntpd.a $(libntpd_a_OBJECTS) $(libntpd_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libntpd.a
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -796,7 +905,8 @@ uninstall-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
||||
@ -820,14 +930,19 @@ clean-checkPROGRAMS:
|
||||
rm -f $$list
|
||||
install-libexecPROGRAMS: $(libexec_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)"
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -848,7 +963,8 @@ uninstall-libexecPROGRAMS:
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
|
||||
@ -863,14 +979,19 @@ clean-libexecPROGRAMS:
|
||||
rm -f $$list
|
||||
install-sbinPROGRAMS: $(sbin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -891,7 +1012,8 @@ uninstall-sbinPROGRAMS:
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
|
||||
@ -904,21 +1026,23 @@ clean-sbinPROGRAMS:
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
check_y2k$(EXEEXT): $(check_y2k_OBJECTS) $(check_y2k_DEPENDENCIES)
|
||||
|
||||
check_y2k$(EXEEXT): $(check_y2k_OBJECTS) $(check_y2k_DEPENDENCIES) $(EXTRA_check_y2k_DEPENDENCIES)
|
||||
@rm -f check_y2k$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(check_y2k_OBJECTS) $(check_y2k_LDADD) $(LIBS)
|
||||
keyword-gen$(EXEEXT): $(keyword_gen_OBJECTS) $(keyword_gen_DEPENDENCIES)
|
||||
|
||||
keyword-gen$(EXEEXT): $(keyword_gen_OBJECTS) $(keyword_gen_DEPENDENCIES) $(EXTRA_keyword_gen_DEPENDENCIES)
|
||||
@rm -f keyword-gen$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(keyword_gen_OBJECTS) $(keyword_gen_LDADD) $(LIBS)
|
||||
ntp_parser.h: ntp_parser.c
|
||||
@if test ! -f $@; then \
|
||||
rm -f ntp_parser.c; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) ntp_parser.c; \
|
||||
else :; fi
|
||||
ntpd$(EXEEXT): $(ntpd_OBJECTS) $(ntpd_DEPENDENCIES)
|
||||
@if test ! -f $@; then rm -f ntp_parser.c; else :; fi
|
||||
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) ntp_parser.c; else :; fi
|
||||
|
||||
ntpd$(EXEEXT): $(ntpd_OBJECTS) $(ntpd_DEPENDENCIES) $(EXTRA_ntpd_DEPENDENCIES)
|
||||
@rm -f ntpd$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(ntpd_OBJECTS) $(ntpd_LDADD) $(LIBS)
|
||||
ntpdsim$(EXEEXT): $(ntpdsim_OBJECTS) $(ntpdsim_DEPENDENCIES)
|
||||
|
||||
ntpdsim$(EXEEXT): $(ntpdsim_OBJECTS) $(ntpdsim_DEPENDENCIES) $(EXTRA_ntpdsim_DEPENDENCIES)
|
||||
@rm -f ntpdsim$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(ntpdsim_OBJECTS) $(ntpdsim_LDADD) $(LIBS)
|
||||
|
||||
@ -959,6 +1083,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntpd-opts.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntpd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntpsim.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rc_cmdlength.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_acts.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_arbiter.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_arc.Po@am__quote@
|
||||
@ -1004,157 +1129,138 @@ distclean-compile:
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
ntpdsim-ntp_config.o: ntp_config.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_config.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_config.Tpo -c -o ntpdsim-ntp_config.o `test -f 'ntp_config.c' || echo '$(srcdir)/'`ntp_config.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_config.Tpo $(DEPDIR)/ntpdsim-ntp_config.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_config.c' object='ntpdsim-ntp_config.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_config.c' object='ntpdsim-ntp_config.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_config.o `test -f 'ntp_config.c' || echo '$(srcdir)/'`ntp_config.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_config.o `test -f 'ntp_config.c' || echo '$(srcdir)/'`ntp_config.c
|
||||
|
||||
ntpdsim-ntp_config.obj: ntp_config.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_config.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_config.Tpo -c -o ntpdsim-ntp_config.obj `if test -f 'ntp_config.c'; then $(CYGPATH_W) 'ntp_config.c'; else $(CYGPATH_W) '$(srcdir)/ntp_config.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_config.Tpo $(DEPDIR)/ntpdsim-ntp_config.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_config.c' object='ntpdsim-ntp_config.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_config.c' object='ntpdsim-ntp_config.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_config.obj `if test -f 'ntp_config.c'; then $(CYGPATH_W) 'ntp_config.c'; else $(CYGPATH_W) '$(srcdir)/ntp_config.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_config.obj `if test -f 'ntp_config.c'; then $(CYGPATH_W) 'ntp_config.c'; else $(CYGPATH_W) '$(srcdir)/ntp_config.c'; fi`
|
||||
|
||||
ntpdsim-ntp_io.o: ntp_io.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_io.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_io.Tpo -c -o ntpdsim-ntp_io.o `test -f 'ntp_io.c' || echo '$(srcdir)/'`ntp_io.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_io.Tpo $(DEPDIR)/ntpdsim-ntp_io.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_io.c' object='ntpdsim-ntp_io.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_io.c' object='ntpdsim-ntp_io.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_io.o `test -f 'ntp_io.c' || echo '$(srcdir)/'`ntp_io.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_io.o `test -f 'ntp_io.c' || echo '$(srcdir)/'`ntp_io.c
|
||||
|
||||
ntpdsim-ntp_io.obj: ntp_io.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_io.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_io.Tpo -c -o ntpdsim-ntp_io.obj `if test -f 'ntp_io.c'; then $(CYGPATH_W) 'ntp_io.c'; else $(CYGPATH_W) '$(srcdir)/ntp_io.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_io.Tpo $(DEPDIR)/ntpdsim-ntp_io.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_io.c' object='ntpdsim-ntp_io.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_io.c' object='ntpdsim-ntp_io.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_io.obj `if test -f 'ntp_io.c'; then $(CYGPATH_W) 'ntp_io.c'; else $(CYGPATH_W) '$(srcdir)/ntp_io.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_io.obj `if test -f 'ntp_io.c'; then $(CYGPATH_W) 'ntp_io.c'; else $(CYGPATH_W) '$(srcdir)/ntp_io.c'; fi`
|
||||
|
||||
ntpdsim-ntp_parser.o: ntp_parser.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_parser.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_parser.Tpo -c -o ntpdsim-ntp_parser.o `test -f 'ntp_parser.c' || echo '$(srcdir)/'`ntp_parser.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_parser.Tpo $(DEPDIR)/ntpdsim-ntp_parser.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_parser.c' object='ntpdsim-ntp_parser.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_parser.c' object='ntpdsim-ntp_parser.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_parser.o `test -f 'ntp_parser.c' || echo '$(srcdir)/'`ntp_parser.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_parser.o `test -f 'ntp_parser.c' || echo '$(srcdir)/'`ntp_parser.c
|
||||
|
||||
ntpdsim-ntp_parser.obj: ntp_parser.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_parser.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_parser.Tpo -c -o ntpdsim-ntp_parser.obj `if test -f 'ntp_parser.c'; then $(CYGPATH_W) 'ntp_parser.c'; else $(CYGPATH_W) '$(srcdir)/ntp_parser.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_parser.Tpo $(DEPDIR)/ntpdsim-ntp_parser.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_parser.c' object='ntpdsim-ntp_parser.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_parser.c' object='ntpdsim-ntp_parser.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_parser.obj `if test -f 'ntp_parser.c'; then $(CYGPATH_W) 'ntp_parser.c'; else $(CYGPATH_W) '$(srcdir)/ntp_parser.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_parser.obj `if test -f 'ntp_parser.c'; then $(CYGPATH_W) 'ntp_parser.c'; else $(CYGPATH_W) '$(srcdir)/ntp_parser.c'; fi`
|
||||
|
||||
ntpdsim-ntp_scanner.o: ntp_scanner.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_scanner.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_scanner.Tpo -c -o ntpdsim-ntp_scanner.o `test -f 'ntp_scanner.c' || echo '$(srcdir)/'`ntp_scanner.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_scanner.Tpo $(DEPDIR)/ntpdsim-ntp_scanner.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_scanner.c' object='ntpdsim-ntp_scanner.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_scanner.c' object='ntpdsim-ntp_scanner.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_scanner.o `test -f 'ntp_scanner.c' || echo '$(srcdir)/'`ntp_scanner.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_scanner.o `test -f 'ntp_scanner.c' || echo '$(srcdir)/'`ntp_scanner.c
|
||||
|
||||
ntpdsim-ntp_scanner.obj: ntp_scanner.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_scanner.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_scanner.Tpo -c -o ntpdsim-ntp_scanner.obj `if test -f 'ntp_scanner.c'; then $(CYGPATH_W) 'ntp_scanner.c'; else $(CYGPATH_W) '$(srcdir)/ntp_scanner.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_scanner.Tpo $(DEPDIR)/ntpdsim-ntp_scanner.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_scanner.c' object='ntpdsim-ntp_scanner.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_scanner.c' object='ntpdsim-ntp_scanner.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_scanner.obj `if test -f 'ntp_scanner.c'; then $(CYGPATH_W) 'ntp_scanner.c'; else $(CYGPATH_W) '$(srcdir)/ntp_scanner.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_scanner.obj `if test -f 'ntp_scanner.c'; then $(CYGPATH_W) 'ntp_scanner.c'; else $(CYGPATH_W) '$(srcdir)/ntp_scanner.c'; fi`
|
||||
|
||||
ntpdsim-ntpd.o: ntpd.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntpd.Tpo -c -o ntpdsim-ntpd.o `test -f 'ntpd.c' || echo '$(srcdir)/'`ntpd.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntpd.Tpo $(DEPDIR)/ntpdsim-ntpd.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd.c' object='ntpdsim-ntpd.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntpd.c' object='ntpdsim-ntpd.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd.o `test -f 'ntpd.c' || echo '$(srcdir)/'`ntpd.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd.o `test -f 'ntpd.c' || echo '$(srcdir)/'`ntpd.c
|
||||
|
||||
ntpdsim-ntpd.obj: ntpd.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntpd.Tpo -c -o ntpdsim-ntpd.obj `if test -f 'ntpd.c'; then $(CYGPATH_W) 'ntpd.c'; else $(CYGPATH_W) '$(srcdir)/ntpd.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntpd.Tpo $(DEPDIR)/ntpdsim-ntpd.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd.c' object='ntpdsim-ntpd.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntpd.c' object='ntpdsim-ntpd.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd.obj `if test -f 'ntpd.c'; then $(CYGPATH_W) 'ntpd.c'; else $(CYGPATH_W) '$(srcdir)/ntpd.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd.obj `if test -f 'ntpd.c'; then $(CYGPATH_W) 'ntpd.c'; else $(CYGPATH_W) '$(srcdir)/ntpd.c'; fi`
|
||||
|
||||
ntpdsim-ntpd-opts.o: ntpd-opts.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd-opts.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntpd-opts.Tpo -c -o ntpdsim-ntpd-opts.o `test -f 'ntpd-opts.c' || echo '$(srcdir)/'`ntpd-opts.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntpd-opts.Tpo $(DEPDIR)/ntpdsim-ntpd-opts.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd-opts.c' object='ntpdsim-ntpd-opts.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntpd-opts.c' object='ntpdsim-ntpd-opts.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd-opts.o `test -f 'ntpd-opts.c' || echo '$(srcdir)/'`ntpd-opts.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd-opts.o `test -f 'ntpd-opts.c' || echo '$(srcdir)/'`ntpd-opts.c
|
||||
|
||||
ntpdsim-ntpd-opts.obj: ntpd-opts.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd-opts.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntpd-opts.Tpo -c -o ntpdsim-ntpd-opts.obj `if test -f 'ntpd-opts.c'; then $(CYGPATH_W) 'ntpd-opts.c'; else $(CYGPATH_W) '$(srcdir)/ntpd-opts.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntpd-opts.Tpo $(DEPDIR)/ntpdsim-ntpd-opts.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd-opts.c' object='ntpdsim-ntpd-opts.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntpd-opts.c' object='ntpdsim-ntpd-opts.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd-opts.obj `if test -f 'ntpd-opts.c'; then $(CYGPATH_W) 'ntpd-opts.c'; else $(CYGPATH_W) '$(srcdir)/ntpd-opts.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd-opts.obj `if test -f 'ntpd-opts.c'; then $(CYGPATH_W) 'ntpd-opts.c'; else $(CYGPATH_W) '$(srcdir)/ntpd-opts.c'; fi`
|
||||
|
||||
ntpdsim-ntp_prio_q.o: ntp_prio_q.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_prio_q.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_prio_q.Tpo -c -o ntpdsim-ntp_prio_q.o `test -f 'ntp_prio_q.c' || echo '$(srcdir)/'`ntp_prio_q.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_prio_q.Tpo $(DEPDIR)/ntpdsim-ntp_prio_q.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_prio_q.c' object='ntpdsim-ntp_prio_q.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_prio_q.c' object='ntpdsim-ntp_prio_q.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_prio_q.o `test -f 'ntp_prio_q.c' || echo '$(srcdir)/'`ntp_prio_q.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_prio_q.o `test -f 'ntp_prio_q.c' || echo '$(srcdir)/'`ntp_prio_q.c
|
||||
|
||||
ntpdsim-ntp_prio_q.obj: ntp_prio_q.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_prio_q.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntp_prio_q.Tpo -c -o ntpdsim-ntp_prio_q.obj `if test -f 'ntp_prio_q.c'; then $(CYGPATH_W) 'ntp_prio_q.c'; else $(CYGPATH_W) '$(srcdir)/ntp_prio_q.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntp_prio_q.Tpo $(DEPDIR)/ntpdsim-ntp_prio_q.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_prio_q.c' object='ntpdsim-ntp_prio_q.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntp_prio_q.c' object='ntpdsim-ntp_prio_q.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_prio_q.obj `if test -f 'ntp_prio_q.c'; then $(CYGPATH_W) 'ntp_prio_q.c'; else $(CYGPATH_W) '$(srcdir)/ntp_prio_q.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_prio_q.obj `if test -f 'ntp_prio_q.c'; then $(CYGPATH_W) 'ntp_prio_q.c'; else $(CYGPATH_W) '$(srcdir)/ntp_prio_q.c'; fi`
|
||||
|
||||
ntpdsim-ntpsim.o: ntpsim.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpsim.o -MD -MP -MF $(DEPDIR)/ntpdsim-ntpsim.Tpo -c -o ntpdsim-ntpsim.o `test -f 'ntpsim.c' || echo '$(srcdir)/'`ntpsim.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntpsim.Tpo $(DEPDIR)/ntpdsim-ntpsim.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpsim.c' object='ntpdsim-ntpsim.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntpsim.c' object='ntpdsim-ntpsim.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpsim.o `test -f 'ntpsim.c' || echo '$(srcdir)/'`ntpsim.c
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpsim.o `test -f 'ntpsim.c' || echo '$(srcdir)/'`ntpsim.c
|
||||
|
||||
ntpdsim-ntpsim.obj: ntpsim.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpsim.obj -MD -MP -MF $(DEPDIR)/ntpdsim-ntpsim.Tpo -c -o ntpdsim-ntpsim.obj `if test -f 'ntpsim.c'; then $(CYGPATH_W) 'ntpsim.c'; else $(CYGPATH_W) '$(srcdir)/ntpsim.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ntpdsim-ntpsim.Tpo $(DEPDIR)/ntpdsim-ntpsim.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpsim.c' object='ntpdsim-ntpsim.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ntpsim.c' object='ntpdsim-ntpsim.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpsim.obj `if test -f 'ntpsim.c'; then $(CYGPATH_W) 'ntpsim.c'; else $(CYGPATH_W) '$(srcdir)/ntpsim.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ntpdsim_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpsim.obj `if test -f 'ntpsim.c'; then $(CYGPATH_W) 'ntpsim.c'; else $(CYGPATH_W) '$(srcdir)/ntpsim.c'; fi`
|
||||
|
||||
.y.c:
|
||||
$(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
|
||||
$(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -1163,11 +1269,18 @@ clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-man1: $(man1_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
|
||||
@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
|
||||
{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.1[a-z]*$$/p'; \
|
||||
@list1='$(man1_MANS)'; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man1dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.1[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
@ -1196,16 +1309,21 @@ uninstall-man1:
|
||||
sed -n '/\.1[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
test -z "$$files" || { \
|
||||
echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
|
||||
dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
|
||||
install-man5: $(man5_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
|
||||
@list='$(man5_MANS)'; test -n "$(man5dir)" || exit 0; \
|
||||
{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.5[a-z]*$$/p'; \
|
||||
@list1='$(man5_MANS)'; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man5dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.5[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
@ -1234,16 +1352,21 @@ uninstall-man5:
|
||||
sed -n '/\.5[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
test -z "$$files" || { \
|
||||
echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
|
||||
dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
|
||||
install-man8: $(man8_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
|
||||
@list='$(man8_MANS)'; test -n "$(man8dir)" || exit 0; \
|
||||
{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.8[a-z]*$$/p'; \
|
||||
@list1='$(man8_MANS)'; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man8dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.8[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
@ -1272,13 +1395,14 @@ uninstall-man8:
|
||||
sed -n '/\.8[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
test -z "$$files" || { \
|
||||
echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(man8dir)" && rm -f $$files; }
|
||||
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
|
||||
install-htmlDATA: $(html_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
|
||||
@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
@ -1292,30 +1416,17 @@ uninstall-htmlDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
test -n "$$files" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(htmldir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(htmldir)" && rm -f $$files
|
||||
dir='$(DESTDIR)$(htmldir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -1327,15 +1438,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -1344,24 +1451,26 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(MANS)'; if test -n "$$list"; then \
|
||||
list=`for p in $$list; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
|
||||
if test -n "$$list" && \
|
||||
grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
|
||||
echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
|
||||
grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
|
||||
echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
|
||||
echo " typically \`make maintainer-clean' will remove them" >&2; \
|
||||
exit 1; \
|
||||
else :; fi; \
|
||||
else :; fi
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -1412,10 +1521,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -1512,27 +1626,29 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8
|
||||
.MAKE: all check check-am install install-am install-exec-am \
|
||||
install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
|
||||
clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
|
||||
clean-libexecPROGRAMS clean-libtool clean-noinstLIBRARIES \
|
||||
clean-sbinPROGRAMS ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-data install-data-am \
|
||||
install-data-local install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-exec-hook install-html install-html-am \
|
||||
install-htmlDATA install-info install-info-am \
|
||||
clean-sbinPROGRAMS cscopelist-am ctags ctags-am distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-binPROGRAMS install-data \
|
||||
install-data-am install-data-local install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-exec-hook install-html \
|
||||
install-html-am install-htmlDATA install-info install-info-am \
|
||||
install-libexecPROGRAMS install-man install-man1 install-man5 \
|
||||
install-man8 install-pdf install-pdf-am install-ps \
|
||||
install-ps-am install-sbinPROGRAMS install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-htmlDATA uninstall-libexecPROGRAMS uninstall-man \
|
||||
uninstall-man1 uninstall-man5 uninstall-man8 \
|
||||
uninstall-sbinPROGRAMS
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
vphack:
|
||||
test -e ntp_parser.c || ln -s $(srcdir)/ntp_parser.c .
|
||||
|
@ -2,8 +2,10 @@ saveconfigdir "/etc/ntp/conf"
|
||||
driftfile "/etc/ntp.drift" 1e-7
|
||||
logfile "/var/log/ntp.log"
|
||||
leapfile "/etc/ntp.leapseconds"
|
||||
@HAVE_LEAPSMEARINTERVAL@
|
||||
nonvolatile 1e-7
|
||||
ident "udent"
|
||||
dscp 46
|
||||
logconfig =allall -allinfo -allevents -allstatistics -allstatus +allall -clockinfo -clockevents -clockstatistics -clockstatus +clockall -syncinfo -syncevents -syncstatistics -syncstatus +syncall -sysinfo -sysevents -sysstatistics -sysstatus +sysall
|
||||
statsdir "/etc/ntp/stats"
|
||||
statistics clockstats cryptostats loopstats peerstats protostats rawstats sysstats timingstats
|
||||
|
@ -6,7 +6,7 @@
|
||||
#
|
||||
# EDIT THIS FILE WITH CAUTION (invoke-ntp.conf.texi)
|
||||
#
|
||||
# It has been AutoGen-ed April 7, 2015 at 04:25:50 AM by AutoGen 5.18.5pre4
|
||||
# It has been AutoGen-ed June 29, 2015 at 04:30:28 PM by AutoGen 5.18.5
|
||||
# From the definitions ntp.conf.def
|
||||
# and the template file agtexi-file.tpl
|
||||
@end ignore
|
||||
@ -2291,6 +2291,9 @@ This implies that
|
||||
must have write permission for the directory the
|
||||
drift file is located in, and that file system links, symbolic or
|
||||
otherwise, should be avoided.
|
||||
@item @code{dscp} @kbd{value}
|
||||
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}]}
|
||||
@item @code{disable} @code{[@code{auth} | @code{bclient} | @code{calibrate} | @code{kernel} | @code{mode7} | @code{monitor} | @code{ntp} | @code{stats}]}
|
||||
Provides a way to enable or disable various server options.
|
||||
@ -2376,6 +2379,19 @@ This option is useful for sites that run
|
||||
@code{ntpd(1ntpdmdoc)}
|
||||
on multiple hosts, with (mostly) common options (e.g., a
|
||||
restriction list).
|
||||
@item @code{leapsmearinterval} @kbd{seconds}
|
||||
This EXPERIMENTAL option is only available if
|
||||
@code{ntpd(1ntpdmdoc)}
|
||||
was built with the
|
||||
@code{--enable-leap-smear}
|
||||
option to the
|
||||
@code{configure}
|
||||
script.
|
||||
It specifies the interval over which a leap second correction will be applied.
|
||||
Recommended values for this option are between
|
||||
7200 (2 hours) and 86400 (24 hours).
|
||||
.Sy DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS!
|
||||
See http://bugs.ntp.org/2855 for more information.
|
||||
@item @code{logconfig} @kbd{configkeyword}
|
||||
This command controls the amount and type of output written to
|
||||
the system
|
||||
@ -2570,11 +2586,11 @@ option).
|
||||
The default is 32 megabytes. Setting this to zero will prevent any attemp to lock memory.
|
||||
@item @code{stacksize} @kbd{N4kPages}
|
||||
Specifies the maximum size of the process stack on systems with the
|
||||
@item @code{filenum} @kbd{Nfiledescriptors}
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
@code{mlockall()}
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
@item @code{filenum} @kbd{Nfiledescriptors}
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
@end table
|
||||
@item @code{trap} @kbd{host_address} @code{[@code{port} @kbd{port_number}]} @code{[@code{interface} @kbd{interface_address}]}
|
||||
This command configures a trap receiver at the given host
|
||||
|
@ -6,7 +6,7 @@
|
||||
#
|
||||
# EDIT THIS FILE WITH CAUTION (invoke-ntp.keys.texi)
|
||||
#
|
||||
# It has been AutoGen-ed April 7, 2015 at 04:25:52 AM by AutoGen 5.18.5pre4
|
||||
# It has been AutoGen-ed June 29, 2015 at 04:30:31 PM by AutoGen 5.18.5
|
||||
# From the definitions ntp.keys.def
|
||||
# and the template file agtexi-file.tpl
|
||||
@end ignore
|
||||
|
@ -6,7 +6,7 @@
|
||||
#
|
||||
# EDIT THIS FILE WITH CAUTION (invoke-ntpd.texi)
|
||||
#
|
||||
# It has been AutoGen-ed April 7, 2015 at 04:25:54 AM by AutoGen 5.18.5pre4
|
||||
# It has been AutoGen-ed June 29, 2015 at 04:30:33 PM 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.8p2
|
||||
ntpd - NTP daemon program - Ver. 4.2.8p3
|
||||
Usage: ntpd [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... \
|
||||
[ <server1> ... <serverN> ]
|
||||
Flg Arg Option-Name Description
|
||||
|
@ -1 +1 @@
|
||||
* Generated 2015-03-16 09:05:44 UTC diff_ignore_line
|
||||
* Generated 2015-06-25 03:57:00 UTC diff_ignore_line
|
||||
|
@ -46,6 +46,7 @@ struct key_tok ntp_keywords[] = {
|
||||
{ "ctl", T_Ctl, FOLLBY_TOKEN },
|
||||
{ "disable", T_Disable, FOLLBY_TOKEN },
|
||||
{ "driftfile", T_Driftfile, FOLLBY_STRING },
|
||||
{ "dscp", T_Dscp, FOLLBY_TOKEN },
|
||||
{ "enable", T_Enable, FOLLBY_TOKEN },
|
||||
{ "end", T_End, FOLLBY_TOKEN },
|
||||
{ "filegen", T_Filegen, FOLLBY_TOKEN },
|
||||
@ -53,6 +54,7 @@ struct key_tok ntp_keywords[] = {
|
||||
{ "io", T_Io, FOLLBY_TOKEN },
|
||||
{ "includefile", T_Includefile, FOLLBY_STRING },
|
||||
{ "leapfile", T_Leapfile, FOLLBY_STRING },
|
||||
{ "leapsmearinterval", T_Leapsmearinterval, FOLLBY_TOKEN },
|
||||
{ "logconfig", T_Logconfig, FOLLBY_STRINGS_TO_EOC },
|
||||
{ "logfile", T_Logfile, FOLLBY_STRING },
|
||||
{ "manycastclient", T_Manycastclient, FOLLBY_STRING },
|
||||
@ -333,12 +335,11 @@ generate_fsm(void)
|
||||
char *r;
|
||||
u_short initial_state;
|
||||
u_short this_state;
|
||||
u_short prev_state;
|
||||
u_short state;
|
||||
u_short i;
|
||||
u_short token;
|
||||
|
||||
/*
|
||||
/*
|
||||
* Sort ntp_keywords in alphabetical keyword order. This is
|
||||
* not necessary, but minimizes nonfunctional changes in the
|
||||
* generated finite state machine when keywords are modified.
|
||||
@ -347,7 +348,7 @@ generate_fsm(void)
|
||||
sizeof(ntp_keywords[0]), compare_key_tok_text);
|
||||
|
||||
/*
|
||||
* To save space, reserve the state array entry matching each
|
||||
* To save space, reserve the state array entry matching each
|
||||
* token number for its terminal state, so the token identifier
|
||||
* does not need to be stored in each state, but can be
|
||||
* recovered trivially. To mark the entry reserved,
|
||||
@ -414,7 +415,7 @@ generate_fsm(void)
|
||||
}
|
||||
|
||||
if (sst[i].finishes_token) {
|
||||
snprintf(token_id_comment,
|
||||
snprintf(token_id_comment,
|
||||
sizeof(token_id_comment), "%5d %-17s",
|
||||
i, symbname(sst[i].finishes_token));
|
||||
if (i != sst[i].finishes_token) {
|
||||
@ -442,7 +443,6 @@ generate_fsm(void)
|
||||
* spellings result in the same T_* value.
|
||||
*/
|
||||
prefix_len = 0;
|
||||
prev_state = 0;
|
||||
this_state = i;
|
||||
do {
|
||||
for (state = 1; state < sst_highwater; state++)
|
||||
@ -468,8 +468,8 @@ generate_fsm(void)
|
||||
|
||||
snprintf(token_id_comment,
|
||||
sizeof(token_id_comment), "%5d %-17s",
|
||||
i, (initial_state == i)
|
||||
? "[initial state]"
|
||||
i, (initial_state == i)
|
||||
? "[initial state]"
|
||||
: prefix);
|
||||
}
|
||||
|
||||
@ -497,8 +497,8 @@ generate_fsm(void)
|
||||
*/
|
||||
static u_short
|
||||
create_scan_states(
|
||||
char * text,
|
||||
u_short token,
|
||||
char * text,
|
||||
u_short token,
|
||||
follby followedby,
|
||||
u_short prev_state
|
||||
)
|
||||
@ -512,7 +512,7 @@ create_scan_states(
|
||||
curr_char_s = prev_state;
|
||||
prev_char_s = 0;
|
||||
|
||||
/* Find the correct position to insert the state.
|
||||
/* Find the correct position to insert the state.
|
||||
* All states should be in alphabetical order
|
||||
*/
|
||||
while (curr_char_s && (text[0] < sst[curr_char_s].ch)) {
|
||||
@ -520,7 +520,7 @@ create_scan_states(
|
||||
curr_char_s = sst[curr_char_s].other_next_s;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Check if a previously seen keyword has the same prefix as
|
||||
* the current keyword. If so, simply use the state for that
|
||||
* keyword as my_state, otherwise, allocate a new state.
|
||||
@ -548,7 +548,7 @@ create_scan_states(
|
||||
exit(3);
|
||||
}
|
||||
/* Store the next character of the keyword */
|
||||
sst[my_state].ch = text[0];
|
||||
sst[my_state].ch = text[0];
|
||||
sst[my_state].other_next_s = curr_char_s;
|
||||
sst[my_state].followedby = FOLLBY_NON_ACCEPTING;
|
||||
|
||||
@ -587,7 +587,7 @@ create_scan_states(
|
||||
return_state = my_state;
|
||||
}
|
||||
} else
|
||||
sst[my_state].match_next_s =
|
||||
sst[my_state].match_next_s =
|
||||
create_scan_states(
|
||||
&text[1],
|
||||
token,
|
||||
@ -615,8 +615,8 @@ create_keyword_scanner(void)
|
||||
current_keyword = ntp_keywords[i].key;
|
||||
scanner =
|
||||
create_scan_states(
|
||||
ntp_keywords[i].key,
|
||||
ntp_keywords[i].token,
|
||||
ntp_keywords[i].key,
|
||||
ntp_keywords[i].token,
|
||||
ntp_keywords[i].followedby,
|
||||
scanner);
|
||||
}
|
||||
@ -657,7 +657,7 @@ generate_token_text(void)
|
||||
if (i > 0)
|
||||
printf(",");
|
||||
printf("\n\t/* %-5d %5d %20s */\t\"%s\"",
|
||||
id - lowest_id, id, symbname(id),
|
||||
id - lowest_id, id, symbname(id),
|
||||
ntp_keywords[i].key);
|
||||
i++;
|
||||
id++;
|
||||
@ -666,7 +666,7 @@ generate_token_text(void)
|
||||
printf("\n};\n\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
compare_key_tok_id(
|
||||
const void *a1,
|
||||
@ -749,7 +749,7 @@ symbname(
|
||||
} else {
|
||||
LIB_GETBUF(name);
|
||||
snprintf(name, LIB_BUFLENGTH, "%d", token);
|
||||
}
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
@ -10,11 +10,11 @@
|
||||
.ds B-Font B
|
||||
.ds I-Font I
|
||||
.ds R-Font R
|
||||
.TH ntp.conf 5man "07 Apr 2015" "4.2.8p2" "File Formats"
|
||||
.TH ntp.conf 5man "29 Jun 2015" "4.2.8p3" "File Formats"
|
||||
.\"
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gKaW.1/ag-tKaO91)
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-R0aO7B/ag-30aG6B)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:37 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:16 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.conf.def
|
||||
.\" and the template file agman-cmd.tpl
|
||||
.SH NAME
|
||||
@ -35,7 +35,7 @@ All arguments must be options.
|
||||
The
|
||||
\f\*[B-Font]ntp.conf\fP
|
||||
configuration file is read at initial startup by the
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
daemon in order to specify the synchronization sources,
|
||||
modes and other related information.
|
||||
Usually, it is installed in the
|
||||
@ -307,7 +307,7 @@ This is designed to speed the initial synchronization
|
||||
acquisition with the
|
||||
\f\*[B-Font]server\f[]
|
||||
command and s addresses and when
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
is started with the
|
||||
\f\*[B-Font]\-q\f[]
|
||||
option.
|
||||
@ -528,7 +528,7 @@ and
|
||||
\f\*[B-Font]disable\f[]
|
||||
commands and also by remote
|
||||
configuration commands sent by a
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
program running in
|
||||
another machine.
|
||||
If this flag is enabled, which is the default
|
||||
@ -595,15 +595,15 @@ secure means beyond the scope of the NTP protocol itself.
|
||||
Besides the keys used
|
||||
for ordinary NTP associations,
|
||||
additional keys can be used as passwords for the
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
utility programs.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
When
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
is first started, it reads the key file specified in the
|
||||
\f\*[B-Font]keys\f[]
|
||||
configuration command and installs the keys
|
||||
@ -617,17 +617,17 @@ allows, for instance, the installation of possibly
|
||||
several batches of keys and
|
||||
then activating or deactivating each batch
|
||||
remotely using
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[].
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[].
|
||||
This also provides a revocation capability that can be used
|
||||
if a key becomes compromised.
|
||||
The
|
||||
\f\*[B-Font]requestkey\f[]
|
||||
command selects the key used as the password for the
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
utility, while the
|
||||
\f\*[B-Font]controlkey\f[]
|
||||
command selects the key used as the password for the
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
utility.
|
||||
.SS Public Key Cryptography
|
||||
NTPv4 supports the original NTPv3 symmetric key scheme
|
||||
@ -674,7 +674,7 @@ page.
|
||||
The specific cryptographic environment used by Autokey servers
|
||||
and clients is determined by a set of files
|
||||
and soft links generated by the
|
||||
\fCntp-keygen\fR(1ntpkeygenmdoc)\f[]
|
||||
\fCntp-keygen\f[]\fR(1ntpkeygenmdoc)\f[]
|
||||
program.
|
||||
This includes a required host key file,
|
||||
required certificate file and optional sign key file,
|
||||
@ -721,7 +721,7 @@ DNS compromise is essential.
|
||||
|
||||
By convention, the name of an Autokey host is the name returned
|
||||
by the Unix
|
||||
\fCgethostname\fR(2)\f[]
|
||||
\fCgethostname\f[]\fR(2)\f[]
|
||||
system call or equivalent in other systems.
|
||||
By the system design
|
||||
model, there are no provisions to allow alternate names or aliases.
|
||||
@ -821,7 +821,7 @@ If verification fails,
|
||||
Bob sends Cathy a thing called a crypto-NAK, which tells her
|
||||
something broke.
|
||||
She can see the evidence using the
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
program.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
@ -846,7 +846,7 @@ with one server and no authentication with another might not be wise.
|
||||
.SS Key Management
|
||||
The cryptographic values used by the Autokey protocol are
|
||||
incorporated as a set of files generated by the
|
||||
\fCntp-keygen\fR(1ntpkeygenmdoc)\f[]
|
||||
\fCntp-keygen\f[]\fR(1ntpkeygenmdoc)\f[]
|
||||
utility program, including symmetric key, host key and
|
||||
public certificate files, as well as sign key, identity parameters
|
||||
and leapseconds files.
|
||||
@ -855,9 +855,9 @@ certificate files can be generated by the OpenSSL utilities
|
||||
and certificates can be imported from public certificate
|
||||
authorities.
|
||||
Note that symmetric keys are necessary for the
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
utility programs.
|
||||
The remaining files are necessary only for the
|
||||
Autokey protocol.
|
||||
@ -895,7 +895,7 @@ sent.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]controlkey\f[] \f\*[I-Font]key\f[]
|
||||
Specifies the key identifier to use with the
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
utility, which uses the standard
|
||||
protocol defined in RFC-1305.
|
||||
The
|
||||
@ -984,10 +984,10 @@ not found, the host key is also the sign key.
|
||||
.NOP \f\*[B-Font]keys\f[] \f\*[I-Font]keyfile\f[]
|
||||
Specifies the complete path and location of the MD5 key file
|
||||
containing the keys and key identifiers used by
|
||||
\fCntpd\fR(1ntpdmdoc)\f[],
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[],
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
when operating with symmetric key cryptography.
|
||||
This is the same operation as the
|
||||
\f\*[B-Font]\-k\f[]
|
||||
@ -1001,10 +1001,10 @@ The default is
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]requestkey\f[] \f\*[I-Font]key\f[]
|
||||
Specifies the key identifier to use with the
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
utility program, which uses a
|
||||
proprietary protocol specific to this implementation of
|
||||
\fCntpd\fR(1ntpdmdoc)\f[].
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[].
|
||||
The
|
||||
\f\*[I-Font]key\f[]
|
||||
argument is a key identifier
|
||||
@ -1027,9 +1027,9 @@ for every message sent.
|
||||
Specifies the key identifiers which are trusted for the
|
||||
purposes of authenticating peers with symmetric key cryptography,
|
||||
as well as keys used by the
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
programs.
|
||||
The authentication procedures require that both the local
|
||||
and remote servers share the same key and key identifier for this
|
||||
@ -1106,7 +1106,7 @@ The certificate is missing, corrupted or bogus.
|
||||
The identity key is missing, corrupt or bogus.
|
||||
.PP
|
||||
.SH Monitoring Support
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
includes a comprehensive monitoring facility suitable
|
||||
for continuous, long term recording of server and client
|
||||
timekeeping performance.
|
||||
@ -1122,7 +1122,7 @@ directory of this distribution.
|
||||
Using
|
||||
these facilities and
|
||||
UNIX
|
||||
\fCcron\fR(8)\f[]
|
||||
\fCcron\f[]\fR(8)\f[]
|
||||
jobs, the data can be
|
||||
automatically summarized and archived for retrospective analysis.
|
||||
.SS Monitoring Commands
|
||||
@ -1348,7 +1348,7 @@ produced.)
|
||||
.ne 2
|
||||
|
||||
Note that this command can be sent from the
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
program running at a remote location.
|
||||
.RS
|
||||
.TP 7
|
||||
@ -1422,7 +1422,7 @@ server.
|
||||
This type does not perform any changes to file set
|
||||
members during runtime, however it provides an easy way of
|
||||
separating files belonging to different
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
server incarnations.
|
||||
The set member filename is built by appending a
|
||||
\[oq]\&.\[cq]
|
||||
@ -1432,7 +1432,7 @@ and
|
||||
\f\*[I-Font]filename\f[]
|
||||
strings, and
|
||||
appending the decimal representation of the process ID of the
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
server process.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]day\f[]
|
||||
@ -1524,7 +1524,7 @@ Enables or disables the recording function.
|
||||
.PP
|
||||
.SH Access Control Support
|
||||
The
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
daemon implements a general purpose address/mask based restriction
|
||||
list.
|
||||
The list contains address/match entries sorted first
|
||||
@ -1672,9 +1672,9 @@ may be specified:
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]ignore\f[]
|
||||
Deny packets of all kinds, including
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
queries.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]kod\f[]
|
||||
@ -1690,7 +1690,7 @@ Deny service if the packet spacing violates the lower limits specified
|
||||
in the discard command.
|
||||
A history of clients is kept using the
|
||||
monitoring capability of
|
||||
\fCntpd\fR(1ntpdmdoc)\f[].
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[].
|
||||
Thus, monitoring is always active as
|
||||
long as there is a restriction entry with the
|
||||
\f\*[B-Font]limited\f[]
|
||||
@ -1709,9 +1709,9 @@ be overridden by later requests for normal priority traps.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]nomodify\f[]
|
||||
Deny
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
queries which attempt to modify the state of the
|
||||
server (i.e., run time reconfiguration).
|
||||
Queries which return
|
||||
@ -1719,9 +1719,9 @@ information are permitted.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]noquery\f[]
|
||||
Deny
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
queries.
|
||||
Time service is not affected.
|
||||
.TP 7
|
||||
@ -1746,9 +1746,9 @@ directive.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]noserve\f[]
|
||||
Deny all packets except
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
queries.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]notrap\f[]
|
||||
@ -2078,11 +2078,11 @@ re-associate accordingly.
|
||||
.ne 2
|
||||
|
||||
Some administrators prefer to avoid running
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
continuously and run either
|
||||
\fCntpdate\fR(8)\f[]
|
||||
\fCntpdate\f[]\fR(8)\f[]
|
||||
or
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
\f\*[B-Font]\-q\f[]
|
||||
as a cron job.
|
||||
In either case the servers must be
|
||||
@ -2090,7 +2090,7 @@ configured in advance and the program fails if none are
|
||||
available when the cron job runs.
|
||||
A really slick
|
||||
application of manycast is with
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
\f\*[B-Font]\-q\f[].
|
||||
The program wakes up, scans the local landscape looking
|
||||
for the usual suspects, selects the best from among
|
||||
@ -2260,7 +2260,7 @@ hazardous.
|
||||
.ne 2
|
||||
|
||||
For the purposes of configuration,
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
treats
|
||||
reference clocks in a manner analogous to normal NTP peers as much
|
||||
as possible.
|
||||
@ -2348,7 +2348,7 @@ command as well.
|
||||
|
||||
The stratum number of a reference clock is by default zero.
|
||||
Since the
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
daemon adds one to the stratum of each
|
||||
peer, a primary server ordinarily displays an external stratum of
|
||||
one.
|
||||
@ -2422,7 +2422,7 @@ It must immediately follow the
|
||||
command which configures the driver.
|
||||
Note that the same capability
|
||||
is possible at run time using the
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
program.
|
||||
The options are interpreted as
|
||||
follows:
|
||||
@ -2564,11 +2564,15 @@ The file is updated by first writing
|
||||
the current drift value into a temporary file and then renaming
|
||||
this file to replace the old version.
|
||||
This implies that
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
must have write permission for the directory the
|
||||
drift file is located in, and that file system links, symbolic or
|
||||
otherwise, should be avoided.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]dscp\f[] \f\*[I-Font]value\f[]
|
||||
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[]]
|
||||
.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[]]
|
||||
@ -2576,7 +2580,7 @@ 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
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
utility program.
|
||||
.RS
|
||||
.TP 7
|
||||
@ -2613,21 +2617,21 @@ if support is available, otherwise
|
||||
.NOP \f\*[B-Font]mode7\f[]
|
||||
Enables processing of NTP mode 7 implementation-specific requests
|
||||
which are used by the deprecated
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
program.
|
||||
The default for this flag is disable.
|
||||
This flag is excluded from runtime configuration using
|
||||
\fCntpq\fR(1ntpqmdoc)\f[].
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[].
|
||||
The
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
program provides the same capabilities as
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
using standard mode 6 requests.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]monitor\f[]
|
||||
Enables the monitoring facility.
|
||||
See the
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
program
|
||||
and the
|
||||
\f\*[B-Font]monlist\f[]
|
||||
@ -2661,14 +2665,28 @@ be nested to a depth of five; upon reaching the end of any
|
||||
include file, command processing resumes in the previous
|
||||
configuration file.
|
||||
This option is useful for sites that run
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
on multiple hosts, with (mostly) common options (e.g., a
|
||||
restriction list).
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]leapsmearinterval\f[] \f\*[I-Font]seconds\f[]
|
||||
This EXPERIMENTAL option is only available if
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
was built with the
|
||||
\f\*[B-Font]\--enable-leap-smear\f[]
|
||||
option to the
|
||||
\f\*[B-Font]configure\f[]
|
||||
script.
|
||||
It specifies the interval over which a leap second correction will be applied.
|
||||
Recommended values for this option are between
|
||||
7200 (2 hours) and 86400 (24 hours).
|
||||
.Sy DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS!
|
||||
See http://bugs.ntp.org/2855 for more information.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]logconfig\f[] \f\*[I-Font]configkeyword\f[]
|
||||
This command controls the amount and type of output written to
|
||||
the system
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
facility or the alternate
|
||||
\f\*[B-Font]logfile\f[]
|
||||
log file.
|
||||
@ -2683,14 +2701,14 @@ and
|
||||
where
|
||||
\[oq]=\[cq]
|
||||
sets the
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
priority mask,
|
||||
\[oq]+\[cq]
|
||||
adds and
|
||||
\[oq]\-\[cq]
|
||||
removes
|
||||
messages.
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
messages can be controlled in four
|
||||
classes
|
||||
(\f\*[B-Font]clock\f[], \f\*[B-Font]peer\f[], \f\*[B-Font]sys\f[] and \f\*[B-Font]sync\f[]).
|
||||
@ -2728,7 +2746,7 @@ logconfig =syncstatus +sysevents
|
||||
.ne 2
|
||||
|
||||
This would just list the synchronizations state of
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
and the major system events.
|
||||
For a simple reference server, the
|
||||
following minimum message configuration could be useful:
|
||||
@ -2749,7 +2767,7 @@ peers, system events and so on is suppressed.
|
||||
.NOP \f\*[B-Font]logfile\f[] \f\*[I-Font]logfile\f[]
|
||||
This command specifies the location of an alternate log file to
|
||||
be used instead of the default system
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
facility.
|
||||
This is the same operation as the \-l command line option.
|
||||
.TP 7
|
||||
@ -2764,7 +2782,7 @@ is followed by the
|
||||
\f\*[B-Font]default\f[]
|
||||
keyword, the
|
||||
variable will be listed as part of the default system variables
|
||||
(\fCntpq\fR(1ntpqmdoc)\f[] \f\*[B-Font]rv\f[] command)).
|
||||
(\fCntpq\f[]\fR(1ntpqmdoc)\f[] \f\*[B-Font]rv\f[] command)).
|
||||
These additional variables serve
|
||||
informational purposes only.
|
||||
They are not related to the protocol
|
||||
@ -2888,12 +2906,12 @@ The default is 32 megabytes. Setting this to zero will prevent any attemp to loc
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]stacksize\f[] \f\*[I-Font]N4kPages\f[]
|
||||
Specifies the maximum size of the process stack on systems with the
|
||||
\fBmlockall\f[]\fR()\f[]
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]filenum\f[] \f\*[I-Font]Nfiledescriptors\f[]
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
\fBmlockall\fR()\f[]
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
.RE
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]trap\f[] \f\*[I-Font]host_address\f[] [\f\*[B-Font]port\f[] \f\*[I-Font]port_number\f[]] [\f\*[B-Font]interface\f[] \f\*[I-Font]interface_address\f[]]
|
||||
@ -2986,9 +3004,9 @@ libopts had an internal operational error. Please report
|
||||
it to autogen-users@lists.sourceforge.net. Thank you.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
\fCntpd\fR(1ntpdmdoc)\f[],
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[],
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[],
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[],
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
.Dd April 7 2015
|
||||
.Dd June 29 2015
|
||||
.Dt NTP_CONF 5mdoc File Formats
|
||||
.Os
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:57 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:36 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.conf.def
|
||||
.\" and the template file agmdoc-cmd.tpl
|
||||
.Sh NAME
|
||||
@ -2386,6 +2386,9 @@ This implies that
|
||||
must have write permission for the directory the
|
||||
drift file is located in, and that file system links, symbolic or
|
||||
otherwise, should be avoided.
|
||||
.It Ic dscp Ar value
|
||||
This option specifies the Differentiated Services Control Point (DSCP) value,
|
||||
a 6\-bit code. The default value is 46, signifying Expedited Forwarding.
|
||||
.It Xo Ic enable
|
||||
.Oo
|
||||
.Cm auth | Cm bclient |
|
||||
@ -2485,6 +2488,19 @@ This option is useful for sites that run
|
||||
.Xr ntpd 1ntpdmdoc
|
||||
on multiple hosts, with (mostly) common options (e.g., a
|
||||
restriction list).
|
||||
.It Ic leapsmearinterval Ar seconds
|
||||
This EXPERIMENTAL option is only available if
|
||||
.Xr ntpd 1ntpdmdoc
|
||||
was built with the
|
||||
.Cm \-\-enable\-leap\-smear
|
||||
option to the
|
||||
.Cm configure
|
||||
script.
|
||||
It specifies the interval over which a leap second correction will be applied.
|
||||
Recommended values for this option are between
|
||||
7200 (2 hours) and 86400 (24 hours).
|
||||
.Sy DO NOT USE THIS OPTION ON PUBLIC\-ACCESS SERVERS!
|
||||
See http://bugs.ntp.org/2855 for more information.
|
||||
.It Ic logconfig Ar configkeyword
|
||||
This command controls the amount and type of output written to
|
||||
the system
|
||||
@ -2717,11 +2733,11 @@ option).
|
||||
The default is 32 megabytes. Setting this to zero will prevent any attemp to lock memory.
|
||||
.It Cm stacksize Ar N4kPages
|
||||
Specifies the maximum size of the process stack on systems with the
|
||||
.It Cm filenum Ar Nfiledescriptors
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
.Fn mlockall
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
.It Cm filenum Ar Nfiledescriptors
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
.El
|
||||
.It Xo Ic trap Ar host_address
|
||||
.Op Cm port Ar port_number
|
||||
|
@ -2388,6 +2388,9 @@ This implies that
|
||||
must have write permission for the directory the
|
||||
drift file is located in, and that file system links, symbolic or
|
||||
otherwise, should be avoided.
|
||||
.It Ic dscp Ar value
|
||||
This option specifies the Differentiated Services Control Point (DSCP) value,
|
||||
a 6-bit code. The default value is 46, signifying Expedited Forwarding.
|
||||
.It Xo Ic enable
|
||||
.Oo
|
||||
.Cm auth | Cm bclient |
|
||||
@ -2487,6 +2490,19 @@ This option is useful for sites that run
|
||||
.Xr ntpd 1ntpdmdoc
|
||||
on multiple hosts, with (mostly) common options (e.g., a
|
||||
restriction list).
|
||||
.It Ic leapsmearinterval Ar seconds
|
||||
This EXPERIMENTAL option is only available if
|
||||
.Xr ntpd 1ntpdmdoc
|
||||
was built with the
|
||||
.Cm --enable-leap-smear
|
||||
option to the
|
||||
.Cm configure
|
||||
script.
|
||||
It specifies the interval over which a leap second correction will be applied.
|
||||
Recommended values for this option are between
|
||||
7200 (2 hours) and 86400 (24 hours).
|
||||
.Sy DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS!
|
||||
See http://bugs.ntp.org/2855 for more information.
|
||||
.It Ic logconfig Ar configkeyword
|
||||
This command controls the amount and type of output written to
|
||||
the system
|
||||
@ -2719,11 +2735,11 @@ option).
|
||||
The default is 32 megabytes. Setting this to zero will prevent any attemp to lock memory.
|
||||
.It Cm stacksize Ar N4kPages
|
||||
Specifies the maximum size of the process stack on systems with the
|
||||
.It Cm filenum Ar Nfiledescriptors
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
.Fn mlockall
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
.It Cm filenum Ar Nfiledescriptors
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
.El
|
||||
.It Xo Ic trap Ar host_address
|
||||
.Op Cm port Ar port_number
|
||||
|
@ -33,7 +33,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a>
|
||||
<p>This document describes the configuration file for the NTP Project's
|
||||
<code>ntpd</code> program.
|
||||
|
||||
<p>This document applies to version 4.2.8p2 of <code>ntp.conf</code>.
|
||||
<p>This document applies to version 4.2.8p3 of <code>ntp.conf</code>.
|
||||
|
||||
<div class="shortcontents">
|
||||
<h2>Short Contents</h2>
|
||||
@ -2286,6 +2286,8 @@ This implies that
|
||||
must have write permission for the directory the
|
||||
drift file is located in, and that file system links, symbolic or
|
||||
otherwise, should be avoided.
|
||||
<br><dt><code>dscp</code> <kbd>value</kbd><dd>This option specifies the Differentiated Services Control Point (DSCP) value,
|
||||
a 6-bit code. The default value is 46, signifying Expedited Forwarding.
|
||||
<br><dt><code>enable</code> <code>[auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats]</code><br><dt><code>disable</code> <code>[auth | bclient | calibrate | kernel | mode7 | monitor | ntp | stats]</code><dd>Provides a way to enable or disable various server options.
|
||||
Flags not mentioned are unaffected.
|
||||
Note that all of these flags
|
||||
@ -2360,6 +2362,18 @@ This option is useful for sites that run
|
||||
<code>ntpd(1ntpdmdoc)</code>
|
||||
on multiple hosts, with (mostly) common options (e.g., a
|
||||
restriction list).
|
||||
<br><dt><code>leapsmearinterval</code> <kbd>seconds</kbd><dd>This EXPERIMENTAL option is only available if
|
||||
<code>ntpd(1ntpdmdoc)</code>
|
||||
was built with the
|
||||
<code>--enable-leap-smear</code>
|
||||
option to the
|
||||
<code>configure</code>
|
||||
script.
|
||||
It specifies the interval over which a leap second correction will be applied.
|
||||
Recommended values for this option are between
|
||||
7200 (2 hours) and 86400 (24 hours).
|
||||
.Sy DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS!
|
||||
See http://bugs.ntp.org/2855 for more information.
|
||||
<br><dt><code>logconfig</code> <kbd>configkeyword</kbd><dd>This command controls the amount and type of output written to
|
||||
the system
|
||||
<code>syslog(3)</code>
|
||||
@ -2539,10 +2553,10 @@ when dropping root (the
|
||||
option).
|
||||
The default is 32 megabytes. Setting this to zero will prevent any attemp to lock memory.
|
||||
<br><dt><code>stacksize</code> <kbd>N4kPages</kbd><dd>Specifies the maximum size of the process stack on systems with the
|
||||
<br><dt><code>filenum</code> <kbd>Nfiledescriptors</kbd><dd>Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
<code>mlockall()</code>
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
<br><dt><code>filenum</code> <kbd>Nfiledescriptors</kbd><dd>Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
</dl>
|
||||
<br><dt><code>trap</code> <kbd>host_address</kbd> <code>[port </code><kbd>port_number</kbd><code>]</code> <code>[interface </code><kbd>interface_address</kbd><code>]</code><dd>This command configures a trap receiver at the given host
|
||||
address and port number for sending messages with the specified
|
||||
|
@ -10,11 +10,11 @@
|
||||
.ds B-Font B
|
||||
.ds I-Font I
|
||||
.ds R-Font R
|
||||
.TH ntp.conf 5 "07 Apr 2015" "4.2.8p2" "File Formats"
|
||||
.TH ntp.conf 5 "29 Jun 2015" "4.2.8p3" "File Formats"
|
||||
.\"
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gKaW.1/ag-tKaO91)
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-R0aO7B/ag-30aG6B)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:37 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:16 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.conf.def
|
||||
.\" and the template file agman-cmd.tpl
|
||||
.SH NAME
|
||||
@ -35,7 +35,7 @@ All arguments must be options.
|
||||
The
|
||||
\f\*[B-Font]ntp.conf\fP
|
||||
configuration file is read at initial startup by the
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
daemon in order to specify the synchronization sources,
|
||||
modes and other related information.
|
||||
Usually, it is installed in the
|
||||
@ -307,7 +307,7 @@ This is designed to speed the initial synchronization
|
||||
acquisition with the
|
||||
\f\*[B-Font]server\f[]
|
||||
command and s addresses and when
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
is started with the
|
||||
\f\*[B-Font]\-q\f[]
|
||||
option.
|
||||
@ -528,7 +528,7 @@ and
|
||||
\f\*[B-Font]disable\f[]
|
||||
commands and also by remote
|
||||
configuration commands sent by a
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
program running in
|
||||
another machine.
|
||||
If this flag is enabled, which is the default
|
||||
@ -595,15 +595,15 @@ secure means beyond the scope of the NTP protocol itself.
|
||||
Besides the keys used
|
||||
for ordinary NTP associations,
|
||||
additional keys can be used as passwords for the
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
utility programs.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
When
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
is first started, it reads the key file specified in the
|
||||
\f\*[B-Font]keys\f[]
|
||||
configuration command and installs the keys
|
||||
@ -617,17 +617,17 @@ allows, for instance, the installation of possibly
|
||||
several batches of keys and
|
||||
then activating or deactivating each batch
|
||||
remotely using
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[].
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[].
|
||||
This also provides a revocation capability that can be used
|
||||
if a key becomes compromised.
|
||||
The
|
||||
\f\*[B-Font]requestkey\f[]
|
||||
command selects the key used as the password for the
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
utility, while the
|
||||
\f\*[B-Font]controlkey\f[]
|
||||
command selects the key used as the password for the
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
utility.
|
||||
.SS Public Key Cryptography
|
||||
NTPv4 supports the original NTPv3 symmetric key scheme
|
||||
@ -674,7 +674,7 @@ page.
|
||||
The specific cryptographic environment used by Autokey servers
|
||||
and clients is determined by a set of files
|
||||
and soft links generated by the
|
||||
\fCntp-keygen\fR(1ntpkeygenmdoc)\f[]
|
||||
\fCntp-keygen\f[]\fR(1ntpkeygenmdoc)\f[]
|
||||
program.
|
||||
This includes a required host key file,
|
||||
required certificate file and optional sign key file,
|
||||
@ -721,7 +721,7 @@ DNS compromise is essential.
|
||||
|
||||
By convention, the name of an Autokey host is the name returned
|
||||
by the Unix
|
||||
\fCgethostname\fR(2)\f[]
|
||||
\fCgethostname\f[]\fR(2)\f[]
|
||||
system call or equivalent in other systems.
|
||||
By the system design
|
||||
model, there are no provisions to allow alternate names or aliases.
|
||||
@ -821,7 +821,7 @@ If verification fails,
|
||||
Bob sends Cathy a thing called a crypto-NAK, which tells her
|
||||
something broke.
|
||||
She can see the evidence using the
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
program.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
@ -846,7 +846,7 @@ with one server and no authentication with another might not be wise.
|
||||
.SS Key Management
|
||||
The cryptographic values used by the Autokey protocol are
|
||||
incorporated as a set of files generated by the
|
||||
\fCntp-keygen\fR(1ntpkeygenmdoc)\f[]
|
||||
\fCntp-keygen\f[]\fR(1ntpkeygenmdoc)\f[]
|
||||
utility program, including symmetric key, host key and
|
||||
public certificate files, as well as sign key, identity parameters
|
||||
and leapseconds files.
|
||||
@ -855,9 +855,9 @@ certificate files can be generated by the OpenSSL utilities
|
||||
and certificates can be imported from public certificate
|
||||
authorities.
|
||||
Note that symmetric keys are necessary for the
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
utility programs.
|
||||
The remaining files are necessary only for the
|
||||
Autokey protocol.
|
||||
@ -895,7 +895,7 @@ sent.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]controlkey\f[] \f\*[I-Font]key\f[]
|
||||
Specifies the key identifier to use with the
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
utility, which uses the standard
|
||||
protocol defined in RFC-1305.
|
||||
The
|
||||
@ -984,10 +984,10 @@ not found, the host key is also the sign key.
|
||||
.NOP \f\*[B-Font]keys\f[] \f\*[I-Font]keyfile\f[]
|
||||
Specifies the complete path and location of the MD5 key file
|
||||
containing the keys and key identifiers used by
|
||||
\fCntpd\fR(@NTPD_MS@)\f[],
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[],
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
when operating with symmetric key cryptography.
|
||||
This is the same operation as the
|
||||
\f\*[B-Font]\-k\f[]
|
||||
@ -1001,10 +1001,10 @@ The default is
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]requestkey\f[] \f\*[I-Font]key\f[]
|
||||
Specifies the key identifier to use with the
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
utility program, which uses a
|
||||
proprietary protocol specific to this implementation of
|
||||
\fCntpd\fR(@NTPD_MS@)\f[].
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[].
|
||||
The
|
||||
\f\*[I-Font]key\f[]
|
||||
argument is a key identifier
|
||||
@ -1027,9 +1027,9 @@ for every message sent.
|
||||
Specifies the key identifiers which are trusted for the
|
||||
purposes of authenticating peers with symmetric key cryptography,
|
||||
as well as keys used by the
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
programs.
|
||||
The authentication procedures require that both the local
|
||||
and remote servers share the same key and key identifier for this
|
||||
@ -1106,7 +1106,7 @@ The certificate is missing, corrupted or bogus.
|
||||
The identity key is missing, corrupt or bogus.
|
||||
.PP
|
||||
.SH Monitoring Support
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
includes a comprehensive monitoring facility suitable
|
||||
for continuous, long term recording of server and client
|
||||
timekeeping performance.
|
||||
@ -1122,7 +1122,7 @@ directory of this distribution.
|
||||
Using
|
||||
these facilities and
|
||||
UNIX
|
||||
\fCcron\fR(8)\f[]
|
||||
\fCcron\f[]\fR(8)\f[]
|
||||
jobs, the data can be
|
||||
automatically summarized and archived for retrospective analysis.
|
||||
.SS Monitoring Commands
|
||||
@ -1348,7 +1348,7 @@ produced.)
|
||||
.ne 2
|
||||
|
||||
Note that this command can be sent from the
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
program running at a remote location.
|
||||
.RS
|
||||
.TP 7
|
||||
@ -1422,7 +1422,7 @@ server.
|
||||
This type does not perform any changes to file set
|
||||
members during runtime, however it provides an easy way of
|
||||
separating files belonging to different
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
server incarnations.
|
||||
The set member filename is built by appending a
|
||||
\[oq]\&.\[cq]
|
||||
@ -1432,7 +1432,7 @@ and
|
||||
\f\*[I-Font]filename\f[]
|
||||
strings, and
|
||||
appending the decimal representation of the process ID of the
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
server process.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]day\f[]
|
||||
@ -1524,7 +1524,7 @@ Enables or disables the recording function.
|
||||
.PP
|
||||
.SH Access Control Support
|
||||
The
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
daemon implements a general purpose address/mask based restriction
|
||||
list.
|
||||
The list contains address/match entries sorted first
|
||||
@ -1672,9 +1672,9 @@ may be specified:
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]ignore\f[]
|
||||
Deny packets of all kinds, including
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
queries.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]kod\f[]
|
||||
@ -1690,7 +1690,7 @@ Deny service if the packet spacing violates the lower limits specified
|
||||
in the discard command.
|
||||
A history of clients is kept using the
|
||||
monitoring capability of
|
||||
\fCntpd\fR(@NTPD_MS@)\f[].
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[].
|
||||
Thus, monitoring is always active as
|
||||
long as there is a restriction entry with the
|
||||
\f\*[B-Font]limited\f[]
|
||||
@ -1709,9 +1709,9 @@ be overridden by later requests for normal priority traps.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]nomodify\f[]
|
||||
Deny
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
queries which attempt to modify the state of the
|
||||
server (i.e., run time reconfiguration).
|
||||
Queries which return
|
||||
@ -1719,9 +1719,9 @@ information are permitted.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]noquery\f[]
|
||||
Deny
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
queries.
|
||||
Time service is not affected.
|
||||
.TP 7
|
||||
@ -1746,9 +1746,9 @@ directive.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]noserve\f[]
|
||||
Deny all packets except
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
queries.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]notrap\f[]
|
||||
@ -2078,11 +2078,11 @@ re-associate accordingly.
|
||||
.ne 2
|
||||
|
||||
Some administrators prefer to avoid running
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
continuously and run either
|
||||
\fCntpdate\fR(8)\f[]
|
||||
\fCntpdate\f[]\fR(8)\f[]
|
||||
or
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
\f\*[B-Font]\-q\f[]
|
||||
as a cron job.
|
||||
In either case the servers must be
|
||||
@ -2090,7 +2090,7 @@ configured in advance and the program fails if none are
|
||||
available when the cron job runs.
|
||||
A really slick
|
||||
application of manycast is with
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
\f\*[B-Font]\-q\f[].
|
||||
The program wakes up, scans the local landscape looking
|
||||
for the usual suspects, selects the best from among
|
||||
@ -2260,7 +2260,7 @@ hazardous.
|
||||
.ne 2
|
||||
|
||||
For the purposes of configuration,
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
treats
|
||||
reference clocks in a manner analogous to normal NTP peers as much
|
||||
as possible.
|
||||
@ -2348,7 +2348,7 @@ command as well.
|
||||
|
||||
The stratum number of a reference clock is by default zero.
|
||||
Since the
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
daemon adds one to the stratum of each
|
||||
peer, a primary server ordinarily displays an external stratum of
|
||||
one.
|
||||
@ -2422,7 +2422,7 @@ It must immediately follow the
|
||||
command which configures the driver.
|
||||
Note that the same capability
|
||||
is possible at run time using the
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
program.
|
||||
The options are interpreted as
|
||||
follows:
|
||||
@ -2564,11 +2564,15 @@ The file is updated by first writing
|
||||
the current drift value into a temporary file and then renaming
|
||||
this file to replace the old version.
|
||||
This implies that
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
must have write permission for the directory the
|
||||
drift file is located in, and that file system links, symbolic or
|
||||
otherwise, should be avoided.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]dscp\f[] \f\*[I-Font]value\f[]
|
||||
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[]]
|
||||
.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[]]
|
||||
@ -2576,7 +2580,7 @@ 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
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
utility program.
|
||||
.RS
|
||||
.TP 7
|
||||
@ -2613,21 +2617,21 @@ if support is available, otherwise
|
||||
.NOP \f\*[B-Font]mode7\f[]
|
||||
Enables processing of NTP mode 7 implementation-specific requests
|
||||
which are used by the deprecated
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
program.
|
||||
The default for this flag is disable.
|
||||
This flag is excluded from runtime configuration using
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[].
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[].
|
||||
The
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
program provides the same capabilities as
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
using standard mode 6 requests.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]monitor\f[]
|
||||
Enables the monitoring facility.
|
||||
See the
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
program
|
||||
and the
|
||||
\f\*[B-Font]monlist\f[]
|
||||
@ -2661,14 +2665,28 @@ be nested to a depth of five; upon reaching the end of any
|
||||
include file, command processing resumes in the previous
|
||||
configuration file.
|
||||
This option is useful for sites that run
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
on multiple hosts, with (mostly) common options (e.g., a
|
||||
restriction list).
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]leapsmearinterval\f[] \f\*[I-Font]seconds\f[]
|
||||
This EXPERIMENTAL option is only available if
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
was built with the
|
||||
\f\*[B-Font]\--enable-leap-smear\f[]
|
||||
option to the
|
||||
\f\*[B-Font]configure\f[]
|
||||
script.
|
||||
It specifies the interval over which a leap second correction will be applied.
|
||||
Recommended values for this option are between
|
||||
7200 (2 hours) and 86400 (24 hours).
|
||||
.Sy DO NOT USE THIS OPTION ON PUBLIC-ACCESS SERVERS!
|
||||
See http://bugs.ntp.org/2855 for more information.
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]logconfig\f[] \f\*[I-Font]configkeyword\f[]
|
||||
This command controls the amount and type of output written to
|
||||
the system
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
facility or the alternate
|
||||
\f\*[B-Font]logfile\f[]
|
||||
log file.
|
||||
@ -2683,14 +2701,14 @@ and
|
||||
where
|
||||
\[oq]=\[cq]
|
||||
sets the
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
priority mask,
|
||||
\[oq]+\[cq]
|
||||
adds and
|
||||
\[oq]\-\[cq]
|
||||
removes
|
||||
messages.
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
messages can be controlled in four
|
||||
classes
|
||||
(\f\*[B-Font]clock\f[], \f\*[B-Font]peer\f[], \f\*[B-Font]sys\f[] and \f\*[B-Font]sync\f[]).
|
||||
@ -2728,7 +2746,7 @@ logconfig =syncstatus +sysevents
|
||||
.ne 2
|
||||
|
||||
This would just list the synchronizations state of
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
and the major system events.
|
||||
For a simple reference server, the
|
||||
following minimum message configuration could be useful:
|
||||
@ -2749,7 +2767,7 @@ peers, system events and so on is suppressed.
|
||||
.NOP \f\*[B-Font]logfile\f[] \f\*[I-Font]logfile\f[]
|
||||
This command specifies the location of an alternate log file to
|
||||
be used instead of the default system
|
||||
\fCsyslog\fR(3)\f[]
|
||||
\fCsyslog\f[]\fR(3)\f[]
|
||||
facility.
|
||||
This is the same operation as the \-l command line option.
|
||||
.TP 7
|
||||
@ -2764,7 +2782,7 @@ is followed by the
|
||||
\f\*[B-Font]default\f[]
|
||||
keyword, the
|
||||
variable will be listed as part of the default system variables
|
||||
(\fCntpq\fR(@NTPQ_MS@)\f[] \f\*[B-Font]rv\f[] command)).
|
||||
(\fCntpq\f[]\fR(@NTPQ_MS@)\f[] \f\*[B-Font]rv\f[] command)).
|
||||
These additional variables serve
|
||||
informational purposes only.
|
||||
They are not related to the protocol
|
||||
@ -2888,12 +2906,12 @@ The default is 32 megabytes. Setting this to zero will prevent any attemp to loc
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]stacksize\f[] \f\*[I-Font]N4kPages\f[]
|
||||
Specifies the maximum size of the process stack on systems with the
|
||||
\fBmlockall\f[]\fR()\f[]
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]filenum\f[] \f\*[I-Font]Nfiledescriptors\f[]
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
\fBmlockall\fR()\f[]
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
.RE
|
||||
.TP 7
|
||||
.NOP \f\*[B-Font]trap\f[] \f\*[I-Font]host_address\f[] [\f\*[B-Font]port\f[] \f\*[I-Font]port_number\f[]] [\f\*[B-Font]interface\f[] \f\*[I-Font]interface_address\f[]]
|
||||
@ -2986,9 +3004,9 @@ libopts had an internal operational error. Please report
|
||||
it to autogen-users@lists.sourceforge.net. Thank you.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
\fCntpd\fR(@NTPD_MS@)\f[],
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[],
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[],
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[],
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
.Dd April 7 2015
|
||||
.Dd June 29 2015
|
||||
.Dt NTP_CONF 5 File Formats
|
||||
.Os
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:57 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:36 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.conf.def
|
||||
.\" and the template file agmdoc-cmd.tpl
|
||||
.Sh NAME
|
||||
@ -2386,6 +2386,9 @@ This implies that
|
||||
must have write permission for the directory the
|
||||
drift file is located in, and that file system links, symbolic or
|
||||
otherwise, should be avoided.
|
||||
.It Ic dscp Ar value
|
||||
This option specifies the Differentiated Services Control Point (DSCP) value,
|
||||
a 6\-bit code. The default value is 46, signifying Expedited Forwarding.
|
||||
.It Xo Ic enable
|
||||
.Oo
|
||||
.Cm auth | Cm bclient |
|
||||
@ -2485,6 +2488,19 @@ This option is useful for sites that run
|
||||
.Xr ntpd @NTPD_MS@
|
||||
on multiple hosts, with (mostly) common options (e.g., a
|
||||
restriction list).
|
||||
.It Ic leapsmearinterval Ar seconds
|
||||
This EXPERIMENTAL option is only available if
|
||||
.Xr ntpd @NTPD_MS@
|
||||
was built with the
|
||||
.Cm \-\-enable\-leap\-smear
|
||||
option to the
|
||||
.Cm configure
|
||||
script.
|
||||
It specifies the interval over which a leap second correction will be applied.
|
||||
Recommended values for this option are between
|
||||
7200 (2 hours) and 86400 (24 hours).
|
||||
.Sy DO NOT USE THIS OPTION ON PUBLIC\-ACCESS SERVERS!
|
||||
See http://bugs.ntp.org/2855 for more information.
|
||||
.It Ic logconfig Ar configkeyword
|
||||
This command controls the amount and type of output written to
|
||||
the system
|
||||
@ -2717,11 +2733,11 @@ option).
|
||||
The default is 32 megabytes. Setting this to zero will prevent any attemp to lock memory.
|
||||
.It Cm stacksize Ar N4kPages
|
||||
Specifies the maximum size of the process stack on systems with the
|
||||
.It Cm filenum Ar Nfiledescriptors
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
.Fn mlockall
|
||||
function.
|
||||
Defaults to 50 4k pages (200 4k pages in OpenBSD).
|
||||
.It Cm filenum Ar Nfiledescriptors
|
||||
Specifies the maximum number of file descriptors ntpd may have open at once. Defaults to the system default.
|
||||
.El
|
||||
.It Xo Ic trap Ar host_address
|
||||
.Op Cm port Ar port_number
|
||||
|
@ -1,8 +1,8 @@
|
||||
.TH ntp.keys 5man "07 Apr 2015" "4.2.8p2" "File Formats"
|
||||
.TH ntp.keys 5man "29 Jun 2015" "4.2.8p3" "File Formats"
|
||||
.\"
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntp.man)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:42 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:21 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.keys.def
|
||||
.\" and the template file agman-file.tpl
|
||||
.Sh NAME
|
||||
@ -40,12 +40,12 @@ This document describes the format of an NTP symmetric key file.
|
||||
For a description of the use of this type of file, see the
|
||||
"Authentication Support"
|
||||
section of the
|
||||
\fCntp.conf\fR(5)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[]
|
||||
page.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
\fCntpd\fR(8)\f[]
|
||||
\fCntpd\f[]\fR(8)\f[]
|
||||
reads its keys from a file specified using the
|
||||
\f\*[B-Font]\-k\f[]
|
||||
command line option or the
|
||||
@ -140,9 +140,9 @@ which is truncated as necessary.
|
||||
.ne 2
|
||||
|
||||
Note that the keys used by the
|
||||
\fCntpq\fR(8)\f[]
|
||||
\fCntpq\f[]\fR(8)\f[]
|
||||
and
|
||||
\fCntpdc\fR(8)\f[]
|
||||
\fCntpdc\f[]\fR(8)\f[]
|
||||
programs are checked against passwords
|
||||
requested by the programs and entered by hand,
|
||||
so it is generally appropriate to specify these keys in ASCII format.
|
||||
@ -152,11 +152,11 @@ so it is generally appropriate to specify these keys in ASCII format.
|
||||
the default name of the configuration file
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
\fCntp.conf\fR(5)\f[],
|
||||
\fCntpd\fR(1ntpdmdoc)\f[],
|
||||
\fCntpdate\fR(1ntpdatemdoc)\f[],
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[],
|
||||
\fCsntp\fR(1sntpmdoc)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[],
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[],
|
||||
\fCntpdate\f[]\fR(1ntpdatemdoc)\f[],
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[],
|
||||
\fCsntp\f[]\fR(1sntpmdoc)\f[]
|
||||
.SH "AUTHORS"
|
||||
The University of Delaware and Network Time Foundation
|
||||
.SH "COPYRIGHT"
|
||||
|
@ -1,9 +1,9 @@
|
||||
.Dd April 7 2015
|
||||
.Dd June 29 2015
|
||||
.Dt NTP_KEYS 5mdoc File Formats
|
||||
.Os SunOS 5.10
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:26:00 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:39 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.keys.def
|
||||
.\" and the template file agmdoc-file.tpl
|
||||
.Sh NAME
|
||||
|
@ -33,7 +33,7 @@ Up: <a rel="up" accesskey="u" href="#dir">(dir)</a>
|
||||
<p>This document describes the symmetric key file for the NTP Project's
|
||||
<code>ntpd</code> program.
|
||||
|
||||
<p>This document applies to version 4.2.8p2 of <code>ntp.keys</code>.
|
||||
<p>This document applies to version 4.2.8p3 of <code>ntp.keys</code>.
|
||||
|
||||
<div class="shortcontents">
|
||||
<h2>Short Contents</h2>
|
||||
|
@ -1,8 +1,8 @@
|
||||
.TH ntp.keys 5 "07 Apr 2015" "4.2.8p2" "File Formats"
|
||||
.TH ntp.keys 5 "29 Jun 2015" "4.2.8p3" "File Formats"
|
||||
.\"
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntp.man)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:42 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:21 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.keys.def
|
||||
.\" and the template file agman-file.tpl
|
||||
.Sh NAME
|
||||
@ -40,12 +40,12 @@ This document describes the format of an NTP symmetric key file.
|
||||
For a description of the use of this type of file, see the
|
||||
"Authentication Support"
|
||||
section of the
|
||||
\fCntp.conf\fR(5)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[]
|
||||
page.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
\fCntpd\fR(8)\f[]
|
||||
\fCntpd\f[]\fR(8)\f[]
|
||||
reads its keys from a file specified using the
|
||||
\f\*[B-Font]\-k\f[]
|
||||
command line option or the
|
||||
@ -140,9 +140,9 @@ which is truncated as necessary.
|
||||
.ne 2
|
||||
|
||||
Note that the keys used by the
|
||||
\fCntpq\fR(8)\f[]
|
||||
\fCntpq\f[]\fR(8)\f[]
|
||||
and
|
||||
\fCntpdc\fR(8)\f[]
|
||||
\fCntpdc\f[]\fR(8)\f[]
|
||||
programs are checked against passwords
|
||||
requested by the programs and entered by hand,
|
||||
so it is generally appropriate to specify these keys in ASCII format.
|
||||
@ -152,11 +152,11 @@ so it is generally appropriate to specify these keys in ASCII format.
|
||||
the default name of the configuration file
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
\fCntp.conf\fR(5)\f[],
|
||||
\fCntpd\fR(@NTPD_MS@)\f[],
|
||||
\fCntpdate\fR(@NTPDATE_MS@)\f[],
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[],
|
||||
\fCsntp\fR(@SNTP_MS@)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[],
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[],
|
||||
\fCntpdate\f[]\fR(@NTPDATE_MS@)\f[],
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[],
|
||||
\fCsntp\f[]\fR(@SNTP_MS@)\f[]
|
||||
.SH "AUTHORS"
|
||||
The University of Delaware and Network Time Foundation
|
||||
.SH "COPYRIGHT"
|
||||
|
@ -1,9 +1,9 @@
|
||||
.Dd April 7 2015
|
||||
.Dd June 29 2015
|
||||
.Dt NTP_KEYS 5 File Formats
|
||||
.Os SunOS 5.10
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:26:00 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:39 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntp.keys.def
|
||||
.\" and the template file agmdoc-file.tpl
|
||||
.Sh NAME
|
||||
|
@ -54,9 +54,6 @@
|
||||
#include "ntpd-opts.h"
|
||||
|
||||
|
||||
/* Bison still(!) does not emit usable prototypes for the calling code */
|
||||
int yyparse (struct FILE_INFO *ip_file);
|
||||
|
||||
/* list of servers from command line for config_peers() */
|
||||
int cmdline_server_count;
|
||||
char ** cmdline_servers;
|
||||
@ -134,8 +131,6 @@ typedef struct peer_resolved_ctx_tag {
|
||||
* Definitions of things either imported from or exported to outside
|
||||
*/
|
||||
extern int yydebug; /* ntp_parser.c (.y) */
|
||||
int curr_include_level; /* The current include level */
|
||||
struct FILE_INFO *fp[MAXINCLUDELEVEL+1];
|
||||
config_tree cfgt; /* Parser output stored here */
|
||||
struct config_tree_tag *cfg_tree_history; /* History of configs */
|
||||
char *sys_phone[MAXPHONE] = {NULL}; /* ACTS phone numbers */
|
||||
@ -181,11 +176,6 @@ struct netinfo_config_state {
|
||||
|
||||
struct REMOTE_CONFIG_INFO remote_config; /* Remote configuration buffer and
|
||||
pointer info */
|
||||
int input_from_file = 1; /* A boolean flag, which when set, indicates that
|
||||
the input is to be taken from the configuration
|
||||
file, instead of the remote-configuration buffer
|
||||
*/
|
||||
|
||||
int old_config_style = 1; /* A boolean flag, which when set,
|
||||
* indicates that the old configuration
|
||||
* format with a newline at the end of
|
||||
@ -257,7 +247,7 @@ static void free_config_tree(config_tree *ptree);
|
||||
|
||||
static void destroy_restrict_node(restrict_node *my_node);
|
||||
static int is_sane_resolved_address(sockaddr_u *peeraddr, int hmode);
|
||||
static void save_and_apply_config_tree(void);
|
||||
static void save_and_apply_config_tree(int/*BOOL*/ from_file);
|
||||
static void destroy_int_fifo(int_fifo *);
|
||||
#define FREE_INT_FIFO(pf) \
|
||||
do { \
|
||||
@ -314,7 +304,7 @@ static sockaddr_u *get_next_address(address_node *addr);
|
||||
static void config_sim(config_tree *);
|
||||
static void config_ntpdsim(config_tree *);
|
||||
#else /* !SIM follows */
|
||||
static void config_ntpd(config_tree *);
|
||||
static void config_ntpd(config_tree *, int/*BOOL*/ input_from_file);
|
||||
static void config_other_modes(config_tree *);
|
||||
static void config_auth(config_tree *);
|
||||
static void config_access(config_tree *);
|
||||
@ -326,7 +316,7 @@ static void config_trap(config_tree *);
|
||||
static void config_fudge(config_tree *);
|
||||
static void config_peers(config_tree *);
|
||||
static void config_unpeers(config_tree *);
|
||||
static void config_nic_rules(config_tree *);
|
||||
static void config_nic_rules(config_tree *, int/*BOOL*/ input_from_file);
|
||||
static void config_reset_counters(config_tree *);
|
||||
static u_char get_correct_host_mode(int token);
|
||||
static int peerflag_bits(peer_node *);
|
||||
@ -2751,7 +2741,8 @@ free_config_tinker(
|
||||
#ifndef SIM
|
||||
static void
|
||||
config_nic_rules(
|
||||
config_tree *ptree
|
||||
config_tree *ptree,
|
||||
int/*BOOL*/ input_from_file
|
||||
)
|
||||
{
|
||||
nic_rule_node * curr_node;
|
||||
@ -3502,6 +3493,11 @@ config_vars(
|
||||
stats_config(STATS_FREQ_FILE, curr_var->value.s);
|
||||
break;
|
||||
|
||||
case T_Dscp:
|
||||
/* DSCP is in the upper 6 bits of the IP TOS/DS field */
|
||||
qos = curr_var->value.i << 2;
|
||||
break;
|
||||
|
||||
case T_Ident:
|
||||
sys_ident = curr_var->value.s;
|
||||
break;
|
||||
@ -3515,6 +3511,13 @@ config_vars(
|
||||
stats_config(STATS_LEAP_FILE, curr_var->value.s);
|
||||
break;
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
case T_Leapsmearinterval:
|
||||
leap_smear_intv = curr_var->value.i;
|
||||
msyslog(LOG_INFO, "config: leap smear interval %i s", leap_smear_intv);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case T_Pidfile:
|
||||
stats_config(STATS_PID_FILE, curr_var->value.s);
|
||||
break;
|
||||
@ -4224,7 +4227,7 @@ config_sim(
|
||||
serv_info = HEAD_PFIFO(sim_n->servers);
|
||||
for (; serv_info != NULL; serv_info = serv_info->link)
|
||||
simulation.num_of_servers++;
|
||||
simulation.servers = emalloc(simulation.num_of_servers *
|
||||
simulation.servers = eallocarray(simulation.num_of_servers,
|
||||
sizeof(simulation.servers[0]));
|
||||
|
||||
i = 0;
|
||||
@ -4295,11 +4298,11 @@ free_config_sim(
|
||||
#ifndef SIM
|
||||
static void
|
||||
config_ntpd(
|
||||
config_tree *ptree
|
||||
config_tree *ptree,
|
||||
int/*BOOL*/ input_from_files
|
||||
)
|
||||
{
|
||||
config_nic_rules(ptree);
|
||||
io_open_sockets();
|
||||
config_nic_rules(ptree, input_from_files);
|
||||
config_monitor(ptree);
|
||||
config_auth(ptree);
|
||||
config_tos(ptree);
|
||||
@ -4314,6 +4317,9 @@ config_ntpd(
|
||||
config_ttl(ptree);
|
||||
config_trap(ptree);
|
||||
config_vars(ptree);
|
||||
|
||||
io_open_sockets();
|
||||
|
||||
config_other_modes(ptree);
|
||||
config_peers(ptree);
|
||||
config_unpeers(ptree);
|
||||
@ -4370,28 +4376,22 @@ config_remotely(
|
||||
sockaddr_u * remote_addr
|
||||
)
|
||||
{
|
||||
struct FILE_INFO remote_cuckoo;
|
||||
char origin[128];
|
||||
|
||||
snprintf(origin, sizeof(origin), "remote config from %s",
|
||||
stoa(remote_addr));
|
||||
ZERO(remote_cuckoo);
|
||||
remote_cuckoo.fname = origin;
|
||||
remote_cuckoo.line_no = 1;
|
||||
remote_cuckoo.col_no = 1;
|
||||
input_from_file = 0;
|
||||
|
||||
lex_init_stack(origin, NULL); /* no checking needed... */
|
||||
init_syntax_tree(&cfgt);
|
||||
yyparse(&remote_cuckoo);
|
||||
yyparse();
|
||||
lex_drop_stack();
|
||||
|
||||
cfgt.source.attr = CONF_SOURCE_NTPQ;
|
||||
cfgt.timestamp = time(NULL);
|
||||
cfgt.source.value.s = estrdup(stoa(remote_addr));
|
||||
|
||||
DPRINTF(1, ("Finished Parsing!!\n"));
|
||||
|
||||
save_and_apply_config_tree();
|
||||
|
||||
input_from_file = 1;
|
||||
save_and_apply_config_tree(FALSE);
|
||||
}
|
||||
|
||||
|
||||
@ -4443,9 +4443,8 @@ getconfig(
|
||||
|
||||
getCmdOpts(argc, argv);
|
||||
init_syntax_tree(&cfgt);
|
||||
curr_include_level = 0;
|
||||
if (
|
||||
(fp[curr_include_level] = F_OPEN(FindConfig(config_file), "r")) == NULL
|
||||
!lex_init_stack(FindConfig(config_file), "r")
|
||||
#ifdef HAVE_NETINFO
|
||||
/* If there is no config_file, try NetInfo. */
|
||||
&& check_netinfo && !(config_netinfo = get_netinfo_config())
|
||||
@ -4459,8 +4458,7 @@ getconfig(
|
||||
#else
|
||||
/* Under WinNT try alternate_config_file name, first NTP.CONF, then NTP.INI */
|
||||
|
||||
if ((fp[curr_include_level] = F_OPEN(FindConfig(alt_config_file), "r")) == NULL) {
|
||||
|
||||
if (!lex_init_stack(FindConfig(alt_config_file), "r")) {
|
||||
/*
|
||||
* Broadcast clients can sometimes run without
|
||||
* a configuration file.
|
||||
@ -4480,17 +4478,15 @@ getconfig(
|
||||
#ifdef DEBUG
|
||||
yydebug = !!(debug >= 5);
|
||||
#endif
|
||||
yyparse(fp[curr_include_level]);
|
||||
yyparse();
|
||||
lex_drop_stack();
|
||||
|
||||
DPRINTF(1, ("Finished Parsing!!\n"));
|
||||
|
||||
cfgt.source.attr = CONF_SOURCE_FILE;
|
||||
cfgt.timestamp = time(NULL);
|
||||
|
||||
save_and_apply_config_tree();
|
||||
|
||||
while (curr_include_level != -1)
|
||||
FCLOSE(fp[curr_include_level--]);
|
||||
save_and_apply_config_tree(TRUE);
|
||||
|
||||
#ifdef HAVE_NETINFO
|
||||
if (config_netinfo)
|
||||
@ -4500,7 +4496,7 @@ getconfig(
|
||||
|
||||
|
||||
void
|
||||
save_and_apply_config_tree(void)
|
||||
save_and_apply_config_tree(int/*BOOL*/ input_from_file)
|
||||
{
|
||||
config_tree *ptree;
|
||||
#ifndef SAVECONFIG
|
||||
@ -4554,7 +4550,7 @@ save_and_apply_config_tree(void)
|
||||
*/
|
||||
|
||||
#ifndef SIM
|
||||
config_ntpd(ptree);
|
||||
config_ntpd(ptree, input_from_file);
|
||||
#else
|
||||
config_ntpdsim(ptree);
|
||||
#endif
|
||||
@ -4785,8 +4781,9 @@ gettokens_netinfo (
|
||||
if (namelist.ni_namelist_len == 0) continue;
|
||||
|
||||
config->val_list =
|
||||
emalloc(sizeof(char*) *
|
||||
(namelist.ni_namelist_len + 1));
|
||||
eallocarray(
|
||||
(namelist.ni_namelist_len + 1),
|
||||
sizeof(char*));
|
||||
val_list = config->val_list;
|
||||
|
||||
for (index = 0;
|
||||
@ -4936,7 +4933,7 @@ ntp_rlimit(
|
||||
case RLIMIT_NOFILE:
|
||||
/*
|
||||
* For large systems the default file descriptor limit may
|
||||
* not be enough.
|
||||
* not be enough.
|
||||
*/
|
||||
DPRINTF(2, ("ntp_rlimit: NOFILE: %d %s\n",
|
||||
(int)(rl_value / rl_scale), rl_sstr));
|
||||
@ -4956,7 +4953,7 @@ ntp_rlimit(
|
||||
DPRINTF(2, ("ntp_rlimit: STACK: %d %s pages\n",
|
||||
(int)(rl_value / rl_scale), rl_sstr));
|
||||
if (-1 == getrlimit(RLIMIT_STACK, &rl)) {
|
||||
msyslog(LOG_ERR, "getrlimit() failed: %m");
|
||||
msyslog(LOG_ERR, "getrlimit(RLIMIT_STACK) failed: %m");
|
||||
} else {
|
||||
if (rl_value > rl.rlim_max) {
|
||||
msyslog(LOG_WARNING,
|
||||
@ -4965,9 +4962,10 @@ ntp_rlimit(
|
||||
(u_long)rl_value);
|
||||
rl_value = rl.rlim_max;
|
||||
}
|
||||
rl.rlim_cur = rl_value;
|
||||
if (-1 == setrlimit(RLIMIT_STACK, &rl)) {
|
||||
msyslog(LOG_ERR,
|
||||
"ntp_rlimit: Cannot adjust stack limit: %m");
|
||||
"ntp_rlimit: Cannot set RLIMIT_STACK: %m");
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -32,6 +32,7 @@
|
||||
# include "ntp_syscall.h"
|
||||
#endif
|
||||
|
||||
extern size_t remoteconfig_cmdlength( const char *src_buf, const char *src_end );
|
||||
|
||||
/*
|
||||
* Structure to hold request procedure information
|
||||
@ -221,7 +222,9 @@ static const struct ctl_proc control_codes[] = {
|
||||
#define CS_TIMER_XMTS 87
|
||||
#define CS_FUZZ 88
|
||||
#define CS_WANDER_THRESH 89
|
||||
#define CS_MAX_NOAUTOKEY CS_WANDER_THRESH
|
||||
#define CS_LEAPSMEARINTV 90
|
||||
#define CS_LEAPSMEAROFFS 91
|
||||
#define CS_MAX_NOAUTOKEY CS_LEAPSMEAROFFS
|
||||
#ifdef AUTOKEY
|
||||
#define CS_FLAGS (1 + CS_MAX_NOAUTOKEY)
|
||||
#define CS_HOST (2 + CS_MAX_NOAUTOKEY)
|
||||
@ -417,6 +420,10 @@ static const struct ctl_var sys_var[] = {
|
||||
{ CS_TIMER_XMTS, RO, "timer_xmts" }, /* 87 */
|
||||
{ CS_FUZZ, RO, "fuzz" }, /* 88 */
|
||||
{ CS_WANDER_THRESH, RO, "clk_wander_threshold" }, /* 89 */
|
||||
#ifdef LEAP_SMEAR
|
||||
{ CS_LEAPSMEARINTV, RO, "leapsmearinterval" }, /* 90 */
|
||||
{ CS_LEAPSMEAROFFS, RO, "leapsmearoffset" }, /* 91 */
|
||||
#endif /* LEAP_SMEAR */
|
||||
#ifdef AUTOKEY
|
||||
{ CS_FLAGS, RO, "flags" }, /* 1 + CS_MAX_NOAUTOKEY */
|
||||
{ CS_HOST, RO, "host" }, /* 2 + CS_MAX_NOAUTOKEY */
|
||||
@ -459,6 +466,8 @@ static const u_char def_sys_var[] = {
|
||||
CS_TAI,
|
||||
CS_LEAPTAB,
|
||||
CS_LEAPEND,
|
||||
CS_LEAPSMEARINTV,
|
||||
CS_LEAPSMEAROFFS,
|
||||
#ifdef AUTOKEY
|
||||
CS_HOST,
|
||||
CS_IDENT,
|
||||
@ -1972,6 +1981,19 @@ ctl_putsys(
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
case CS_LEAPSMEARINTV:
|
||||
if (leap_smear_intv > 0)
|
||||
ctl_putuint(sys_var[CS_LEAPSMEARINTV].text, leap_smear_intv);
|
||||
break;
|
||||
|
||||
case CS_LEAPSMEAROFFS:
|
||||
if (leap_smear_intv > 0)
|
||||
ctl_putdbl(sys_var[CS_LEAPSMEAROFFS].text,
|
||||
leap_smear.doffset * 1e3);
|
||||
break;
|
||||
#endif /* LEAP_SMEAR */
|
||||
|
||||
case CS_RATE:
|
||||
ctl_putuint(sys_var[CS_RATE].text, ntp_minpoll);
|
||||
break;
|
||||
@ -3281,6 +3303,7 @@ write_variables(
|
||||
ctl_flushpkt(0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* configure() processes ntpq :config/config-from-file, allowing
|
||||
* generic runtime reconfiguration.
|
||||
@ -3292,7 +3315,6 @@ static void configure(
|
||||
{
|
||||
size_t data_count;
|
||||
int retval;
|
||||
int replace_nl;
|
||||
|
||||
/* I haven't yet implemented changes to an existing association.
|
||||
* Hence check if the association id is 0
|
||||
@ -3318,7 +3340,7 @@ static void configure(
|
||||
}
|
||||
|
||||
/* Initialize the remote config buffer */
|
||||
data_count = reqend - reqpt;
|
||||
data_count = remoteconfig_cmdlength(reqpt, reqend);
|
||||
|
||||
if (data_count > sizeof(remote_config.buffer) - 2) {
|
||||
snprintf(remote_config.err_msg,
|
||||
@ -3332,34 +3354,41 @@ static void configure(
|
||||
stoa(&rbufp->recv_srcadr));
|
||||
return;
|
||||
}
|
||||
|
||||
memcpy(remote_config.buffer, reqpt, data_count);
|
||||
if (data_count > 0
|
||||
&& '\n' != remote_config.buffer[data_count - 1])
|
||||
remote_config.buffer[data_count++] = '\n';
|
||||
remote_config.buffer[data_count] = '\0';
|
||||
remote_config.pos = 0;
|
||||
remote_config.err_pos = 0;
|
||||
remote_config.no_errors = 0;
|
||||
|
||||
/* do not include terminating newline in log */
|
||||
if (data_count > 0
|
||||
&& '\n' == remote_config.buffer[data_count - 1]) {
|
||||
remote_config.buffer[data_count - 1] = '\0';
|
||||
replace_nl = TRUE;
|
||||
} else {
|
||||
replace_nl = FALSE;
|
||||
/* Bug 2853 -- check if all characters were acceptable */
|
||||
if (data_count != (size_t)(reqend - reqpt)) {
|
||||
snprintf(remote_config.err_msg,
|
||||
sizeof(remote_config.err_msg),
|
||||
"runtime configuration failed: request contains an unprintable character");
|
||||
ctl_putdata(remote_config.err_msg,
|
||||
strlen(remote_config.err_msg), 0);
|
||||
ctl_flushpkt(0);
|
||||
msyslog(LOG_NOTICE,
|
||||
"runtime config from %s rejected: request contains an unprintable character: %0x",
|
||||
stoa(&rbufp->recv_srcadr),
|
||||
reqpt[data_count]);
|
||||
return;
|
||||
}
|
||||
|
||||
memcpy(remote_config.buffer, reqpt, data_count);
|
||||
/* The buffer has no trailing linefeed or NUL right now. For
|
||||
* logging, we do not want a newline, so we do that first after
|
||||
* adding the necessary NUL byte.
|
||||
*/
|
||||
remote_config.buffer[data_count] = '\0';
|
||||
DPRINTF(1, ("Got Remote Configuration Command: %s\n",
|
||||
remote_config.buffer));
|
||||
msyslog(LOG_NOTICE, "%s config: %s",
|
||||
stoa(&rbufp->recv_srcadr),
|
||||
remote_config.buffer);
|
||||
|
||||
if (replace_nl)
|
||||
remote_config.buffer[data_count - 1] = '\n';
|
||||
|
||||
/* Now we have to make sure there is a NL/NUL sequence at the
|
||||
* end of the buffer before we parse it.
|
||||
*/
|
||||
remote_config.buffer[data_count++] = '\n';
|
||||
remote_config.buffer[data_count] = '\0';
|
||||
remote_config.pos = 0;
|
||||
remote_config.err_pos = 0;
|
||||
remote_config.no_errors = 0;
|
||||
config_remotely(&rbufp->recv_srcadr);
|
||||
|
||||
/*
|
||||
|
@ -316,8 +316,8 @@ make_keylist(
|
||||
*/
|
||||
tstamp = crypto_time();
|
||||
if (peer->keylist == NULL)
|
||||
peer->keylist = emalloc(sizeof(keyid_t) *
|
||||
NTP_MAXSESSION);
|
||||
peer->keylist = eallocarray(NTP_MAXSESSION,
|
||||
sizeof(keyid_t));
|
||||
|
||||
/*
|
||||
* Generate an initial key ID which is unique and greater than
|
||||
@ -380,16 +380,14 @@ make_keylist(
|
||||
EVP_SignUpdate(&ctx, (u_char *)vp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, sizeof(struct autokey));
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
vp->siglen = htonl(len);
|
||||
peer->flags |= FLAG_ASSOC;
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("make_keys: %d %08x %08x ts %u fs %u poll %d\n",
|
||||
DPRINTF(1, ("make_keys: %d %08x %08x ts %u fs %u poll %d\n",
|
||||
peer->keynumber, keyid, cookie, ntohl(vp->tstamp),
|
||||
ntohl(vp->fstamp), peer->hpoll);
|
||||
#endif
|
||||
ntohl(vp->fstamp), peer->hpoll));
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -456,13 +454,9 @@ crypto_recv(
|
||||
// HMS: Why pkt[1] instead of ep->associd ?
|
||||
associd = (associd_t)ntohl(pkt[1]);
|
||||
rval = XEVNT_OK;
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf(
|
||||
"crypto_recv: flags 0x%x ext offset %d len %u code 0x%x associd %d\n",
|
||||
DPRINTF(1, ("crypto_recv: flags 0x%x ext offset %d len %u code 0x%x associd %d\n",
|
||||
peer->crypto, authlen, len, code >> 16,
|
||||
associd);
|
||||
#endif
|
||||
associd));
|
||||
|
||||
/*
|
||||
* Check version number and field length. If bad,
|
||||
@ -538,13 +532,9 @@ crypto_recv(
|
||||
rval = XEVNT_LEN;
|
||||
break;
|
||||
}
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf(
|
||||
"crypto_recv: ident host 0x%x %d server 0x%x %d\n",
|
||||
DPRINTF(1, ("crypto_recv: ident host 0x%x %d server 0x%x %d\n",
|
||||
crypto_flags, peer->associd, fstamp,
|
||||
peer->assoc);
|
||||
#endif
|
||||
peer->assoc));
|
||||
temp32 = crypto_flags & CRYPTO_FLAG_MASK;
|
||||
|
||||
/*
|
||||
@ -617,10 +607,7 @@ crypto_recv(
|
||||
peer->assoc, peer->subject,
|
||||
OBJ_nid2ln(temp32));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -678,10 +665,7 @@ crypto_recv(
|
||||
OBJ_nid2ln(temp32), temp32,
|
||||
ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -718,10 +702,7 @@ crypto_recv(
|
||||
snprintf(statstr, sizeof(statstr), "iff %s fs %u",
|
||||
peer->issuer, ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -759,10 +740,7 @@ crypto_recv(
|
||||
snprintf(statstr, sizeof(statstr), "gq %s fs %u",
|
||||
peer->issuer, ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -799,10 +777,7 @@ crypto_recv(
|
||||
snprintf(statstr, sizeof(statstr), "mv %s fs %u",
|
||||
peer->issuer, ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
|
||||
@ -868,10 +843,7 @@ crypto_recv(
|
||||
"cook %x ts %u fs %u", peer->pcookie,
|
||||
ntohl(ep->tstamp), ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -930,10 +902,7 @@ crypto_recv(
|
||||
bp->key, ntohl(ep->tstamp),
|
||||
ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -970,10 +939,7 @@ crypto_recv(
|
||||
OBJ_nid2ln(temp32), temp32,
|
||||
ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -988,43 +954,32 @@ crypto_recv(
|
||||
* compare the value timestamps here, as they
|
||||
* can be updated by different servers.
|
||||
*/
|
||||
if ((rval = crypto_verify(ep, NULL, peer)) !=
|
||||
XEVNT_OK)
|
||||
rval = crypto_verify(ep, NULL, peer);
|
||||
if ((rval != XEVNT_OK ) ||
|
||||
(vallen != 3*sizeof(uint32_t)) )
|
||||
break;
|
||||
|
||||
/*
|
||||
* If the packet leap values are more recent
|
||||
* than the stored ones, install the new leap
|
||||
* values and recompute the signatures.
|
||||
/* Check if we can update the basic TAI offset
|
||||
* for our current leap frame. This is a hack
|
||||
* and ignores the time stamps in the autokey
|
||||
* message.
|
||||
*/
|
||||
if (leapsec_add_fix(ntohl(ep->pkt[0]),
|
||||
ntohl(ep->pkt[1]),
|
||||
ntohl(ep->pkt[2]),
|
||||
NULL))
|
||||
{
|
||||
leap_signature_t lsig;
|
||||
|
||||
leapsec_getsig(&lsig);
|
||||
tai_leap.tstamp = ep->tstamp;
|
||||
tai_leap.fstamp = ep->fstamp;
|
||||
tai_leap.vallen = ep->vallen;
|
||||
crypto_update();
|
||||
mprintf_event(EVNT_TAI, peer,
|
||||
"%d leap %s expire %s", lsig.taiof,
|
||||
fstostr(lsig.ttime),
|
||||
fstostr(lsig.etime));
|
||||
}
|
||||
if (sys_leap != LEAP_NOTINSYNC)
|
||||
leapsec_autokey_tai(ntohl(ep->pkt[0]),
|
||||
rbufp->recv_time.l_ui, NULL);
|
||||
tai_leap.tstamp = ep->tstamp;
|
||||
tai_leap.fstamp = ep->fstamp;
|
||||
crypto_update();
|
||||
mprintf_event(EVNT_TAI, peer,
|
||||
"%d seconds", ntohl(ep->pkt[0]));
|
||||
peer->crypto |= CRYPTO_FLAG_LEAP;
|
||||
peer->flash &= ~TEST8;
|
||||
snprintf(statstr, sizeof(statstr),
|
||||
"leap TAI offset %d at %u expire %u fs %u",
|
||||
ntohl(ep->pkt[0]), ntohl(ep->pkt[1]),
|
||||
ntohl(ep->pkt[2]), ntohl(ep->fstamp));
|
||||
"leap TAI offset %d at %u expire %u fs %u",
|
||||
ntohl(ep->pkt[0]), ntohl(ep->pkt[1]),
|
||||
ntohl(ep->pkt[2]), ntohl(ep->fstamp));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -1073,10 +1028,7 @@ crypto_recv(
|
||||
"%04x %d %02x %s", htonl(ep->opcode),
|
||||
associd, rval, eventstr(rval));
|
||||
record_crypto_stats(&peer->srcadr, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_recv: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_recv: %s\n", statstr));
|
||||
return (rval);
|
||||
}
|
||||
authlen += (len + 3) / 4 * 4;
|
||||
@ -1421,19 +1373,12 @@ crypto_xmit(
|
||||
"%04x %d %02x %s", opcode, associd, rval,
|
||||
eventstr(rval));
|
||||
record_crypto_stats(srcadr_sin, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_xmit: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_xmit: %s\n", statstr));
|
||||
if (!(opcode & CRYPTO_RESP))
|
||||
return (0);
|
||||
}
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf(
|
||||
"crypto_xmit: flags 0x%x offset %d len %d code 0x%x associd %d\n",
|
||||
crypto_flags, start, len, opcode >> 16, associd);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_xmit: flags 0x%x offset %d len %d code 0x%x associd %d\n",
|
||||
crypto_flags, start, len, opcode >> 16, associd));
|
||||
return (len);
|
||||
}
|
||||
|
||||
@ -1645,8 +1590,10 @@ crypto_encrypt(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, vallen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey)) {
|
||||
NTP_INSIST(vallen <= sign_siglen);
|
||||
vp->siglen = htonl(vallen);
|
||||
}
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -1858,7 +1805,7 @@ crypto_update(void)
|
||||
char statstr[NTP_MAXSTRLEN]; /* statistics for filegen */
|
||||
u_int32 *ptr;
|
||||
u_int len;
|
||||
leap_signature_t lsig;
|
||||
leap_result_t leap_data;
|
||||
|
||||
hostval.tstamp = htonl(crypto_time());
|
||||
if (hostval.tstamp == 0)
|
||||
@ -1877,8 +1824,10 @@ crypto_update(void)
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&pubkey, 12);
|
||||
EVP_SignUpdate(&ctx, pubkey.ptr, ntohl(pubkey.vallen));
|
||||
if (EVP_SignFinal(&ctx, pubkey.sig, &len, sign_pkey))
|
||||
pubkey.siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, pubkey.sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
pubkey.siglen = htonl(len);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1896,8 +1845,10 @@ crypto_update(void)
|
||||
EVP_SignUpdate(&ctx, (u_char *)&cp->cert, 12);
|
||||
EVP_SignUpdate(&ctx, cp->cert.ptr,
|
||||
ntohl(cp->cert.vallen));
|
||||
if (EVP_SignFinal(&ctx, cp->cert.sig, &len, sign_pkey))
|
||||
cp->cert.siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, cp->cert.sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
cp->cert.siglen = htonl(len);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1906,33 +1857,86 @@ crypto_update(void)
|
||||
*/
|
||||
tai_leap.tstamp = hostval.tstamp;
|
||||
tai_leap.fstamp = hostval.fstamp;
|
||||
|
||||
/* Get the leap second era. We might need a full lookup early
|
||||
* after start, when the cache is not yet loaded.
|
||||
*/
|
||||
leapsec_frame(&leap_data);
|
||||
if ( ! memcmp(&leap_data.ebase, &leap_data.ttime, sizeof(vint64))) {
|
||||
time_t now = time(NULL);
|
||||
uint32_t nowntp = (uint32_t)now + JAN_1970;
|
||||
leapsec_query(&leap_data, nowntp, &now);
|
||||
}
|
||||
|
||||
/* Create the data block. The protocol does not work without. */
|
||||
len = 3 * sizeof(u_int32);
|
||||
if (tai_leap.ptr == NULL)
|
||||
if (tai_leap.ptr == NULL || ntohl(tai_leap.vallen) != len) {
|
||||
free(tai_leap.ptr);
|
||||
tai_leap.ptr = emalloc(len);
|
||||
tai_leap.vallen = htonl(len);
|
||||
tai_leap.vallen = htonl(len);
|
||||
}
|
||||
ptr = (u_int32 *)tai_leap.ptr;
|
||||
leapsec_getsig(&lsig);
|
||||
ptr[0] = htonl(lsig.taiof);
|
||||
ptr[1] = htonl(lsig.ttime);
|
||||
ptr[2] = htonl(lsig.etime);
|
||||
if (leap_data.tai_offs > 10) {
|
||||
/* create a TAI / leap era block. The end time is a
|
||||
* fake -- maybe we can do better.
|
||||
*/
|
||||
ptr[0] = htonl(leap_data.tai_offs);
|
||||
ptr[1] = htonl(leap_data.ebase.d_s.lo);
|
||||
if (leap_data.ttime.d_s.hi >= 0)
|
||||
ptr[2] = htonl(leap_data.ttime.D_s.lo + 7*86400);
|
||||
else
|
||||
ptr[2] = htonl(leap_data.ebase.D_s.lo + 25*86400);
|
||||
} else {
|
||||
/* no leap era available */
|
||||
memset(ptr, 0, len);
|
||||
}
|
||||
if (tai_leap.sig == NULL)
|
||||
tai_leap.sig = emalloc(sign_siglen);
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&tai_leap, 12);
|
||||
EVP_SignUpdate(&ctx, tai_leap.ptr, len);
|
||||
if (EVP_SignFinal(&ctx, tai_leap.sig, &len, sign_pkey))
|
||||
tai_leap.siglen = htonl(sign_siglen);
|
||||
if (lsig.ttime > 0)
|
||||
crypto_flags |= CRYPTO_FLAG_TAI;
|
||||
if (EVP_SignFinal(&ctx, tai_leap.sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
tai_leap.siglen = htonl(len);
|
||||
}
|
||||
crypto_flags |= CRYPTO_FLAG_TAI;
|
||||
|
||||
snprintf(statstr, sizeof(statstr), "signature update ts %u",
|
||||
ntohl(hostval.tstamp));
|
||||
record_crypto_stats(NULL, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_update: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_update: %s\n", statstr));
|
||||
}
|
||||
|
||||
/*
|
||||
* crypto_update_taichange - eventually trigger crypto_update
|
||||
*
|
||||
* This is called when a change in 'sys_tai' is detected. This will
|
||||
* happen shortly after a leap second is detected, but unhappily also
|
||||
* early after system start; also, the crypto stuff might be unused and
|
||||
* an unguarded call to crypto_update() causes a crash.
|
||||
*
|
||||
* This function makes sure that there already *is* a valid crypto block
|
||||
* for the use with autokey, and only calls 'crypto_update()' if it can
|
||||
* succeed.
|
||||
*
|
||||
* Returns void (no errors)
|
||||
*/
|
||||
void
|
||||
crypto_update_taichange(void)
|
||||
{
|
||||
static const u_int len = 3 * sizeof(u_int32);
|
||||
|
||||
/* check if the signing digest algo is available */
|
||||
if (sign_digest == NULL || sign_pkey == NULL)
|
||||
return;
|
||||
|
||||
/* check size of TAI extension block */
|
||||
if (tai_leap.ptr == NULL || ntohl(tai_leap.vallen) != len)
|
||||
return;
|
||||
|
||||
/* crypto_update should at least not crash here! */
|
||||
crypto_update();
|
||||
}
|
||||
|
||||
/*
|
||||
* value_free - free value structure components.
|
||||
@ -2164,8 +2168,10 @@ crypto_alice(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
vp->siglen = htonl(len);
|
||||
}
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -2272,8 +2278,10 @@ crypto_bob(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, vallen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey)) {
|
||||
NTP_INSIST(vallen <= sign_siglen);
|
||||
vp->siglen = htonl(vallen);
|
||||
}
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -2477,8 +2485,10 @@ crypto_alice2(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
vp->siglen = htonl(len);
|
||||
}
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -2575,8 +2585,10 @@ crypto_bob2(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
vp->siglen = htonl(len);
|
||||
}
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -2804,8 +2816,10 @@ crypto_alice3(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
vp->siglen = htonl(len);
|
||||
}
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -2904,8 +2918,10 @@ crypto_bob3(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
vp->siglen = htonl(len);
|
||||
}
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@ -3141,8 +3157,10 @@ cert_sign(
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)vp, 12);
|
||||
EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
vp->siglen = htonl(sign_siglen);
|
||||
if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
|
||||
NTP_INSIST(len <= sign_siglen);
|
||||
vp->siglen = htonl(len);
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
if (debug > 1)
|
||||
@ -3425,11 +3443,8 @@ cert_parse(
|
||||
ret->flags |= CERT_TRUST;
|
||||
else if (strcmp(pathbuf, "Private") == 0)
|
||||
ret->flags |= CERT_PRIV;
|
||||
#if DEBUG
|
||||
if (debug)
|
||||
printf("cert_parse: %s: %s\n",
|
||||
OBJ_nid2ln(temp), pathbuf);
|
||||
#endif
|
||||
DPRINTF(1, ("cert_parse: %s: %s\n",
|
||||
OBJ_nid2ln(temp), pathbuf));
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -3440,12 +3455,10 @@ cert_parse(
|
||||
ret->grpkey = BN_bin2bn(&ext->value->data[2],
|
||||
ext->value->length - 2, NULL);
|
||||
/* fall through */
|
||||
#if DEBUG
|
||||
default:
|
||||
if (debug)
|
||||
printf("cert_parse: %s\n",
|
||||
OBJ_nid2ln(temp));
|
||||
#endif
|
||||
DPRINTF(1, ("cert_parse: %s\n",
|
||||
OBJ_nid2ln(temp)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (strcmp(ret->subject, ret->issuer) == 0) {
|
||||
@ -3630,9 +3643,9 @@ crypto_key(
|
||||
snprintf(statstr, sizeof(statstr), "%s mod %d", &linkname[2],
|
||||
EVP_PKEY_size(pkey) * 8);
|
||||
record_crypto_stats(addr, statstr);
|
||||
|
||||
DPRINTF(1, ("crypto_key: %s\n", statstr));
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_key: %s\n", statstr);
|
||||
if (debug > 1) {
|
||||
if (pkey->type == EVP_PKEY_DSA)
|
||||
DSA_print_fp(stdout, pkey->pkey.dsa, 0);
|
||||
@ -3747,10 +3760,7 @@ crypto_cert(
|
||||
snprintf(statstr, sizeof(statstr), "%s 0x%x len %lu",
|
||||
&linkname[2], ret->flags, len);
|
||||
record_crypto_stats(NULL, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_cert: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_cert: %s\n", statstr));
|
||||
return (ret);
|
||||
}
|
||||
|
||||
@ -3820,12 +3830,8 @@ crypto_setup(void)
|
||||
get_systime(&seed);
|
||||
RAND_seed(&seed, sizeof(l_fp));
|
||||
RAND_write_file(randfile);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf(
|
||||
"crypto_setup: OpenSSL version %lx random seed file %s bytes read %d\n",
|
||||
SSLeay(), randfile, bytes);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_setup: OpenSSL version %lx random seed file %s bytes read %d\n",
|
||||
SSLeay(), randfile, bytes));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -3954,10 +3960,7 @@ crypto_setup(void)
|
||||
snprintf(statstr, sizeof(statstr), "setup 0x%x host %s %s",
|
||||
crypto_flags, hostname, OBJ_nid2ln(cinfo->nid));
|
||||
record_crypto_stats(NULL, statstr);
|
||||
#ifdef DEBUG
|
||||
if (debug)
|
||||
printf("crypto_setup: %s\n", statstr);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_setup: %s\n", statstr));
|
||||
}
|
||||
|
||||
|
||||
@ -3972,10 +3975,8 @@ crypto_config(
|
||||
{
|
||||
int nid;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (debug > 1)
|
||||
printf("crypto_config: item %d %s\n", item, cp);
|
||||
#endif
|
||||
DPRINTF(1, ("crypto_config: item %d %s\n", item, cp));
|
||||
|
||||
switch (item) {
|
||||
|
||||
/*
|
||||
|
@ -73,6 +73,19 @@
|
||||
|
||||
extern int listen_to_virtual_ips;
|
||||
|
||||
#ifndef IPTOS_DSCP_EF
|
||||
#define IPTOS_DSCP_EF 0xb8
|
||||
#endif
|
||||
int qos = IPTOS_DSCP_EF; /* QoS RFC3246 */
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
/* TODO burnicki: This should be moved to ntp_timer.c, but if we do so
|
||||
* we get a linker error. Since we're running out of time before the leap
|
||||
* second occurs, we let it here where it just works.
|
||||
*/
|
||||
int leap_smear_intv;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* NIC rule entry
|
||||
*/
|
||||
@ -2009,6 +2022,32 @@ update_interfaces(
|
||||
if (sys_bclient)
|
||||
io_setbclient();
|
||||
|
||||
/*
|
||||
* Check multicast interfaces and try to join multicast groups if
|
||||
* not joined yet.
|
||||
*/
|
||||
for (ep = ep_list; ep != NULL; ep = ep->elink) {
|
||||
remaddr_t *entry;
|
||||
|
||||
if (!(INT_MCASTIF & ep->flags) || (INT_MCASTOPEN & ep->flags))
|
||||
continue;
|
||||
|
||||
/* Find remote address that was linked to this interface */
|
||||
for (entry = remoteaddr_list;
|
||||
entry != NULL;
|
||||
entry = entry->link) {
|
||||
if (entry->ep == ep) {
|
||||
if (socket_multicast_enable(ep, &entry->addr)) {
|
||||
msyslog(LOG_INFO,
|
||||
"Joined %s socket to multicast group %s",
|
||||
stoa(&ep->sin),
|
||||
stoa(&entry->addr));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new_interface_found;
|
||||
}
|
||||
|
||||
@ -2432,12 +2471,12 @@ socket_multicast_enable(
|
||||
IP_ADD_MEMBERSHIP,
|
||||
(char *)&mreq,
|
||||
sizeof(mreq))) {
|
||||
msyslog(LOG_ERR,
|
||||
DPRINTF(2, (
|
||||
"setsockopt IP_ADD_MEMBERSHIP failed: %m on socket %d, addr %s for %x / %x (%s)",
|
||||
iface->fd, stoa(&iface->sin),
|
||||
mreq.imr_multiaddr.s_addr,
|
||||
mreq.imr_interface.s_addr,
|
||||
stoa(maddr));
|
||||
stoa(maddr)));
|
||||
return ISC_FALSE;
|
||||
}
|
||||
DPRINTF(4, ("Added IPv4 multicast membership on socket %d, addr %s for %x / %x (%s)\n",
|
||||
@ -2462,10 +2501,10 @@ socket_multicast_enable(
|
||||
if (setsockopt(iface->fd, IPPROTO_IPV6,
|
||||
IPV6_JOIN_GROUP, (char *)&mreq6,
|
||||
sizeof(mreq6))) {
|
||||
msyslog(LOG_ERR,
|
||||
DPRINTF(2, (
|
||||
"setsockopt IPV6_JOIN_GROUP failed: %m on socket %d, addr %s for interface %u (%s)",
|
||||
iface->fd, stoa(&iface->sin),
|
||||
mreq6.ipv6mr_interface, stoa(maddr));
|
||||
mreq6.ipv6mr_interface, stoa(maddr)));
|
||||
return ISC_FALSE;
|
||||
}
|
||||
DPRINTF(4, ("Added IPv6 multicast group on socket %d, addr %s for interface %u (%s)\n",
|
||||
@ -2767,11 +2806,6 @@ io_multicast_add(
|
||||
"Joined %s socket to multicast group %s",
|
||||
stoa(&ep->sin),
|
||||
stoa(addr));
|
||||
else
|
||||
msyslog(LOG_ERR,
|
||||
"Failed to join %s socket to multicast group %s",
|
||||
stoa(&ep->sin),
|
||||
stoa(addr));
|
||||
}
|
||||
|
||||
add_addr_to_list(addr, one_ep);
|
||||
@ -2842,11 +2876,6 @@ open_socket(
|
||||
int on = 1;
|
||||
int off = 0;
|
||||
|
||||
#ifndef IPTOS_DSCP_EF
|
||||
#define IPTOS_DSCP_EF 0xb8
|
||||
#endif
|
||||
int qos = IPTOS_DSCP_EF; /* QoS RFC3246 */
|
||||
|
||||
if (IS_IPV6(addr) && !ipv6_works)
|
||||
return INVALID_SOCKET;
|
||||
|
||||
@ -3576,7 +3605,7 @@ io_handler(void)
|
||||
else if (debug > 4) {
|
||||
msyslog(LOG_DEBUG, "select(): nfound=%d, error: %m", nfound);
|
||||
} else {
|
||||
DPRINTF(1, ("select() returned %d: %m\n", nfound));
|
||||
DPRINTF(3, ("select() returned %d: %m\n", nfound));
|
||||
}
|
||||
# endif /* DEBUG */
|
||||
# else /* HAVE_SIGNALED_IO */
|
||||
|
1692
ntpd/ntp_keyword.h
1692
ntpd/ntp_keyword.h
File diff suppressed because it is too large
Load Diff
@ -89,11 +89,13 @@ static char * get_line(leapsec_reader, void*, char*, size_t);
|
||||
static char * skipws(const char*);
|
||||
static int parsefail(const char * cp, const char * ep);
|
||||
static void reload_limits(leap_table_t*, const vint64*);
|
||||
static void fetch_leap_era(leap_era_t*, const leap_table_t*,
|
||||
const vint64*);
|
||||
static int betweenu32(uint32_t, uint32_t, uint32_t);
|
||||
static void reset_times(leap_table_t*);
|
||||
static int leapsec_add(leap_table_t*, const vint64*, int);
|
||||
static int leapsec_raw(leap_table_t*, const vint64 *, int, int);
|
||||
static char * lstostr(const vint64 * ts);
|
||||
static const char * lstostr(const vint64 * ts);
|
||||
|
||||
/* =====================================================================
|
||||
* Get & Set the current leap table
|
||||
@ -107,8 +109,17 @@ leapsec_get_table(
|
||||
leap_table_t *p1, *p2;
|
||||
|
||||
p1 = _lptr;
|
||||
p1 = &_ltab[p1 == &_ltab[1]];
|
||||
p2 = &_ltab[p1 == &_ltab[0]];
|
||||
if (p1 == &_ltab[0]) {
|
||||
p2 = &_ltab[1];
|
||||
} else if (p1 == &_ltab[1]) {
|
||||
p2 = &_ltab[0];
|
||||
} else {
|
||||
p1 = &_ltab[0];
|
||||
p2 = &_ltab[1];
|
||||
reset_times(p1);
|
||||
reset_times(p2);
|
||||
_lptr = p1;
|
||||
}
|
||||
if (alternate) {
|
||||
memcpy(p2, p1, sizeof(leap_table_t));
|
||||
p1 = p2;
|
||||
@ -178,10 +189,15 @@ leapsec_load(
|
||||
struct calendar build;
|
||||
|
||||
leapsec_clear(pt);
|
||||
if (use_build_limit && ntpcal_get_build_date(&build))
|
||||
if (use_build_limit && ntpcal_get_build_date(&build)) {
|
||||
/* don't prune everything -- permit the last 10yrs
|
||||
* before build.
|
||||
*/
|
||||
build.year -= 10;
|
||||
limit = ntpcal_date_to_ntp64(&build);
|
||||
else
|
||||
} else {
|
||||
memset(&limit, 0, sizeof(limit));
|
||||
}
|
||||
|
||||
while (get_line(func, farg, linebuf, sizeof(linebuf))) {
|
||||
cp = linebuf;
|
||||
@ -198,7 +214,7 @@ leapsec_load(
|
||||
pt->head.update = strtouv64(cp, &ep, 10);
|
||||
if (parsefail(cp, ep))
|
||||
goto fail_read;
|
||||
}
|
||||
}
|
||||
} else if (isdigit((u_char)*cp)) {
|
||||
ttime = strtouv64(cp, &ep, 10);
|
||||
if (parsefail(cp, ep))
|
||||
@ -288,7 +304,7 @@ leapsec_query(
|
||||
* leap era frame.
|
||||
*/
|
||||
reload_limits(pt, &ts64);
|
||||
} else if (ucmpv64(&ts64, &pt->head.dtime) >= 0) {
|
||||
} else if (ucmpv64(&ts64, &pt->head.dtime) >= 0) {
|
||||
/* Boundary crossed in forward direction. This might
|
||||
* indicate a leap transition, so we prepare for that
|
||||
* case.
|
||||
@ -296,32 +312,47 @@ leapsec_query(
|
||||
* Some operations below are actually NOPs in electric
|
||||
* mode, but having only one code path that works for
|
||||
* both modes is easier to maintain.
|
||||
*
|
||||
* There's another quirk we must keep looking out for:
|
||||
* If we just stepped the clock, the step might have
|
||||
* crossed a leap boundary. As with backward steps, we
|
||||
* do not want to raise the 'fired' event in that case.
|
||||
* So we raise the 'fired' event only if we're close to
|
||||
* the transition and just reload the limits otherwise.
|
||||
*/
|
||||
last = pt->head.ttime;
|
||||
qr->warped = (int16_t)(last.D_s.lo -
|
||||
pt->head.dtime.D_s.lo);
|
||||
next = addv64i32(&ts64, qr->warped);
|
||||
reload_limits(pt, &next);
|
||||
fired = ucmpv64(&pt->head.ebase, &last) == 0;
|
||||
if (fired) {
|
||||
ts64 = next;
|
||||
ts32 = next.D_s.lo;
|
||||
last = addv64i32(&pt->head.dtime, 3); /* get boundary */
|
||||
if (ucmpv64(&ts64, &last) >= 0) {
|
||||
/* that was likely a query after a step */
|
||||
reload_limits(pt, &ts64);
|
||||
} else {
|
||||
qr->warped = 0;
|
||||
/* close enough for deeper examination */
|
||||
last = pt->head.ttime;
|
||||
qr->warped = (int16_t)(last.D_s.lo -
|
||||
pt->head.dtime.D_s.lo);
|
||||
next = addv64i32(&ts64, qr->warped);
|
||||
reload_limits(pt, &next);
|
||||
fired = ucmpv64(&pt->head.ebase, &last) == 0;
|
||||
if (fired) {
|
||||
ts64 = next;
|
||||
ts32 = next.D_s.lo;
|
||||
} else {
|
||||
qr->warped = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
qr->tai_offs = pt->head.this_tai;
|
||||
qr->ebase = pt->head.ebase;
|
||||
qr->ttime = pt->head.ttime;
|
||||
|
||||
/* If before the next scheduling alert, we're done. */
|
||||
if (ucmpv64(&ts64, &pt->head.stime) < 0)
|
||||
return fired;
|
||||
|
||||
/* now start to collect the remaing data */
|
||||
/* now start to collect the remaining data */
|
||||
due32 = pt->head.dtime.D_s.lo;
|
||||
|
||||
qr->tai_diff = pt->head.next_tai - pt->head.this_tai;
|
||||
qr->ttime = pt->head.ttime;
|
||||
qr->ddist = due32 - ts32;
|
||||
qr->dynamic = pt->head.dynls;
|
||||
qr->proximity = LSPROX_SCHEDULE;
|
||||
@ -329,7 +360,7 @@ leapsec_query(
|
||||
/* if not in the last day before transition, we're done. */
|
||||
if (!betweenu32(due32 - SECSPERDAY, ts32, due32))
|
||||
return fired;
|
||||
|
||||
|
||||
qr->proximity = LSPROX_ANNOUNCE;
|
||||
if (!betweenu32(due32 - 10, ts32, due32))
|
||||
return fired;
|
||||
@ -339,6 +370,22 @@ leapsec_query(
|
||||
return fired;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
int/*BOOL*/
|
||||
leapsec_query_era(
|
||||
leap_era_t * qr ,
|
||||
uint32_t ntpts,
|
||||
const time_t * pivot)
|
||||
{
|
||||
const leap_table_t * pt;
|
||||
vint64 ts64;
|
||||
|
||||
pt = leapsec_get_table(FALSE);
|
||||
ts64 = ntpcal_ntp_to_ntp(ntpts, pivot);
|
||||
fetch_leap_era(qr, pt, &ts64);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
int/*BOOL*/
|
||||
leapsec_frame(
|
||||
@ -348,15 +395,14 @@ leapsec_frame(
|
||||
|
||||
memset(qr, 0, sizeof(leap_result_t));
|
||||
pt = leapsec_get_table(FALSE);
|
||||
if (ucmpv64(&pt->head.ttime, &pt->head.stime) <= 0)
|
||||
return FALSE;
|
||||
|
||||
qr->tai_offs = pt->head.this_tai;
|
||||
qr->tai_diff = pt->head.next_tai - pt->head.this_tai;
|
||||
qr->ebase = pt->head.ebase;
|
||||
qr->ttime = pt->head.ttime;
|
||||
qr->dynamic = pt->head.dynls;
|
||||
|
||||
return TRUE;
|
||||
return ucmpv64(&pt->head.ttime, &pt->head.stime) >= 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
@ -392,7 +438,7 @@ leapsec_load_stream(
|
||||
msyslog(LOG_NOTICE, "%s ('%s'): good hash signature",
|
||||
logPrefix, fname);
|
||||
break;
|
||||
|
||||
|
||||
case LSVALID_NOHASH:
|
||||
msyslog(LOG_ERR, "%s ('%s'): no hash signature",
|
||||
logPrefix, fname);
|
||||
@ -442,7 +488,7 @@ leapsec_load_stream(
|
||||
"%s ('%s'): loaded, expire=%s ofs=%d (no entries after build date)",
|
||||
logPrefix, fname, lstostr(&pt->head.expire),
|
||||
pt->head.base_tai);
|
||||
|
||||
|
||||
return leapsec_set_table(pt);
|
||||
}
|
||||
|
||||
@ -461,7 +507,7 @@ leapsec_load_file(
|
||||
/* just do nothing if there is no leap file */
|
||||
if ( !(fname && *fname) )
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* try to stat the leapfile */
|
||||
if (0 != stat(fname, &sb_new)) {
|
||||
if (logall)
|
||||
@ -551,6 +597,7 @@ leapsec_daystolive(
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
#if 0 /* currently unused -- possibly revived later */
|
||||
int/*BOOL*/
|
||||
leapsec_add_fix(
|
||||
int total,
|
||||
@ -566,7 +613,7 @@ leapsec_add_fix(
|
||||
time(&tpiv);
|
||||
pivot = &tpiv;
|
||||
}
|
||||
|
||||
|
||||
et64 = ntpcal_ntp_to_ntp(etime, pivot);
|
||||
tt64 = ntpcal_ntp_to_ntp(ttime, pivot);
|
||||
pt = leapsec_get_table(TRUE);
|
||||
@ -583,6 +630,7 @@ leapsec_add_fix(
|
||||
|
||||
return leapsec_set_table(pt);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
int/*BOOL*/
|
||||
@ -600,6 +648,71 @@ leapsec_add_dyn(
|
||||
&& leapsec_set_table(pt));
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
int/*BOOL*/
|
||||
leapsec_autokey_tai(
|
||||
int tai_offset,
|
||||
uint32_t ntpnow ,
|
||||
const time_t * pivot )
|
||||
{
|
||||
leap_table_t * pt;
|
||||
leap_era_t era;
|
||||
vint64 now64;
|
||||
int idx;
|
||||
|
||||
(void)tai_offset;
|
||||
pt = leapsec_get_table(FALSE);
|
||||
|
||||
/* Bail out if the basic offset is not zero and the putative
|
||||
* offset is bigger than 10s. That was in 1972 -- we don't want
|
||||
* to go back that far!
|
||||
*/
|
||||
if (pt->head.base_tai != 0 || tai_offset < 10)
|
||||
return FALSE;
|
||||
|
||||
/* If there's already data in the table, check if an update is
|
||||
* possible. Update is impossible if there are static entries
|
||||
* (since this indicates a valid leapsecond file) or if we're
|
||||
* too close to a leapsecond transition: We do not know on what
|
||||
* side the transition the sender might have been, so we use a
|
||||
* dead zone around the transition.
|
||||
*/
|
||||
|
||||
/* Check for static entries */
|
||||
for (idx = 0; idx != pt->head.size; idx++)
|
||||
if ( ! pt->info[idx].dynls)
|
||||
return FALSE;
|
||||
|
||||
/* get the fulll time stamp and leap era for it */
|
||||
now64 = ntpcal_ntp_to_ntp(ntpnow, pivot);
|
||||
fetch_leap_era(&era, pt, &now64);
|
||||
|
||||
/* check the limits with 20s dead band */
|
||||
era.ebase = addv64i32(&era.ebase, 20);
|
||||
if (ucmpv64(&now64, &era.ebase) < 0)
|
||||
return FALSE;
|
||||
|
||||
era.ttime = addv64i32(&era.ttime, -20);
|
||||
if (ucmpv64(&now64, &era.ttime) > 0)
|
||||
return FALSE;
|
||||
|
||||
/* Here we can proceed. Calculate the delta update. */
|
||||
tai_offset -= era.taiof;
|
||||
|
||||
/* Shift the header info offsets. */
|
||||
pt->head.base_tai += tai_offset;
|
||||
pt->head.this_tai += tai_offset;
|
||||
pt->head.next_tai += tai_offset;
|
||||
|
||||
/* Shift table entry offsets (if any) */
|
||||
for (idx = 0; idx != pt->head.size; idx++)
|
||||
pt->info[idx].taiof += tai_offset;
|
||||
|
||||
/* claim success... */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* =====================================================================
|
||||
* internal helpers
|
||||
*/
|
||||
@ -630,15 +743,21 @@ add_range(
|
||||
const leap_info_t * pi)
|
||||
{
|
||||
/* If the table is full, make room by throwing out the oldest
|
||||
* entry. But remember the accumulated leap seconds!
|
||||
* entry. But remember the accumulated leap seconds! Likewise,
|
||||
* assume a positive leap insertion if this is the first entry
|
||||
* in the table. This is not necessarily the best of all ideas,
|
||||
* but it helps a great deal if a system does not have a leap
|
||||
* table and gets updated from an upstream server.
|
||||
*/
|
||||
if (pt->head.size >= MAX_HIST) {
|
||||
if (pt->head.size == 0) {
|
||||
pt->head.base_tai = pi->taiof - 1;
|
||||
} else if (pt->head.size >= MAX_HIST) {
|
||||
pt->head.size = MAX_HIST - 1;
|
||||
pt->head.base_tai = pt->info[pt->head.size].taiof;
|
||||
}
|
||||
|
||||
/* make room in lower end and insert item */
|
||||
memmove(pt->info+1, pt->info, pt->head.size*sizeof(*pt->info));
|
||||
memmove(pt->info+1, pt->info, pt->head.size*sizeof(*pt->info));
|
||||
pt->info[0] = *pi;
|
||||
pt->head.size++;
|
||||
|
||||
@ -670,7 +789,7 @@ get_line(
|
||||
{
|
||||
int ch;
|
||||
char *ptr;
|
||||
|
||||
|
||||
/* if we cannot even store the delimiter, declare failure */
|
||||
if (buff == NULL || size == 0)
|
||||
return NULL;
|
||||
@ -698,7 +817,7 @@ skipws(
|
||||
return (char*)noconst(ptr);
|
||||
}
|
||||
|
||||
/* [internal] check if a strtoXYZ ended at EOL or whistespace and
|
||||
/* [internal] check if a strtoXYZ ended at EOL or whitespace and
|
||||
* converted something at all. Return TRUE if something went wrong.
|
||||
*/
|
||||
static int/*BOOL*/
|
||||
@ -758,7 +877,7 @@ reload_limits(
|
||||
pt->head.dtime = addv64i32(
|
||||
&pt->head.ttime,
|
||||
pt->head.next_tai - pt->head.this_tai);
|
||||
|
||||
|
||||
pt->head.stime = subv64u32(
|
||||
&pt->head.ttime, pt->info[idx].stime);
|
||||
|
||||
@ -771,6 +890,37 @@ reload_limits(
|
||||
}
|
||||
}
|
||||
|
||||
/* [internal] fetch the leap era for a given time stamp.
|
||||
* This is a cut-down version the algorithm used to reload the table
|
||||
* limits, but it does not update any global state and provides just the
|
||||
* era information for a given time stamp.
|
||||
*/
|
||||
static void
|
||||
fetch_leap_era(
|
||||
leap_era_t * into,
|
||||
const leap_table_t * pt ,
|
||||
const vint64 * ts )
|
||||
{
|
||||
int idx;
|
||||
|
||||
/* Simple search loop, also works with empty table. */
|
||||
for (idx = 0; idx != pt->head.size; idx++)
|
||||
if (ucmpv64(ts, &pt->info[idx].ttime) >= 0)
|
||||
break;
|
||||
/* fetch era data, keeping an eye on boundary conditions */
|
||||
if (idx >= pt->head.size) {
|
||||
memset(&into->ebase, 0x00, sizeof(vint64));
|
||||
into->taiof = pt->head.base_tai;
|
||||
} else {
|
||||
into->ebase = pt->info[idx].ttime;
|
||||
into->taiof = pt->info[idx].taiof;
|
||||
}
|
||||
if (--idx >= 0)
|
||||
into->ttime = pt->info[idx].ttime;
|
||||
else
|
||||
memset(&into->ttime, 0xFF, sizeof(vint64));
|
||||
}
|
||||
|
||||
/* [internal] Take a time stamp and create a leap second frame for
|
||||
* it. This will schedule a leap second for the beginning of the next
|
||||
* month, midnight UTC. The 'insert' argument tells if a leap second is
|
||||
@ -791,7 +941,7 @@ leapsec_add(
|
||||
struct calendar fts;
|
||||
leap_info_t li;
|
||||
|
||||
/* Check against the table expiration and the lates available
|
||||
/* Check against the table expiration and the latest available
|
||||
* leap entry. Do not permit inserts, only appends, and only if
|
||||
* the extend the table beyond the expiration!
|
||||
*/
|
||||
@ -843,10 +993,22 @@ leapsec_raw(
|
||||
struct calendar fts;
|
||||
leap_info_t li;
|
||||
|
||||
/* Check that we only extend the table. Paranoia rulez! */
|
||||
if (pt->head.size && ucmpv64(ttime, &pt->info[0].ttime) <= 0) {
|
||||
errno = ERANGE;
|
||||
return FALSE;
|
||||
/* Check that we either extend the table or get a duplicate of
|
||||
* the latest entry. The latter is a benevolent overwrite with
|
||||
* identical data and could happen if we get an autokey message
|
||||
* that extends the lifetime of the current leapsecond table.
|
||||
* Otherwise paranoia rulez!
|
||||
*/
|
||||
if (pt->head.size) {
|
||||
int cmp = ucmpv64(ttime, &pt->info[0].ttime);
|
||||
if (cmp == 0)
|
||||
cmp -= (taiof != pt->info[0].taiof);
|
||||
if (cmp < 0) {
|
||||
errno = ERANGE;
|
||||
return FALSE;
|
||||
}
|
||||
if (cmp == 0)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ntpcal_ntp64_to_date(&fts, ttime);
|
||||
@ -856,7 +1018,7 @@ leapsec_raw(
|
||||
return FALSE;
|
||||
}
|
||||
fts.month--; /* was in range 1..12, no overflow here! */
|
||||
starttime = ntpcal_date_to_ntp64(&fts);
|
||||
starttime = ntpcal_date_to_ntp64(&fts);
|
||||
li.ttime = *ttime;
|
||||
li.stime = ttime->D_s.lo - starttime.D_s.lo;
|
||||
li.taiof = (int16_t)taiof;
|
||||
@ -947,7 +1109,7 @@ do_hash_data(
|
||||
isc_sha1_update(
|
||||
mdctx, text, sizeof(text));
|
||||
}
|
||||
|
||||
|
||||
if (0 < tlen)
|
||||
isc_sha1_update(mdctx, text, tlen);
|
||||
}
|
||||
@ -991,20 +1153,34 @@ leapsec_validate(
|
||||
/*
|
||||
* lstostr - prettyprint NTP seconds
|
||||
*/
|
||||
static char * lstostr(
|
||||
static const char *
|
||||
lstostr(
|
||||
const vint64 * ts)
|
||||
{
|
||||
char * buf;
|
||||
struct calendar tm;
|
||||
|
||||
LIB_GETBUF(buf);
|
||||
ntpcal_ntp64_to_date(&tm, ts);
|
||||
snprintf(buf, LIB_BUFLENGTH, "%04d-%02d-%02dT%02d:%02dZ",
|
||||
tm.year, tm.month, tm.monthday,
|
||||
tm.hour, tm.minute);
|
||||
|
||||
if ( ! (ts->d_s.hi >= 0 && ntpcal_ntp64_to_date(&tm, ts) >= 0))
|
||||
snprintf(buf, LIB_BUFLENGTH, "%s", "9999-12-31T23:59:59Z");
|
||||
else
|
||||
snprintf(buf, LIB_BUFLENGTH, "%04d-%02d-%02dT%02d:%02d:%02dZ",
|
||||
tm.year, tm.month, tm.monthday,
|
||||
tm.hour, tm.minute, tm.second);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
/* reset the global state for unit tests */
|
||||
void
|
||||
leapsec_ut_pristine(void)
|
||||
{
|
||||
memset(_ltab, 0, sizeof(_ltab));
|
||||
_lptr = NULL;
|
||||
_electric = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* -*- that's all folks! -*- */
|
||||
|
@ -61,16 +61,27 @@ extern int leapsec_validate(leapsec_reader, void*);
|
||||
*/
|
||||
extern int/*BOOL*/ leapsec_electric(int/*BOOL*/ on);
|
||||
|
||||
/* Query result for a leap era. This is the minimal stateless
|
||||
* information available for a time stamp in UTC.
|
||||
*/
|
||||
struct leap_era {
|
||||
vint64 ebase; /* era base (UTC of start) */
|
||||
vint64 ttime; /* era end (UTC of next leap second) */
|
||||
int16_t taiof; /* offset to TAI in this era */
|
||||
};
|
||||
typedef struct leap_era leap_era_t;
|
||||
|
||||
/* Query result for a leap second schedule
|
||||
* 'ttime' is the transition point in full time scale, but only if
|
||||
* 'tai_diff' is not zero. Nominal UTC time when the next leap
|
||||
* era starts.
|
||||
* 'ebase' is the nominal UTC time when the current leap era
|
||||
* started. (Era base time)
|
||||
* 'ttime' is the next transition point in full time scale. (Nominal UTC
|
||||
* time when the next leap era starts.)
|
||||
* 'ddist' is the distance to the transition, in clock seconds.
|
||||
* This is the distance to the due time, which is different
|
||||
* from the transition time if the mode is non-electric.
|
||||
* Only valid if 'tai_diff' is not zero.
|
||||
* 'tai_offs' is the CURRENT distance from clock (UTC) to TAI. Always valid.
|
||||
* 'tai_offs' is the CURRENT distance from clock (UTC) to TAI. Always
|
||||
* valid.
|
||||
* 'tai_diff' is the change in TAI offset after the next leap
|
||||
* transition. Zero if nothing is pending or too far ahead.
|
||||
* 'warped' is set only once, when the the leap second occurred between
|
||||
@ -79,8 +90,9 @@ extern int/*BOOL*/ leapsec_electric(int/*BOOL*/ on);
|
||||
* 'proximity' is a proximity warning. See definitions below. This is
|
||||
* more useful than an absolute difference to the leap second.
|
||||
* 'dynamic' != 0 if entry was requested by clock/peer
|
||||
*/
|
||||
*/
|
||||
struct leap_result {
|
||||
vint64 ebase;
|
||||
vint64 ttime;
|
||||
uint32_t ddist;
|
||||
int16_t tai_offs;
|
||||
@ -91,6 +103,15 @@ struct leap_result {
|
||||
};
|
||||
typedef struct leap_result leap_result_t;
|
||||
|
||||
/* The leap signature is used in two distinct circumstances, and it has
|
||||
* slightly different content in these cases:
|
||||
* - it is used to indictae the time range covered by the leap second
|
||||
* table, and then it contains the last transition, TAI offset after
|
||||
* the final transition, and the expiration time.
|
||||
* - it is used to query data for AUTOKEY updates, and then it contains
|
||||
* the *current* TAI offset, the *next* transition time and the
|
||||
* expiration time of the table.
|
||||
*/
|
||||
struct leap_signature {
|
||||
uint32_t etime; /* expiration time */
|
||||
uint32_t ttime; /* transition time */
|
||||
@ -99,6 +120,24 @@ struct leap_signature {
|
||||
typedef struct leap_signature leap_signature_t;
|
||||
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
|
||||
struct leap_smear_info {
|
||||
int enabled; /* not 0 if smearing is generally enabled */
|
||||
int in_progress; /* not 0 if smearing is in progress, i.e. the offset has been computed */
|
||||
int leap_occurred; /* not 0 if the leap second has already occurred, i.e., during the leap second */
|
||||
double doffset; /* the current smear offset as double */
|
||||
l_fp offset; /* the current smear offset */
|
||||
uint32_t t_offset; /* the current time for which a smear offset has been computed */
|
||||
long interval; /* smear interval, in [s], should be at least some hours */
|
||||
double intv_start; /* start time of the smear interval */
|
||||
double intv_end; /* end time of the smear interval */
|
||||
};
|
||||
typedef struct leap_smear_info leap_smear_info_t;
|
||||
|
||||
#endif /* LEAP_SMEAR */
|
||||
|
||||
|
||||
#define LSPROX_NOWARN 0 /* clear radar screen */
|
||||
#define LSPROX_SCHEDULE 1 /* less than 1 month to target*/
|
||||
#define LSPROX_ANNOUNCE 2 /* less than 1 day to target */
|
||||
@ -170,6 +209,7 @@ extern int32_t leapsec_daystolive(uint32_t when, const time_t * pivot);
|
||||
*/
|
||||
extern void leapsec_reset_frame(void);
|
||||
|
||||
#if 0 /* currently unused -- possibly revived later */
|
||||
/* Given a transition time, the TAI offset valid after that and an
|
||||
* expiration time, try to establish a system leap transition. Only
|
||||
* works if the existing table is extended. On success, updates the
|
||||
@ -177,6 +217,7 @@ extern void leapsec_reset_frame(void);
|
||||
*/
|
||||
extern int/*BOOL*/ leapsec_add_fix(int offset, uint32_t ttime, uint32_t etime,
|
||||
const time_t * pivot);
|
||||
#endif
|
||||
|
||||
/* Take a time stamp and create a leap second frame for it. This will
|
||||
* schedule a leap second for the beginning of the next month, midnight
|
||||
@ -200,9 +241,15 @@ extern int/*BOOL*/ leapsec_add_dyn(int/*BOOL*/ insert, uint32_t ntp_now,
|
||||
* last and the current query. In that case, qr->warped contains the
|
||||
* required clock stepping, which is always zero in electric mode.
|
||||
*/
|
||||
extern int/*BOOL*/ leapsec_query(leap_result_t *qr, uint32_t ntpts,
|
||||
extern int/*BOOL*/ leapsec_query(leap_result_t * qr, uint32_t ntpts,
|
||||
const time_t * pivot);
|
||||
|
||||
/* For a given time stamp, fetch the data for the bracketing leap
|
||||
* era. The time stamp is subject to NTP era unfolding.
|
||||
*/
|
||||
extern int/*BOOL*/ leapsec_query_era(leap_era_t * qr, uint32_t ntpts,
|
||||
const time_t * pivot);
|
||||
|
||||
/* Get the current leap frame info. Returns TRUE if the result contains
|
||||
* useable data, FALSE if there is currently no leap second frame.
|
||||
* This merely replicates some results from a previous query, but since
|
||||
@ -215,4 +262,15 @@ extern int/*BOOL*/ leapsec_query(leap_result_t *qr, uint32_t ntpts,
|
||||
*/
|
||||
extern int/*BOOL*/ leapsec_frame(leap_result_t *qr);
|
||||
|
||||
|
||||
/* Process a AUTOKEY TAI offset information. This *might* augment the
|
||||
* current leap data table with the given TAI offset.
|
||||
* Returns TRUE if action was taken, FALSE otherwise.
|
||||
*/
|
||||
extern int/*BOOL*/ leapsec_autokey_tai(int tai_offset, uint32_t ntpnow,
|
||||
const time_t * pivot);
|
||||
|
||||
/* reset global state for unit tests */
|
||||
extern void leapsec_ut_pristine(void);
|
||||
|
||||
#endif /* !defined(NTP_LEAPSEC_H) */
|
||||
|
@ -246,6 +246,8 @@ ntp_adjtime_error_handler(
|
||||
int line /* line number of ntp_adjtime call */
|
||||
)
|
||||
{
|
||||
char des[1024] = ""; /* Decoded Error Status */
|
||||
|
||||
switch (ret) {
|
||||
case -1:
|
||||
switch (saved_errno) {
|
||||
@ -317,14 +319,88 @@ ntp_adjtime_error_handler(
|
||||
# warning TIME_WAIT is not defined
|
||||
#endif
|
||||
#ifdef TIME_ERROR
|
||||
#if 0
|
||||
|
||||
from the reference implementation of ntp_gettime():
|
||||
|
||||
// Hardware or software error
|
||||
if ((time_status & (STA_UNSYNC | STA_CLOCKERR))
|
||||
|
||||
/*
|
||||
* PPS signal lost when either time or frequency synchronization
|
||||
* requested
|
||||
*/
|
||||
|| (time_status & (STA_PPSFREQ | STA_PPSTIME)
|
||||
&& !(time_status & STA_PPSSIGNAL))
|
||||
|
||||
/*
|
||||
* PPS jitter exceeded when time synchronization requested
|
||||
*/
|
||||
|| (time_status & STA_PPSTIME &&
|
||||
time_status & STA_PPSJITTER)
|
||||
|
||||
/*
|
||||
* PPS wander exceeded or calibration error when frequency
|
||||
* synchronization requested
|
||||
*/
|
||||
|| (time_status & STA_PPSFREQ &&
|
||||
time_status & (STA_PPSWANDER | STA_PPSERROR)))
|
||||
return (TIME_ERROR);
|
||||
|
||||
or, from ntp_adjtime():
|
||||
|
||||
if ( (time_status & (STA_UNSYNC | STA_CLOCKERR))
|
||||
|| (time_status & (STA_PPSFREQ | STA_PPSTIME)
|
||||
&& !(time_status & STA_PPSSIGNAL))
|
||||
|| (time_status & STA_PPSTIME
|
||||
&& time_status & STA_PPSJITTER)
|
||||
|| (time_status & STA_PPSFREQ
|
||||
&& time_status & (STA_PPSWANDER | STA_PPSERROR))
|
||||
)
|
||||
return (TIME_ERROR);
|
||||
#endif
|
||||
|
||||
case TIME_ERROR: /* 5: unsynchronized, or loss of synchronization */
|
||||
/* error (see status word) */
|
||||
|
||||
if (ptimex->status & STA_UNSYNC)
|
||||
snprintf(des, sizeof(des), "%s%sClock Unsynchronized",
|
||||
des, (*des) ? "; " : "");
|
||||
|
||||
if (ptimex->status & STA_CLOCKERR)
|
||||
snprintf(des, sizeof(des), "%s%sClock Error",
|
||||
des, (*des) ? "; " : "");
|
||||
|
||||
if (!(ptimex->status & STA_PPSSIGNAL)
|
||||
&& ptimex->status & STA_PPSFREQ)
|
||||
snprintf(des, sizeof(des), "%s%sPPS Frequency Sync wanted but no PPS",
|
||||
des, (*des) ? "; " : "");
|
||||
|
||||
if (!(ptimex->status & STA_PPSSIGNAL)
|
||||
&& ptimex->status & STA_PPSTIME)
|
||||
snprintf(des, sizeof(des), "%s%sPPS Time Sync wanted but no PPS signal",
|
||||
des, (*des) ? "; " : "");
|
||||
|
||||
if ( ptimex->status & STA_PPSTIME
|
||||
&& ptimex->status & STA_PPSJITTER)
|
||||
snprintf(des, sizeof(des), "%s%sPPS Time Sync wanted but PPS Jitter exceeded",
|
||||
des, (*des) ? "; " : "");
|
||||
|
||||
if ( ptimex->status & STA_PPSFREQ
|
||||
&& ptimex->status & STA_PPSWANDER)
|
||||
snprintf(des, sizeof(des), "%s%sPPS Frequency Sync wanted but PPS Wander exceeded",
|
||||
des, (*des) ? "; " : "");
|
||||
|
||||
if ( ptimex->status & STA_PPSFREQ
|
||||
&& ptimex->status & STA_PPSERROR)
|
||||
snprintf(des, sizeof(des), "%s%sPPS Frequency Sync wanted but Calibration error detected",
|
||||
des, (*des) ? "; " : "");
|
||||
|
||||
if (pps_call && !(ptimex->status & STA_PPSSIGNAL))
|
||||
report_event(EVNT_KERN, NULL,
|
||||
"PPS no signal");
|
||||
errno = saved_errno;
|
||||
DPRINTF(1, ("kernel loop status (%s) %d %m\n",
|
||||
k_st_flags(ptimex->status), errno));
|
||||
"no PPS signal");
|
||||
DPRINTF(1, ("kernel loop status %#x (%s)\n",
|
||||
ptimex->status, des));
|
||||
/*
|
||||
* This code may be returned when ntp_adjtime() has just
|
||||
* been called for the first time, quite a while after
|
||||
@ -339,15 +415,14 @@ ntp_adjtime_error_handler(
|
||||
* or ???
|
||||
* msyslog(LOG_INFO, "kernel reports time synchronization lost");
|
||||
*/
|
||||
errno = saved_errno; /* may not be needed */
|
||||
msyslog(LOG_INFO, "kernel reports TIME_ERROR: %#x: %s %m",
|
||||
ptimex->status, k_st_flags(ptimex->status));
|
||||
msyslog(LOG_INFO, "kernel reports TIME_ERROR: %#x: %s",
|
||||
ptimex->status, des);
|
||||
break;
|
||||
#else
|
||||
# warning TIME_ERROR is not defined
|
||||
#endif
|
||||
default:
|
||||
msyslog(LOG_NOTICE, "%s: %s line %d: unhandled return value %d from ntp_adjtime in %s at line %d",
|
||||
msyslog(LOG_NOTICE, "%s: %s line %d: unhandled return value %d from ntp_adjtime() in %s at line %d",
|
||||
caller, file_name(), line,
|
||||
ret,
|
||||
__func__, __LINE__
|
||||
|
@ -183,7 +183,7 @@ mon_getmoremem(void)
|
||||
: mru_incalloc;
|
||||
|
||||
if (entries) {
|
||||
chunk = emalloc(entries * sizeof(*chunk));
|
||||
chunk = eallocarray(entries, sizeof(*chunk));
|
||||
mru_alloc += entries;
|
||||
for (chunk += entries; entries; entries--)
|
||||
mon_free_entry(--chunk);
|
||||
|
3669
ntpd/ntp_parser.c
3669
ntpd/ntp_parser.c
File diff suppressed because it is too large
Load Diff
@ -1,19 +1,19 @@
|
||||
/* A Bison parser, made by GNU Bison 3.0.2. */
|
||||
/* A Bison parser, made by GNU Bison 2.7.12-4996. */
|
||||
|
||||
/* 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-2013 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 <http://www.gnu.org/licenses/>. */
|
||||
|
||||
@ -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
|
||||
/* Debug traces. */
|
||||
/* Enabling traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 1
|
||||
#endif
|
||||
@ -40,201 +40,204 @@
|
||||
extern int yydebug;
|
||||
#endif
|
||||
|
||||
/* Token type. */
|
||||
/* Tokens. */
|
||||
#ifndef YYTOKENTYPE
|
||||
# define YYTOKENTYPE
|
||||
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_Ellipsis = 290,
|
||||
T_Enable = 291,
|
||||
T_End = 292,
|
||||
T_False = 293,
|
||||
T_File = 294,
|
||||
T_Filegen = 295,
|
||||
T_Filenum = 296,
|
||||
T_Flag1 = 297,
|
||||
T_Flag2 = 298,
|
||||
T_Flag3 = 299,
|
||||
T_Flag4 = 300,
|
||||
T_Flake = 301,
|
||||
T_Floor = 302,
|
||||
T_Freq = 303,
|
||||
T_Fudge = 304,
|
||||
T_Host = 305,
|
||||
T_Huffpuff = 306,
|
||||
T_Iburst = 307,
|
||||
T_Ident = 308,
|
||||
T_Ignore = 309,
|
||||
T_Incalloc = 310,
|
||||
T_Incmem = 311,
|
||||
T_Initalloc = 312,
|
||||
T_Initmem = 313,
|
||||
T_Includefile = 314,
|
||||
T_Integer = 315,
|
||||
T_Interface = 316,
|
||||
T_Intrange = 317,
|
||||
T_Io = 318,
|
||||
T_Ipv4 = 319,
|
||||
T_Ipv4_flag = 320,
|
||||
T_Ipv6 = 321,
|
||||
T_Ipv6_flag = 322,
|
||||
T_Kernel = 323,
|
||||
T_Key = 324,
|
||||
T_Keys = 325,
|
||||
T_Keysdir = 326,
|
||||
T_Kod = 327,
|
||||
T_Mssntp = 328,
|
||||
T_Leapfile = 329,
|
||||
T_Limited = 330,
|
||||
T_Link = 331,
|
||||
T_Listen = 332,
|
||||
T_Logconfig = 333,
|
||||
T_Logfile = 334,
|
||||
T_Loopstats = 335,
|
||||
T_Lowpriotrap = 336,
|
||||
T_Manycastclient = 337,
|
||||
T_Manycastserver = 338,
|
||||
T_Mask = 339,
|
||||
T_Maxage = 340,
|
||||
T_Maxclock = 341,
|
||||
T_Maxdepth = 342,
|
||||
T_Maxdist = 343,
|
||||
T_Maxmem = 344,
|
||||
T_Maxpoll = 345,
|
||||
T_Mdnstries = 346,
|
||||
T_Mem = 347,
|
||||
T_Memlock = 348,
|
||||
T_Minclock = 349,
|
||||
T_Mindepth = 350,
|
||||
T_Mindist = 351,
|
||||
T_Minimum = 352,
|
||||
T_Minpoll = 353,
|
||||
T_Minsane = 354,
|
||||
T_Mode = 355,
|
||||
T_Mode7 = 356,
|
||||
T_Monitor = 357,
|
||||
T_Month = 358,
|
||||
T_Mru = 359,
|
||||
T_Multicastclient = 360,
|
||||
T_Nic = 361,
|
||||
T_Nolink = 362,
|
||||
T_Nomodify = 363,
|
||||
T_Nomrulist = 364,
|
||||
T_None = 365,
|
||||
T_Nonvolatile = 366,
|
||||
T_Nopeer = 367,
|
||||
T_Noquery = 368,
|
||||
T_Noselect = 369,
|
||||
T_Noserve = 370,
|
||||
T_Notrap = 371,
|
||||
T_Notrust = 372,
|
||||
T_Ntp = 373,
|
||||
T_Ntpport = 374,
|
||||
T_NtpSignDsocket = 375,
|
||||
T_Orphan = 376,
|
||||
T_Orphanwait = 377,
|
||||
T_Panic = 378,
|
||||
T_Peer = 379,
|
||||
T_Peerstats = 380,
|
||||
T_Phone = 381,
|
||||
T_Pid = 382,
|
||||
T_Pidfile = 383,
|
||||
T_Pool = 384,
|
||||
T_Port = 385,
|
||||
T_Preempt = 386,
|
||||
T_Prefer = 387,
|
||||
T_Protostats = 388,
|
||||
T_Pw = 389,
|
||||
T_Randfile = 390,
|
||||
T_Rawstats = 391,
|
||||
T_Refid = 392,
|
||||
T_Requestkey = 393,
|
||||
T_Reset = 394,
|
||||
T_Restrict = 395,
|
||||
T_Revoke = 396,
|
||||
T_Rlimit = 397,
|
||||
T_Saveconfigdir = 398,
|
||||
T_Server = 399,
|
||||
T_Setvar = 400,
|
||||
T_Source = 401,
|
||||
T_Stacksize = 402,
|
||||
T_Statistics = 403,
|
||||
T_Stats = 404,
|
||||
T_Statsdir = 405,
|
||||
T_Step = 406,
|
||||
T_Stepback = 407,
|
||||
T_Stepfwd = 408,
|
||||
T_Stepout = 409,
|
||||
T_Stratum = 410,
|
||||
T_String = 411,
|
||||
T_Sys = 412,
|
||||
T_Sysstats = 413,
|
||||
T_Tick = 414,
|
||||
T_Time1 = 415,
|
||||
T_Time2 = 416,
|
||||
T_Timer = 417,
|
||||
T_Timingstats = 418,
|
||||
T_Tinker = 419,
|
||||
T_Tos = 420,
|
||||
T_Trap = 421,
|
||||
T_True = 422,
|
||||
T_Trustedkey = 423,
|
||||
T_Ttl = 424,
|
||||
T_Type = 425,
|
||||
T_U_int = 426,
|
||||
T_Unconfig = 427,
|
||||
T_Unpeer = 428,
|
||||
T_Version = 429,
|
||||
T_WanderThreshold = 430,
|
||||
T_Week = 431,
|
||||
T_Wildcard = 432,
|
||||
T_Xleave = 433,
|
||||
T_Year = 434,
|
||||
T_Flag = 435,
|
||||
T_EOC = 436,
|
||||
T_Simulate = 437,
|
||||
T_Beep_Delay = 438,
|
||||
T_Sim_Duration = 439,
|
||||
T_Server_Offset = 440,
|
||||
T_Duration = 441,
|
||||
T_Freq_Offset = 442,
|
||||
T_Wander = 443,
|
||||
T_Jitter = 444,
|
||||
T_Prop_Delay = 445,
|
||||
T_Proc_Delay = 446
|
||||
};
|
||||
/* 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_Unconfig = 429,
|
||||
T_Unpeer = 430,
|
||||
T_Version = 431,
|
||||
T_WanderThreshold = 432,
|
||||
T_Week = 433,
|
||||
T_Wildcard = 434,
|
||||
T_Xleave = 435,
|
||||
T_Year = 436,
|
||||
T_Flag = 437,
|
||||
T_EOC = 438,
|
||||
T_Simulate = 439,
|
||||
T_Beep_Delay = 440,
|
||||
T_Sim_Duration = 441,
|
||||
T_Server_Offset = 442,
|
||||
T_Duration = 443,
|
||||
T_Freq_Offset = 444,
|
||||
T_Wander = 445,
|
||||
T_Jitter = 446,
|
||||
T_Prop_Delay = 447,
|
||||
T_Proc_Delay = 448
|
||||
};
|
||||
#endif
|
||||
/* Tokens. */
|
||||
#define T_Abbrev 258
|
||||
@ -269,170 +272,173 @@ extern int yydebug;
|
||||
#define T_Double 287
|
||||
#define T_Driftfile 288
|
||||
#define T_Drop 289
|
||||
#define T_Ellipsis 290
|
||||
#define T_Enable 291
|
||||
#define T_End 292
|
||||
#define T_False 293
|
||||
#define T_File 294
|
||||
#define T_Filegen 295
|
||||
#define T_Filenum 296
|
||||
#define T_Flag1 297
|
||||
#define T_Flag2 298
|
||||
#define T_Flag3 299
|
||||
#define T_Flag4 300
|
||||
#define T_Flake 301
|
||||
#define T_Floor 302
|
||||
#define T_Freq 303
|
||||
#define T_Fudge 304
|
||||
#define T_Host 305
|
||||
#define T_Huffpuff 306
|
||||
#define T_Iburst 307
|
||||
#define T_Ident 308
|
||||
#define T_Ignore 309
|
||||
#define T_Incalloc 310
|
||||
#define T_Incmem 311
|
||||
#define T_Initalloc 312
|
||||
#define T_Initmem 313
|
||||
#define T_Includefile 314
|
||||
#define T_Integer 315
|
||||
#define T_Interface 316
|
||||
#define T_Intrange 317
|
||||
#define T_Io 318
|
||||
#define T_Ipv4 319
|
||||
#define T_Ipv4_flag 320
|
||||
#define T_Ipv6 321
|
||||
#define T_Ipv6_flag 322
|
||||
#define T_Kernel 323
|
||||
#define T_Key 324
|
||||
#define T_Keys 325
|
||||
#define T_Keysdir 326
|
||||
#define T_Kod 327
|
||||
#define T_Mssntp 328
|
||||
#define T_Leapfile 329
|
||||
#define T_Limited 330
|
||||
#define T_Link 331
|
||||
#define T_Listen 332
|
||||
#define T_Logconfig 333
|
||||
#define T_Logfile 334
|
||||
#define T_Loopstats 335
|
||||
#define T_Lowpriotrap 336
|
||||
#define T_Manycastclient 337
|
||||
#define T_Manycastserver 338
|
||||
#define T_Mask 339
|
||||
#define T_Maxage 340
|
||||
#define T_Maxclock 341
|
||||
#define T_Maxdepth 342
|
||||
#define T_Maxdist 343
|
||||
#define T_Maxmem 344
|
||||
#define T_Maxpoll 345
|
||||
#define T_Mdnstries 346
|
||||
#define T_Mem 347
|
||||
#define T_Memlock 348
|
||||
#define T_Minclock 349
|
||||
#define T_Mindepth 350
|
||||
#define T_Mindist 351
|
||||
#define T_Minimum 352
|
||||
#define T_Minpoll 353
|
||||
#define T_Minsane 354
|
||||
#define T_Mode 355
|
||||
#define T_Mode7 356
|
||||
#define T_Monitor 357
|
||||
#define T_Month 358
|
||||
#define T_Mru 359
|
||||
#define T_Multicastclient 360
|
||||
#define T_Nic 361
|
||||
#define T_Nolink 362
|
||||
#define T_Nomodify 363
|
||||
#define T_Nomrulist 364
|
||||
#define T_None 365
|
||||
#define T_Nonvolatile 366
|
||||
#define T_Nopeer 367
|
||||
#define T_Noquery 368
|
||||
#define T_Noselect 369
|
||||
#define T_Noserve 370
|
||||
#define T_Notrap 371
|
||||
#define T_Notrust 372
|
||||
#define T_Ntp 373
|
||||
#define T_Ntpport 374
|
||||
#define T_NtpSignDsocket 375
|
||||
#define T_Orphan 376
|
||||
#define T_Orphanwait 377
|
||||
#define T_Panic 378
|
||||
#define T_Peer 379
|
||||
#define T_Peerstats 380
|
||||
#define T_Phone 381
|
||||
#define T_Pid 382
|
||||
#define T_Pidfile 383
|
||||
#define T_Pool 384
|
||||
#define T_Port 385
|
||||
#define T_Preempt 386
|
||||
#define T_Prefer 387
|
||||
#define T_Protostats 388
|
||||
#define T_Pw 389
|
||||
#define T_Randfile 390
|
||||
#define T_Rawstats 391
|
||||
#define T_Refid 392
|
||||
#define T_Requestkey 393
|
||||
#define T_Reset 394
|
||||
#define T_Restrict 395
|
||||
#define T_Revoke 396
|
||||
#define T_Rlimit 397
|
||||
#define T_Saveconfigdir 398
|
||||
#define T_Server 399
|
||||
#define T_Setvar 400
|
||||
#define T_Source 401
|
||||
#define T_Stacksize 402
|
||||
#define T_Statistics 403
|
||||
#define T_Stats 404
|
||||
#define T_Statsdir 405
|
||||
#define T_Step 406
|
||||
#define T_Stepback 407
|
||||
#define T_Stepfwd 408
|
||||
#define T_Stepout 409
|
||||
#define T_Stratum 410
|
||||
#define T_String 411
|
||||
#define T_Sys 412
|
||||
#define T_Sysstats 413
|
||||
#define T_Tick 414
|
||||
#define T_Time1 415
|
||||
#define T_Time2 416
|
||||
#define T_Timer 417
|
||||
#define T_Timingstats 418
|
||||
#define T_Tinker 419
|
||||
#define T_Tos 420
|
||||
#define T_Trap 421
|
||||
#define T_True 422
|
||||
#define T_Trustedkey 423
|
||||
#define T_Ttl 424
|
||||
#define T_Type 425
|
||||
#define T_U_int 426
|
||||
#define T_Unconfig 427
|
||||
#define T_Unpeer 428
|
||||
#define T_Version 429
|
||||
#define T_WanderThreshold 430
|
||||
#define T_Week 431
|
||||
#define T_Wildcard 432
|
||||
#define T_Xleave 433
|
||||
#define T_Year 434
|
||||
#define T_Flag 435
|
||||
#define T_EOC 436
|
||||
#define T_Simulate 437
|
||||
#define T_Beep_Delay 438
|
||||
#define T_Sim_Duration 439
|
||||
#define T_Server_Offset 440
|
||||
#define T_Duration 441
|
||||
#define T_Freq_Offset 442
|
||||
#define T_Wander 443
|
||||
#define T_Jitter 444
|
||||
#define T_Prop_Delay 445
|
||||
#define T_Proc_Delay 446
|
||||
#define T_Dscp 290
|
||||
#define T_Ellipsis 291
|
||||
#define T_Enable 292
|
||||
#define T_End 293
|
||||
#define T_False 294
|
||||
#define T_File 295
|
||||
#define T_Filegen 296
|
||||
#define T_Filenum 297
|
||||
#define T_Flag1 298
|
||||
#define T_Flag2 299
|
||||
#define T_Flag3 300
|
||||
#define T_Flag4 301
|
||||
#define T_Flake 302
|
||||
#define T_Floor 303
|
||||
#define T_Freq 304
|
||||
#define T_Fudge 305
|
||||
#define T_Host 306
|
||||
#define T_Huffpuff 307
|
||||
#define T_Iburst 308
|
||||
#define T_Ident 309
|
||||
#define T_Ignore 310
|
||||
#define T_Incalloc 311
|
||||
#define T_Incmem 312
|
||||
#define T_Initalloc 313
|
||||
#define T_Initmem 314
|
||||
#define T_Includefile 315
|
||||
#define T_Integer 316
|
||||
#define T_Interface 317
|
||||
#define T_Intrange 318
|
||||
#define T_Io 319
|
||||
#define T_Ipv4 320
|
||||
#define T_Ipv4_flag 321
|
||||
#define T_Ipv6 322
|
||||
#define T_Ipv6_flag 323
|
||||
#define T_Kernel 324
|
||||
#define T_Key 325
|
||||
#define T_Keys 326
|
||||
#define T_Keysdir 327
|
||||
#define T_Kod 328
|
||||
#define T_Mssntp 329
|
||||
#define T_Leapfile 330
|
||||
#define T_Leapsmearinterval 331
|
||||
#define T_Limited 332
|
||||
#define T_Link 333
|
||||
#define T_Listen 334
|
||||
#define T_Logconfig 335
|
||||
#define T_Logfile 336
|
||||
#define T_Loopstats 337
|
||||
#define T_Lowpriotrap 338
|
||||
#define T_Manycastclient 339
|
||||
#define T_Manycastserver 340
|
||||
#define T_Mask 341
|
||||
#define T_Maxage 342
|
||||
#define T_Maxclock 343
|
||||
#define T_Maxdepth 344
|
||||
#define T_Maxdist 345
|
||||
#define T_Maxmem 346
|
||||
#define T_Maxpoll 347
|
||||
#define T_Mdnstries 348
|
||||
#define T_Mem 349
|
||||
#define T_Memlock 350
|
||||
#define T_Minclock 351
|
||||
#define T_Mindepth 352
|
||||
#define T_Mindist 353
|
||||
#define T_Minimum 354
|
||||
#define T_Minpoll 355
|
||||
#define T_Minsane 356
|
||||
#define T_Mode 357
|
||||
#define T_Mode7 358
|
||||
#define T_Monitor 359
|
||||
#define T_Month 360
|
||||
#define T_Mru 361
|
||||
#define T_Multicastclient 362
|
||||
#define T_Nic 363
|
||||
#define T_Nolink 364
|
||||
#define T_Nomodify 365
|
||||
#define T_Nomrulist 366
|
||||
#define T_None 367
|
||||
#define T_Nonvolatile 368
|
||||
#define T_Nopeer 369
|
||||
#define T_Noquery 370
|
||||
#define T_Noselect 371
|
||||
#define T_Noserve 372
|
||||
#define T_Notrap 373
|
||||
#define T_Notrust 374
|
||||
#define T_Ntp 375
|
||||
#define T_Ntpport 376
|
||||
#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_Unconfig 429
|
||||
#define T_Unpeer 430
|
||||
#define T_Version 431
|
||||
#define T_WanderThreshold 432
|
||||
#define T_Week 433
|
||||
#define T_Wildcard 434
|
||||
#define T_Xleave 435
|
||||
#define T_Year 436
|
||||
#define T_Flag 437
|
||||
#define T_EOC 438
|
||||
#define T_Simulate 439
|
||||
#define T_Beep_Delay 440
|
||||
#define T_Sim_Duration 441
|
||||
#define T_Server_Offset 442
|
||||
#define T_Duration 443
|
||||
#define T_Freq_Offset 444
|
||||
#define T_Wander 445
|
||||
#define T_Jitter 446
|
||||
#define T_Prop_Delay 447
|
||||
#define T_Proc_Delay 448
|
||||
|
||||
|
||||
|
||||
/* Value type. */
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
union YYSTYPE
|
||||
typedef union YYSTYPE
|
||||
{
|
||||
#line 54 "ntp_parser.y" /* yacc.c:1909 */
|
||||
/* Line 2053 of yacc.c */
|
||||
#line 51 "../../ntpd/ntp_parser.y"
|
||||
|
||||
char * String;
|
||||
double Double;
|
||||
@ -451,15 +457,29 @@ union YYSTYPE
|
||||
script_info * Sim_script;
|
||||
script_info_fifo * Sim_script_fifo;
|
||||
|
||||
#line 455 "ntp_parser.h" /* yacc.c:1909 */
|
||||
};
|
||||
|
||||
/* Line 2053 of yacc.c */
|
||||
#line 463 "ntp_parser.h"
|
||||
} YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
||||
|
||||
extern YYSTYPE yylval;
|
||||
|
||||
int yyparse (struct FILE_INFO *ip_file);
|
||||
#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 */
|
||||
|
@ -8,9 +8,6 @@
|
||||
* Copyright (c) 2006
|
||||
*/
|
||||
|
||||
%parse-param {struct FILE_INFO *ip_file}
|
||||
%lex-param {struct FILE_INFO *ip_file}
|
||||
|
||||
%{
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
@ -36,7 +33,7 @@
|
||||
#define YYFREE free
|
||||
#define YYERROR_VERBOSE
|
||||
#define YYMAXDEPTH 1000 /* stop the madness sooner */
|
||||
void yyerror(struct FILE_INFO *ip_file, const char *msg);
|
||||
void yyerror(const char *msg);
|
||||
|
||||
#ifdef SIM
|
||||
# define ONLY_SIM(a) (a)
|
||||
@ -45,7 +42,7 @@
|
||||
#endif
|
||||
%}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Enable generation of token names array even without YYDEBUG.
|
||||
* We access via token_name() defined below.
|
||||
*/
|
||||
@ -103,6 +100,7 @@
|
||||
%token <Double> T_Double /* not a token */
|
||||
%token <Integer> T_Driftfile
|
||||
%token <Integer> T_Drop
|
||||
%token <Integer> T_Dscp
|
||||
%token <Integer> T_Ellipsis /* "..." not "ellipsis" */
|
||||
%token <Integer> T_Enable
|
||||
%token <Integer> T_End
|
||||
@ -143,6 +141,7 @@
|
||||
%token <Integer> T_Kod
|
||||
%token <Integer> T_Mssntp
|
||||
%token <Integer> T_Leapfile
|
||||
%token <Integer> T_Leapsmearinterval
|
||||
%token <Integer> T_Limited
|
||||
%token <Integer> T_Link
|
||||
%token <Integer> T_Listen
|
||||
@ -302,6 +301,7 @@
|
||||
%type <Attr_val> log_config_command
|
||||
%type <Attr_val_fifo> log_config_list
|
||||
%type <Integer> misc_cmd_dbl_keyword
|
||||
%type <Integer> misc_cmd_int_keyword
|
||||
%type <Integer> misc_cmd_str_keyword
|
||||
%type <Integer> misc_cmd_str_lcl_keyword
|
||||
%type <Attr_val> mru_option
|
||||
@ -375,11 +375,12 @@ command_list
|
||||
* error messages. The following should suffice for
|
||||
* the time being.
|
||||
*/
|
||||
msyslog(LOG_ERR,
|
||||
struct FILE_INFO * ip_ctx = lex_current();
|
||||
msyslog(LOG_ERR,
|
||||
"syntax error in %s line %d, column %d",
|
||||
ip_file->fname,
|
||||
ip_file->err_line_no,
|
||||
ip_file->err_col_no);
|
||||
ip_ctx->fname,
|
||||
ip_ctx->errpos.nline,
|
||||
ip_ctx->errpos.ncol);
|
||||
}
|
||||
;
|
||||
|
||||
@ -428,7 +429,7 @@ address
|
||||
;
|
||||
|
||||
ip_address
|
||||
: T_String
|
||||
: T_String
|
||||
{ $$ = create_address_node($1, AF_UNSPEC); }
|
||||
;
|
||||
|
||||
@ -442,7 +443,7 @@ address_fam
|
||||
option_list
|
||||
: /* empty list */
|
||||
{ $$ = NULL; }
|
||||
| option_list option
|
||||
| option_list option
|
||||
{
|
||||
$$ = $1;
|
||||
APPEND_G_FIFO($$, $2);
|
||||
@ -505,18 +506,18 @@ unpeer_command
|
||||
: unpeer_keyword address
|
||||
{
|
||||
unpeer_node *my_node;
|
||||
|
||||
|
||||
my_node = create_unpeer_node($2);
|
||||
if (my_node)
|
||||
APPEND_G_FIFO(cfgt.unpeers, my_node);
|
||||
}
|
||||
;
|
||||
unpeer_keyword
|
||||
;
|
||||
unpeer_keyword
|
||||
: T_Unconfig
|
||||
| T_Unpeer
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
/* Other Modes
|
||||
* (broadcastclient manycastserver multicastclient)
|
||||
* ------------------------------------------------
|
||||
@ -543,14 +544,14 @@ authentication_command
|
||||
: T_Automax T_Integer
|
||||
{
|
||||
attr_val *atrv;
|
||||
|
||||
|
||||
atrv = create_attr_ival($1, $2);
|
||||
APPEND_G_FIFO(cfgt.vars, atrv);
|
||||
}
|
||||
| T_ControlKey T_Integer
|
||||
{ cfgt.auth.control_key = $2; }
|
||||
| T_Crypto crypto_command_list
|
||||
{
|
||||
{
|
||||
cfgt.auth.cryptosw++;
|
||||
CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, $2);
|
||||
}
|
||||
@ -624,7 +625,7 @@ tos_option_list
|
||||
APPEND_G_FIFO($$, $2);
|
||||
}
|
||||
| tos_option
|
||||
{
|
||||
{
|
||||
$$ = NULL;
|
||||
APPEND_G_FIFO($$, $1);
|
||||
}
|
||||
@ -665,24 +666,24 @@ monitoring_command
|
||||
{ CONCAT_G_FIFOS(cfgt.stats_list, $2); }
|
||||
| T_Statsdir T_String
|
||||
{
|
||||
if (input_from_file) {
|
||||
if (lex_from_file()) {
|
||||
cfgt.stats_dir = $2;
|
||||
} else {
|
||||
YYFREE($2);
|
||||
yyerror(ip_file, "statsdir remote configuration ignored");
|
||||
yyerror("statsdir remote configuration ignored");
|
||||
}
|
||||
}
|
||||
| T_Filegen stat filegen_option_list
|
||||
{
|
||||
filegen_node *fgn;
|
||||
|
||||
|
||||
fgn = create_filegen_node($2, $3);
|
||||
APPEND_G_FIFO(cfgt.filegen_opts, fgn);
|
||||
}
|
||||
;
|
||||
|
||||
stats_list
|
||||
: stats_list stat
|
||||
: stats_list stat
|
||||
{
|
||||
$$ = $1;
|
||||
APPEND_G_FIFO($$, create_int_node($2));
|
||||
@ -718,28 +719,28 @@ filegen_option_list
|
||||
filegen_option
|
||||
: T_File T_String
|
||||
{
|
||||
if (input_from_file) {
|
||||
if (lex_from_file()) {
|
||||
$$ = create_attr_sval($1, $2);
|
||||
} else {
|
||||
$$ = NULL;
|
||||
YYFREE($2);
|
||||
yyerror(ip_file, "filegen file remote config ignored");
|
||||
yyerror("filegen file remote config ignored");
|
||||
}
|
||||
}
|
||||
| T_Type filegen_type
|
||||
{
|
||||
if (input_from_file) {
|
||||
if (lex_from_file()) {
|
||||
$$ = create_attr_ival($1, $2);
|
||||
} else {
|
||||
$$ = NULL;
|
||||
yyerror(ip_file, "filegen type remote config ignored");
|
||||
yyerror("filegen type remote config ignored");
|
||||
}
|
||||
}
|
||||
| link_nolink
|
||||
{
|
||||
const char *err;
|
||||
|
||||
if (input_from_file) {
|
||||
|
||||
if (lex_from_file()) {
|
||||
$$ = create_attr_ival(T_Flag, $1);
|
||||
} else {
|
||||
$$ = NULL;
|
||||
@ -747,7 +748,7 @@ filegen_option
|
||||
err = "filegen link remote config ignored";
|
||||
else
|
||||
err = "filegen nolink remote config ignored";
|
||||
yyerror(ip_file, err);
|
||||
yyerror(err);
|
||||
}
|
||||
}
|
||||
| enable_disable
|
||||
@ -793,7 +794,7 @@ access_control_command
|
||||
restrict_node *rn;
|
||||
|
||||
rn = create_restrict_node($2, NULL, $3,
|
||||
ip_file->line_no);
|
||||
lex_current()->curpos.nline);
|
||||
APPEND_G_FIFO(cfgt.restrict_opts, rn);
|
||||
}
|
||||
| T_Restrict ip_address T_Mask ip_address ac_flag_list
|
||||
@ -801,7 +802,7 @@ access_control_command
|
||||
restrict_node *rn;
|
||||
|
||||
rn = create_restrict_node($2, $4, $5,
|
||||
ip_file->line_no);
|
||||
lex_current()->curpos.nline);
|
||||
APPEND_G_FIFO(cfgt.restrict_opts, rn);
|
||||
}
|
||||
| T_Restrict T_Default ac_flag_list
|
||||
@ -809,7 +810,7 @@ access_control_command
|
||||
restrict_node *rn;
|
||||
|
||||
rn = create_restrict_node(NULL, NULL, $3,
|
||||
ip_file->line_no);
|
||||
lex_current()->curpos.nline);
|
||||
APPEND_G_FIFO(cfgt.restrict_opts, rn);
|
||||
}
|
||||
| T_Restrict T_Ipv4_flag T_Default ac_flag_list
|
||||
@ -818,28 +819,28 @@ access_control_command
|
||||
|
||||
rn = create_restrict_node(
|
||||
create_address_node(
|
||||
estrdup("0.0.0.0"),
|
||||
estrdup("0.0.0.0"),
|
||||
AF_INET),
|
||||
create_address_node(
|
||||
estrdup("0.0.0.0"),
|
||||
estrdup("0.0.0.0"),
|
||||
AF_INET),
|
||||
$4,
|
||||
ip_file->line_no);
|
||||
$4,
|
||||
lex_current()->curpos.nline);
|
||||
APPEND_G_FIFO(cfgt.restrict_opts, rn);
|
||||
}
|
||||
| T_Restrict T_Ipv6_flag T_Default ac_flag_list
|
||||
{
|
||||
restrict_node *rn;
|
||||
|
||||
|
||||
rn = create_restrict_node(
|
||||
create_address_node(
|
||||
estrdup("::"),
|
||||
estrdup("::"),
|
||||
AF_INET6),
|
||||
create_address_node(
|
||||
estrdup("::"),
|
||||
estrdup("::"),
|
||||
AF_INET6),
|
||||
$4,
|
||||
ip_file->line_no);
|
||||
$4,
|
||||
lex_current()->curpos.nline);
|
||||
APPEND_G_FIFO(cfgt.restrict_opts, rn);
|
||||
}
|
||||
| T_Restrict T_Source ac_flag_list
|
||||
@ -848,7 +849,7 @@ access_control_command
|
||||
|
||||
APPEND_G_FIFO($3, create_int_node($2));
|
||||
rn = create_restrict_node(
|
||||
NULL, NULL, $3, ip_file->line_no);
|
||||
NULL, NULL, $3, lex_current()->curpos.nline);
|
||||
APPEND_G_FIFO(cfgt.restrict_opts, rn);
|
||||
}
|
||||
;
|
||||
@ -887,7 +888,7 @@ discard_option_list
|
||||
$$ = $1;
|
||||
APPEND_G_FIFO($$, $2);
|
||||
}
|
||||
| discard_option
|
||||
| discard_option
|
||||
{
|
||||
$$ = NULL;
|
||||
APPEND_G_FIFO($$, $1);
|
||||
@ -911,7 +912,7 @@ mru_option_list
|
||||
$$ = $1;
|
||||
APPEND_G_FIFO($$, $2);
|
||||
}
|
||||
| mru_option
|
||||
| mru_option
|
||||
{
|
||||
$$ = NULL;
|
||||
APPEND_G_FIFO($$, $1);
|
||||
@ -942,7 +943,7 @@ fudge_command
|
||||
: T_Fudge address fudge_factor_list
|
||||
{
|
||||
addr_opts_node *aon;
|
||||
|
||||
|
||||
aon = create_addr_opts_node($2, $3);
|
||||
APPEND_G_FIFO(cfgt.fudge, aon);
|
||||
}
|
||||
@ -960,7 +961,7 @@ fudge_factor_list
|
||||
APPEND_G_FIFO($$, $1);
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
fudge_factor
|
||||
: fudge_factor_dbl_keyword number
|
||||
{ $$ = create_attr_dval($1, $2); }
|
||||
@ -1048,17 +1049,17 @@ system_option
|
||||
: system_option_flag_keyword
|
||||
{ $$ = create_attr_ival(T_Flag, $1); }
|
||||
| system_option_local_flag_keyword
|
||||
{
|
||||
if (input_from_file) {
|
||||
{
|
||||
if (lex_from_file()) {
|
||||
$$ = create_attr_ival(T_Flag, $1);
|
||||
} else {
|
||||
char err_str[128];
|
||||
|
||||
|
||||
$$ = NULL;
|
||||
snprintf(err_str, sizeof(err_str),
|
||||
"enable/disable %s remote configuration ignored",
|
||||
keyword($1));
|
||||
yyerror(ip_file, err_str);
|
||||
yyerror(err_str);
|
||||
}
|
||||
}
|
||||
;
|
||||
@ -1128,14 +1129,21 @@ miscellaneous_command
|
||||
| misc_cmd_dbl_keyword number
|
||||
{
|
||||
attr_val *av;
|
||||
|
||||
|
||||
av = create_attr_dval($1, $2);
|
||||
APPEND_G_FIFO(cfgt.vars, av);
|
||||
}
|
||||
| misc_cmd_int_keyword T_Integer
|
||||
{
|
||||
attr_val *av;
|
||||
|
||||
av = create_attr_ival($1, $2);
|
||||
APPEND_G_FIFO(cfgt.vars, av);
|
||||
}
|
||||
| misc_cmd_str_keyword T_String
|
||||
{
|
||||
attr_val *av;
|
||||
|
||||
|
||||
av = create_attr_sval($1, $2);
|
||||
APPEND_G_FIFO(cfgt.vars, av);
|
||||
}
|
||||
@ -1144,7 +1152,7 @@ miscellaneous_command
|
||||
char error_text[64];
|
||||
attr_val *av;
|
||||
|
||||
if (input_from_file) {
|
||||
if (lex_from_file()) {
|
||||
av = create_attr_sval($1, $2);
|
||||
APPEND_G_FIFO(cfgt.vars, av);
|
||||
} else {
|
||||
@ -1152,33 +1160,30 @@ miscellaneous_command
|
||||
snprintf(error_text, sizeof(error_text),
|
||||
"%s remote config ignored",
|
||||
keyword($1));
|
||||
yyerror(ip_file, error_text);
|
||||
yyerror(error_text);
|
||||
}
|
||||
}
|
||||
| T_Includefile T_String command
|
||||
{
|
||||
if (!input_from_file) {
|
||||
yyerror(ip_file, "remote includefile ignored");
|
||||
if (!lex_from_file()) {
|
||||
YYFREE($2); /* avoid leak */
|
||||
yyerror("remote includefile ignored");
|
||||
break;
|
||||
}
|
||||
if (curr_include_level >= MAXINCLUDELEVEL) {
|
||||
if (lex_level() > MAXINCLUDELEVEL) {
|
||||
fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
|
||||
msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
|
||||
} else {
|
||||
fp[curr_include_level + 1] = F_OPEN(FindConfig($2), "r");
|
||||
if (fp[curr_include_level + 1] == NULL) {
|
||||
fprintf(stderr, "getconfig: Couldn't open <%s>\n", FindConfig($2));
|
||||
msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", FindConfig($2));
|
||||
} else {
|
||||
ip_file = fp[++curr_include_level];
|
||||
const char * path = FindConfig($2); /* 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($2); /* avoid leak */
|
||||
}
|
||||
| T_End
|
||||
{
|
||||
while (curr_include_level != -1)
|
||||
FCLOSE(fp[curr_include_level--]);
|
||||
}
|
||||
{ lex_flush_stack(); }
|
||||
| T_Driftfile drift_parm
|
||||
{ /* see drift_parm below for actions */ }
|
||||
| T_Logconfig log_config_list
|
||||
@ -1190,7 +1195,7 @@ miscellaneous_command
|
||||
| T_Trap ip_address trap_option_list
|
||||
{
|
||||
addr_opts_node *aon;
|
||||
|
||||
|
||||
aon = create_addr_opts_node($2, $3);
|
||||
APPEND_G_FIFO(cfgt.trap, aon);
|
||||
}
|
||||
@ -1204,6 +1209,19 @@ misc_cmd_dbl_keyword
|
||||
| T_Tick
|
||||
;
|
||||
|
||||
misc_cmd_int_keyword
|
||||
: T_Dscp
|
||||
;
|
||||
|
||||
misc_cmd_int_keyword
|
||||
: T_Leapsmearinterval
|
||||
{
|
||||
#ifndef LEAP_SMEAR
|
||||
yyerror("Built without LEAP_SMEAR support.");
|
||||
#endif
|
||||
}
|
||||
;
|
||||
|
||||
misc_cmd_str_keyword
|
||||
: T_Ident
|
||||
| T_Leapfile
|
||||
@ -1219,14 +1237,14 @@ drift_parm
|
||||
: T_String
|
||||
{
|
||||
attr_val *av;
|
||||
|
||||
|
||||
av = create_attr_sval(T_Driftfile, $1);
|
||||
APPEND_G_FIFO(cfgt.vars, av);
|
||||
}
|
||||
| T_String T_Double
|
||||
{
|
||||
attr_val *av;
|
||||
|
||||
|
||||
av = create_attr_sval(T_Driftfile, $1);
|
||||
APPEND_G_FIFO(cfgt.vars, av);
|
||||
av = create_attr_dval(T_WanderThreshold, $2);
|
||||
@ -1235,7 +1253,7 @@ drift_parm
|
||||
| /* Null driftfile, indicated by empty string "" */
|
||||
{
|
||||
attr_val *av;
|
||||
|
||||
|
||||
av = create_attr_sval(T_Driftfile, "");
|
||||
APPEND_G_FIFO(cfgt.vars, av);
|
||||
}
|
||||
@ -1290,21 +1308,21 @@ log_config_command
|
||||
{
|
||||
char prefix;
|
||||
char * type;
|
||||
|
||||
|
||||
switch ($1[0]) {
|
||||
|
||||
|
||||
case '+':
|
||||
case '-':
|
||||
case '=':
|
||||
prefix = $1[0];
|
||||
type = $1 + 1;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
prefix = '=';
|
||||
type = $1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$$ = create_attr_sval(prefix, estrdup(type));
|
||||
YYFREE($1);
|
||||
}
|
||||
@ -1314,14 +1332,14 @@ interface_command
|
||||
: interface_nic nic_rule_action nic_rule_class
|
||||
{
|
||||
nic_rule_node *nrn;
|
||||
|
||||
|
||||
nrn = create_nic_rule_node($3, NULL, $2);
|
||||
APPEND_G_FIFO(cfgt.nic_rules, nrn);
|
||||
}
|
||||
| interface_nic nic_rule_action T_String
|
||||
{
|
||||
nic_rule_node *nrn;
|
||||
|
||||
|
||||
nrn = create_nic_rule_node(0, $3, $2);
|
||||
APPEND_G_FIFO(cfgt.nic_rules, nrn);
|
||||
}
|
||||
@ -1446,7 +1464,7 @@ boolean
|
||||
: T_Integer
|
||||
{
|
||||
if ($1 != 0 && $1 != 1) {
|
||||
yyerror(ip_file, "Integer value is not boolean (0 or 1). Assuming 1");
|
||||
yyerror("Integer value is not boolean (0 or 1). Assuming 1");
|
||||
$$ = 1;
|
||||
} else {
|
||||
$$ = $1;
|
||||
@ -1470,7 +1488,7 @@ simulate_command
|
||||
: sim_conf_start '{' sim_init_statement_list sim_server_list '}'
|
||||
{
|
||||
sim_node *sn;
|
||||
|
||||
|
||||
sn = create_sim_node($3, $4);
|
||||
APPEND_G_FIFO(cfgt.sim_details, sn);
|
||||
|
||||
@ -1585,28 +1603,25 @@ sim_act_keyword
|
||||
|
||||
%%
|
||||
|
||||
void
|
||||
void
|
||||
yyerror(
|
||||
struct FILE_INFO *ip_file,
|
||||
const char *msg
|
||||
)
|
||||
{
|
||||
int retval;
|
||||
struct FILE_INFO * ip_ctx;
|
||||
|
||||
ip_file->err_line_no = ip_file->prev_token_line_no;
|
||||
ip_file->err_col_no = ip_file->prev_token_col_no;
|
||||
|
||||
msyslog(LOG_ERR,
|
||||
"line %d column %d %s",
|
||||
ip_file->err_line_no,
|
||||
ip_file->err_col_no,
|
||||
msg);
|
||||
if (!input_from_file) {
|
||||
ip_ctx = lex_current();
|
||||
ip_ctx->errpos = ip_ctx->tokpos;
|
||||
|
||||
msyslog(LOG_ERR, "line %d column %d %s",
|
||||
ip_ctx->errpos.nline, ip_ctx->errpos.ncol, msg);
|
||||
if (!lex_from_file()) {
|
||||
/* Save the error message in the correct buffer */
|
||||
retval = snprintf(remote_config.err_msg + remote_config.err_pos,
|
||||
MAXLINE - remote_config.err_pos,
|
||||
"column %d %s",
|
||||
ip_file->err_col_no, msg);
|
||||
ip_ctx->errpos.ncol, msg);
|
||||
|
||||
/* Increment the value of err_pos */
|
||||
if (retval > 0)
|
||||
|
104
ntpd/ntp_proto.c
104
ntpd/ntp_proto.c
@ -14,6 +14,7 @@
|
||||
#include "ntp_control.h"
|
||||
#include "ntp_string.h"
|
||||
#include "ntp_leapsec.h"
|
||||
#include "refidsmear.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#ifdef HAVE_LIBSCF_H
|
||||
@ -61,7 +62,8 @@ typedef struct peer_select_tag {
|
||||
* System variables are declared here. Unless specified otherwise, all
|
||||
* times are in seconds.
|
||||
*/
|
||||
u_char sys_leap; /* system leap indicator */
|
||||
u_char sys_leap; /* system leap indicator, use set_sys_leap() to change this */
|
||||
u_char xmt_leap; /* leap indicator sent in client requests, set up by set_sys_leap() */
|
||||
u_char sys_stratum; /* system stratum */
|
||||
s_char sys_precision; /* local clock precision (log2 s) */
|
||||
double sys_rootdelay; /* roundtrip delay to primary source */
|
||||
@ -70,6 +72,11 @@ u_int32 sys_refid; /* reference id (network byte order) */
|
||||
l_fp sys_reftime; /* last update time */
|
||||
struct peer *sys_peer; /* current peer */
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
struct leap_smear_info leap_smear;
|
||||
#endif
|
||||
int leap_sec_in_progress;
|
||||
|
||||
/*
|
||||
* Rate controls. Leaky buckets are used to throttle the packet
|
||||
* transmission rates in order to protect busy servers such as at NIST
|
||||
@ -151,6 +158,33 @@ void pool_name_resolved (int, int, void *, const char *,
|
||||
const struct addrinfo *);
|
||||
#endif /* WORKER */
|
||||
|
||||
void
|
||||
set_sys_leap(u_char new_sys_leap) {
|
||||
sys_leap = new_sys_leap;
|
||||
xmt_leap = sys_leap;
|
||||
|
||||
/*
|
||||
* Under certain conditions we send faked leap bits to clients, so
|
||||
* eventually change xmt_leap below, but never change LEAP_NOTINSYNC.
|
||||
*/
|
||||
if (xmt_leap != LEAP_NOTINSYNC) {
|
||||
if (leap_sec_in_progress) {
|
||||
/* always send "not sync" */
|
||||
xmt_leap = LEAP_NOTINSYNC;
|
||||
}
|
||||
#ifdef LEAP_SMEAR
|
||||
else {
|
||||
/*
|
||||
* If leap smear is enabled in general we must never send a leap second warning
|
||||
* to clients, so make sure we only send "in sync".
|
||||
*/
|
||||
if (leap_smear.enabled)
|
||||
xmt_leap = LEAP_NOWARNING;
|
||||
}
|
||||
#endif /* LEAP_SMEAR */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* transmit - transmit procedure called by poll timeout
|
||||
@ -1909,7 +1943,7 @@ clock_update(
|
||||
*/
|
||||
case 2:
|
||||
clear_all();
|
||||
sys_leap = LEAP_NOTINSYNC;
|
||||
set_sys_leap(LEAP_NOTINSYNC);
|
||||
sys_stratum = STRATUM_UNSPEC;
|
||||
memcpy(&sys_refid, "STEP", 4);
|
||||
sys_rootdelay = 0;
|
||||
@ -1930,7 +1964,7 @@ clock_update(
|
||||
* process.
|
||||
*/
|
||||
if (sys_leap == LEAP_NOTINSYNC) {
|
||||
sys_leap = LEAP_NOWARNING;
|
||||
set_sys_leap(LEAP_NOWARNING);
|
||||
#ifdef AUTOKEY
|
||||
if (crypto_flags)
|
||||
crypto_update();
|
||||
@ -2424,7 +2458,7 @@ clock_select(void)
|
||||
osys_peer = sys_peer;
|
||||
sys_survivors = 0;
|
||||
#ifdef LOCKCLOCK
|
||||
sys_leap = LEAP_NOTINSYNC;
|
||||
set_sys_leap(LEAP_NOTINSYNC);
|
||||
sys_stratum = STRATUM_UNSPEC;
|
||||
memcpy(&sys_refid, "DOWN", 4);
|
||||
#endif /* LOCKCLOCK */
|
||||
@ -3407,6 +3441,16 @@ peer_xmit(
|
||||
}
|
||||
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
|
||||
static void
|
||||
leap_smear_add_offs(l_fp *t, l_fp *t_recv) {
|
||||
L_ADD(t, &leap_smear.offset);
|
||||
}
|
||||
|
||||
#endif /* LEAP_SMEAR */
|
||||
|
||||
|
||||
/*
|
||||
* fast_xmit - Send packet for nonpersistent association. Note that
|
||||
* neither the source or destination can be a broadcast address.
|
||||
@ -3468,18 +3512,60 @@ fast_xmit(
|
||||
* This is a normal packet. Use the system variables.
|
||||
*/
|
||||
} else {
|
||||
xpkt.li_vn_mode = PKT_LI_VN_MODE(sys_leap,
|
||||
#ifdef LEAP_SMEAR
|
||||
/*
|
||||
* Make copies of the variables which can be affected by smearing.
|
||||
*/
|
||||
l_fp this_ref_time;
|
||||
l_fp this_recv_time;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If we are inside the leap smear interval we add the current smear offset to
|
||||
* the packet receive time, to the packet transmit time, and eventually to the
|
||||
* reftime to make sure the reftime isn't later than the transmit/receive times.
|
||||
*/
|
||||
xpkt.li_vn_mode = PKT_LI_VN_MODE(xmt_leap,
|
||||
PKT_VERSION(rpkt->li_vn_mode), xmode);
|
||||
|
||||
xpkt.stratum = STRATUM_TO_PKT(sys_stratum);
|
||||
xpkt.ppoll = max(rpkt->ppoll, ntp_minpoll);
|
||||
xpkt.precision = sys_precision;
|
||||
xpkt.refid = sys_refid;
|
||||
xpkt.rootdelay = HTONS_FP(DTOFP(sys_rootdelay));
|
||||
xpkt.rootdisp = HTONS_FP(DTOUFP(sys_rootdisp));
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
this_ref_time = sys_reftime;
|
||||
if (leap_smear.in_progress) {
|
||||
leap_smear_add_offs(&this_ref_time, NULL);
|
||||
xpkt.refid = convertLFPToRefID(leap_smear.offset);
|
||||
DPRINTF(2, ("fast_xmit: leap_smear.in_progress: refid %8x, smear %s\n",
|
||||
ntohl(xpkt.refid),
|
||||
lfptoa(&leap_smear.offset, 8)
|
||||
));
|
||||
}
|
||||
HTONL_FP(&this_ref_time, &xpkt.reftime);
|
||||
#else
|
||||
HTONL_FP(&sys_reftime, &xpkt.reftime);
|
||||
#endif
|
||||
|
||||
xpkt.org = rpkt->xmt;
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
this_recv_time = rbufp->recv_time;
|
||||
if (leap_smear.in_progress)
|
||||
leap_smear_add_offs(&this_recv_time, NULL);
|
||||
HTONL_FP(&this_recv_time, &xpkt.rec);
|
||||
#else
|
||||
HTONL_FP(&rbufp->recv_time, &xpkt.rec);
|
||||
#endif
|
||||
|
||||
get_systime(&xmt_tx);
|
||||
#ifdef LEAP_SMEAR
|
||||
if (leap_smear.in_progress)
|
||||
leap_smear_add_offs(&xmt_tx, &this_recv_time);
|
||||
#endif
|
||||
HTONL_FP(&xmt_tx, &xpkt.xmt);
|
||||
}
|
||||
|
||||
@ -3988,7 +4074,7 @@ init_proto(void)
|
||||
* Fill in the sys_* stuff. Default is don't listen to
|
||||
* broadcasting, require authentication.
|
||||
*/
|
||||
sys_leap = LEAP_NOTINSYNC;
|
||||
set_sys_leap(LEAP_NOTINSYNC);
|
||||
sys_stratum = STRATUM_UNSPEC;
|
||||
memcpy(&sys_refid, "INIT", 4);
|
||||
sys_peer = NULL;
|
||||
@ -4062,8 +4148,12 @@ proto_config(
|
||||
case PROTO_MONITOR: /* monitoring (monitor) */
|
||||
if (value)
|
||||
mon_start(MON_ON);
|
||||
else
|
||||
else {
|
||||
mon_stop(MON_ON);
|
||||
if (mon_enabled)
|
||||
msyslog(LOG_WARNING,
|
||||
"restrict: 'monitor' cannot be disabled while 'limited' is enabled");
|
||||
}
|
||||
break;
|
||||
|
||||
case PROTO_NTP: /* NTP discipline (ntp) */
|
||||
|
@ -38,6 +38,7 @@
|
||||
char yytext[MAX_LEXEME]; /* Buffer for storing the input text/lexeme */
|
||||
u_int32 conf_file_sum; /* Simple sum of characters read */
|
||||
|
||||
static struct FILE_INFO * lex_stack = NULL;
|
||||
|
||||
|
||||
|
||||
@ -86,153 +87,342 @@ keyword(
|
||||
}
|
||||
|
||||
|
||||
/* FILE INTERFACE
|
||||
* --------------
|
||||
* We define a couple of wrapper functions around the standard C fgetc
|
||||
* and ungetc functions in order to include positional bookkeeping
|
||||
/* FILE & STRING BUFFER INTERFACE
|
||||
* ------------------------------
|
||||
*
|
||||
* This set out as a couple of wrapper functions around the standard C
|
||||
* fgetc and ungetc functions in order to include positional
|
||||
* bookkeeping. Alas, this is no longer a good solution with nested
|
||||
* input files and the possibility to send configuration commands via
|
||||
* 'ntpdc' and 'ntpq'.
|
||||
*
|
||||
* Now there are a few functions to maintain a stack of nested input
|
||||
* sources (though nesting is only allowd for disk files) and from the
|
||||
* scanner / parser point of view there's no difference between both
|
||||
* types of sources.
|
||||
*
|
||||
* The 'fgetc()' / 'ungetc()' replacements now operate on a FILE_INFO
|
||||
* structure. Instead of trying different 'ungetc()' strategies for file
|
||||
* and buffer based parsing, we keep the backup char in our own
|
||||
* FILE_INFO structure. This is sufficient, as the parser does *not*
|
||||
* jump around via 'seek' or the like, and there's no need to
|
||||
* check/clear the backup store in other places than 'lex_getch()'.
|
||||
*/
|
||||
|
||||
struct FILE_INFO *
|
||||
F_OPEN(
|
||||
/*
|
||||
* Allocate an info structure and attach it to a file.
|
||||
*
|
||||
* Note: When 'mode' is NULL, then the INFO block will be set up to
|
||||
* contain a NULL file pointer, as suited for remote config command
|
||||
* parsing. Otherwise having a NULL file pointer is considered an error,
|
||||
* and a NULL info block pointer is returned to indicate failure!
|
||||
*
|
||||
* Note: We use a variable-sized structure to hold a copy of the file
|
||||
* name (or, more proper, the input source description). This is more
|
||||
* secure than keeping a reference to some other storage that might go
|
||||
* out of scope.
|
||||
*/
|
||||
static struct FILE_INFO *
|
||||
lex_open(
|
||||
const char *path,
|
||||
const char *mode
|
||||
)
|
||||
{
|
||||
struct FILE_INFO *my_info;
|
||||
struct FILE_INFO *stream;
|
||||
size_t nnambuf;
|
||||
|
||||
my_info = emalloc(sizeof *my_info);
|
||||
nnambuf = strlen(path);
|
||||
stream = emalloc_zero(sizeof(*stream) + nnambuf);
|
||||
stream->curpos.nline = 1;
|
||||
stream->backch = EOF;
|
||||
/* copy name with memcpy -- trailing NUL already there! */
|
||||
memcpy(stream->fname, path, nnambuf);
|
||||
|
||||
my_info->line_no = 1;
|
||||
my_info->col_no = 0;
|
||||
my_info->prev_line_col_no = 0;
|
||||
my_info->prev_token_col_no = 0;
|
||||
my_info->fname = path;
|
||||
|
||||
my_info->fd = fopen(path, mode);
|
||||
if (NULL == my_info->fd) {
|
||||
free(my_info);
|
||||
return NULL;
|
||||
if (NULL != mode) {
|
||||
stream->fpi = fopen(path, mode);
|
||||
if (NULL == stream->fpi) {
|
||||
free(stream);
|
||||
stream = NULL;
|
||||
}
|
||||
}
|
||||
return my_info;
|
||||
return stream;
|
||||
}
|
||||
|
||||
int
|
||||
FGETC(
|
||||
/* get next character from buffer or file. This will return any putback
|
||||
* character first; it will also make sure the last line is at least
|
||||
* virtually terminated with a '\n'.
|
||||
*/
|
||||
static int
|
||||
lex_getch(
|
||||
struct FILE_INFO *stream
|
||||
)
|
||||
{
|
||||
int ch;
|
||||
|
||||
do
|
||||
ch = fgetc(stream->fd);
|
||||
while (EOF != ch && (CHAR_MIN > ch || ch > CHAR_MAX));
|
||||
|
||||
if (EOF != ch) {
|
||||
if (input_from_file)
|
||||
conf_file_sum += (u_char)ch;
|
||||
++stream->col_no;
|
||||
if (ch == '\n') {
|
||||
stream->prev_line_col_no = stream->col_no;
|
||||
++stream->line_no;
|
||||
stream->col_no = 1;
|
||||
if (NULL == stream || stream->force_eof)
|
||||
return EOF;
|
||||
|
||||
if (EOF != stream->backch) {
|
||||
ch = stream->backch;
|
||||
stream->backch = EOF;
|
||||
if (stream->fpi)
|
||||
conf_file_sum += ch;
|
||||
} else if (stream->fpi) {
|
||||
/* fetch next 7-bit ASCII char (or EOF) from file */
|
||||
while ((ch = fgetc(stream->fpi)) != EOF && ch > SCHAR_MAX)
|
||||
stream->curpos.ncol++;
|
||||
if (EOF != ch) {
|
||||
conf_file_sum += ch;
|
||||
stream->curpos.ncol++;
|
||||
}
|
||||
} else {
|
||||
/* fetch next 7-bit ASCII char from buffer */
|
||||
const char * scan;
|
||||
scan = &remote_config.buffer[remote_config.pos];
|
||||
while ((ch = (u_char)*scan) > SCHAR_MAX) {
|
||||
scan++;
|
||||
stream->curpos.ncol++;
|
||||
}
|
||||
if ('\0' != ch) {
|
||||
scan++;
|
||||
stream->curpos.ncol++;
|
||||
} else {
|
||||
ch = EOF;
|
||||
}
|
||||
remote_config.pos = (int)(scan - remote_config.buffer);
|
||||
}
|
||||
|
||||
/* If the last line ends without '\n', generate one. This
|
||||
* happens most likely on Windows, where editors often have a
|
||||
* sloppy concept of a line.
|
||||
*/
|
||||
if (EOF == ch && stream->curpos.ncol != 0)
|
||||
ch = '\n';
|
||||
|
||||
/* update scan position tallies */
|
||||
if (ch == '\n') {
|
||||
stream->bakpos = stream->curpos;
|
||||
stream->curpos.nline++;
|
||||
stream->curpos.ncol = 0;
|
||||
}
|
||||
|
||||
return ch;
|
||||
}
|
||||
|
||||
/* BUGS: 1. Function will fail on more than one line of pushback
|
||||
* 2. No error checking is done to see if ungetc fails
|
||||
* SK: I don't think its worth fixing these bugs for our purposes ;-)
|
||||
/* Note: lex_ungetch will fail to track more than one line of push
|
||||
* back. But since it guarantees only one char of back storage anyway,
|
||||
* this should not be a problem.
|
||||
*/
|
||||
int
|
||||
UNGETC(
|
||||
static int
|
||||
lex_ungetch(
|
||||
int ch,
|
||||
struct FILE_INFO *stream
|
||||
)
|
||||
{
|
||||
if (input_from_file)
|
||||
conf_file_sum -= (u_char)ch;
|
||||
if (ch == '\n') {
|
||||
stream->col_no = stream->prev_line_col_no;
|
||||
stream->prev_line_col_no = -1;
|
||||
--stream->line_no;
|
||||
/* check preconditions */
|
||||
if (NULL == stream || stream->force_eof)
|
||||
return EOF;
|
||||
if (EOF != stream->backch || EOF == ch)
|
||||
return EOF;
|
||||
|
||||
/* keep for later reference and update checksum */
|
||||
stream->backch = (u_char)ch;
|
||||
if (stream->fpi)
|
||||
conf_file_sum -= stream->backch;
|
||||
|
||||
/* update position */
|
||||
if (stream->backch == '\n') {
|
||||
stream->curpos = stream->bakpos;
|
||||
stream->bakpos.ncol = -1;
|
||||
}
|
||||
--stream->col_no;
|
||||
return ungetc(ch, stream->fd);
|
||||
stream->curpos.ncol--;
|
||||
return stream->backch;
|
||||
}
|
||||
|
||||
int
|
||||
FCLOSE(
|
||||
/* dispose of an input structure. If the file pointer is not NULL, close
|
||||
* the file. This function does not check the result of 'fclose()'.
|
||||
*/
|
||||
static void
|
||||
lex_close(
|
||||
struct FILE_INFO *stream
|
||||
)
|
||||
{
|
||||
int ret_val = fclose(stream->fd);
|
||||
|
||||
if (!ret_val)
|
||||
if (NULL != stream) {
|
||||
if (NULL != stream->fpi)
|
||||
fclose(stream->fpi);
|
||||
free(stream);
|
||||
return ret_val;
|
||||
}
|
||||
}
|
||||
|
||||
/* STREAM INTERFACE
|
||||
* ----------------
|
||||
* Provide a wrapper for the stream functions so that the
|
||||
* stream can either read from a file or from a character
|
||||
* array.
|
||||
* NOTE: This is not very efficient for reading from character
|
||||
* arrays, but needed to allow remote configuration where the
|
||||
* configuration command is provided through ntpq.
|
||||
*
|
||||
* The behavior of there two functions is determined by the
|
||||
* input_from_file flag.
|
||||
/* INPUT STACK
|
||||
* -----------
|
||||
*
|
||||
* Nested input sources are a bit tricky at first glance. We deal with
|
||||
* this problem using a stack of input sources, that is, a forward
|
||||
* linked list of FILE_INFO structs.
|
||||
*
|
||||
* This stack is never empty during parsing; while an encounter with EOF
|
||||
* can and will remove nested input sources, removing the last element
|
||||
* in the stack will not work during parsing, and the EOF condition of
|
||||
* the outermost input file remains until the parser folds up.
|
||||
*/
|
||||
|
||||
static int
|
||||
get_next_char(
|
||||
struct FILE_INFO *ip_file
|
||||
static struct FILE_INFO *
|
||||
_drop_stack_do(
|
||||
struct FILE_INFO * head
|
||||
)
|
||||
{
|
||||
char ch;
|
||||
|
||||
if (input_from_file)
|
||||
return FGETC(ip_file);
|
||||
else {
|
||||
if (remote_config.buffer[remote_config.pos] == '\0')
|
||||
return EOF;
|
||||
else {
|
||||
ip_file->col_no++;
|
||||
ch = remote_config.buffer[remote_config.pos++];
|
||||
if (ch == '\n') {
|
||||
ip_file->prev_line_col_no = ip_file->col_no;
|
||||
++ip_file->line_no;
|
||||
ip_file->col_no = 1;
|
||||
}
|
||||
return ch;
|
||||
}
|
||||
struct FILE_INFO * tail;
|
||||
while (NULL != head) {
|
||||
tail = head->st_next;
|
||||
lex_close(head);
|
||||
head = tail;
|
||||
}
|
||||
return head;
|
||||
}
|
||||
|
||||
static void
|
||||
push_back_char(
|
||||
struct FILE_INFO *ip_file,
|
||||
int ch
|
||||
|
||||
|
||||
/* Create a singleton input source on an empty lexer stack. This will
|
||||
* fail if there is already an input source, or if the underlying disk
|
||||
* file cannot be opened.
|
||||
*
|
||||
* Returns TRUE if a new input object was successfully created.
|
||||
*/
|
||||
int/*BOOL*/
|
||||
lex_init_stack(
|
||||
const char * path,
|
||||
const char * mode
|
||||
)
|
||||
{
|
||||
if (input_from_file)
|
||||
UNGETC(ch, ip_file);
|
||||
else {
|
||||
if (ch == '\n') {
|
||||
ip_file->col_no = ip_file->prev_line_col_no;
|
||||
ip_file->prev_line_col_no = -1;
|
||||
--ip_file->line_no;
|
||||
}
|
||||
--ip_file->col_no;
|
||||
if (NULL != lex_stack || NULL == path)
|
||||
return FALSE;
|
||||
|
||||
remote_config.pos--;
|
||||
}
|
||||
lex_stack = lex_open(path, mode);
|
||||
return (NULL != lex_stack);
|
||||
}
|
||||
|
||||
/* This removes *all* input sources from the stack, leaving the head
|
||||
* pointer as NULL. Any attempt to parse in that state is likely to bomb
|
||||
* with segmentation faults or the like.
|
||||
*
|
||||
* In other words: Use this to clean up after parsing, and do not parse
|
||||
* anything until the next 'lex_init_stack()' succeeded.
|
||||
*/
|
||||
void
|
||||
lex_drop_stack()
|
||||
{
|
||||
lex_stack = _drop_stack_do(lex_stack);
|
||||
}
|
||||
|
||||
/* Flush the lexer input stack: This will nip all input objects on the
|
||||
* stack (but keeps the current top-of-stack) and marks the top-of-stack
|
||||
* as inactive. Any further calls to lex_getch yield only EOF, and it's
|
||||
* no longer possible to push something back.
|
||||
*
|
||||
* Returns TRUE if there is a head element (top-of-stack) that was not
|
||||
* in the force-eof mode before this call.
|
||||
*/
|
||||
int/*BOOL*/
|
||||
lex_flush_stack()
|
||||
{
|
||||
int retv = FALSE;
|
||||
|
||||
if (NULL != lex_stack) {
|
||||
retv = !lex_stack->force_eof;
|
||||
lex_stack->force_eof = TRUE;
|
||||
lex_stack->st_next = _drop_stack_do(
|
||||
lex_stack->st_next);
|
||||
}
|
||||
return retv;
|
||||
}
|
||||
|
||||
/* Push another file on the parsing stack. If the mode is NULL, create a
|
||||
* FILE_INFO suitable for in-memory parsing; otherwise, create a
|
||||
* FILE_INFO that is bound to a local/disc file. Note that 'path' must
|
||||
* not be NULL, or the function will fail.
|
||||
*
|
||||
* Returns TRUE if a new info record was pushed onto the stack.
|
||||
*/
|
||||
int/*BOOL*/ lex_push_file(
|
||||
const char * path,
|
||||
const char * mode
|
||||
)
|
||||
{
|
||||
struct FILE_INFO * next = NULL;
|
||||
|
||||
if (NULL != path) {
|
||||
next = lex_open(path, mode);
|
||||
if (NULL != next) {
|
||||
next->st_next = lex_stack;
|
||||
lex_stack = next;
|
||||
}
|
||||
}
|
||||
return (NULL != next);
|
||||
}
|
||||
|
||||
/* Pop, close & free the top of the include stack, unless the stack
|
||||
* contains only a singleton input object. In that case the function
|
||||
* fails, because the parser does not expect the input stack to be
|
||||
* empty.
|
||||
*
|
||||
* Returns TRUE if an object was successfuly popped from the stack.
|
||||
*/
|
||||
int/*BOOL*/
|
||||
lex_pop_file(void)
|
||||
{
|
||||
struct FILE_INFO * head = lex_stack;
|
||||
struct FILE_INFO * tail = NULL;
|
||||
|
||||
if (NULL != head) {
|
||||
tail = head->st_next;
|
||||
if (NULL != tail) {
|
||||
lex_stack = tail;
|
||||
lex_close(head);
|
||||
}
|
||||
}
|
||||
return (NULL != tail);
|
||||
}
|
||||
|
||||
/* Get include nesting level. This currently loops over the stack and
|
||||
* counts elements; but since this is of concern only with an include
|
||||
* statement and the nesting depth has a small limit, there's no
|
||||
* bottleneck expected here.
|
||||
*
|
||||
* Returns the nesting level of includes, that is, the current depth of
|
||||
* the lexer input stack.
|
||||
*
|
||||
* Note:
|
||||
*/
|
||||
size_t
|
||||
lex_level(void)
|
||||
{
|
||||
size_t cnt = 0;
|
||||
struct FILE_INFO *ipf = lex_stack;
|
||||
|
||||
while (NULL != ipf) {
|
||||
cnt++;
|
||||
ipf = ipf->st_next;
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
/* check if the current input is from a file */
|
||||
int/*BOOL*/
|
||||
lex_from_file(void)
|
||||
{
|
||||
return (NULL != lex_stack) && (NULL != lex_stack->fpi);
|
||||
}
|
||||
|
||||
struct FILE_INFO *
|
||||
lex_current()
|
||||
{
|
||||
/* this became so simple, it could be a macro. But then,
|
||||
* lex_stack needed to be global...
|
||||
*/
|
||||
return lex_stack;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* STATE MACHINES
|
||||
* --------------
|
||||
@ -297,7 +487,7 @@ is_integer(
|
||||
|
||||
/* Check that all the remaining characters are digits */
|
||||
for (; lexeme[i] != '\0'; i++) {
|
||||
if (!isdigit((unsigned char)lexeme[i]))
|
||||
if (!isdigit((u_char)lexeme[i]))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -322,7 +512,7 @@ is_u_int(
|
||||
int is_hex;
|
||||
|
||||
i = 0;
|
||||
if ('0' == lexeme[i] && 'x' == tolower((unsigned char)lexeme[i + 1])) {
|
||||
if ('0' == lexeme[i] && 'x' == tolower((u_char)lexeme[i + 1])) {
|
||||
i += 2;
|
||||
is_hex = TRUE;
|
||||
} else {
|
||||
@ -331,9 +521,9 @@ is_u_int(
|
||||
|
||||
/* Check that all the remaining characters are digits */
|
||||
for (; lexeme[i] != '\0'; i++) {
|
||||
if (is_hex && !isxdigit((unsigned char)lexeme[i]))
|
||||
if (is_hex && !isxdigit((u_char)lexeme[i]))
|
||||
return FALSE;
|
||||
if (!is_hex && !isdigit((unsigned char)lexeme[i]))
|
||||
if (!is_hex && !isdigit((u_char)lexeme[i]))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -357,14 +547,14 @@ is_double(
|
||||
i++;
|
||||
|
||||
/* Read the integer part */
|
||||
for (; lexeme[i] && isdigit((unsigned char)lexeme[i]); i++)
|
||||
for (; lexeme[i] && isdigit((u_char)lexeme[i]); i++)
|
||||
num_digits++;
|
||||
|
||||
/* Check for the optional decimal point */
|
||||
if ('.' == lexeme[i]) {
|
||||
i++;
|
||||
/* Check for any digits after the decimal point */
|
||||
for (; lexeme[i] && isdigit((unsigned char)lexeme[i]); i++)
|
||||
for (; lexeme[i] && isdigit((u_char)lexeme[i]); i++)
|
||||
num_digits++;
|
||||
}
|
||||
|
||||
@ -380,7 +570,7 @@ is_double(
|
||||
return 1;
|
||||
|
||||
/* There is still more input, read the exponent */
|
||||
if ('e' == tolower((unsigned char)lexeme[i]))
|
||||
if ('e' == tolower((u_char)lexeme[i]))
|
||||
i++;
|
||||
else
|
||||
return 0;
|
||||
@ -390,7 +580,7 @@ is_double(
|
||||
i++;
|
||||
|
||||
/* Now read the exponent part */
|
||||
while (lexeme[i] && isdigit((unsigned char)lexeme[i]))
|
||||
while (lexeme[i] && isdigit((u_char)lexeme[i]))
|
||||
i++;
|
||||
|
||||
/* Check if we are done */
|
||||
@ -455,7 +645,7 @@ create_string_token(
|
||||
* ignore end of line whitespace
|
||||
*/
|
||||
pch = lexeme;
|
||||
while (*pch && isspace((unsigned char)*pch))
|
||||
while (*pch && isspace((u_char)*pch))
|
||||
pch++;
|
||||
|
||||
if (!*pch) {
|
||||
@ -476,37 +666,31 @@ create_string_token(
|
||||
* value representing the token or type.
|
||||
*/
|
||||
int
|
||||
yylex(
|
||||
struct FILE_INFO *ip_file
|
||||
)
|
||||
yylex(void)
|
||||
{
|
||||
static follby followedby = FOLLBY_TOKEN;
|
||||
size_t i;
|
||||
int i;
|
||||
int instring;
|
||||
int yylval_was_set;
|
||||
int converted;
|
||||
int token; /* The return value */
|
||||
int ch;
|
||||
|
||||
if (input_from_file)
|
||||
ip_file = fp[curr_include_level];
|
||||
instring = FALSE;
|
||||
yylval_was_set = FALSE;
|
||||
|
||||
do {
|
||||
/* Ignore whitespace at the beginning */
|
||||
while (EOF != (ch = get_next_char(ip_file)) &&
|
||||
while (EOF != (ch = lex_getch(lex_stack)) &&
|
||||
isspace(ch) &&
|
||||
!is_EOC(ch))
|
||||
|
||||
; /* Null Statement */
|
||||
|
||||
if (EOF == ch) {
|
||||
|
||||
if (!input_from_file || curr_include_level <= 0)
|
||||
if ( ! lex_pop_file())
|
||||
return 0;
|
||||
|
||||
FCLOSE(fp[curr_include_level]);
|
||||
ip_file = fp[--curr_include_level];
|
||||
token = T_EOC;
|
||||
goto normal_return;
|
||||
|
||||
@ -531,15 +715,14 @@ yylex(
|
||||
yytext[1] = '\0';
|
||||
goto normal_return;
|
||||
} else
|
||||
push_back_char(ip_file, ch);
|
||||
lex_ungetch(ch, lex_stack);
|
||||
|
||||
/* save the position of start of the token */
|
||||
ip_file->prev_token_line_no = ip_file->line_no;
|
||||
ip_file->prev_token_col_no = ip_file->col_no;
|
||||
lex_stack->tokpos = lex_stack->curpos;
|
||||
|
||||
/* Read in the lexeme */
|
||||
i = 0;
|
||||
while (EOF != (ch = get_next_char(ip_file))) {
|
||||
while (EOF != (ch = lex_getch(lex_stack))) {
|
||||
|
||||
yytext[i] = (char)ch;
|
||||
|
||||
@ -553,7 +736,7 @@ yylex(
|
||||
/* Read the rest of the line on reading a start
|
||||
of comment character */
|
||||
if ('#' == ch) {
|
||||
while (EOF != (ch = get_next_char(ip_file))
|
||||
while (EOF != (ch = lex_getch(lex_stack))
|
||||
&& '\n' != ch)
|
||||
; /* Null Statement */
|
||||
break;
|
||||
@ -571,7 +754,7 @@ yylex(
|
||||
*/
|
||||
if ('"' == ch) {
|
||||
instring = TRUE;
|
||||
while (EOF != (ch = get_next_char(ip_file)) &&
|
||||
while (EOF != (ch = lex_getch(lex_stack)) &&
|
||||
ch != '"' && ch != '\n') {
|
||||
yytext[i++] = (char)ch;
|
||||
if (i >= COUNTOF(yytext))
|
||||
@ -583,18 +766,15 @@ yylex(
|
||||
* not be pushed back, so we read another char.
|
||||
*/
|
||||
if ('"' == ch)
|
||||
ch = get_next_char(ip_file);
|
||||
ch = lex_getch(lex_stack);
|
||||
}
|
||||
/* Pushback the last character read that is not a part
|
||||
* of this lexeme.
|
||||
* If the last character read was an EOF, pushback a
|
||||
* newline character. This is to prevent a parse error
|
||||
* when there is no newline at the end of a file.
|
||||
* of this lexeme. This fails silently if ch is EOF,
|
||||
* but then the EOF condition persists and is handled on
|
||||
* the next turn by the include stack mechanism.
|
||||
*/
|
||||
if (EOF == ch)
|
||||
push_back_char(ip_file, '\n');
|
||||
else
|
||||
push_back_char(ip_file, ch);
|
||||
lex_ungetch(ch, lex_stack);
|
||||
|
||||
yytext[i] = '\0';
|
||||
} while (i == 0);
|
||||
|
||||
@ -627,7 +807,7 @@ yylex(
|
||||
msyslog(LOG_ERR,
|
||||
"Integer cannot be represented: %s",
|
||||
yytext);
|
||||
if (input_from_file) {
|
||||
if (lex_from_file()) {
|
||||
exit(1);
|
||||
} else {
|
||||
/* force end of parsing */
|
||||
@ -640,7 +820,7 @@ yylex(
|
||||
} else if (is_u_int(yytext)) {
|
||||
yylval_was_set = TRUE;
|
||||
if ('0' == yytext[0] &&
|
||||
'x' == tolower((unsigned char)yytext[1]))
|
||||
'x' == tolower((unsigned long)yytext[1]))
|
||||
converted = sscanf(&yytext[2], "%x",
|
||||
&yylval.U_int);
|
||||
else
|
||||
@ -650,7 +830,7 @@ yylex(
|
||||
msyslog(LOG_ERR,
|
||||
"U_int cannot be represented: %s",
|
||||
yytext);
|
||||
if (input_from_file) {
|
||||
if (lex_from_file()) {
|
||||
exit(1);
|
||||
} else {
|
||||
/* force end of parsing */
|
||||
@ -735,14 +915,14 @@ yylex(
|
||||
yytext[min(sizeof(yytext) - 1, 50)] = 0;
|
||||
msyslog(LOG_ERR,
|
||||
"configuration item on line %d longer than limit of %lu, began with '%s'",
|
||||
ip_file->line_no, (u_long)min(sizeof(yytext) - 1, 50),
|
||||
lex_stack->curpos.nline, (u_long)min(sizeof(yytext) - 1, 50),
|
||||
yytext);
|
||||
|
||||
/*
|
||||
* If we hit the length limit reading the startup configuration
|
||||
* file, abort.
|
||||
*/
|
||||
if (input_from_file)
|
||||
if (lex_from_file())
|
||||
exit(sizeof(yytext) - 1);
|
||||
|
||||
/*
|
||||
|
@ -83,22 +83,28 @@ typedef enum {
|
||||
|
||||
typedef u_int32 scan_state;
|
||||
|
||||
struct LCPOS {
|
||||
int nline;
|
||||
int ncol;
|
||||
};
|
||||
|
||||
/* Structure to hold a filename, file pointer and positional info */
|
||||
/* Structure to hold a filename, file pointer and positional info.
|
||||
* Instances are dynamically allocated, and the file name is copied by
|
||||
* value into a dynamic extension of the 'fname' array. (Which *must* be
|
||||
* the last field for that reason!)
|
||||
*/
|
||||
struct FILE_INFO {
|
||||
const char * fname; /* Path to the file */
|
||||
FILE * fd; /* File Descriptor */
|
||||
int line_no; /* Line Number */
|
||||
int col_no; /* Column Number */
|
||||
int prev_line_col_no; /* Col No on the
|
||||
previous line when a
|
||||
'\n' was seen */
|
||||
int prev_token_line_no; /* Line at start of
|
||||
token */
|
||||
int prev_token_col_no; /* Col No at start of
|
||||
token */
|
||||
int err_line_no;
|
||||
int err_col_no;
|
||||
struct FILE_INFO * st_next; /* next on stack */
|
||||
FILE * fpi; /* File Descriptor */
|
||||
int force_eof; /* locked or not */
|
||||
int backch; /* ungetch buffer */
|
||||
|
||||
struct LCPOS curpos; /* current scan position */
|
||||
struct LCPOS bakpos; /* last line end for ungetc */
|
||||
struct LCPOS tokpos; /* current token position */
|
||||
struct LCPOS errpos; /* error position */
|
||||
|
||||
char fname[1]; /* (formal only) buffered name */
|
||||
};
|
||||
|
||||
|
||||
@ -106,25 +112,31 @@ struct FILE_INFO {
|
||||
* ------------------------
|
||||
*/
|
||||
extern config_tree cfgt; /* Parser output stored here */
|
||||
extern int curr_include_level; /* The current include level */
|
||||
|
||||
/* VARIOUS EXTERNAL DECLARATIONS
|
||||
* -----------------------------
|
||||
*/
|
||||
extern int old_config_style;
|
||||
extern int input_from_file;
|
||||
extern struct FILE_INFO *fp[];
|
||||
|
||||
/* VARIOUS SUBROUTINE DECLARATIONS
|
||||
* -------------------------------
|
||||
*/
|
||||
extern const char *keyword(int token);
|
||||
extern char *quote_if_needed(char *str);
|
||||
int yylex(struct FILE_INFO *);
|
||||
int yylex(void);
|
||||
|
||||
struct FILE_INFO *F_OPEN(const char *path, const char *mode);
|
||||
int FGETC(struct FILE_INFO *stream);
|
||||
int UNGETC(int ch, struct FILE_INFO *stream);
|
||||
int FCLOSE(struct FILE_INFO *stream);
|
||||
/* managing the input source stack itself */
|
||||
extern int/*BOOL*/ lex_init_stack(const char * path, const char * mode);
|
||||
extern void lex_drop_stack(void);
|
||||
extern int/*BOOL*/ lex_flush_stack(void);
|
||||
|
||||
/* add/remove a nested input source */
|
||||
extern int/*BOOL*/ lex_push_file(const char * path, const char * mode);
|
||||
extern int/*BOOL*/ lex_pop_file(void);
|
||||
|
||||
/* input stack state query functions */
|
||||
extern size_t lex_level(void);
|
||||
extern int/*BOOL*/ lex_from_file(void);
|
||||
extern struct FILE_INFO * lex_current(void);
|
||||
|
||||
#endif /* NTP_SCANNER_H */
|
||||
|
170
ntpd/ntp_timer.c
170
ntpd/ntp_timer.c
@ -41,6 +41,7 @@
|
||||
#define TC_ERR (-1)
|
||||
#endif
|
||||
|
||||
|
||||
static void check_leapsec(u_int32, const time_t*, int/*BOOL*/);
|
||||
|
||||
/*
|
||||
@ -110,7 +111,7 @@ static RETSIGTYPE alarming (int);
|
||||
static timer_t timer_id;
|
||||
typedef struct itimerspec intervaltimer;
|
||||
# define itv_frac tv_nsec
|
||||
# else
|
||||
# else
|
||||
typedef struct itimerval intervaltimer;
|
||||
# define itv_frac tv_usec
|
||||
# endif
|
||||
@ -151,7 +152,7 @@ set_timer_or_die(
|
||||
/*
|
||||
* reinit_timer - reinitialize interval timer after a clock step.
|
||||
*/
|
||||
void
|
||||
void
|
||||
reinit_timer(void)
|
||||
{
|
||||
#if !defined(SYS_WINNT) && !defined(VMS)
|
||||
@ -211,7 +212,7 @@ init_timer(void)
|
||||
}
|
||||
# endif
|
||||
signal_no_reset(SIGALRM, alarming);
|
||||
itimer.it_interval.tv_sec =
|
||||
itimer.it_interval.tv_sec =
|
||||
itimer.it_value.tv_sec = (1 << EVENT_TIMEOUT);
|
||||
itimer.it_interval.itv_frac = itimer.it_value.itv_frac = 0;
|
||||
set_timer_or_die(&itimer);
|
||||
@ -228,7 +229,7 @@ init_timer(void)
|
||||
#else /* SYS_WINNT follows */
|
||||
/*
|
||||
* Set up timer interrupts for every 2**EVENT_TIMEOUT seconds
|
||||
* Under Windows/NT,
|
||||
* Under Windows/NT,
|
||||
*/
|
||||
|
||||
WaitableTimerHandle = CreateWaitableTimer(NULL, FALSE, NULL);
|
||||
@ -341,9 +342,9 @@ timer(void)
|
||||
if (sys_orphan < STRATUM_UNSPEC && sys_peer == NULL &&
|
||||
current_time > orphwait) {
|
||||
if (sys_leap == LEAP_NOTINSYNC) {
|
||||
sys_leap = LEAP_NOWARNING;
|
||||
set_sys_leap(LEAP_NOWARNING);
|
||||
#ifdef AUTOKEY
|
||||
if (crypto_flags)
|
||||
if (crypto_flags)
|
||||
crypto_update();
|
||||
#endif /* AUTOKEY */
|
||||
}
|
||||
@ -370,11 +371,11 @@ timer(void)
|
||||
if (sys_leap != LEAP_NOTINSYNC) {
|
||||
if (leapsec >= LSPROX_ANNOUNCE && leapdif) {
|
||||
if (leapdif > 0)
|
||||
sys_leap = LEAP_ADDSECOND;
|
||||
set_sys_leap(LEAP_ADDSECOND);
|
||||
else
|
||||
sys_leap = LEAP_DELSECOND;
|
||||
set_sys_leap(LEAP_DELSECOND);
|
||||
} else {
|
||||
sys_leap = LEAP_NOWARNING;
|
||||
set_sys_leap(LEAP_NOWARNING);
|
||||
}
|
||||
}
|
||||
|
||||
@ -472,7 +473,7 @@ alarming(
|
||||
# endif
|
||||
# ifdef DEBUG
|
||||
if (debug >= 4)
|
||||
write(1, msg, strlen(msg));
|
||||
(void)(-1 == write(1, msg, strlen(msg)));
|
||||
# endif
|
||||
}
|
||||
#endif /* SYS_WINNT */
|
||||
@ -496,44 +497,162 @@ timer_clr_stats(void)
|
||||
timer_timereset = current_time;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
check_leap_sec_in_progress( const leap_result_t *lsdata ) {
|
||||
int prv_leap_sec_in_progress = leap_sec_in_progress;
|
||||
leap_sec_in_progress = lsdata->tai_diff && (lsdata->ddist < 3);
|
||||
|
||||
/* if changed we may have to update the leap status sent to clients */
|
||||
if (leap_sec_in_progress != prv_leap_sec_in_progress)
|
||||
set_sys_leap(sys_leap);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
check_leapsec(
|
||||
u_int32 now ,
|
||||
const time_t * tpiv ,
|
||||
int/*BOOL*/ reset)
|
||||
{
|
||||
static const char leapmsg_p_step[] =
|
||||
"Positive leap second, stepped backward.";
|
||||
static const char leapmsg_p_slew[] =
|
||||
"Positive leap second, no step correction. "
|
||||
"System clock will be inaccurate for a long time.";
|
||||
|
||||
static const char leapmsg_n_step[] =
|
||||
"Negative leap second, stepped forward.";
|
||||
static const char leapmsg_n_slew[] =
|
||||
"Negative leap second, no step correction. "
|
||||
"System clock will be inaccurate for a long time.";
|
||||
|
||||
leap_result_t lsdata;
|
||||
u_int32 lsprox;
|
||||
|
||||
#ifdef AUTOKEY
|
||||
int/*BOOL*/ update_autokey = FALSE;
|
||||
#endif
|
||||
|
||||
#ifndef SYS_WINNT /* WinNT port has its own leap second handling */
|
||||
# ifdef KERNEL_PLL
|
||||
leapsec_electric(pll_control && kern_enable);
|
||||
# else
|
||||
leapsec_electric(0);
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
#ifdef LEAP_SMEAR
|
||||
leap_smear.enabled = leap_smear_intv != 0;
|
||||
#endif
|
||||
if (reset) {
|
||||
lsprox = LSPROX_NOWARN;
|
||||
leapsec_reset_frame();
|
||||
memset(&lsdata, 0, sizeof(lsdata));
|
||||
} else if (leapsec_query(&lsdata, now, tpiv)) {
|
||||
} else {
|
||||
int fired = leapsec_query(&lsdata, now, tpiv);
|
||||
|
||||
DPRINTF(1, ("*** leapsec_query: fired %i, now %u (0x%08X), tai_diff %i, ddist %u\n",
|
||||
fired, now, now, lsdata.tai_diff, lsdata.ddist));
|
||||
|
||||
#ifdef LEAP_SMEAR
|
||||
leap_smear.in_progress = 0;
|
||||
leap_smear.doffset = 0.0;
|
||||
|
||||
if (leap_smear.enabled) {
|
||||
if (lsdata.tai_diff) {
|
||||
if (leap_smear.interval == 0) {
|
||||
leap_smear.interval = leap_smear_intv;
|
||||
leap_smear.intv_end = lsdata.ttime.Q_s;
|
||||
leap_smear.intv_start = leap_smear.intv_end - leap_smear.interval;
|
||||
DPRINTF(1, ("*** leapsec_query: setting leap_smear interval %li, begin %.0f, end %.0f\n",
|
||||
leap_smear.interval, leap_smear.intv_start, leap_smear.intv_end));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (leap_smear.interval)
|
||||
DPRINTF(1, ("*** leapsec_query: clearing leap_smear interval\n"));
|
||||
leap_smear.interval = 0;
|
||||
}
|
||||
|
||||
if (leap_smear.interval) {
|
||||
double dtemp = now;
|
||||
if (dtemp >= leap_smear.intv_start && dtemp <= leap_smear.intv_end) {
|
||||
double leap_smear_time = dtemp - leap_smear.intv_start;
|
||||
/*
|
||||
* For now we just do a linear interpolation over the smear interval
|
||||
*/
|
||||
#if 0
|
||||
// linear interpolation
|
||||
leap_smear.doffset = -(leap_smear_time * lsdata.tai_diff / leap_smear.interval);
|
||||
#else
|
||||
// Google approach: lie(t) = (1.0 - cos(pi * t / w)) / 2.0
|
||||
leap_smear.doffset = -((double) lsdata.tai_diff - cos( M_PI * leap_smear_time / leap_smear.interval)) / 2.0;
|
||||
#endif
|
||||
/*
|
||||
* TODO see if we're inside an inserted leap second, so we need to compute
|
||||
* leap_smear.doffset = 1.0 - leap_smear.doffset
|
||||
*/
|
||||
leap_smear.in_progress = 1;
|
||||
#if 0 && defined( DEBUG )
|
||||
msyslog(LOG_NOTICE, "*** leapsec_query: [%.0f:%.0f] (%li), now %u (%.0f), smear offset %.6f ms\n",
|
||||
leap_smear.intv_start, leap_smear.intv_end, leap_smear.interval,
|
||||
now, leap_smear_time, leap_smear.doffset);
|
||||
#else
|
||||
DPRINTF(1, ("*** leapsec_query: [%.0f:%.0f] (%li), now %u (%.0f), smear offset %.6f ms\n",
|
||||
leap_smear.intv_start, leap_smear.intv_end, leap_smear.interval,
|
||||
now, leap_smear_time, leap_smear.doffset));
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
leap_smear.interval = 0;
|
||||
|
||||
/*
|
||||
* Update the current leap smear offset, eventually 0.0 if outside smear interval.
|
||||
*/
|
||||
DTOLFP(leap_smear.doffset, &leap_smear.offset);
|
||||
|
||||
#endif /* LEAP_SMEAR */
|
||||
|
||||
if (fired) {
|
||||
/* Full hit. Eventually step the clock, but always
|
||||
* announce the leap event has happened.
|
||||
*/
|
||||
const char *leapmsg = NULL;
|
||||
if (lsdata.warped < 0) {
|
||||
step_systime(lsdata.warped);
|
||||
msyslog(LOG_NOTICE, "Inserting positive leap second.");
|
||||
if (clock_max_back > 0.0 &&
|
||||
clock_max_back < fabs(lsdata.warped)) {
|
||||
step_systime(lsdata.warped);
|
||||
leapmsg = leapmsg_p_step;
|
||||
} else {
|
||||
leapmsg = leapmsg_p_slew;
|
||||
}
|
||||
} else if (lsdata.warped > 0) {
|
||||
step_systime(lsdata.warped);
|
||||
msyslog(LOG_NOTICE, "Inserting negative leap second.");
|
||||
if (clock_max_fwd > 0.0 &&
|
||||
clock_max_fwd < fabs(lsdata.warped)) {
|
||||
step_systime(lsdata.warped);
|
||||
leapmsg = leapmsg_n_step;
|
||||
} else {
|
||||
leapmsg = leapmsg_n_slew;
|
||||
}
|
||||
}
|
||||
if (leapmsg)
|
||||
msyslog(LOG_NOTICE, "%s", leapmsg);
|
||||
report_event(EVNT_LEAP, NULL, NULL);
|
||||
#ifdef AUTOKEY
|
||||
update_autokey = TRUE;
|
||||
#endif
|
||||
lsprox = LSPROX_NOWARN;
|
||||
leapsec = LSPROX_NOWARN;
|
||||
sys_tai = lsdata.tai_offs;
|
||||
} else {
|
||||
} else {
|
||||
#ifdef AUTOKEY
|
||||
update_autokey = (sys_tai != lsdata.tai_offs);
|
||||
#endif
|
||||
lsprox = lsdata.proximity;
|
||||
sys_tai = lsdata.tai_offs;
|
||||
}
|
||||
}
|
||||
|
||||
/* We guard against panic alarming during the red alert phase.
|
||||
@ -563,8 +682,15 @@ check_leapsec(
|
||||
leapsec = lsprox;
|
||||
}
|
||||
|
||||
if (leapsec >= LSPROX_SCHEDULE)
|
||||
leapdif = lsdata.tai_diff;
|
||||
else
|
||||
leapdif = 0;
|
||||
if (leapsec >= LSPROX_SCHEDULE)
|
||||
leapdif = lsdata.tai_diff;
|
||||
else
|
||||
leapdif = 0;
|
||||
|
||||
check_leap_sec_in_progress(&lsdata);
|
||||
|
||||
#ifdef AUTOKEY
|
||||
if (update_autokey)
|
||||
crypto_update_taichange();
|
||||
#endif
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* EDIT THIS FILE WITH CAUTION (ntpd-opts.c)
|
||||
*
|
||||
* It has been AutoGen-ed April 7, 2015 at 04:23:14 AM by AutoGen 5.18.5pre4
|
||||
* It has been AutoGen-ed June 29, 2015 at 04:28:19 PM 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.8p2\n"
|
||||
/* 0 */ "ntpd 4.2.8p3\n"
|
||||
"Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n"
|
||||
"This is free software. It is licensed for use, modification and\n"
|
||||
"redistribution under the terms of the NTP License, copies of which\n"
|
||||
@ -205,12 +205,12 @@ 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.8p2\n"
|
||||
/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p3\n"
|
||||
"Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n"
|
||||
"\t\t[ <server1> ... <serverN> ]\n\0"
|
||||
/* 3080 */ "http://bugs.ntp.org, bugs@ntp.org\0"
|
||||
/* 3114 */ "\n\0"
|
||||
/* 3116 */ "ntpd 4.2.8p2";
|
||||
/* 3116 */ "ntpd 4.2.8p3";
|
||||
|
||||
/**
|
||||
* ipv4 option description with
|
||||
@ -1331,7 +1331,7 @@ OPT_VALUE_SET_DEBUG_LEVEL++;
|
||||
(void)pOptDesc;
|
||||
(void)pOptions;
|
||||
}
|
||||
/* extracted from optmain.tlib near line 1245 */
|
||||
/* extracted from optmain.tlib near line 1250 */
|
||||
|
||||
/**
|
||||
* The directory containing the data associated with ntpd.
|
||||
@ -1443,11 +1443,11 @@ AO_gettext(char const * pz)
|
||||
if (option_xlateable_txt.field_ct != 0) {
|
||||
res = dgettext("libopts", pz);
|
||||
if (res == pz)
|
||||
res = (char *)(void *)_(pz);
|
||||
res = (char *)VOIDP(_(pz));
|
||||
} else
|
||||
res = (char *)(void *)_(pz);
|
||||
res = (char *)VOIDP(_(pz));
|
||||
#else
|
||||
res = (char *)(void *)_(pz);
|
||||
res = (char *)VOIDP(_(pz));
|
||||
#endif
|
||||
if (res == pz)
|
||||
return res;
|
||||
@ -1484,7 +1484,7 @@ translate_option_strings(void)
|
||||
* Do the translations. The first pointer follows the field count
|
||||
* field. The field count field is the size of a pointer.
|
||||
*/
|
||||
char ** ppz = (char**)(void*)&(option_xlateable_txt);
|
||||
char ** ppz = (char**)VOIDP(&(option_xlateable_txt));
|
||||
int ix = option_xlateable_txt.field_ct;
|
||||
|
||||
do {
|
||||
@ -1494,16 +1494,16 @@ translate_option_strings(void)
|
||||
/* prevent re-translation and disable "libopts" domain lookup */
|
||||
option_xlateable_txt.field_ct = 0;
|
||||
|
||||
coerce_it((void*)&(opts->pzCopyright));
|
||||
coerce_it((void*)&(opts->pzCopyNotice));
|
||||
coerce_it((void*)&(opts->pzFullVersion));
|
||||
coerce_it((void*)&(opts->pzUsageTitle));
|
||||
coerce_it((void*)&(opts->pzExplain));
|
||||
coerce_it((void*)&(opts->pzDetail));
|
||||
coerce_it(VOIDP(&(opts->pzCopyright)));
|
||||
coerce_it(VOIDP(&(opts->pzCopyNotice)));
|
||||
coerce_it(VOIDP(&(opts->pzFullVersion)));
|
||||
coerce_it(VOIDP(&(opts->pzUsageTitle)));
|
||||
coerce_it(VOIDP(&(opts->pzExplain)));
|
||||
coerce_it(VOIDP(&(opts->pzDetail)));
|
||||
{
|
||||
tOptDesc * od = opts->pOptDesc;
|
||||
for (ix = opts->optCt; ix > 0; ix--, od++)
|
||||
coerce_it((void*)&(od->pzText));
|
||||
coerce_it(VOIDP(&(od->pzText)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1529,7 +1529,7 @@ static void bogus_function(void) {
|
||||
translate option names.
|
||||
*/
|
||||
/* referenced via ntpdOptions.pzCopyright */
|
||||
puts(_("ntpd 4.2.8p2\n\
|
||||
puts(_("ntpd 4.2.8p3\n\
|
||||
Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n\
|
||||
This is free software. It is licensed for use, modification and\n\
|
||||
redistribution under the terms of the NTP License, copies of which\n\
|
||||
@ -1670,7 +1670,7 @@ implied warranty.\n"));
|
||||
puts(_("output version information and exit"));
|
||||
|
||||
/* referenced via ntpdOptions.pzUsageTitle */
|
||||
puts(_("ntpd - NTP daemon program - Ver. 4.2.8p2\n\
|
||||
puts(_("ntpd - NTP daemon program - Ver. 4.2.8p3\n\
|
||||
Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
|
||||
\t\t[ <server1> ... <serverN> ]\n"));
|
||||
|
||||
@ -1678,7 +1678,7 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
|
||||
puts(_("\n"));
|
||||
|
||||
/* referenced via ntpdOptions.pzFullVersion */
|
||||
puts(_("ntpd 4.2.8p2"));
|
||||
puts(_("ntpd 4.2.8p3"));
|
||||
|
||||
/* referenced via ntpdOptions.pzFullUsage */
|
||||
puts(_("<<<NOT-FOUND>>>"));
|
||||
@ -1704,7 +1704,7 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
|
||||
#line 121 "../version.c"
|
||||
puts(_("Automated Options version %s\n"
|
||||
"\tCopyright (C) 1999-2014 by Bruce Korb - all rights reserved\n"));
|
||||
#line 82 "../makeshell.c"
|
||||
#line 87 "../makeshell.c"
|
||||
puts(_("(AutoOpts bug): %s.\n"));
|
||||
#line 90 "../reset.c"
|
||||
puts(_("optionResetOpt() called, but reset-option not configured"));
|
||||
@ -1728,9 +1728,9 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
|
||||
puts(_("%s: Command line arguments required\n"));
|
||||
#line 43 "../alias.c"
|
||||
puts(_("%d %s%s options allowed\n"));
|
||||
#line 89 "../makeshell.c"
|
||||
#line 94 "../makeshell.c"
|
||||
puts(_("%s error %d (%s) calling %s for '%s'\n"));
|
||||
#line 301 "../makeshell.c"
|
||||
#line 306 "../makeshell.c"
|
||||
puts(_("interprocess pipe"));
|
||||
#line 168 "../version.c"
|
||||
puts(_("error: version option argument '%c' invalid. Use:\n"
|
||||
@ -1808,9 +1808,9 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
|
||||
puts(_("Try '%s %s' for more information.\n"));
|
||||
#line 45 "../alias.c"
|
||||
puts(_("one %s%s option allowed\n"));
|
||||
#line 203 "../makeshell.c"
|
||||
#line 208 "../makeshell.c"
|
||||
puts(_("standard output"));
|
||||
#line 938 "../makeshell.c"
|
||||
#line 943 "../makeshell.c"
|
||||
puts(_("standard output"));
|
||||
#line 274 "../usage.c"
|
||||
puts(_("standard output"));
|
||||
@ -1828,9 +1828,9 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
|
||||
puts(_("standard error"));
|
||||
#line 175 "../version.c"
|
||||
puts(_("standard error"));
|
||||
#line 203 "../makeshell.c"
|
||||
#line 208 "../makeshell.c"
|
||||
puts(_("write"));
|
||||
#line 938 "../makeshell.c"
|
||||
#line 943 "../makeshell.c"
|
||||
puts(_("write"));
|
||||
#line 273 "../usage.c"
|
||||
puts(_("write"));
|
||||
@ -1882,7 +1882,7 @@ Usage: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
|
||||
#line 380 "../usage.c"
|
||||
puts(_("Options are specified by doubled hyphens and their name or by a single\n"
|
||||
"hyphen and the flag character.\n"));
|
||||
#line 916 "../makeshell.c"
|
||||
#line 921 "../makeshell.c"
|
||||
puts(_("\n"
|
||||
"= = = = = = = =\n\n"
|
||||
"This incarnation of genshell will produce\n"
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* EDIT THIS FILE WITH CAUTION (ntpd-opts.h)
|
||||
*
|
||||
* It has been AutoGen-ed April 7, 2015 at 04:23:13 AM by AutoGen 5.18.5pre4
|
||||
* It has been AutoGen-ed June 29, 2015 at 04:28:18 PM 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.8p2"
|
||||
#define NTPD_VERSION "4.2.8p3"
|
||||
/** Full ntpd version text */
|
||||
#define NTPD_FULL_VERSION "ntpd 4.2.8p2"
|
||||
#define NTPD_FULL_VERSION "ntpd 4.2.8p3"
|
||||
|
||||
/**
|
||||
* Interface defines for all options. Replace "n" with the UPPER_CASED
|
||||
|
@ -10,11 +10,11 @@
|
||||
.ds B-Font B
|
||||
.ds I-Font I
|
||||
.ds R-Font R
|
||||
.TH ntpd 1ntpdman "07 Apr 2015" "4.2.8p2" "User Commands"
|
||||
.TH ntpd 1ntpdman "29 Jun 2015" "4.2.8p3" "User Commands"
|
||||
.\"
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-TQays3/ag-5Qaqr3)
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-LZaapD/ag-XZa4nD)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:45 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:24 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntpd-opts.def
|
||||
.\" and the template file agman-cmd.tpl
|
||||
.SH NAME
|
||||
@ -59,7 +59,7 @@ with future gigahertz CPU clocks and gigabit LANs.
|
||||
Ordinarily,
|
||||
\f\*[B-Font]ntpd\fP
|
||||
reads the
|
||||
\fCntp.conf\fR(5)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[]
|
||||
configuration file at startup time in order to determine the
|
||||
synchronization sources and operating modes.
|
||||
It is also possible to
|
||||
@ -78,7 +78,7 @@ then
|
||||
\f\*[B-Font]ntpd\fP
|
||||
will attempt to read its configuration from the
|
||||
NetInfo if the default
|
||||
\fCntp.conf\fR(5)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[]
|
||||
file cannot be read and no file is
|
||||
specified by the
|
||||
\f\*[B-Font]\-c\f[]
|
||||
@ -93,9 +93,9 @@ configuration options altered while the
|
||||
\f\*[B-Font]ntpd\fP
|
||||
is running
|
||||
using the
|
||||
\fCntpq\fR(1ntpqmdoc)\f[]
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[]
|
||||
and
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[]
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[]
|
||||
utility programs.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
@ -103,11 +103,11 @@ utility programs.
|
||||
When
|
||||
\f\*[B-Font]ntpd\fP
|
||||
starts it looks at the value of
|
||||
\fCumask\fR(2)\f[],
|
||||
\fCumask\f[]\fR(2)\f[],
|
||||
and if zero
|
||||
\f\*[B-Font]ntpd\fP
|
||||
will set the
|
||||
\fCumask\fR(2)\f[]
|
||||
\fCumask\f[]\fR(2)\f[]
|
||||
to 022.
|
||||
.SH "OPTIONS"
|
||||
.TP
|
||||
@ -472,7 +472,7 @@ keyword with the
|
||||
\f\*[B-Font]server\f[]
|
||||
configuration
|
||||
command, as described in
|
||||
\fCntp.conf\fR(5)\f[].
|
||||
\fCntp.conf\f[]\fR(5)\f[].
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
@ -601,9 +601,9 @@ when you have permission to do so from the owner of the target host.
|
||||
|
||||
Finally,
|
||||
in the past many startup scripts would run
|
||||
\fCntpdate\fR(1ntpdatemdoc)\f[]
|
||||
\fCntpdate\f[]\fR(1ntpdatemdoc)\f[]
|
||||
to get the system clock close to correct before starting
|
||||
\fCntpd\fR(1ntpdmdoc)\f[],
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[],
|
||||
but this was never more than a mediocre hack and is no longer needed.
|
||||
If you are following the instructions in
|
||||
\fIStarting NTP (Best Current Practice)\f[]
|
||||
@ -611,12 +611,12 @@ and you still need to set the system time before starting
|
||||
\f\*[B-Font]ntpd\fP,
|
||||
please open a bug report and document what is going on,
|
||||
and then look at using
|
||||
\fCsntp\fR(1sntpmdoc)\f[].
|
||||
\fCsntp\f[]\fR(1sntpmdoc)\f[].
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
There is a way to start
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
that often addresses all of the problems mentioned above.
|
||||
.SS "Starting NTP (Best Current Practice)"
|
||||
First, use the
|
||||
@ -630,14 +630,14 @@ entries.
|
||||
If you can also keep a good
|
||||
\fIntp.drift\f[]
|
||||
file then
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
will effectively "warm-start" and your system's clock will
|
||||
be stable in under 11 seconds' time.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
As soon as possible in the startup sequence, start
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
with at least the
|
||||
\f\*[B-Font]\-g\f[]
|
||||
and perhaps the
|
||||
@ -646,7 +646,7 @@ options.
|
||||
Then,
|
||||
start the rest of your "normal" processes.
|
||||
This will give
|
||||
\fCntpd\fR(1ntpdmdoc)\f[]
|
||||
\fCntpd\f[]\fR(1ntpdmdoc)\f[]
|
||||
as much time as possible to get the system's clock synchronized and stable.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
@ -658,13 +658,13 @@ or database servers
|
||||
that require
|
||||
monotonically-increasing time,
|
||||
run
|
||||
\fCntp-wait\fR(1ntp-waitmdoc)\f[]
|
||||
\fCntp-wait\f[]\fR(1ntp-waitmdoc)\f[]
|
||||
as late as possible in the boot sequence
|
||||
(perhaps with the
|
||||
\f\*[B-Font]\-v\f[]
|
||||
flag)
|
||||
and after
|
||||
\fCntp-wait\fR(1ntp-waitmdoc)\f[]
|
||||
\fCntp-wait\f[]\fR(1ntp-waitmdoc)\f[]
|
||||
exits successfully
|
||||
it is as safe as it will ever be to start any process that require
|
||||
stable time.
|
||||
@ -749,11 +749,11 @@ In some cases it may not be practical for
|
||||
\f\*[B-Font]ntpd\fP
|
||||
to run continuously.
|
||||
A common workaround has been to run the
|
||||
\fCntpdate\fR(1ntpdatemdoc)\f[]
|
||||
\fCntpdate\f[]\fR(1ntpdatemdoc)\f[]
|
||||
or
|
||||
\fCsntp\fR(1sntpmdoc)\f[]
|
||||
\fCsntp\f[]\fR(1sntpmdoc)\f[]
|
||||
programs from a
|
||||
\fCcron\fR(8)\f[]
|
||||
\fCcron\f[]\fR(8)\f[]
|
||||
job at designated
|
||||
times.
|
||||
However, these programs do not have the crafted signal
|
||||
@ -780,7 +780,7 @@ If nothing is heard after a
|
||||
couple of minutes, the daemon times out and exits.
|
||||
After a suitable
|
||||
period of mourning, the
|
||||
\fCntpdate\fR(1ntpdatemdoc)\f[]
|
||||
\fCntpdate\f[]\fR(1ntpdatemdoc)\f[]
|
||||
program will be
|
||||
retired.
|
||||
.sp \n(Ppu
|
||||
@ -891,7 +891,7 @@ The filter is activated by the
|
||||
command and
|
||||
\f\*[B-Font]huffpuff\f[]
|
||||
keyword, as described in
|
||||
\fCntp.conf\fR(5)\f[].
|
||||
\fCntp.conf\f[]\fR(5)\f[].
|
||||
.SH "ENVIRONMENT"
|
||||
See \fBOPTION PRESETS\fP for configuration environment variables.
|
||||
.SH FILES
|
||||
@ -923,11 +923,11 @@ libopts had an internal operational error. Please report
|
||||
it to autogen-users@lists.sourceforge.net. Thank you.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
\fCntp.conf\fR(5)\f[],
|
||||
\fCntpdate\fR(1ntpdatemdoc)\f[],
|
||||
\fCntpdc\fR(1ntpdcmdoc)\f[],
|
||||
\fCntpq\fR(1ntpqmdoc)\f[],
|
||||
\fCsntp\fR(1sntpmdoc)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[],
|
||||
\fCntpdate\f[]\fR(1ntpdatemdoc)\f[],
|
||||
\fCntpdc\f[]\fR(1ntpdcmdoc)\f[],
|
||||
\fCntpq\f[]\fR(1ntpqmdoc)\f[],
|
||||
\fCsntp\f[]\fR(1sntpmdoc)\f[]
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
.Dd April 7 2015
|
||||
.Dd June 29 2015
|
||||
.Dt NTPD 1ntpdmdoc User Commands
|
||||
.Os
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:26:02 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:41 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntpd-opts.def
|
||||
.\" and the template file agmdoc-cmd.tpl
|
||||
.Sh NAME
|
||||
|
@ -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.
|
||||
|
||||
<p>This document applies to version 4.2.8p2 of <code>ntpd</code>.
|
||||
<p>This document applies to version 4.2.8p3 of <code>ntpd</code>.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="#ntpd-Description">ntpd Description</a>: Description
|
||||
@ -220,7 +220,7 @@ the usage text by passing it through a pager program.
|
||||
used to select the program, defaulting to <span class="file">more</span>. Both will exit
|
||||
with a status code of 0.
|
||||
|
||||
<pre class="example">ntpd - NTP daemon program - Ver. 4.2.8p2-RC3
|
||||
<pre class="example">ntpd - NTP daemon program - Ver. 4.2.8p3-RC3
|
||||
Usage: ntpd [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \
|
||||
[ <server1> ... <serverN> ]
|
||||
Flg Arg Option-Name Description
|
||||
|
@ -10,11 +10,11 @@
|
||||
.ds B-Font B
|
||||
.ds I-Font I
|
||||
.ds R-Font R
|
||||
.TH ntpd @NTPD_MS@ "07 Apr 2015" "4.2.8p2" "User Commands"
|
||||
.TH ntpd @NTPD_MS@ "29 Jun 2015" "4.2.8p3" "User Commands"
|
||||
.\"
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-TQays3/ag-5Qaqr3)
|
||||
.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-LZaapD/ag-XZa4nD)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:25:45 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:24 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntpd-opts.def
|
||||
.\" and the template file agman-cmd.tpl
|
||||
.SH NAME
|
||||
@ -59,7 +59,7 @@ with future gigahertz CPU clocks and gigabit LANs.
|
||||
Ordinarily,
|
||||
\f\*[B-Font]ntpd\fP
|
||||
reads the
|
||||
\fCntp.conf\fR(5)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[]
|
||||
configuration file at startup time in order to determine the
|
||||
synchronization sources and operating modes.
|
||||
It is also possible to
|
||||
@ -78,7 +78,7 @@ then
|
||||
\f\*[B-Font]ntpd\fP
|
||||
will attempt to read its configuration from the
|
||||
NetInfo if the default
|
||||
\fCntp.conf\fR(5)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[]
|
||||
file cannot be read and no file is
|
||||
specified by the
|
||||
\f\*[B-Font]\-c\f[]
|
||||
@ -93,9 +93,9 @@ configuration options altered while the
|
||||
\f\*[B-Font]ntpd\fP
|
||||
is running
|
||||
using the
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[]
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
|
||||
and
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[]
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[]
|
||||
utility programs.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
@ -103,11 +103,11 @@ utility programs.
|
||||
When
|
||||
\f\*[B-Font]ntpd\fP
|
||||
starts it looks at the value of
|
||||
\fCumask\fR(2)\f[],
|
||||
\fCumask\f[]\fR(2)\f[],
|
||||
and if zero
|
||||
\f\*[B-Font]ntpd\fP
|
||||
will set the
|
||||
\fCumask\fR(2)\f[]
|
||||
\fCumask\f[]\fR(2)\f[]
|
||||
to 022.
|
||||
.SH "OPTIONS"
|
||||
.TP
|
||||
@ -472,7 +472,7 @@ keyword with the
|
||||
\f\*[B-Font]server\f[]
|
||||
configuration
|
||||
command, as described in
|
||||
\fCntp.conf\fR(5)\f[].
|
||||
\fCntp.conf\f[]\fR(5)\f[].
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
@ -601,9 +601,9 @@ when you have permission to do so from the owner of the target host.
|
||||
|
||||
Finally,
|
||||
in the past many startup scripts would run
|
||||
\fCntpdate\fR(@NTPDATE_MS@)\f[]
|
||||
\fCntpdate\f[]\fR(@NTPDATE_MS@)\f[]
|
||||
to get the system clock close to correct before starting
|
||||
\fCntpd\fR(@NTPD_MS@)\f[],
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[],
|
||||
but this was never more than a mediocre hack and is no longer needed.
|
||||
If you are following the instructions in
|
||||
\fIStarting NTP (Best Current Practice)\f[]
|
||||
@ -611,12 +611,12 @@ and you still need to set the system time before starting
|
||||
\f\*[B-Font]ntpd\fP,
|
||||
please open a bug report and document what is going on,
|
||||
and then look at using
|
||||
\fCsntp\fR(@SNTP_MS@)\f[].
|
||||
\fCsntp\f[]\fR(@SNTP_MS@)\f[].
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
There is a way to start
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
that often addresses all of the problems mentioned above.
|
||||
.SS "Starting NTP (Best Current Practice)"
|
||||
First, use the
|
||||
@ -630,14 +630,14 @@ entries.
|
||||
If you can also keep a good
|
||||
\fIntp.drift\f[]
|
||||
file then
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
will effectively "warm-start" and your system's clock will
|
||||
be stable in under 11 seconds' time.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
As soon as possible in the startup sequence, start
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
with at least the
|
||||
\f\*[B-Font]\-g\f[]
|
||||
and perhaps the
|
||||
@ -646,7 +646,7 @@ options.
|
||||
Then,
|
||||
start the rest of your "normal" processes.
|
||||
This will give
|
||||
\fCntpd\fR(@NTPD_MS@)\f[]
|
||||
\fCntpd\f[]\fR(@NTPD_MS@)\f[]
|
||||
as much time as possible to get the system's clock synchronized and stable.
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
@ -658,13 +658,13 @@ or database servers
|
||||
that require
|
||||
monotonically-increasing time,
|
||||
run
|
||||
\fCntp-wait\fR(@NTP_WAIT_MS@)\f[]
|
||||
\fCntp-wait\f[]\fR(@NTP_WAIT_MS@)\f[]
|
||||
as late as possible in the boot sequence
|
||||
(perhaps with the
|
||||
\f\*[B-Font]\-v\f[]
|
||||
flag)
|
||||
and after
|
||||
\fCntp-wait\fR(@NTP_WAIT_MS@)\f[]
|
||||
\fCntp-wait\f[]\fR(@NTP_WAIT_MS@)\f[]
|
||||
exits successfully
|
||||
it is as safe as it will ever be to start any process that require
|
||||
stable time.
|
||||
@ -749,11 +749,11 @@ In some cases it may not be practical for
|
||||
\f\*[B-Font]ntpd\fP
|
||||
to run continuously.
|
||||
A common workaround has been to run the
|
||||
\fCntpdate\fR(@NTPDATE_MS@)\f[]
|
||||
\fCntpdate\f[]\fR(@NTPDATE_MS@)\f[]
|
||||
or
|
||||
\fCsntp\fR(@SNTP_MS@)\f[]
|
||||
\fCsntp\f[]\fR(@SNTP_MS@)\f[]
|
||||
programs from a
|
||||
\fCcron\fR(8)\f[]
|
||||
\fCcron\f[]\fR(8)\f[]
|
||||
job at designated
|
||||
times.
|
||||
However, these programs do not have the crafted signal
|
||||
@ -780,7 +780,7 @@ If nothing is heard after a
|
||||
couple of minutes, the daemon times out and exits.
|
||||
After a suitable
|
||||
period of mourning, the
|
||||
\fCntpdate\fR(@NTPDATE_MS@)\f[]
|
||||
\fCntpdate\f[]\fR(@NTPDATE_MS@)\f[]
|
||||
program will be
|
||||
retired.
|
||||
.sp \n(Ppu
|
||||
@ -891,7 +891,7 @@ The filter is activated by the
|
||||
command and
|
||||
\f\*[B-Font]huffpuff\f[]
|
||||
keyword, as described in
|
||||
\fCntp.conf\fR(5)\f[].
|
||||
\fCntp.conf\f[]\fR(5)\f[].
|
||||
.SH "ENVIRONMENT"
|
||||
See \fBOPTION PRESETS\fP for configuration environment variables.
|
||||
.SH FILES
|
||||
@ -923,11 +923,11 @@ libopts had an internal operational error. Please report
|
||||
it to autogen-users@lists.sourceforge.net. Thank you.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
\fCntp.conf\fR(5)\f[],
|
||||
\fCntpdate\fR(@NTPDATE_MS@)\f[],
|
||||
\fCntpdc\fR(@NTPDC_MS@)\f[],
|
||||
\fCntpq\fR(@NTPQ_MS@)\f[],
|
||||
\fCsntp\fR(@SNTP_MS@)\f[]
|
||||
\fCntp.conf\f[]\fR(5)\f[],
|
||||
\fCntpdate\f[]\fR(@NTPDATE_MS@)\f[],
|
||||
\fCntpdc\f[]\fR(@NTPDC_MS@)\f[],
|
||||
\fCntpq\f[]\fR(@NTPQ_MS@)\f[],
|
||||
\fCsntp\f[]\fR(@SNTP_MS@)\f[]
|
||||
.sp \n(Ppu
|
||||
.ne 2
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
.Dd April 7 2015
|
||||
.Dd June 29 2015
|
||||
.Dt NTPD @NTPD_MS@ User Commands
|
||||
.Os
|
||||
.\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc)
|
||||
.\"
|
||||
.\" It has been AutoGen-ed April 7, 2015 at 04:26:02 AM by AutoGen 5.18.5pre4
|
||||
.\" It has been AutoGen-ed June 29, 2015 at 04:30:41 PM by AutoGen 5.18.5
|
||||
.\" From the definitions ntpd-opts.def
|
||||
.\" and the template file agmdoc-cmd.tpl
|
||||
.Sh NAME
|
||||
|
35
ntpd/rc_cmdlength.c
Normal file
35
ntpd/rc_cmdlength.c
Normal file
@ -0,0 +1,35 @@
|
||||
#include <config.h>
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* Bug 2853 */
|
||||
/* evaluate the length of the command sequence. This breaks at the first
|
||||
* char that is not >= SPACE and <= 127 after trimming from the right.
|
||||
*/
|
||||
size_t
|
||||
remoteconfig_cmdlength(
|
||||
const char *src_buf,
|
||||
const char *src_end
|
||||
)
|
||||
{
|
||||
const char *scan;
|
||||
unsigned char ch;
|
||||
|
||||
/* trim whitespace & garbage from the right */
|
||||
while (src_end != src_buf) {
|
||||
ch = src_end[-1];
|
||||
if (ch > ' ' && ch < 128)
|
||||
break;
|
||||
--src_end;
|
||||
}
|
||||
/* now do a forward scan */
|
||||
for (scan = src_buf; scan != src_end; ++scan) {
|
||||
ch = scan[0];
|
||||
if ((ch < ' ' || ch >= 128) && ch != '\t')
|
||||
break;
|
||||
}
|
||||
return (size_t)(scan - src_buf);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
5059
ntpd/refclock_jjy.c
5059
ntpd/refclock_jjy.c
File diff suppressed because it is too large
Load Diff
@ -15,7 +15,7 @@
|
||||
* Currently the STREAMS module is only available for Suns running
|
||||
* SunOS 4.x and SunOS5.x.
|
||||
*
|
||||
* Copyright (c) 1995-2009 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1995-2015 by Frank Kardel <kardel <AT> ntp.org>
|
||||
* Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -2540,7 +2540,7 @@ parsestate(
|
||||
{
|
||||
{ PARSEB_S_LEAP, "LEAP INDICATION" },
|
||||
{ PARSEB_S_PPS, "PPS SIGNAL" },
|
||||
{ PARSEB_S_ANTENNA, "ANTENNA" },
|
||||
{ PARSEB_S_CALLBIT, "CALLBIT" },
|
||||
{ PARSEB_S_POSITION, "POSITION" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
@ -2562,7 +2562,7 @@ parsestate(
|
||||
i++;
|
||||
}
|
||||
|
||||
if (lstate & (PARSEB_S_LEAP|PARSEB_S_ANTENNA|PARSEB_S_PPS|PARSEB_S_POSITION))
|
||||
if (lstate & (PARSEB_S_LEAP|PARSEB_S_CALLBIT|PARSEB_S_PPS|PARSEB_S_POSITION))
|
||||
{
|
||||
if (s != t)
|
||||
t = ap(buffer, size, t, "; ");
|
||||
@ -2998,7 +2998,7 @@ parse_start(
|
||||
if (!notice)
|
||||
{
|
||||
NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
|
||||
msyslog(LOG_INFO, "NTP PARSE support: Copyright (c) 1989-2009, Frank Kardel");
|
||||
msyslog(LOG_INFO, "NTP PARSE support: Copyright (c) 1989-2015, Frank Kardel");
|
||||
notice = 1;
|
||||
}
|
||||
|
||||
@ -3782,6 +3782,8 @@ parse_process(
|
||||
msyslog(LOG_WARNING, "PARSE receiver #%d: FAILED TIMECODE: \"%s\" (check receiver configuration / wiring)",
|
||||
CLK_UNIT(parse->peer), mkascii(buffer, sizeof buffer, tmpctl.parsegettc.parse_buffer, (unsigned)(tmpctl.parsegettc.parse_count - 1)));
|
||||
}
|
||||
/* copy status to show only changes in case of failures */
|
||||
parse->timedata.parse_status = parsetime->parse_status;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "timespecops.h"
|
||||
#undef fileno
|
||||
#include "ntp_stdlib.h"
|
||||
#include "ntp_assert.h"
|
||||
|
||||
#undef fileno
|
||||
#include <ctype.h>
|
||||
@ -37,6 +38,10 @@
|
||||
# include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STDATOMIC_H
|
||||
# include <stdatomic.h>
|
||||
#endif /* HAVE_STDATOMIC_H */
|
||||
|
||||
/*
|
||||
* This driver supports a reference clock attached thru shared memory
|
||||
*/
|
||||
@ -117,6 +122,7 @@ struct shmunit {
|
||||
time_t max_delay; /* age/stale limit */
|
||||
};
|
||||
|
||||
|
||||
static struct shmTime*
|
||||
getShmTime(
|
||||
int unit,
|
||||
@ -144,8 +150,8 @@ getShmTime(
|
||||
msyslog(LOG_ERR, "SHM shmat (unit %d): %m", unit);
|
||||
return NULL;
|
||||
}
|
||||
return p;
|
||||
|
||||
return p;
|
||||
#else
|
||||
|
||||
static const char * nspref[2] = { "Local", "Global" };
|
||||
@ -195,10 +201,14 @@ getShmTime(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return p;
|
||||
#endif
|
||||
|
||||
return p;
|
||||
/* NOTREACHED */
|
||||
ENSURE(!"getShmTime(): Not reached.");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* shm_start - attach to shared memory
|
||||
*/
|
||||
@ -348,10 +358,158 @@ shm_poll(
|
||||
shm_clockstats(unit, peer);
|
||||
}
|
||||
|
||||
|
||||
enum segstat_t {
|
||||
OK, NO_SEGMENT, NOT_READY, BAD_MODE, CLASH
|
||||
};
|
||||
|
||||
struct shm_stat_t {
|
||||
int status;
|
||||
int mode;
|
||||
struct timespec tvc, tvr, tvt;
|
||||
int precision;
|
||||
int leap;
|
||||
};
|
||||
|
||||
static inline void memory_barrier(void)
|
||||
{
|
||||
#ifdef HAVE_ATOMIC_THREAD_FENCE
|
||||
atomic_thread_fence(memory_order_seq_cst);
|
||||
#endif /* HAVE_ATOMIC_THREAD_FENCE */
|
||||
}
|
||||
|
||||
static enum segstat_t shm_query(volatile struct shmTime *shm_in, struct shm_stat_t *shm_stat)
|
||||
/* try to grab a sample from the specified SHM segment */
|
||||
{
|
||||
volatile struct shmTime shmcopy, *shm = shm_in;
|
||||
volatile int cnt;
|
||||
|
||||
unsigned int cns_new, rns_new;
|
||||
|
||||
/*
|
||||
* This is the main routine. It snatches the time from the shm
|
||||
* board and tacks on a local timestamp.
|
||||
*/
|
||||
if (shm == NULL) {
|
||||
shm_stat->status = NO_SEGMENT;
|
||||
return NO_SEGMENT;
|
||||
}
|
||||
|
||||
/*@-type@*//* splint is confused about struct timespec */
|
||||
shm_stat->tvc.tv_sec = shm_stat->tvc.tv_nsec = 0;
|
||||
{
|
||||
time_t now;
|
||||
|
||||
time(&now);
|
||||
shm_stat->tvc.tv_sec = now;
|
||||
}
|
||||
|
||||
/* relying on word access to be atomic here */
|
||||
if (shm->valid == 0) {
|
||||
shm_stat->status = NOT_READY;
|
||||
return NOT_READY;
|
||||
}
|
||||
|
||||
cnt = shm->count;
|
||||
|
||||
/*
|
||||
* This is proof against concurrency issues if either
|
||||
* (a) the memory_barrier() call works on this host, or
|
||||
* (b) memset compiles to an uninterruptible single-instruction bitblt.
|
||||
*/
|
||||
memory_barrier();
|
||||
memcpy((void *)&shmcopy, (void *)shm, sizeof(struct shmTime));
|
||||
shm->valid = 0;
|
||||
memory_barrier();
|
||||
|
||||
/*
|
||||
* Clash detection in case neither (a) nor (b) was true.
|
||||
* Not supported in mode 0, and word access to the count field
|
||||
* must be atomic for this to work.
|
||||
*/
|
||||
if (shmcopy.mode > 0 && cnt != shm->count) {
|
||||
shm_stat->status = CLASH;
|
||||
return shm_stat->status;
|
||||
}
|
||||
|
||||
shm_stat->status = OK;
|
||||
shm_stat->mode = shmcopy.mode;
|
||||
|
||||
switch (shmcopy.mode) {
|
||||
case 0:
|
||||
shm_stat->tvr.tv_sec = shmcopy.receiveTimeStampSec;
|
||||
shm_stat->tvr.tv_nsec = shmcopy.receiveTimeStampUSec * 1000;
|
||||
rns_new = shmcopy.receiveTimeStampNSec;
|
||||
shm_stat->tvt.tv_sec = shmcopy.clockTimeStampSec;
|
||||
shm_stat->tvt.tv_nsec = shmcopy.clockTimeStampUSec * 1000;
|
||||
cns_new = shmcopy.clockTimeStampNSec;
|
||||
|
||||
/* Since the following comparisons are between unsigned
|
||||
** variables they are always well defined, and any
|
||||
** (signed) underflow will turn into very large unsigned
|
||||
** values, well above the 1000 cutoff.
|
||||
**
|
||||
** Note: The usecs *must* be a *truncated*
|
||||
** representation of the nsecs. This code will fail for
|
||||
** *rounded* usecs, and the logic to deal with
|
||||
** wrap-arounds in the presence of rounded values is
|
||||
** much more convoluted.
|
||||
*/
|
||||
if ( ((cns_new - (unsigned)shm_stat->tvt.tv_nsec) < 1000)
|
||||
&& ((rns_new - (unsigned)shm_stat->tvr.tv_nsec) < 1000)) {
|
||||
shm_stat->tvt.tv_nsec = cns_new;
|
||||
shm_stat->tvr.tv_nsec = rns_new;
|
||||
}
|
||||
/* At this point shm_stat->tvr and shm_stat->tvt contain valid ns-level
|
||||
** timestamps, possibly generated by extending the old
|
||||
** us-level timestamps
|
||||
*/
|
||||
break;
|
||||
|
||||
case 1:
|
||||
|
||||
shm_stat->tvr.tv_sec = shmcopy.receiveTimeStampSec;
|
||||
shm_stat->tvr.tv_nsec = shmcopy.receiveTimeStampUSec * 1000;
|
||||
rns_new = shmcopy.receiveTimeStampNSec;
|
||||
shm_stat->tvt.tv_sec = shmcopy.clockTimeStampSec;
|
||||
shm_stat->tvt.tv_nsec = shmcopy.clockTimeStampUSec * 1000;
|
||||
cns_new = shmcopy.clockTimeStampNSec;
|
||||
|
||||
/* See the case above for an explanation of the
|
||||
** following test.
|
||||
*/
|
||||
if ( ((cns_new - (unsigned)shm_stat->tvt.tv_nsec) < 1000)
|
||||
&& ((rns_new - (unsigned)shm_stat->tvr.tv_nsec) < 1000)) {
|
||||
shm_stat->tvt.tv_nsec = cns_new;
|
||||
shm_stat->tvr.tv_nsec = rns_new;
|
||||
}
|
||||
/* At this point shm_stat->tvr and shm_stat->tvt contains valid ns-level
|
||||
** timestamps, possibly generated by extending the old
|
||||
** us-level timestamps
|
||||
*/
|
||||
break;
|
||||
|
||||
default:
|
||||
shm_stat->status = BAD_MODE;
|
||||
break;
|
||||
}
|
||||
/*@-type@*/
|
||||
|
||||
/*
|
||||
* leap field is not a leap offset but a leap notification code.
|
||||
* The values are magic numbers used by NTP and set by GPSD, if at all, in
|
||||
* the subframe code.
|
||||
*/
|
||||
shm_stat->leap = shmcopy.leap;
|
||||
shm_stat->precision = shmcopy.precision;
|
||||
|
||||
return shm_stat->status;
|
||||
}
|
||||
|
||||
/*
|
||||
* shm_timer - called onece every second.
|
||||
* shm_timer - called once every second.
|
||||
*
|
||||
* This tries to grab a sample from the SHM segment
|
||||
* This tries to grab a sample from the SHM segment, filtering bad ones
|
||||
*/
|
||||
static void
|
||||
shm_timer(
|
||||
@ -362,33 +520,20 @@ shm_timer(
|
||||
struct refclockproc * const pp = peer->procptr;
|
||||
struct shmunit * const up = pp->unitptr;
|
||||
|
||||
/* access order is important for lock-free SHM access; we
|
||||
** enforce order by treating the whole structure volatile.
|
||||
**
|
||||
** IMPORTANT NOTE: This does not protect from reordering on CPU
|
||||
** level, and it does nothing for cache consistency and
|
||||
** visibility of changes by other cores. We need atomic and/or
|
||||
** fence instructions for that.
|
||||
*/
|
||||
volatile struct shmTime *shm;
|
||||
|
||||
struct timespec tvr;
|
||||
struct timespec tvt;
|
||||
l_fp tsrcv;
|
||||
l_fp tsref;
|
||||
unsigned int c;
|
||||
unsigned int cns_new, rns_new;
|
||||
int cnt;
|
||||
int c;
|
||||
|
||||
/* for formatting 'a_lastcode': */
|
||||
struct calendar cd;
|
||||
time_t tt, now;
|
||||
time_t tt;
|
||||
vint64 ts;
|
||||
|
||||
/*
|
||||
* This is the main routine. It snatches the time from the shm
|
||||
* board and tacks on a local timestamp.
|
||||
*/
|
||||
enum segstat_t status;
|
||||
struct shm_stat_t shm_stat;
|
||||
|
||||
up->ticks++;
|
||||
if ((shm = up->shm) == NULL) {
|
||||
/* try to map again - this may succeed if meanwhile some-
|
||||
@ -400,88 +545,43 @@ shm_timer(
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ( ! shm->valid) {
|
||||
DPRINTF(1, ("%s: SHM not ready\n",
|
||||
refnumtoa(&peer->srcadr)));
|
||||
up->notready++;
|
||||
return;
|
||||
}
|
||||
|
||||
switch (shm->mode) {
|
||||
case 0:
|
||||
tvr.tv_sec = shm->receiveTimeStampSec;
|
||||
tvr.tv_nsec = shm->receiveTimeStampUSec * 1000;
|
||||
rns_new = shm->receiveTimeStampNSec;
|
||||
tvt.tv_sec = shm->clockTimeStampSec;
|
||||
tvt.tv_nsec = shm->clockTimeStampUSec * 1000;
|
||||
cns_new = shm->clockTimeStampNSec;
|
||||
|
||||
/* Since the following comparisons are between unsigned
|
||||
** variables they are always well defined, and any
|
||||
** (signed) underflow will turn into very large unsigned
|
||||
** values, well above the 1000 cutoff.
|
||||
**
|
||||
** Note: The usecs *must* be a *truncated*
|
||||
** representation of the nsecs. This code will fail for
|
||||
** *rounded* usecs, and the logic to deal with
|
||||
** wrap-arounds in the presence of rounded values is
|
||||
** much more convoluted.
|
||||
*/
|
||||
if ( ((cns_new - (unsigned)tvt.tv_nsec) < 1000)
|
||||
&& ((rns_new - (unsigned)tvr.tv_nsec) < 1000)) {
|
||||
tvt.tv_nsec = cns_new;
|
||||
tvr.tv_nsec = rns_new;
|
||||
}
|
||||
/* At this point tvr and tvt contains valid ns-level
|
||||
** timestamps, possibly generated by extending the old
|
||||
** us-level timestamps
|
||||
*/
|
||||
DPRINTF(2, ("%s: SHM type 0 sample\n",
|
||||
refnumtoa(&peer->srcadr)));
|
||||
break;
|
||||
|
||||
case 1:
|
||||
cnt = shm->count;
|
||||
|
||||
tvr.tv_sec = shm->receiveTimeStampSec;
|
||||
tvr.tv_nsec = shm->receiveTimeStampUSec * 1000;
|
||||
rns_new = shm->receiveTimeStampNSec;
|
||||
tvt.tv_sec = shm->clockTimeStampSec;
|
||||
tvt.tv_nsec = shm->clockTimeStampUSec * 1000;
|
||||
cns_new = shm->clockTimeStampNSec;
|
||||
if (cnt != shm->count) {
|
||||
DPRINTF(1, ("%s: type 1 access clash\n",
|
||||
refnumtoa(&peer->srcadr)));
|
||||
msyslog (LOG_NOTICE, "SHM: access clash in shared memory");
|
||||
up->clash++;
|
||||
return;
|
||||
}
|
||||
|
||||
/* See the case above for an explanation of the
|
||||
** following test.
|
||||
*/
|
||||
if ( ((cns_new - (unsigned)tvt.tv_nsec) < 1000)
|
||||
&& ((rns_new - (unsigned)tvr.tv_nsec) < 1000)) {
|
||||
tvt.tv_nsec = cns_new;
|
||||
tvr.tv_nsec = rns_new;
|
||||
}
|
||||
/* At this point tvr and tvt contains valid ns-level
|
||||
** timestamps, possibly generated by extending the old
|
||||
** us-level timestamps
|
||||
*/
|
||||
DPRINTF(2, ("%s: SHM type 1 sample\n",
|
||||
refnumtoa(&peer->srcadr)));
|
||||
break;
|
||||
/* query the segment, atomically */
|
||||
status = shm_query(shm, &shm_stat);
|
||||
|
||||
switch (status) {
|
||||
case OK:
|
||||
DPRINTF(2, ("%s: SHM type %d sample\n",
|
||||
refnumtoa(&peer->srcadr), shm_stat.mode));
|
||||
break;
|
||||
case NO_SEGMENT:
|
||||
/* should never happen, but is harmless */
|
||||
return;
|
||||
case NOT_READY:
|
||||
DPRINTF(1, ("%s: SHM not ready\n",refnumtoa(&peer->srcadr)));
|
||||
up->notready++;
|
||||
return;
|
||||
case BAD_MODE:
|
||||
DPRINTF(1, ("%s: SHM type blooper, mode=%d\n",
|
||||
refnumtoa(&peer->srcadr), shm->mode));
|
||||
up->bad++;
|
||||
msyslog (LOG_ERR, "SHM: bad mode found in shared memory: %d",
|
||||
shm->mode);
|
||||
return;
|
||||
case CLASH:
|
||||
DPRINTF(1, ("%s: type 1 access clash\n",
|
||||
refnumtoa(&peer->srcadr)));
|
||||
msyslog (LOG_NOTICE, "SHM: access clash in shared memory");
|
||||
up->clash++;
|
||||
return;
|
||||
default:
|
||||
DPRINTF(1, ("%s: SHM type blooper, mode=%d\n",
|
||||
refnumtoa(&peer->srcadr), shm->mode));
|
||||
up->bad++;
|
||||
msyslog (LOG_ERR, "SHM: bad mode found in shared memory: %d",
|
||||
shm->mode);
|
||||
return;
|
||||
DPRINTF(1, ("%s: internal error, unknown SHM fetch status\n",
|
||||
refnumtoa(&peer->srcadr)));
|
||||
msyslog (LOG_NOTICE, "internal error, unknown SHM fetch status");
|
||||
up->bad++;
|
||||
return;
|
||||
}
|
||||
shm->valid = 0;
|
||||
|
||||
|
||||
/* format the last time code in human-readable form into
|
||||
* 'pp->a_lastcode'. Someone claimed: "NetBSD has incompatible
|
||||
@ -489,7 +589,7 @@ shm_timer(
|
||||
* around that potential problem. BTW, simply casting a pointer
|
||||
* is a receipe for disaster on some architectures.
|
||||
*/
|
||||
tt = (time_t)tvt.tv_sec;
|
||||
tt = (time_t)shm_stat.tvt.tv_sec;
|
||||
ts = time_to_vint64(&tt);
|
||||
ntpcal_time_to_date(&cd, &ts);
|
||||
|
||||
@ -498,12 +598,11 @@ shm_timer(
|
||||
"%04u-%02u-%02uT%02u:%02u:%02u.%09ldZ",
|
||||
cd.year, cd.month, cd.monthday,
|
||||
cd.hour, cd.minute, cd.second,
|
||||
(long)tvt.tv_nsec);
|
||||
(long)shm_stat.tvt.tv_nsec);
|
||||
pp->lencode = (c < sizeof(pp->a_lastcode)) ? c : 0;
|
||||
|
||||
/* check 1: age control of local time stamp */
|
||||
time(&now);
|
||||
tt = now - tvr.tv_sec;
|
||||
tt = shm_stat.tvc.tv_sec - shm_stat.tvr.tv_sec;
|
||||
if (tt < 0 || tt > up->max_delay) {
|
||||
DPRINTF(1, ("%s:SHM stale/bad receive time, delay=%llds\n",
|
||||
refnumtoa(&peer->srcadr), (long long)tt));
|
||||
@ -514,7 +613,7 @@ shm_timer(
|
||||
}
|
||||
|
||||
/* check 2: delta check */
|
||||
tt = tvr.tv_sec - tvt.tv_sec - (tvr.tv_nsec < tvt.tv_nsec);
|
||||
tt = shm_stat.tvr.tv_sec - shm_stat.tvt.tv_sec - (shm_stat.tvr.tv_nsec < shm_stat.tvt.tv_nsec);
|
||||
if (tt < 0)
|
||||
tt = -tt;
|
||||
if (up->max_delta > 0 && tt > up->max_delta) {
|
||||
@ -529,10 +628,10 @@ shm_timer(
|
||||
/* if we really made it to this point... we're winners! */
|
||||
DPRINTF(2, ("%s: SHM feeding data\n",
|
||||
refnumtoa(&peer->srcadr)));
|
||||
tsrcv = tspec_stamp_to_lfp(tvr);
|
||||
tsref = tspec_stamp_to_lfp(tvt);
|
||||
pp->leap = shm->leap;
|
||||
peer->precision = shm->precision;
|
||||
tsrcv = tspec_stamp_to_lfp(shm_stat.tvr);
|
||||
tsref = tspec_stamp_to_lfp(shm_stat.tvt);
|
||||
pp->leap = shm_stat.leap;
|
||||
peer->precision = shm_stat.precision;
|
||||
refclock_process_offset(pp, tsref, tsrcv, pp->fudgetime1);
|
||||
up->good++;
|
||||
}
|
||||
|
@ -240,7 +240,7 @@ true_debug(struct peer *peer, const char *fmt, ...)
|
||||
"/tmp/true%d.debug", up->unit);
|
||||
fd = open(filename, O_CREAT | O_WRONLY | O_EXCL,
|
||||
0600);
|
||||
if (fd >= 0 && (up->debug = fdopen(fd, "r+"))) {
|
||||
if (fd >= 0 && (up->debug = fdopen(fd, "w"))) {
|
||||
#ifdef HAVE_SETVBUF
|
||||
static char buf[BUFSIZ];
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -21,6 +20,61 @@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -40,10 +94,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = ntpdate$(EXEEXT)
|
||||
DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(top_srcdir)/bincheck.mf \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf
|
||||
subdir = ntpdate
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
@ -75,6 +125,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -84,6 +135,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -97,9 +150,22 @@ am__DEPENDENCIES_1 =
|
||||
ntpdate_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
AM_V_lt = $(am__v_lt_$(V))
|
||||
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/sntp/libevent/build-aux/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -110,27 +176,49 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_$(V))
|
||||
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = ntpdate.c
|
||||
DIST_SOURCES = ntpdate.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/bincheck.mf \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/depcomp README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -181,6 +269,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -297,6 +386,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -429,7 +519,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/bincheck.mf $(top_sr
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ntpdate/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign ntpdate/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -438,6 +527,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/sntp/check-libntp.mf $(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@ -449,14 +539,19 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__aclocal_m4_deps):
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -477,7 +572,8 @@ uninstall-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
||||
@ -492,14 +588,19 @@ clean-binPROGRAMS:
|
||||
rm -f $$list
|
||||
install-libexecPROGRAMS: $(libexec_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)"
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -520,7 +621,8 @@ uninstall-libexecPROGRAMS:
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
|
||||
@ -535,14 +637,19 @@ clean-libexecPROGRAMS:
|
||||
rm -f $$list
|
||||
install-sbinPROGRAMS: $(sbin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -563,7 +670,8 @@ uninstall-sbinPROGRAMS:
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
|
||||
@ -576,7 +684,8 @@ clean-sbinPROGRAMS:
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
ntpdate$(EXEEXT): $(ntpdate_OBJECTS) $(ntpdate_DEPENDENCIES)
|
||||
|
||||
ntpdate$(EXEEXT): $(ntpdate_OBJECTS) $(ntpdate_DEPENDENCIES) $(EXTRA_ntpdate_DEPENDENCIES)
|
||||
@rm -f ntpdate$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(ntpdate_OBJECTS) $(ntpdate_LDADD) $(LIBS)
|
||||
|
||||
@ -591,26 +700,23 @@ distclean-compile:
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -618,26 +724,15 @@ mostlyclean-libtool:
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -649,15 +744,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -666,6 +757,21 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
@ -719,10 +825,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -813,22 +924,25 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libexecPROGRAMS \
|
||||
|
||||
.MAKE: all check install install-am install-exec-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libexecPROGRAMS clean-libtool \
|
||||
clean-sbinPROGRAMS ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-exec-hook \
|
||||
install-html install-html-am install-info install-info-am \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
|
||||
clean-binPROGRAMS clean-generic clean-libexecPROGRAMS \
|
||||
clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am \
|
||||
distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-binPROGRAMS \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-exec-hook install-html \
|
||||
install-html-am install-info install-info-am \
|
||||
install-libexecPROGRAMS install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-sbinPROGRAMS install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-libexecPROGRAMS uninstall-sbinPROGRAMS
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
$(PROGRAMS): $(LDADD)
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@ -22,6 +21,61 @@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@ -41,11 +95,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = ntpdc$(EXEEXT) ntpdc-layout$(EXEEXT)
|
||||
DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/nl.pl.in \
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/check-libopts.mf \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf
|
||||
subdir = ntpdc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
@ -77,6 +126,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_prog_cc.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_rlimit.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_sntp.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_unitytest.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \
|
||||
$(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \
|
||||
$(top_srcdir)/sntp/m4/openldap-thread-check.m4 \
|
||||
@ -86,6 +136,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \
|
||||
$(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = nl.pl
|
||||
@ -102,12 +154,25 @@ ntpdc_DEPENDENCIES = version.o $(am__DEPENDENCIES_1) \
|
||||
../libntp/libntp.a $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1)
|
||||
AM_V_lt = $(am__v_lt_$(V))
|
||||
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
ntpdc_layout_SOURCES = ntpdc-layout.c
|
||||
ntpdc_layout_OBJECTS = ntpdc-layout.$(OBJEXT)
|
||||
ntpdc_layout_DEPENDENCIES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/sntp/libevent/build-aux/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -118,24 +183,25 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_$(V))
|
||||
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_$(V))
|
||||
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(ntpdc_SOURCES) ntpdc-layout.c
|
||||
DIST_SOURCES = $(ntpdc_SOURCES) ntpdc-layout.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
@ -157,14 +223,42 @@ am__nobase_list = $(am__nobase_strip_setup); \
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
man1dir = $(mandir)/man1
|
||||
man8dir = $(mandir)/man8
|
||||
NROFF = nroff
|
||||
MANS = $(man1_MANS) $(man8_MANS) $(man_MANS)
|
||||
DATA = $(html_DATA) $(noinst_DATA)
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/nl.pl.in \
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/check-libopts.mf \
|
||||
$(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf \
|
||||
$(top_srcdir)/sntp/check-libntp.mf \
|
||||
$(top_srcdir)/sntp/libevent/build-aux/depcomp README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
@ -215,6 +309,7 @@ GTEST_CXXFLAGS = @GTEST_CXXFLAGS@
|
||||
GTEST_LDFLAGS = @GTEST_LDFLAGS@
|
||||
GTEST_LIBS = @GTEST_LIBS@
|
||||
HAVE_INLINE = @HAVE_INLINE@
|
||||
HAVE_LEAPSMEARINTERVAL = @HAVE_LEAPSMEARINTERVAL@
|
||||
HAVE_RLIMIT_MEMLOCK = @HAVE_RLIMIT_MEMLOCK@
|
||||
HAVE_RLIMIT_STACK = @HAVE_RLIMIT_STACK@
|
||||
INSTALL = @INSTALL@
|
||||
@ -331,6 +426,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_NET_SNMP_CONFIG = @PATH_NET_SNMP_CONFIG@
|
||||
PATH_PERL = @PATH_PERL@
|
||||
PATH_RUBY = @PATH_RUBY@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PATH_TEST = @PATH_TEST@
|
||||
PERLLIBDIR = @PERLLIBDIR@
|
||||
@ -511,7 +607,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/bincheck.mf $(top_sr
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ntpdc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign ntpdc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -520,6 +615,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(top_srcdir)/bincheck.mf $(top_srcdir)/check-libopts.mf $(top_srcdir)/sntp/check-libntp.mf $(top_srcdir)/depsver.mf $(top_srcdir)/includes.mf $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@ -533,14 +629,19 @@ nl.pl: $(top_builddir)/config.status $(srcdir)/nl.pl.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -561,7 +662,8 @@ uninstall-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
||||
@ -576,14 +678,19 @@ clean-binPROGRAMS:
|
||||
rm -f $$list
|
||||
install-libexecPROGRAMS: $(libexec_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)"
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -604,7 +711,8 @@ uninstall-libexecPROGRAMS:
|
||||
@list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
|
||||
@ -619,14 +727,19 @@ clean-libexecPROGRAMS:
|
||||
rm -f $$list
|
||||
install-sbinPROGRAMS: $(sbin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p || test -f $$p1; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
while read p p1; do if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
sed -e 'p;s,.*/,,;n;h' \
|
||||
-e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
@ -647,7 +760,8 @@ uninstall-sbinPROGRAMS:
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
-e 's/$$/$(EXEEXT)/' \
|
||||
`; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
|
||||
@ -660,10 +774,12 @@ clean-sbinPROGRAMS:
|
||||
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
ntpdc$(EXEEXT): $(ntpdc_OBJECTS) $(ntpdc_DEPENDENCIES)
|
||||
|
||||
ntpdc$(EXEEXT): $(ntpdc_OBJECTS) $(ntpdc_DEPENDENCIES) $(EXTRA_ntpdc_DEPENDENCIES)
|
||||
@rm -f ntpdc$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(ntpdc_OBJECTS) $(ntpdc_LDADD) $(LIBS)
|
||||
ntpdc-layout$(EXEEXT): $(ntpdc_layout_OBJECTS) $(ntpdc_layout_DEPENDENCIES)
|
||||
|
||||
ntpdc-layout$(EXEEXT): $(ntpdc_layout_OBJECTS) $(ntpdc_layout_DEPENDENCIES) $(EXTRA_ntpdc_layout_DEPENDENCIES)
|
||||
@rm -f ntpdc-layout$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(ntpdc_layout_OBJECTS) $(ntpdc_layout_LDADD) $(LIBS)
|
||||
|
||||
@ -681,26 +797,23 @@ distclean-compile:
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -709,11 +822,18 @@ clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-man1: $(man1_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
|
||||
@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
|
||||
{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.1[a-z]*$$/p'; \
|
||||
@list1='$(man1_MANS)'; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man1dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.1[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
@ -742,16 +862,21 @@ uninstall-man1:
|
||||
sed -n '/\.1[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
test -z "$$files" || { \
|
||||
echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
|
||||
dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
|
||||
install-man8: $(man8_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
|
||||
@list='$(man8_MANS)'; test -n "$(man8dir)" || exit 0; \
|
||||
{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.8[a-z]*$$/p'; \
|
||||
@list1='$(man8_MANS)'; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man8dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.8[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
@ -780,13 +905,14 @@ uninstall-man8:
|
||||
sed -n '/\.8[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
test -z "$$files" || { \
|
||||
echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(man8dir)" && rm -f $$files; }
|
||||
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
|
||||
install-htmlDATA: $(html_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
|
||||
@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
@ -800,30 +926,17 @@ uninstall-htmlDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
test -n "$$files" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(htmldir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(htmldir)" && rm -f $$files
|
||||
dir='$(DESTDIR)$(htmldir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@ -835,15 +948,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
ctags: ctags-am
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@ -852,24 +961,26 @@ GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(MANS)'; if test -n "$$list"; then \
|
||||
list=`for p in $$list; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
|
||||
if test -n "$$list" && \
|
||||
grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
|
||||
echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
|
||||
grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
|
||||
echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
|
||||
echo " typically \`make maintainer-clean' will remove them" >&2; \
|
||||
exit 1; \
|
||||
else :; fi; \
|
||||
else :; fi
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -918,10 +1029,15 @@ install-am: all-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
@ -1014,25 +1130,27 @@ uninstall-man: uninstall-man1 uninstall-man8
|
||||
|
||||
.MAKE: all check install install-am install-exec-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libexecPROGRAMS clean-libtool \
|
||||
clean-sbinPROGRAMS ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-data install-data-am \
|
||||
install-data-local install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-exec-hook install-html install-html-am \
|
||||
install-htmlDATA install-info install-info-am \
|
||||
install-libexecPROGRAMS install-man install-man1 install-man8 \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-sbinPROGRAMS install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
|
||||
clean-binPROGRAMS clean-generic clean-libexecPROGRAMS \
|
||||
clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am \
|
||||
distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-binPROGRAMS \
|
||||
install-data install-data-am install-data-local install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-exec-hook \
|
||||
install-html install-html-am install-htmlDATA install-info \
|
||||
install-info-am install-libexecPROGRAMS install-man \
|
||||
install-man1 install-man8 install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-sbinPROGRAMS install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-htmlDATA uninstall-libexecPROGRAMS uninstall-man \
|
||||
uninstall-man1 uninstall-man8 uninstall-sbinPROGRAMS
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
install-data-local: install-html
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
#
|
||||
# EDIT THIS FILE WITH CAUTION (invoke-ntpdc.texi)
|
||||
#
|
||||
# It has been AutoGen-ed April 7, 2015 at 04:26:32 AM by AutoGen 5.18.5pre4
|
||||
# It has been AutoGen-ed June 29, 2015 at 04:31:05 PM by AutoGen 5.18.5
|
||||
# From the definitions ntpdc-opts.def
|
||||
# and the template file agtexi-cmd.tpl
|
||||
@end ignore
|
||||
@ -76,7 +76,7 @@ with a status code of 0.
|
||||
|
||||
@exampleindent 0
|
||||
@example
|
||||
ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p2
|
||||
ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p3
|
||||
Usage: ntpdc [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [ host ...]
|
||||
Flg Arg Option-Name Description
|
||||
-4 no ipv4 Force IPv4 DNS name resolution
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user