Time smoothing determines an offset that needs to be applied to the cooked time to make it smooth for external observers. Observed offset and frequency change slowly and there are no discontinuities. This can be used on an NTP server to make it easier for the clients to track the time and keep their clocks close together even when large offset or frequency corrections are applied to the server's clock (e.g. after being offline for longer time). Accumulated offset and frequency are smoothed out in three stages. In the first stage, the frequency is changed at a constant rate (wander) up to a maximum, in the second stage the frequency stays at the maximum for as long as needed and in the third stage the frequency is brought back to zero. Time smoothing is configured by the smoothtime directive. It takes two arguments, maximum frequency offset and maximum wander. It's disabled by default.
115 lines
4 KiB
C
115 lines
4 KiB
C
/*
|
|
chronyd/chronyc - Programs for keeping computer clocks accurate.
|
|
|
|
**********************************************************************
|
|
* Copyright (C) Richard P. Curnow 1997-2003
|
|
* Copyright (C) Miroslav Lichvar 2013-2014
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* 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, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
**********************************************************************
|
|
|
|
=======================================================================
|
|
|
|
Header file for configuration module
|
|
*/
|
|
|
|
#ifndef GOT_CONF_H
|
|
#define GOT_CONF_H
|
|
|
|
#include "addressing.h"
|
|
#include "reference.h"
|
|
|
|
extern void CNF_Initialise(int restarted);
|
|
extern void CNF_Finalise(void);
|
|
|
|
extern char *CNF_GetRtcDevice(void);
|
|
|
|
extern void CNF_ReadFile(const char *filename);
|
|
extern void CNF_ParseLine(const char *filename, int number, char *line);
|
|
|
|
extern void CNF_AddInitSources(void);
|
|
extern void CNF_AddSources(void);
|
|
extern void CNF_AddBroadcasts(void);
|
|
extern void CNF_AddRefclocks(void);
|
|
|
|
extern int CNF_GetAcquisitionPort(void);
|
|
extern int CNF_GetNTPPort(void);
|
|
extern char *CNF_GetDriftFile(void);
|
|
extern char *CNF_GetLogDir(void);
|
|
extern char *CNF_GetDumpDir(void);
|
|
extern int CNF_GetLogBanner(void);
|
|
extern int CNF_GetLogMeasurements(void);
|
|
extern int CNF_GetLogStatistics(void);
|
|
extern int CNF_GetLogTracking(void);
|
|
extern int CNF_GetLogRtc(void);
|
|
extern int CNF_GetLogRefclocks(void);
|
|
extern int CNF_GetLogTempComp(void);
|
|
extern char *CNF_GetKeysFile(void);
|
|
extern char *CNF_GetRtcFile(void);
|
|
extern uint32_t CNF_GetCommandKey(void);
|
|
extern int CNF_GetGenerateCommandKey(void);
|
|
extern int CNF_GetDumpOnExit(void);
|
|
extern int CNF_GetManualEnabled(void);
|
|
extern int CNF_GetCommandPort(void);
|
|
extern int CNF_GetRtcOnUtc(void);
|
|
extern int CNF_GetRtcSync(void);
|
|
extern void CNF_GetMakeStep(int *limit, double *threshold);
|
|
extern void CNF_GetMaxChange(int *delay, int *ignore, double *offset);
|
|
extern void CNF_GetLogChange(int *enabled, double *threshold);
|
|
extern void CNF_GetMailOnChange(int *enabled, double *threshold, char **user);
|
|
extern int CNF_GetNoClientLog(void);
|
|
extern unsigned long CNF_GetClientLogLimit(void);
|
|
extern void CNF_GetFallbackDrifts(int *min, int *max);
|
|
extern void CNF_GetBindAddress(int family, IPAddr *addr);
|
|
extern void CNF_GetBindAcquisitionAddress(int family, IPAddr *addr);
|
|
extern void CNF_GetBindCommandAddress(int family, IPAddr *addr);
|
|
extern char *CNF_GetPidFile(void);
|
|
extern REF_LeapMode CNF_GetLeapSecMode(void);
|
|
extern char *CNF_GetLeapSecTimezone(void);
|
|
|
|
/* Value returned in ppm, as read from file */
|
|
extern double CNF_GetMaxUpdateSkew(void);
|
|
extern double CNF_GetMaxClockError(void);
|
|
extern double CNF_GetCorrectionTimeRatio(void);
|
|
extern double CNF_GetMaxSlewRate(void);
|
|
|
|
extern double CNF_GetReselectDistance(void);
|
|
extern double CNF_GetStratumWeight(void);
|
|
extern double CNF_GetCombineLimit(void);
|
|
|
|
extern int CNF_AllowLocalReference(int *stratum);
|
|
|
|
extern void CNF_SetupAccessRestrictions(void);
|
|
|
|
extern int CNF_GetSchedPriority(void);
|
|
extern int CNF_GetLockMemory(void);
|
|
|
|
extern void CNF_GetSmooth(double *max_freq, double *max_wander);
|
|
extern void CNF_GetTempComp(char **file, double *interval, char **point_file, double *T0, double *k0, double *k1, double *k2);
|
|
|
|
extern char *CNF_GetUser(void);
|
|
|
|
extern int CNF_GetMaxSamples(void);
|
|
extern int CNF_GetMinSamples(void);
|
|
|
|
extern int CNF_GetMinSources(void);
|
|
|
|
extern double CNF_GetRtcAutotrim(void);
|
|
extern char *CNF_GetHwclockFile(void);
|
|
|
|
extern int CNF_GetInitSources(void);
|
|
extern double CNF_GetInitStepThreshold(void);
|
|
|
|
#endif /* GOT_CONF_H */
|