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