123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #ifndef _IPXE_NTP_H
- #define _IPXE_NTP_H
-
- /** @file
- *
- * Network Time Protocol
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <stdint.h>
- #include <ipxe/in.h>
- #include <ipxe/interface.h>
-
- /** NTP port */
- #define NTP_PORT 123
-
- /** An NTP short-format timestamp */
- struct ntp_short {
- /** Seconds */
- uint16_t seconds;
- /** Fraction of a second */
- uint16_t fraction;
- } __attribute__ (( packed ));
-
- /** An NTP timestamp */
- struct ntp_timestamp {
- /** Seconds */
- uint32_t seconds;
- /** Fraction of a second */
- uint32_t fraction;
- } __attribute__ (( packed ));
-
- /** An NTP reference identifier */
- union ntp_id {
- /** Textual identifier */
- char text[4];
- /** IPv4 address */
- struct in_addr in;
- /** Opaque integer */
- uint32_t opaque;
- };
-
- /** An NTP header */
- struct ntp_header {
- /** Flags */
- uint8_t flags;
- /** Stratum */
- uint8_t stratum;
- /** Polling rate */
- int8_t poll;
- /** Precision */
- int8_t precision;
- /** Root delay */
- struct ntp_short delay;
- /** Root dispersion */
- struct ntp_short dispersion;
- /** Reference clock identifier */
- union ntp_id id;
- /** Reference timestamp */
- struct ntp_timestamp reference;
- /** Originate timestamp */
- struct ntp_timestamp originate;
- /** Receive timestamp */
- struct ntp_timestamp receive;
- /** Transmit timestamp */
- struct ntp_timestamp transmit;
- } __attribute__ (( packed ));
-
- /** Leap second indicator: unknown */
- #define NTP_FL_LI_UNKNOWN 0xc0
-
- /** NTP version: 1 */
- #define NTP_FL_VN_1 0x20
-
- /** NTP mode: client */
- #define NTP_FL_MODE_CLIENT 0x03
-
- /** NTP mode: server */
- #define NTP_FL_MODE_SERVER 0x04
-
- /** NTP mode mask */
- #define NTP_FL_MODE_MASK 0x07
-
- /** NTP timestamp for start of Unix epoch */
- #define NTP_EPOCH 2208988800UL
-
- /** NTP fraction of a second magic value
- *
- * This is a policy decision.
- */
- #define NTP_FRACTION_MAGIC 0x69505845UL
-
- /** NTP minimum retransmission timeout
- *
- * This is a policy decision.
- */
- #define NTP_MIN_TIMEOUT ( 1 * TICKS_PER_SEC )
-
- /** NTP maximum retransmission timeout
- *
- * This is a policy decision.
- */
- #define NTP_MAX_TIMEOUT ( 10 * TICKS_PER_SEC )
-
- extern int start_ntp ( struct interface *job, const char *hostname );
-
- #endif /* _IPXE_NTP_H */
|