pub enum ResponseMode {
Basic,
Interleaved {
prev_transmit: NtpTimestamp,
},
}Expand description
Which timestamps a response should carry.
Variants§
Basic
The ordinary exchange: receive and transmit from this exchange.
Interleaved
Interleaved: the reply carries this exchange’s receive timestamp (so the client can interleave again next time) together with the actual, post-send transmit timestamp of the earlier response the client named in its origin field. That transmit value is the whole point — a basic reply must write its transmit field before the packet leaves, so it can only ever be an estimate.
Two field rules, both of which fail silently rather than loudly when
broken (RFC 9769; chrony ntp_core.c lines 1241/1251/1290, 2744-2754):
- origin echoes the request’s receive field, not its transmit — that is how the client recognises an interleaved reply.
- receive is the current exchange’s, not the previous one’s. Reporting the previous receive pairs the client’s T1/T4 with a mismatched T2/T3 and shows up as a delay inflated by exactly one poll interval — measured against chrony as 4.009 s on a 4 s poll.
Fields
§
prev_transmit: NtpTimestampThe true transmit timestamp of the response the client’s origin field identifies.
Trait Implementations§
Source§impl Clone for ResponseMode
impl Clone for ResponseMode
Source§fn clone(&self) -> ResponseMode
fn clone(&self) -> ResponseMode
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for ResponseMode
Source§impl Debug for ResponseMode
impl Debug for ResponseMode
impl Eq for ResponseMode
Source§impl PartialEq for ResponseMode
impl PartialEq for ResponseMode
impl StructuralPartialEq for ResponseMode
Auto Trait Implementations§
impl Freeze for ResponseMode
impl RefUnwindSafe for ResponseMode
impl Send for ResponseMode
impl Sync for ResponseMode
impl Unpin for ResponseMode
impl UnsafeUnpin for ResponseMode
impl UnwindSafe for ResponseMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more