1 /*
2  * (C) Masami Komiya <mkomiya@sonare.it> 2005
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2, or (at
7  * your option) any later version.
8  */
9 
10 #ifndef __SNTP_H__
11 #define __SNTP_H__
12 
13 #define NTP_SERVICE_PORT	123
14 #define SNTP_PACKET_LEN		48
15 
16 
17 /* Leap Indicator */
18 #define NTP_LI_NOLEAP		0x0
19 #define NTP_LI_61SECS		0x1
20 #define NTP_LI_59SECS		0x2
21 #define NTP_LI_ALARM		0x3
22 
23 /* Version */
24 
25 #define NTP_VERSION		4
26 
27 /* Mode */
28 #define NTP_MODE_RESERVED	0
29 #define NTP_MODE_SYMACTIVE	1	/* Symmetric Active */
30 #define NTP_MODE_SYMPASSIVE	2	/* Symmetric Passive */
31 #define NTP_MODE_CLIENT		3
32 #define NTP_MODE_SERVER		4
33 #define NTP_MODE_BROADCAST	5
34 #define NTP_MODE_NTPCTRL	6	/* Reserved for NTP control message */
35 #define NTP_MODE_PRIVATE	7	/* Reserved for private use */
36 
37 struct sntp_pkt_t {
38 #if __LITTLE_ENDIAN
39 	uchar mode:3;
40 	uchar vn:3;
41 	uchar li:2;
42 #else
43 	uchar li:2;
44 	uchar vn:3;
45 	uchar mode:3;
46 #endif
47 	uchar stratum;
48 	uchar poll;
49 	uchar precision;
50 	uint root_delay;
51 	uint root_dispersion;
52 	uint reference_id;
53 	unsigned long long reference_timestamp;
54 	unsigned long long originate_timestamp;
55 	unsigned long long receive_timestamp;
56 	unsigned long long transmit_timestamp;
57 };
58 
59 extern void	SntpStart (void);	/* Begin SNTP */
60 
61 #endif /* __SNTP_H__ */
62