The PTP time scale is TAI, and a PTP GM needs to provide it.  However, most
GPS devices only provide UTC time of day information, and they do not, in
general, offer any kind of reliable, standardized leap seconds data.  After
all, this information is only broadcast every 12.5 minutes through the GPS
network, and that is far too long for a PTP GM to wait after startup.

This patch allows the built in leap seconds table to be overridden by an
up to date file provided in the environment.

Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 config.c             | 1 +
 ts2phc.8             | 8 ++++++++
 ts2phc_nmea_master.c | 2 +-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/config.c b/config.c
index d3446b4..d237de9 100644
--- a/config.c
+++ b/config.c
@@ -260,6 +260,7 @@ struct config_item config_tab[] = {
        PORT_ITEM_INT("inhibit_multicast_service", 0, 0, 1),
        GLOB_ITEM_INT("initial_delay", 0, 0, INT_MAX),
        GLOB_ITEM_INT("kernel_leap", 1, 0, 1),
+       GLOB_ITEM_STR("leapfile", NULL),
        PORT_ITEM_INT("logAnnounceInterval", 1, INT8_MIN, INT8_MAX),
        PORT_ITEM_INT("logMinDelayReqInterval", 0, INT8_MIN, INT8_MAX),
        PORT_ITEM_INT("logMinPdelayReqInterval", 0, INT8_MIN, INT8_MAX),
diff --git a/ts2phc.8 b/ts2phc.8
index 07a4026..77f8940 100644
--- a/ts2phc.8
+++ b/ts2phc.8
@@ -116,6 +116,14 @@ This option can be useful in test scenarios, for example 
to determine
 how well synchronized a group of local clocks are to each other.
 The default is 0 (adjust the slave clocks).
 .TP
+.B leapfile
+The path to the current leap seconds definition file.
+In a Debian system this file is provided by the tzdata package and can
+be found at /usr/share/zoneinfo/leap-seconds.list.
+The default is an empty string, which causes the program to use a hard
+coded table that reflects the known leap seconds on the date of the
+software's release.
+.TP
 .B logging_level
 The maximum logging level of messages which should be printed.
 The default is 6 (LOG_INFO).
diff --git a/ts2phc_nmea_master.c b/ts2phc_nmea_master.c
index b8f7014..76fc7ae 100644
--- a/ts2phc_nmea_master.c
+++ b/ts2phc_nmea_master.c
@@ -210,8 +210,8 @@ static int ts2phc_nmea_master_getppstime(struct 
ts2phc_master *master,
 
 struct ts2phc_master *ts2phc_nmea_master_create(struct config *cfg, const char 
*dev)
 {
+       const char *leapfile = config_get_string(cfg, NULL, "leapfile");
        struct ts2phc_nmea_master *master;
-       const char *leapfile = NULL;    // TODO - read from config.
        int err;
 
        master = calloc(1, sizeof(*master));
-- 
2.20.1



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to