chrony-confile 0.1.0

A full-featured Rust library for parsing, editing, validating, and serializing chrony configuration files
Documentation
//! Hardware timestamping configuration types.
//!
//! These directives configure hardware timestamping (PTP) support in chrony, including
//! interface settings, timestamping precision, and PTP port/domain configuration.

use crate::values::*;

/// Hardware timestamping RX filter mode.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum HwTsRxFilter {
    /// Accept any timestamp type.
    Any,
    /// Do not accept any timestamps.
    None,
    /// Only accept NTP timestamps.
    Ntp,
    /// Only accept PTP timestamps.
    Ptp,
    /// Accept all timestamp types.
    All,
}

#[derive(Debug, Clone, PartialEq)]
pub struct HwTimestampConfig {
    pub interface: String,
    pub minpoll: PollInterval,
    pub maxpoll: PollInterval,
    pub minsamples: u32,
    pub maxsamples: u32,
    pub nocrossts: bool,
    pub rxfilter: HwTsRxFilter,
    pub precision: f64,
    pub tx_comp: f64,
    pub rx_comp: f64,
}

impl Default for HwTimestampConfig {
    fn default() -> Self {
        Self {
            interface: String::new(),
            minpoll: PollInterval::new_unchecked(0),
            maxpoll: PollInterval::new_unchecked(1),
            minsamples: 2, maxsamples: 16, nocrossts: false,
            rxfilter: HwTsRxFilter::Any, precision: 100e-9,
            tx_comp: 0.0, rx_comp: 0.0,
        }
    }
}

#[derive(Debug, Clone, PartialEq)]
pub struct HwTsTimeoutConfig { pub timeout: f64 }

#[derive(Debug, Clone, PartialEq)]
pub struct MaxTxBuffersConfig { pub buffers: TxBuffers }

#[derive(Debug, Clone, PartialEq)]
pub struct PtpPortConfig { pub port: UdpPort }

#[derive(Debug, Clone, PartialEq)]
pub struct PtpDomainConfig { pub domain: PtpDomain }