1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Masami Komiya <mkomiya@sonare.it> 2005
4 */
5
6#ifndef __SNTP_H__
7#define __SNTP_H__
8
9#define NTP_SERVICE_PORT	123
10#define SNTP_PACKET_LEN		48
11
12
13/* Leap Indicator */
14#define NTP_LI_NOLEAP		0x0
15#define NTP_LI_61SECS		0x1
16#define NTP_LI_59SECS		0x2
17#define NTP_LI_ALARM		0x3
18
19/* Version */
20
21#define NTP_VERSION		4
22
23/* Mode */
24#define NTP_MODE_RESERVED	0
25#define NTP_MODE_SYMACTIVE	1	/* Symmetric Active */
26#define NTP_MODE_SYMPASSIVE	2	/* Symmetric Passive */
27#define NTP_MODE_CLIENT		3
28#define NTP_MODE_SERVER		4
29#define NTP_MODE_BROADCAST	5
30#define NTP_MODE_NTPCTRL	6	/* Reserved for NTP control message */
31#define NTP_MODE_PRIVATE	7	/* Reserved for private use */
32
33struct sntp_pkt_t {
34#if __LITTLE_ENDIAN
35	uchar mode:3;
36	uchar vn:3;
37	uchar li:2;
38#else
39	uchar li:2;
40	uchar vn:3;
41	uchar mode:3;
42#endif
43	uchar stratum;
44	uchar poll;
45	uchar precision;
46	uint root_delay;
47	uint root_dispersion;
48	uint reference_id;
49	unsigned long long reference_timestamp;
50	unsigned long long originate_timestamp;
51	unsigned long long receive_timestamp;
52	unsigned long long transmit_timestamp;
53} __attribute__((packed));
54
55int sntp_prereq(void *data);
56int sntp_start(void *data);	/* Begin SNTP */
57
58#endif /* __SNTP_H__ */
59