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