mirror of
https://gitlab.com/chrony/chrony.git
synced 2025-12-06 15:45:07 -05:00
Add support for reading leap second data from tz database
leapsectz directive is used to set the name of the timezone in the system tz database which chronyd can use to find out when will the next leap second occur. It will periodically check if dates Jun 30 23:59:60 and Dec 31 23:59:60 are valid in that timezone. This is mainly useful with reference clocks which don't provide the leap second information. It is not necessary to restart chronyd if the tz database is updated with a new leap second at least 12 hours before the event.
This commit is contained in:
23
conf.c
23
conf.c
@@ -112,6 +112,7 @@ static void parse_sched_priority(const char *);
|
||||
static void parse_lockall(const char *);
|
||||
static void parse_tempcomp(const char *);
|
||||
static void parse_include(const char *);
|
||||
static void parse_leapsectz(const char *);
|
||||
|
||||
/* ================================================== */
|
||||
/* Configuration variables */
|
||||
@@ -224,6 +225,9 @@ static double linux_freq_scale;
|
||||
static int sched_priority = 0;
|
||||
static int lock_memory = 0;
|
||||
|
||||
/* Name of a system timezone containing leap seconds occuring at midnight */
|
||||
static char *leapsec_tz = NULL;
|
||||
|
||||
/* ================================================== */
|
||||
|
||||
typedef struct {
|
||||
@@ -276,6 +280,7 @@ static const Command commands[] = {
|
||||
{"reselectdist", 12, parse_reselectdist},
|
||||
{"stratumweight", 13, parse_stratumweight},
|
||||
{"include", 7, parse_include},
|
||||
{"leapsectz", 9, parse_leapsectz},
|
||||
{"linux_hz", 8, parse_linux_hz},
|
||||
{"linux_freq_scale", 16, parse_linux_freq_scale},
|
||||
{"sched_priority", 14, parse_sched_priority},
|
||||
@@ -1282,6 +1287,16 @@ parse_include(const char *line)
|
||||
|
||||
/* ================================================== */
|
||||
|
||||
static void
|
||||
parse_leapsectz(const char *line)
|
||||
{
|
||||
/* This must allocate enough space! */
|
||||
leapsec_tz = MallocArray(char, 1 + strlen(line));
|
||||
sscanf(line, "%s", leapsec_tz);
|
||||
}
|
||||
|
||||
/* ================================================== */
|
||||
|
||||
static void
|
||||
parse_linux_hz(const char *line)
|
||||
{
|
||||
@@ -1707,6 +1722,14 @@ CNF_GetPidFile(void)
|
||||
|
||||
/* ================================================== */
|
||||
|
||||
char *
|
||||
CNF_GetLeapSecTimezone(void)
|
||||
{
|
||||
return leapsec_tz;
|
||||
}
|
||||
|
||||
/* ================================================== */
|
||||
|
||||
void
|
||||
CNF_GetLinuxHz(int *set, int *hz)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user