/contrib/ntp/ntpdate/ntpdate.h

https://bitbucket.org/freebsd/freebsd-head/ · C++ Header · 104 lines · 50 code · 12 blank · 42 comment · 0 complexity · 4bd198cd2e606d7fb591617e1dd97e88 MD5 · raw file

  1. /*
  2. * ntpdate.h - declarations for the ntpdate and ntptimeset programs
  3. */
  4. #include "ntp_malloc.h"
  5. extern void loadservers P((char *cfgpath));
  6. /*
  7. * The server structure is a much simplified version of the
  8. * peer structure, for ntpdate's use. Since we always send
  9. * in client mode and expect to receive in server mode, this
  10. * leaves only a very limited number of things we need to
  11. * remember about the server.
  12. */
  13. struct server {
  14. struct server *next_server; /* next server in build list */
  15. struct sockaddr_storage srcadr; /* address of remote host */
  16. u_char version; /* version to use */
  17. u_char leap; /* leap indicator */
  18. u_char stratum; /* stratum of remote server */
  19. s_char precision; /* server's clock precision */
  20. u_char trust; /* trustability of the filtered data */
  21. u_fp rootdelay; /* distance from primary clock */
  22. u_fp rootdispersion; /* peer clock dispersion */
  23. u_int32 refid; /* peer reference ID */
  24. l_fp reftime; /* time of peer's last update */
  25. u_long event_time; /* time for next timeout */
  26. u_long last_xmit; /* time of last transmit */
  27. u_short xmtcnt; /* number of packets transmitted */
  28. u_short rcvcnt; /* number of packets received */
  29. u_char reach; /* reachability, NTP_WINDOW bits */
  30. u_short filter_nextpt; /* index into filter shift register */
  31. s_fp filter_delay[NTP_SHIFT]; /* delay part of shift register */
  32. l_fp filter_offset[NTP_SHIFT]; /* offset part of shift register */
  33. s_fp filter_soffset[NTP_SHIFT]; /* offset in s_fp format, for disp */
  34. u_fp filter_error[NTP_SHIFT]; /* error part of shift register */
  35. l_fp org; /* peer's originate time stamp */
  36. l_fp xmt; /* transmit time stamp */
  37. u_fp delay; /* filter estimated delay */
  38. u_fp dispersion; /* filter estimated dispersion */
  39. l_fp offset; /* filter estimated clock offset */
  40. s_fp soffset; /* fp version of above */
  41. };
  42. /*
  43. * ntpdate runs everything on a simple, short timeout. It sends a
  44. * packet and sets the timeout (by default, to a small value suitable
  45. * for a LAN). If it receives a response it sends another request.
  46. * If it times out it shifts zeroes into the filter and sends another
  47. * request.
  48. *
  49. * The timer routine is run often (once every 1/5 second currently)
  50. * so that time outs are done with reasonable precision.
  51. */
  52. #define TIMER_HZ (5) /* 5 per second */
  53. /*
  54. * ntpdate will make a long adjustment using adjtime() if the times
  55. * are close, or step the time if the times are farther apart. The
  56. * following defines what is "close".
  57. */
  58. #define NTPDATE_THRESHOLD (FP_SECOND >> 1) /* 1/2 second */
  59. #define NTP_MAXAGE 86400 /* one day in seconds */
  60. /*
  61. * When doing adjustments, ntpdate actually overadjusts (currently
  62. * by 50%, though this may change). While this will make it take longer
  63. * to reach a steady state condition, it will typically result in
  64. * the clock keeping more accurate time, on average. The amount of
  65. * overshoot is limited.
  66. */
  67. #ifdef NOTNOW
  68. #define ADJ_OVERSHOOT 1/2 /* this is hard coded */
  69. #endif /* NOTNOW */
  70. #define ADJ_MAXOVERSHOOT 0x10000000 /* 50 ms as a ts fraction */
  71. /*
  72. * Since ntpdate isn't aware of some of the things that normally get
  73. * put in an NTP packet, we fix some values.
  74. */
  75. #define NTPDATE_PRECISION (-6) /* use this precision */
  76. #define NTPDATE_DISTANCE FP_SECOND /* distance is 1 sec */
  77. #define NTPDATE_DISP FP_SECOND /* so is the dispersion */
  78. #define NTPDATE_REFID (0) /* reference ID to use */
  79. #define PEER_MAXDISP (64*FP_SECOND) /* maximum dispersion (fp 64) */
  80. /*
  81. * Some defaults
  82. */
  83. #define DEFTIMEOUT 5 /* 5 timer increments */
  84. #define DEFSAMPLES 4 /* get 4 samples per server */
  85. #define DEFPRECISION (-5) /* the precision we claim */
  86. #define DEFMAXPERIOD 60 /* maximum time to wait */
  87. #define DEFMINSERVERS 3 /* minimum responding servers */
  88. #define DEFMINVALID 1 /* mimimum servers with valid time */
  89. /*
  90. * Define the max number of sockets we can open
  91. */
  92. #define MAX_AF 2