Skip to main content

Crate chrony_confile

Crate chrony_confile 

Source
Expand description

A full-featured Rust library for parsing, editing, validating, and serializing chrony configuration files.

This crate provides complete coverage of all 96 chrony directives with a type-safe API, lossless round-trip serialization (comments and formatting preserved), and optional include/confdir expansion.

§Quick Start

use chrony_confile::prelude::*;

let config: ChronyConfig = r#"
server ntp1.example.com iburst prefer
 server ntp2.example.com iburst
 pool pool.ntp.org maxsources 6
 driftfile /var/lib/chrony/drift
 allow 192.168.0.0/16
 "#.parse()?;

// Iterate over directives with a specific name
for directive in config.find("server") {
if let DirectiveKind::Server(s) = &directive.kind {
println!("NTP source: {}", s.hostname);
}
}

// Validate the configuration
let errors = config.validate();

// Serialize back to string (lossless)
let output = config.to_string();

§Modules

  • ast – All AST types representing chrony directives and configuration structure
  • parser – Parsing logic for chrony config files and .sources files
  • ser – Serialization (Display trait impls, optional serde)
  • validator – Structural and semantic validation
  • builder – Builder pattern for programmatic config generation
  • expand – Include/confdir expansion
  • error – Error types for parsing, validation, and value construction
  • span – Source location tracking
  • values – Bounded integer newtypes with range checking

§Feature Flags

  • serde (optional) – Enables Serialize for ChronyConfig

Re-exports§

pub use ast::ChronyConfig;
pub use ast::source_file::SourceFile;
pub use error::ParseError;
pub use error::DirectiveError;
pub use error::ValueError;
pub use span::Span;
pub use ast::Directive;
pub use ast::DirectiveKind;
pub use ast::DirectiveCategory;
pub use ast::ConfigNode;
pub use values::PollInterval;
pub use values::UdpPort;
pub use values::Dscp;
pub use values::Stratum;
pub use values::SamplesCount;
pub use values::PollTarget;
pub use values::NtpVersion;
pub use values::PpsRate;
pub use values::SchedPriority;
pub use values::PtpDomain;
pub use values::ClientLogSize;
pub use values::TxBuffers;
pub use values::NtsProcesses;
pub use ast::source::ServerConfig;
pub use ast::source::PoolConfig;
pub use ast::source::PeerConfig;
pub use ast::source::RefClockConfig;
pub use ast::source::RefClockDriverKind;
pub use ast::source::SourceConnectivity;
pub use ast::source::AddressFamily;
pub use ast::source::SelectOptions;
pub use ast::source::AllowDenyConfig;
pub use ast::source::RateLimitConfig;
pub use ast::source::NtsRateLimitConfig;
pub use ast::source::SmoothTimeConfig;
pub use ast::source::BroadcastConfig;
pub use ast::source::LocalConfig;
pub use ast::source::InitStepSlewConfig;
pub use ast::ntp::BindAddressConfig;
pub use ast::ntp::BindDeviceConfig;
pub use ast::ntp::ClientLogLimitConfig;
pub use ast::ntp::NtpSignDSocketConfig;
pub use ast::ntp::NtsPortConfig;
pub use ast::ntp::NtsServerCertConfig;
pub use ast::ntp::NtsServerKeyConfig;
pub use ast::ntp::NtsProcessesConfig;
pub use ast::ntp::MaxNtsConnectionsConfig;
pub use ast::ntp::NtsNtpServerConfig;
pub use ast::ntp::NtsRotateConfig;
pub use ast::ntp::PortConfig;
pub use ast::ntp::CmdRateLimitConfig;
pub use ast::cmd::BindCmdAddressConfig;
pub use ast::cmd::BindCmdDeviceConfig;
pub use ast::cmd::CmdPortConfig;
pub use ast::cmd::OpenCommandsConfig;
pub use ast::clock::ClockPrecisionConfig;
pub use ast::clock::CorrTimeRatioConfig;
pub use ast::clock::DriftFileConfig;
pub use ast::clock::FallbackDriftConfig;
pub use ast::clock::LeapSecTzConfig;
pub use ast::clock::LeapSecListConfig;
pub use ast::clock::MakeStepConfig;
pub use ast::clock::MaxChangeConfig;
pub use ast::clock::MaxClockErrorConfig;
pub use ast::clock::MaxDriftConfig;
pub use ast::clock::MaxUpdateSkewConfig;
pub use ast::clock::MaxSlewRateConfig;
pub use ast::clock::TempCompConfig;
pub use ast::clock::LeapSecMode;
pub use ast::selection::AuthSelectMode;
pub use ast::selection::CombineLimitConfig;
pub use ast::selection::MaxDistanceConfig;
pub use ast::selection::MaxJitterConfig;
pub use ast::selection::MinSourcesConfig;
pub use ast::selection::ReselectDistConfig;
pub use ast::selection::StratumWeightConfig;
pub use ast::log::LogConfig;
pub use ast::log::LogBannerConfig;
pub use ast::log::LogChangeConfig;
pub use ast::log::LogDirConfig;
pub use ast::rtc::HwClockFileConfig;
pub use ast::rtc::RtcAutoTrimConfig;
pub use ast::rtc::RtcDeviceConfig;
pub use ast::rtc::RtcFileConfig;
pub use ast::hw::HwTimestampConfig;
pub use ast::hw::HwTsTimeoutConfig;
pub use ast::hw::MaxTxBuffersConfig;
pub use ast::hw::PtpPortConfig;
pub use ast::hw::PtpDomainConfig;
pub use ast::hw::HwTsRxFilter;
pub use ast::nts::NtsAeadsConfig;
pub use ast::misc::ConfDirConfig;
pub use ast::misc::IncludeConfig;
pub use ast::misc::SourceDirConfig;
pub use ast::misc::MailOnChangeConfig;
pub use ast::misc::PidFileConfig;
pub use ast::misc::SchedPriorityConfig;
pub use ast::misc::UserConfig;
pub use ast::misc::KeyFileConfig;
pub use ast::misc::AcquisitionPortConfig;
pub use ast::misc::DscpConfig;
pub use ast::misc::DumpDirConfig;
pub use ast::misc::NtsDumpDirConfig;
pub use ast::misc::NtsRefreshConfig;
pub use ast::misc::NtsTrustedCertsConfig;
pub use ast::misc::NoCertTimeCheckConfig;
pub use ast::misc::RefreshConfig;
pub use ast::misc::MaxSamplesConfig;
pub use ast::misc::MinSamplesConfig;
pub use ast::source_file::SourceEntry;
pub use ast::source_file::SourceNode;
pub use builder::ServerBuilder;
pub use builder::PoolBuilder;
pub use expand::ExpandOptions;

Modules§

ast
Chrony configuration AST types.
builder
Builder pattern for programmatic configuration generation.
error
Error types for parsing, validation, and value construction.
expand
Include/confdir expansion for chrony configuration files.
parser
Chrony configuration file parsing.
prelude
Convenience prelude for glob-importing the most common types.
ser
Serialization traits for chrony configuration types.
span
Source location tracking for directives and parse errors.
validator
Configuration validation.
values
Bounded integer newtypes with compile-time range checking.