summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/ntpdate
diff options
context:
space:
mode:
authorroberto <roberto@FreeBSD.org>2004-07-20 15:01:56 +0000
committerroberto <roberto@FreeBSD.org>2004-07-20 15:01:56 +0000
commit118e757284cbb8fc4f43a713e892b41504b50a5f (patch)
tree528d12dda44ebdc3ffcc38050f159ac553a69c17 /contrib/ntp/ntpdate
parenta85d9ae25e8e8696677bc30feb6eaf7fc150e529 (diff)
downloadFreeBSD-src-118e757284cbb8fc4f43a713e892b41504b50a5f.zip
FreeBSD-src-118e757284cbb8fc4f43a713e892b41504b50a5f.tar.gz
Virgin import of ntpd 4.2.0
Diffstat (limited to 'contrib/ntp/ntpdate')
-rw-r--r--contrib/ntp/ntpdate/Makefile.am8
-rw-r--r--contrib/ntp/ntpdate/Makefile.in293
-rw-r--r--contrib/ntp/ntpdate/ntpdate.c339
-rw-r--r--contrib/ntp/ntpdate/ntpdate.h7
4 files changed, 440 insertions, 207 deletions
diff --git a/contrib/ntp/ntpdate/Makefile.am b/contrib/ntp/ntpdate/Makefile.am
index f4152b0..bfe3fea 100644
--- a/contrib/ntp/ntpdate/Makefile.am
+++ b/contrib/ntp/ntpdate/Makefile.am
@@ -1,10 +1,12 @@
#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = ntpdate ntptimeset
+#bin_PROGRAMS = ntpdate ntptimeset
+bin_PROGRAMS = ntpdate
+EXTRA_PROGRAMS = ntptimeset
ntptimeset_SOURCES = ntptimeset.c ntptime_config.c
INCLUDES = -I$(top_srcdir)/include
# LDADD might need RESLIB and ADJLIB
-LDADD = version.o ../libntp/libntp.a @LIBRSAREF@
+LDADD = version.o ../libntp/libntp.a
DISTCLEANFILES = .version version.c stamp-v
noinst_HEADERS = ntpdate.h
#EXTRA_DIST = ntpdate.mak
@@ -15,6 +17,6 @@ $(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
-version.o: $(ntpdate_OBJECTS) ../libntp/libntp.a @LIBRSAREF@ Makefile
+version.o: $(ntpdate_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpdate
$(COMPILE) -c version.c
diff --git a/contrib/ntp/ntpdate/Makefile.in b/contrib/ntp/ntpdate/Makefile.in
index f215cde..391f494 100644
--- a/contrib/ntp/ntpdate/Makefile.in
+++ b/contrib/ntp/ntpdate/Makefile.in
@@ -1,6 +1,7 @@
-# Makefile.in generated automatically by automake 1.5 from Makefile.am.
+# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -13,82 +14,79 @@
@SET_MAKE@
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
-
-SHELL = @SHELL@
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
-transform = @program_transform_name@
+transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-build_alias = @build_alias@
build_triplet = @build@
-host_alias = @host_alias@
host_triplet = @host@
-target_alias = @target_alias@
target_triplet = @target@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
-AUTOKEY = @AUTOKEY@
+ARLIB_DIR = @ARLIB_DIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
+CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
+DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
LIBPARSE = @LIBPARSE@
-LIBRSAREF = @LIBRSAREF@
+LIBS = @LIBS@
LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
+MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
-MAKE_LIBRSAREF = @MAKE_LIBRSAREF@
+MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_GENKEYS = @MAKE_NTP_GENKEYS@
+MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
+MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
OBJEXT = @OBJEXT@
@@ -96,36 +94,84 @@ OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
OPENSSL_LIB = @OPENSSL_LIB@
PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_PERL = @PATH_PERL@
+PATH_SEPARATOR = @PATH_SEPARATOR@
PATH_SH = @PATH_SH@
PROPDELAY = @PROPDELAY@
RANLIB = @RANLIB@
-RSADIR = @RSADIR@
-RSAOBJS = @RSAOBJS@
-RSAREF = @RSAREF@
-RSASRCS = @RSASRCS@
+READLINE_LIBS = @READLINE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
+am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = ntpdate ntptimeset
+#bin_PROGRAMS = ntpdate ntptimeset
+bin_PROGRAMS = ntpdate
+EXTRA_PROGRAMS = ntptimeset
ntptimeset_SOURCES = ntptimeset.c ntptime_config.c
INCLUDES = -I$(top_srcdir)/include
# LDADD might need RESLIB and ADJLIB
-LDADD = version.o ../libntp/libntp.a @LIBRSAREF@
+LDADD = version.o ../libntp/libntp.a
DISTCLEANFILES = .version version.c stamp-v
noinst_HEADERS = ntpdate.h
#EXTRA_DIST = ntpdate.mak
ETAGS_ARGS = Makefile.am
subdir = ntpdate
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
-bin_PROGRAMS = ntpdate$(EXEEXT) ntptimeset$(EXEEXT)
+EXTRA_PROGRAMS = ntptimeset$(EXEEXT)
+bin_PROGRAMS = ntpdate$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS)
ntpdate_SOURCES = ntpdate.c
@@ -140,15 +186,12 @@ ntptimeset_LDADD = $(LDADD)
ntptimeset_DEPENDENCIES = version.o ../libntp/libntp.a
ntptimeset_LDFLAGS =
-DEFS = @DEFS@
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
depcomp = $(SHELL) $(top_srcdir)/depcomp
-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/ntpdate$U.Po \
-@AMDEP_TRUE@ $(DEPDIR)/ntptime_config$U.Po \
-@AMDEP_TRUE@ $(DEPDIR)/ntptimeset$U.Po
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ntpdate$U.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ntptime_config$U.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ntptimeset$U.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
@@ -156,7 +199,8 @@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
DIST_SOURCES = ntpdate.c $(ntptimeset_SOURCES)
HEADERS = $(noinst_HEADERS)
-DIST_COMMON = README $(noinst_HEADERS) Makefile.am Makefile.in
+DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
+ Makefile.am
SOURCES = ntpdate.c $(ntptimeset_SOURCES)
all: all-am
@@ -167,9 +211,8 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu ntpdate/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && \
- CONFIG_HEADERS= CONFIG_LINKS= \
- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@@ -177,16 +220,16 @@ install-binPROGRAMS: $(bin_PROGRAMS)
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
; then \
- f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f; \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
+ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
- f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
rm -f $(DESTDIR)$(bindir)/$$f; \
done
@@ -211,84 +254,122 @@ ANSI2KNR = ../util/ansi2knr
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
mostlyclean-kr:
- -rm -f *_.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ntpdate$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ntptime_config$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ntptimeset$U.Po@am__quote@
+ -test "$U" = "" || rm -f *_.c
-distclean-depend:
- -rm -rf $(DEPDIR)
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdate$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntptime_config$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntptimeset$U.Po@am__quote@
.c.o:
-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$<
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
.c.obj:
-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- $(COMPILE) -c `cygpath -w $<`
-CCDEPMODE = @CCDEPMODE@
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
ntpdate_.c: ntpdate.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdate.c; then echo $(srcdir)/ntpdate.c; else echo ntpdate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ntpdate_.c || rm -f ntpdate_.c
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdate.c; then echo $(srcdir)/ntpdate.c; else echo ntpdate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntptime_config_.c: ntptime_config.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntptime_config.c; then echo $(srcdir)/ntptime_config.c; else echo ntptime_config.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ntptime_config_.c || rm -f ntptime_config_.c
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntptime_config.c; then echo $(srcdir)/ntptime_config.c; else echo ntptime_config.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntptimeset_.c: ntptimeset.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntptimeset.c; then echo $(srcdir)/ntptimeset.c; else echo ntptimeset.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ntptimeset_.c || rm -f ntptimeset_.c
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntptimeset.c; then echo $(srcdir)/ntptimeset.c; else echo ntptimeset.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntpdate_.$(OBJEXT) ntptime_config_.$(OBJEXT) ntptimeset_.$(OBJEXT) : \
$(ANSI2KNR)
uninstall-info-am:
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(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; } \
END { for (i in files) print i; }'`; \
- mkid -fID $$unique $(LISP)
+ mkid -fID $$unique
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP)
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
GTAGS:
- here=`CDPATH=: && cd $(top_builddir) && pwd` \
+ here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
-
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = ..
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- $(mkinstalldirs) "$(distdir)/$$dir"; \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
fi; \
if test -d $$d/$$file; then \
- cp -pR $$d/$$file $(distdir) \
- || exit 1; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
@@ -301,7 +382,6 @@ all-am: Makefile $(PROGRAMS) $(HEADERS)
installdirs:
$(mkinstalldirs) $(DESTDIR)$(bindir)
-
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -313,6 +393,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -320,7 +401,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+ -rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@@ -331,9 +412,11 @@ clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-depend \
- distclean-generic distclean-tags
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
dvi: dvi-am
@@ -354,6 +437,8 @@ install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -361,18 +446,26 @@ mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
-.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic distclean distclean-compile distclean-depend \
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am info \
info-am install install-am install-binPROGRAMS install-data \
install-data-am install-exec install-exec-am install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-kr tags uninstall uninstall-am \
- uninstall-binPROGRAMS uninstall-info-am
+ mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
+ uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
$(PROGRAMS): $(LDADD)
@@ -380,7 +473,7 @@ $(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
-version.o: $(ntpdate_OBJECTS) ../libntp/libntp.a @LIBRSAREF@ Makefile
+version.o: $(ntpdate_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpdate
$(COMPILE) -c version.c
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/contrib/ntp/ntpdate/ntpdate.c b/contrib/ntp/ntpdate/ntpdate.c
index 24e2bc8..398d194 100644
--- a/contrib/ntp/ntpdate/ntpdate.c
+++ b/contrib/ntp/ntpdate/ntpdate.c
@@ -46,6 +46,12 @@
# include <sys/resource.h>
#endif /* HAVE_SYS_RESOURCE_H */
+#include <arpa/inet.h>
+
+#ifdef __QNXNTO__
+# include "adjtime.h"
+#endif
+
#ifdef SYS_VXWORKS
# include "ioLib.h"
# include "sockLib.h"
@@ -57,10 +63,17 @@ struct timeval timeout = {0,0};
struct timeval timeout = {60,0};
#endif
+#ifdef HAVE_NETINFO
+#include <netinfo/ni.h>
+#endif
+
#include "recvbuff.h"
#ifdef SYS_WINNT
-# define TARGET_RESOLUTION 1 /* Try for 1-millisecond accuracy
+#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+#define EPFNOSUPPORT WSAEPFNOSUPPORT
+#define TARGET_RESOLUTION 1 /* Try for 1-millisecond accuracy
on Windows NT timers. */
#pragma comment(lib, "winmm")
#endif /* SYS_WINNT */
@@ -98,12 +111,18 @@ volatile int debug = 0;
/*
* File descriptor masks etc. for call to select
*/
-int fd;
+
+int ai_fam_templ;
+int nbsock;
+SOCKET fd[MAX_AF]; /* support up to 2 sockets */
+int fd_family[MAX_AF]; /* to remember the socket family */
#ifdef HAVE_POLL_H
-struct pollfd fdmask;
+struct pollfd fdmask[MAX_AF];
#else
fd_set fdmask;
+int maxfd;
#endif
+int polltest = 0;
/*
* Initializing flag. All async routines watch this and only do their
@@ -184,6 +203,7 @@ int always_step = 0;
int never_step = 0;
int ntpdatemain P((int, char **));
+
static void transmit P((struct server *));
static void receive P((struct recvbuf *));
static void server_data P((struct server *, s_fp, l_fp *, u_fp));
@@ -191,20 +211,19 @@ static void clock_filter P((struct server *));
static struct server *clock_select P((void));
static int clock_adjust P((void));
static void addserver P((char *));
-static struct server *findserver P((struct sockaddr_in *));
+static struct server *findserver P((struct sockaddr_storage *));
void timer P((void));
static void init_alarm P((void));
#ifndef SYS_WINNT
static RETSIGTYPE alarming P((int));
#endif /* SYS_WINNT */
static void init_io P((void));
-static void sendpkt P((struct sockaddr_in *, struct pkt *, int));
+static void sendpkt P((struct sockaddr_storage *, struct pkt *, int));
void input_handler P((void));
static int l_adj_systime P((l_fp *));
static int l_step_systime P((l_fp *));
-static int getnetnum P((const char *, u_int32 *));
static void printserver P((struct server *, FILE *));
#ifdef SYS_WINNT
@@ -305,6 +324,8 @@ ntpdatemain (
l_fp tmp;
int errflg;
int c;
+ int nfound;
+
#ifdef HAVE_NETINFO
ni_namelist *netinfoservers;
#endif
@@ -313,7 +334,7 @@ ntpdatemain (
wVersionRequested = MAKEWORD(1,1);
if (WSAStartup(wVersionRequested, &wsaData)) {
- msyslog(LOG_ERR, "No useable winsock.dll: %m");
+ netsyslog(LOG_ERR, "No useable winsock.dll: %m");
exit(1);
}
@@ -336,9 +357,15 @@ ntpdatemain (
/*
* Decode argument list
*/
- while ((c = ntp_getopt(argc, argv, "a:bBde:k:o:p:qr:st:uv")) != EOF)
+ while ((c = ntp_getopt(argc, argv, "46a:bBde:k:o:p:qr:st:uv")) != EOF)
switch (c)
{
+ case '4':
+ ai_fam_templ = AF_INET;
+ break;
+ case '6':
+ ai_fam_templ = AF_INET6;
+ break;
case 'a':
c = atoi(ntp_optarg);
sys_authenticate = 1;
@@ -428,8 +455,8 @@ ntpdatemain (
if (errflg) {
(void) fprintf(stderr,
- "usage: %s [-bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-r rate] [-t timeo] server ...\n",
- progname);
+ "usage: %s [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-r rate] [-t timeo] server ...\n",
+ progname);
exit(2);
}
@@ -538,17 +565,20 @@ ntpdatemain (
}
#endif /* SYS_WINNT */
- initializing = 0;
+
+ initializing = 0;
was_alarmed = 0;
rbuflist = (struct recvbuf *)0;
+
while (complete_servers < sys_numservers) {
#ifdef HAVE_POLL_H
- struct pollfd rdfdes;
+ struct pollfd* rdfdes;
+ rdfdes = fdmask;
#else
fd_set rdfdes;
+ rdfdes = fdmask;
#endif
- int nfound;
if (alarm_flag) { /* alarmed? */
was_alarmed = 1;
@@ -560,11 +590,11 @@ ntpdatemain (
/*
* Nothing to do. Wait for something.
*/
- rdfdes = fdmask;
#ifdef HAVE_POLL_H
- nfound = poll(&rdfdes, 1, timeout.tv_sec * 1000);
+ nfound = poll(rdfdes, (unsigned int)nbsock, timeout.tv_sec * 1000);
+
#else
- nfound = select(fd+1, &rdfdes, (fd_set *)0,
+ nfound = select(maxfd, &rdfdes, (fd_set *)0,
(fd_set *)0, &timeout);
#endif
if (nfound > 0)
@@ -579,7 +609,7 @@ ntpdatemain (
#ifndef SYS_WINNT
if (errno != EINTR)
#endif
- msyslog(LOG_ERR,
+ netsyslog(LOG_ERR,
#ifdef HAVE_POLL_H
"poll() error: %m"
#else
@@ -588,7 +618,7 @@ ntpdatemain (
);
} else {
#ifndef SYS_VXWORKS
- msyslog(LOG_DEBUG,
+ netsyslog(LOG_DEBUG,
#ifdef HAVE_POLL_H
"poll(): nfound = %d, error: %m",
#else
@@ -639,6 +669,7 @@ ntpdatemain (
close (fd);
timer_delete(ntpdate_timerid);
#endif
+
return clock_adjust();
}
@@ -656,7 +687,7 @@ transmit(
struct pkt xpkt;
if (debug)
- printf("transmit(%s)\n", ntoa(&server->srcadr));
+ printf("transmit(%s)\n", stoa(&(server->srcadr)));
if (server->filter_nextpt < server->xmtcnt) {
l_fp ts;
@@ -711,14 +742,14 @@ transmit(
if (debug > 1)
printf("transmit auth to %s\n",
- ntoa(&(server->srcadr)));
+ stoa(&(server->srcadr)));
} else {
get_systime(&(server->xmt));
HTONL_FP(&server->xmt, &xpkt.xmt);
sendpkt(&(server->srcadr), &xpkt, LEN_PKT_NOMAC);
if (debug > 1)
- printf("transmit to %s\n", ntoa(&(server->srcadr)));
+ printf("transmit to %s\n", stoa(&(server->srcadr)));
}
/*
@@ -748,7 +779,7 @@ receive(
int is_authentic;
if (debug)
- printf("receive(%s)\n", ntoa(&rbufp->recv_srcadr));
+ printf("receive(%s)\n", stoa(&rbufp->recv_srcadr));
/*
* Check to see if the packet basically looks like something
* intended for us.
@@ -911,7 +942,7 @@ server_data(
u_fp e
)
{
- register int i;
+ u_short i;
i = server->filter_nextpt;
if (i < NTP_SHIFT) {
@@ -919,7 +950,7 @@ server_data(
server->filter_offset[i] = *c;
server->filter_soffset[i] = LFPTOFP(c);
server->filter_error[i] = e;
- server->filter_nextpt = i + 1;
+ server->filter_nextpt = (u_short)(i + 1);
}
}
@@ -1254,14 +1285,14 @@ clock_adjust(void)
if (dostep) {
if (simple_query || l_step_systime(&server->offset)) {
msyslog(LOG_NOTICE, "step time server %s offset %s sec",
- ntoa(&server->srcadr),
+ stoa(&server->srcadr),
lfptoa(&server->offset, 6));
}
} else {
#if !defined SYS_WINNT && !defined SYS_CYGWIN32
if (simple_query || l_adj_systime(&server->offset)) {
msyslog(LOG_NOTICE, "adjust time server %s offset %s sec",
- ntoa(&server->srcadr),
+ stoa(&server->srcadr),
lfptoa(&server->offset, 6));
}
#else
@@ -1293,20 +1324,39 @@ addserver(
)
{
register struct server *server;
- u_int32 netnum;
-
- if (!getnetnum(serv, &netnum)) {
+ /* Address infos structure to store result of getaddrinfo */
+ struct addrinfo *addrResult;
+ /* Address infos structure to store hints for getaddrinfo */
+ struct addrinfo hints;
+ /* Error variable for getaddrinfo */
+ int error;
+ /* Service name */
+ char service[5];
+ strcpy(service, "ntp");
+
+ /* Get host address. Looking for UDP datagram connection. */
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = ai_fam_templ;
+ hints.ai_socktype = SOCK_DGRAM;
+
+ printf("Looking for host %s and service %s\n", serv, service);
+
+ error = getaddrinfo(serv, service, &hints, &addrResult);
+ if (error != 0) {
+ fprintf(stderr, "Error : %s\n", gai_strerror(error));
msyslog(LOG_ERR, "can't find host %s\n", serv);
return;
}
+ else {
+ fprintf(stderr, "host found : %s\n", stohost((struct sockaddr_storage*)addrResult->ai_addr));
+ }
server = (struct server *)emalloc(sizeof(struct server));
memset((char *)server, 0, sizeof(struct server));
- server->srcadr.sin_family = AF_INET;
- server->srcadr.sin_addr.s_addr = netnum;
- server->srcadr.sin_port = htons(NTP_PORT);
-
+ /* For now we only get the first returned server of the addrinfo list */
+ memset(&(server->srcadr), 0, sizeof(struct sockaddr_storage));
+ memcpy(&(server->srcadr), addrResult->ai_addr, addrResult->ai_addrlen);
server->event_time = ++sys_numservers;
if (sys_servers == NULL)
sys_servers = server;
@@ -1322,47 +1372,56 @@ addserver(
/*
* findserver - find a server in the list given its address
+ * ***(For now it isn't totally AF-Independant, to check later..)
*/
static struct server *
findserver(
- struct sockaddr_in *addr
+ struct sockaddr_storage *addr
)
{
- register u_int32 netnum;
struct server *server;
struct server *mc_server;
mc_server = NULL;
- if (htons(addr->sin_port) != NTP_PORT)
+ if (htons(((struct sockaddr_in*)addr)->sin_port) != NTP_PORT)
return 0;
- netnum = addr->sin_addr.s_addr;
for (server = sys_servers; server != NULL;
server = server->next_server) {
- register u_int32 servnum;
- servnum = server->srcadr.sin_addr.s_addr;
- if (netnum == servnum)
+ if (memcmp(addr, &server->srcadr, SOCKLEN(addr))==0)
return server;
- if (IN_MULTICAST(ntohl(servnum)))
+ /* Multicast compatibility to verify here... I'm not sure it's working */
+ if(addr->ss_family == AF_INET) {
+ if (IN_MULTICAST(ntohl(((struct sockaddr_in*)addr)->sin_addr.s_addr)))
+ mc_server = server;
+ }
+ else {
+#ifdef AF_INET6
+ if (IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)(&server->srcadr))->sin6_addr))
mc_server = server;
+#else
+ return 0;
+#endif
+ }
}
if (mc_server != NULL) {
+
struct server *sp;
if (mc_server->event_time != 0) {
mc_server->event_time = 0;
complete_servers++;
}
+
server = (struct server *)emalloc(sizeof(struct server));
memset((char *)server, 0, sizeof(struct server));
- server->srcadr.sin_family = AF_INET;
- server->srcadr.sin_addr.s_addr = netnum;
- server->srcadr.sin_port = htons(NTP_PORT);
+ memcpy(&server->srcadr, &addr, sizeof(struct sockaddr_storage));
server->event_time = ++sys_numservers;
+
for (sp = sys_servers; sp->next_server != NULL;
sp = sp->next_server) ;
sp->next_server = server;
@@ -1485,6 +1544,7 @@ init_alarm(void)
itimer.it_interval.tv_sec = itimer.it_value.tv_sec = 0;
itimer.it_interval.tv_usec = 1000000/TIMER_HZ;
itimer.it_value.tv_usec = 1000000/(TIMER_HZ<<1);
+
setitimer(ITIMER_REAL, &itimer, (struct itimerval *)0);
# endif
#if defined SYS_CYGWIN32
@@ -1582,51 +1642,96 @@ init_alarm(void)
static void
init_io(void)
{
+ struct addrinfo *res, *ressave;
+ struct addrinfo hints;
+ char service[5];
+ int optval = 1;
+
/*
* Init buffer free list and stat counters
*/
init_recvbuff(sys_numservers + 2);
+
/*
* Open the socket
*/
+ strcpy(service, "ntp");
+
+ /*
+ * Init hints addrinfo structure
+ */
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_flags = AI_PASSIVE;
+ hints.ai_socktype = SOCK_DGRAM;
+
+ if(getaddrinfo(NULL, service, &hints, &res) != 0) {
+ msyslog(LOG_ERR, "getaddrinfo() failed: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ /* Remember the address of the addrinfo structure chain */
+ ressave = res;
+
+ /*
+ * For each structure returned, open and bind socket
+ */
+ for(nbsock = 0; (nbsock < MAX_AF) && res ; res = res->ai_next) {
/* create a datagram (UDP) socket */
- if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- msyslog(LOG_ERR, "socket() failed: %m");
+ if ((fd[nbsock] = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) < 0) {
+ if (errno == EPROTONOSUPPORT || errno == EAFNOSUPPORT ||
+ errno == EPFNOSUPPORT)
+ continue;
+ netsyslog(LOG_ERR, "socket() failed: %m");
exit(1);
/*NOTREACHED*/
}
+ /* set socket to reuse address */
+ if (setsockopt(fd[nbsock], SOL_SOCKET, SO_REUSEADDR, (void*) &optval, sizeof(optval)) < 0) {
+ netsyslog(LOG_ERR, "setsockopt() SO_REUSEADDR failed: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
+#ifdef IPV6_V6ONLY
+ /* Restricts AF_INET6 socket to IPv6 communications (see RFC 2553bis-03) */
+ if (res->ai_family == AF_INET6)
+ if (setsockopt(fd[nbsock], IPPROTO_IPV6, IPV6_V6ONLY, (void*) &optval, sizeof(optval)) < 0) {
+ netsyslog(LOG_ERR, "setsockopt() IPV6_V6ONLY failed: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
+#endif
+
+ /* Remember the socket family in fd_family structure */
+ fd_family[nbsock] = res->ai_family;
/*
* bind the socket to the NTP port
*/
if (!debug && !simple_query && !unpriv_port) {
- struct sockaddr_in addr;
-
- memset((char *)&addr, 0, sizeof addr);
- addr.sin_family = AF_INET;
- addr.sin_port = htons(NTP_PORT);
- addr.sin_addr.s_addr = htonl(INADDR_ANY);
- if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
+ if (bind(fd[nbsock], res->ai_addr, SOCKLEN(res->ai_addr)) < 0) {
#ifndef SYS_WINNT
if (errno == EADDRINUSE)
#else
if (WSAGetLastError() == WSAEADDRINUSE)
#endif /* SYS_WINNT */
- msyslog(LOG_ERR,
+ netsyslog(LOG_ERR,
"the NTP socket is in use, exiting");
else
- msyslog(LOG_ERR, "bind() fails: %m");
+ netsyslog(LOG_ERR, "bind() fails: %m");
exit(1);
}
}
#ifdef HAVE_POLL_H
- fdmask.fd = fd;
- fdmask.events = POLLIN;
+ fdmask[nbsock].fd = fd[nbsock];
+ fdmask[nbsock].events = POLLIN;
#else
- FD_ZERO(&fdmask);
- FD_SET(fd, &fdmask);
+ FD_SET(fd[nbsock], &fdmask);
+ if ((SOCKET) maxfd < fd[nbsock]+1) {
+ maxfd = fd[nbsock]+1;
+ }
#endif
/*
@@ -1637,22 +1742,22 @@ init_io(void)
{
int on = TRUE;
- if (ioctl(fd,FIONBIO, &on) == ERROR) {
- msyslog(LOG_ERR, "ioctl(FIONBIO) fails: %m");
+ if (ioctl(fd[nbsock],FIONBIO, &on) == ERROR) {
+ netsyslog(LOG_ERR, "ioctl(FIONBIO) fails: %m");
exit(1);
}
}
# else /* not SYS_VXWORKS */
# if defined(O_NONBLOCK)
- if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) {
- msyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
+ if (fcntl(fd[nbsock], F_SETFL, O_NONBLOCK) < 0) {
+ netsyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
exit(1);
/*NOTREACHED*/
}
# else /* not O_NONBLOCK */
# if defined(FNDELAY)
- if (fcntl(fd, F_SETFL, FNDELAY) < 0) {
- msyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
+ if (fcntl(fd[nbsock], F_SETFL, FNDELAY) < 0) {
+ netsyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
exit(1);
/*NOTREACHED*/
}
@@ -1662,32 +1767,51 @@ init_io(void)
# endif /* not O_NONBLOCK */
# endif /* SYS_VXWORKS */
#else /* SYS_WINNT */
- if (ioctlsocket(fd, FIONBIO, (u_long *) &on) == SOCKET_ERROR) {
- msyslog(LOG_ERR, "ioctlsocket(FIONBIO) fails: %m");
+ if (ioctlsocket(fd[nbsock], FIONBIO, (u_long *) &on) == SOCKET_ERROR) {
+ netsyslog(LOG_ERR, "ioctlsocket(FIONBIO) fails: %m");
exit(1);
}
#endif /* SYS_WINNT */
+ nbsock++;
+ }
+ freeaddrinfo(ressave);
}
-
/*
* sendpkt - send a packet to the specified destination
*/
static void
sendpkt(
- struct sockaddr_in *dest,
+ struct sockaddr_storage *dest,
struct pkt *pkt,
int len
)
{
+ int i;
int cc;
+ SOCKET sock = 0;
#ifdef SYS_WINNT
DWORD err;
#endif /* SYS_WINNT */
- cc = sendto(fd, (char *)pkt, (size_t)len, 0, (struct sockaddr *)dest,
- sizeof(struct sockaddr_in));
+ /* Find a local family compatible socket to send ntp packet to ntp server */
+ for(i = 0; (i < MAX_AF); i++) {
+ if(dest->ss_family == fd_family[i]) {
+ sock = fd[i];
+ break;
+ }
+ }
+
+ if ( sock == 0 ) {
+ netsyslog(LOG_ERR, "cannot find family compatible socket to send ntp packet");
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+ cc = sendto(sock, (char *)pkt, len, 0, (struct sockaddr *)dest,
+ SOCKLEN(dest));
+
#ifndef SYS_WINNT
if (cc == -1) {
if (errno != EWOULDBLOCK && errno != ENOBUFS)
@@ -1696,7 +1820,7 @@ sendpkt(
err = WSAGetLastError();
if (err != WSAEWOULDBLOCK && err != WSAENOBUFS)
#endif /* SYS_WINNT */
- msyslog(LOG_ERR, "sendto(%s): %m", ntoa(dest));
+ netsyslog(LOG_ERR, "sendto(%s): %m", stohost(dest));
}
}
@@ -1712,22 +1836,49 @@ input_handler(void)
struct timeval tvzero;
int fromlen;
l_fp ts;
+ int i;
#ifdef HAVE_POLL_H
- struct pollfd fds;
+ struct pollfd fds[MAX_AF];
#else
fd_set fds;
#endif
+ int fdc = 0;
/*
* Do a poll to see if we have data
*/
for (;;) {
- fds = fdmask;
tvzero.tv_sec = tvzero.tv_usec = 0;
#ifdef HAVE_POLL_H
- n = poll(&fds, 1, tvzero.tv_sec * 1000);
+ memcpy(fds, fdmask, sizeof(fdmask));
+ n = poll(fds, (unsigned int)nbsock, tvzero.tv_sec * 1000);
+
+ /*
+ * Determine which socket received data
+ */
+
+ for(i=0; i < nbsock; i++) {
+ if(fds[i].revents & POLLIN) {
+ fdc = fd[i];
+ break;
+ }
+ }
+
#else
- n = select(fd+1, &fds, (fd_set *)0, (fd_set *)0, &tvzero);
+ fds = fdmask;
+ n = select(maxfd, &fds, (fd_set *)0, (fd_set *)0, &tvzero);
+
+ /*
+ * Determine which socket received data
+ */
+
+ for(i=0; i < maxfd; i++) {
+ if(FD_ISSET(fd[i], &fds)) {
+ fdc = fd[i];
+ break;
+ }
+ }
+
#endif
/*
@@ -1739,7 +1890,7 @@ input_handler(void)
return;
else if (n == -1) {
if (errno != EINTR)
- msyslog(LOG_ERR,
+ netsyslog(LOG_ERR,
#ifdef HAVE_POLL_H
"poll() error: %m"
#else
@@ -1758,23 +1909,24 @@ input_handler(void)
if (initializing || free_recvbuffs() == 0) {
char buf[100];
+
#ifndef SYS_WINNT
- (void) read(fd, buf, sizeof buf);
+ (void) read(fdc, buf, sizeof buf);
#else
/* NT's _read does not operate on nonblocking sockets
* either recvfrom or ReadFile() has to be used here.
* ReadFile is used in [ntpd]ntp_intres() and ntpdc,
* just to be different use recvfrom() here
*/
- recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr *)0, NULL);
+ recvfrom(fdc, buf, sizeof(buf), 0, (struct sockaddr *)0, NULL);
#endif /* SYS_WINNT */
continue;
}
rb = get_free_recv_buffer();
- fromlen = sizeof(struct sockaddr_in);
- rb->recv_length = recvfrom(fd, (char *)&rb->recv_pkt,
+ fromlen = sizeof(struct sockaddr_storage);
+ rb->recv_length = recvfrom(fdc, (char *)&rb->recv_pkt,
sizeof(rb->recv_pkt), 0,
(struct sockaddr *)&rb->recv_srcadr, &fromlen);
if (rb->recv_length == -1) {
@@ -1908,25 +2060,6 @@ l_step_systime(
#endif /* SLEWALWAYS */
}
-/*
- * getnetnum - given a host name, return its net number
- */
-static int
-getnetnum(
- const char *host,
- u_int32 *num
- )
-{
- struct hostent *hp;
-
- if (decodenetnum(host, num)) {
- return 1;
- } else if ((hp = gethostbyname(host)) != 0) {
- memmove((char *)num, hp->h_addr, sizeof(u_int32));
- return (1);
- }
- return (0);
-}
/* XXX ELIMINATE printserver similar in ntptrace.c, ntpdate.c */
/*
@@ -1944,13 +2077,13 @@ printserver(
if (!debug) {
(void) fprintf(fp, "server %s, stratum %d, offset %s, delay %s\n",
- ntoa(&pp->srcadr), pp->stratum,
+ stoa(&pp->srcadr), pp->stratum,
lfptoa(&pp->offset, 6), fptoa((s_fp)pp->delay, 5));
return;
}
(void) fprintf(fp, "server %s, port %d\n",
- ntoa(&pp->srcadr), ntohs(pp->srcadr.sin_port));
+ stoa(&pp->srcadr), ntohs(((struct sockaddr_in*)&(pp->srcadr))->sin_port));
(void) fprintf(fp, "stratum %d, precision %d, leap %c%c, trust %03o\n",
pp->stratum, pp->precision,
@@ -1963,7 +2096,7 @@ printserver(
memmove(junk, (char *)&pp->refid, 4);
str = junk;
} else {
- str = numtoa(pp->refid);
+ str = stoa(&pp->srcadr);
}
(void) fprintf(fp,
"refid [%s], delay %s, dispersion %s\n",
diff --git a/contrib/ntp/ntpdate/ntpdate.h b/contrib/ntp/ntpdate/ntpdate.h
index 5ead20f..f3531b3 100644
--- a/contrib/ntp/ntpdate/ntpdate.h
+++ b/contrib/ntp/ntpdate/ntpdate.h
@@ -15,7 +15,7 @@ extern void loadservers P((char *cfgpath));
*/
struct server {
struct server *next_server; /* next server in build list */
- struct sockaddr_in srcadr; /* address of remote host */
+ struct sockaddr_storage srcadr; /* address of remote host */
u_char version; /* version to use */
u_char leap; /* leap indicator */
u_char stratum; /* stratum of remote server */
@@ -97,3 +97,8 @@ struct server {
#define DEFMAXPERIOD 60 /* maximum time to wait */
#define DEFMINSERVERS 3 /* minimum responding servers */
#define DEFMINVALID 1 /* mimimum servers with valid time */
+
+/*
+ * Define the max number of sockets we can open
+ */
+#define MAX_AF 2
OpenPOWER on IntegriCloud