diff --git a/conf.c b/conf.c index ce2ff00..a525278 100644 --- a/conf.c +++ b/conf.c @@ -1556,6 +1556,8 @@ parse_hwtimestamp(char *line) iface->rxfilter = CNF_HWTS_RXFILTER_NONE; else if (!strcasecmp(filter, "ntp")) iface->rxfilter = CNF_HWTS_RXFILTER_NTP; + else if (!strcasecmp(filter, "ptp")) + iface->rxfilter = CNF_HWTS_RXFILTER_PTP; else if (!strcasecmp(filter, "all")) iface->rxfilter = CNF_HWTS_RXFILTER_ALL; else diff --git a/conf.h b/conf.h index 0ba1be1..437fa96 100644 --- a/conf.h +++ b/conf.h @@ -134,6 +134,7 @@ typedef enum { CNF_HWTS_RXFILTER_ANY, CNF_HWTS_RXFILTER_NONE, CNF_HWTS_RXFILTER_NTP, + CNF_HWTS_RXFILTER_PTP, CNF_HWTS_RXFILTER_ALL, } CNF_HwTs_RxFilter; diff --git a/doc/chrony.conf.adoc b/doc/chrony.conf.adoc index bd4f70d..647270b 100644 --- a/doc/chrony.conf.adoc +++ b/doc/chrony.conf.adoc @@ -2416,6 +2416,8 @@ _all_:::: Enables timestamping of all received packets. _ntp_:::: Enables timestamping of received NTP packets. +_ptp_:::: +Enables timestamping of received PTP packets. _none_:::: Disables timestamping of received packets. {blank}::: diff --git a/ntp_io_linux.c b/ntp_io_linux.c index 02b59e1..a458ded 100644 --- a/ntp_io_linux.c +++ b/ntp_io_linux.c @@ -189,6 +189,14 @@ add_interface(CNF_HwTsInterface *conf_iface) rx_filter = HWTSTAMP_FILTER_NTP_ALL; break; #endif + case CNF_HWTS_RXFILTER_PTP: + if (ts_info.rx_filters & (1 << HWTSTAMP_FILTER_PTP_V2_L4_EVENT)) + rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT; + else if (ts_info.rx_filters & (1 << HWTSTAMP_FILTER_PTP_V2_EVENT)) + rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; + else + rx_filter = HWTSTAMP_FILTER_NONE; + break; default: rx_filter = HWTSTAMP_FILTER_ALL; break;