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 
33 struct 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 
55 int sntp_prereq(void *data);
56 int sntp_start(void *data);	/* Begin SNTP */
57 
58 #endif /* __SNTP_H__ */
59