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 structureparser– Parsing logic for chrony config files and .sources filesser– Serialization (Displaytrait impls, optionalserde)validator– Structural and semantic validationbuilder– Builder pattern for programmatic config generationexpand– Include/confdir expansionerror– Error types for parsing, validation, and value constructionspan– Source location trackingvalues– Bounded integer newtypes with range checking
§Feature Flags
serde(optional) – EnablesSerializeforChronyConfig
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.