]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/timesync/timesyncd-ntp-message.h
license: LGPL-2.1+ -> LGPL-2.1-or-later
[thirdparty/systemd.git] / src / timesync / timesyncd-ntp-message.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
66086a40
YW
2#pragma once
3
4#include "sparse-endian.h"
5
6/* NTP protocol, packet header */
7#define NTP_LEAP_PLUSSEC 1
8#define NTP_LEAP_MINUSSEC 2
9#define NTP_LEAP_NOTINSYNC 3
10#define NTP_MODE_CLIENT 3
11#define NTP_MODE_SERVER 4
12#define NTP_FIELD_LEAP(f) (((f) >> 6) & 3)
13#define NTP_FIELD_VERSION(f) (((f) >> 3) & 7)
14#define NTP_FIELD_MODE(f) ((f) & 7)
15#define NTP_FIELD(l, v, m) (((l) << 6) | ((v) << 3) | (m))
16
17/*
18 * "NTP timestamps are represented as a 64-bit unsigned fixed-point number,
19 * in seconds relative to 0h on 1 January 1900."
20 */
21#define OFFSET_1900_1970 UINT64_C(2208988800)
22
23struct ntp_ts {
24 be32_t sec;
25 be32_t frac;
26} _packed_;
27
28struct ntp_ts_short {
29 be16_t sec;
30 be16_t frac;
31} _packed_;
32
33struct ntp_msg {
34 uint8_t field;
35 uint8_t stratum;
36 int8_t poll;
37 int8_t precision;
38 struct ntp_ts_short root_delay;
39 struct ntp_ts_short root_dispersion;
40 char refid[4];
41 struct ntp_ts reference_time;
42 struct ntp_ts origin_time;
43 struct ntp_ts recv_time;
44 struct ntp_ts trans_time;
45} _packed_;