/contrib/ntp/include/ntpsim.h

https://bitbucket.org/freebsd/freebsd-head/ · C++ Header · 93 lines · 68 code · 13 blank · 12 comment · 0 complexity · 62072af40c5a2c1e3cae6c5b62865533 MD5 · raw file

  1. /*
  2. * ntpsim.h - Prototypes for ntpsim
  3. */
  4. #ifndef __ntpsim_h
  5. #define __ntpsim_h
  6. #include <stdio.h>
  7. #include <math.h>
  8. #include <sys/socket.h>
  9. #include <arpa/inet.h>
  10. #include "ntp_syslog.h"
  11. #include "ntp_fp.h"
  12. #include "ntp.h"
  13. #include "ntp_select.h"
  14. #include "ntp_malloc.h"
  15. #include "ntp_refclock.h"
  16. #include "recvbuff.h"
  17. #include "ntp_io.h"
  18. #include "ntp_stdlib.h"
  19. #define PI 3.1415926535
  20. /*
  21. * ntpsim declarations
  22. */
  23. typedef enum {
  24. BEEP, CLOCK, TIMER, PACKET
  25. } funcTkn;
  26. typedef struct {
  27. double time;
  28. union {
  29. struct pkt evnt_pkt;
  30. struct recvbuf evnt_buf;
  31. } buffer;
  32. #define ntp_pkt buffer.evnt_pkt
  33. #define rcv_buf buffer.evnt_buf
  34. funcTkn function;
  35. } Event;
  36. typedef struct List {
  37. Event event;
  38. struct List *next;
  39. } *Queue;
  40. typedef struct nde {
  41. double time; /* simulation time */
  42. double sim_time; /* end simulation time */
  43. double ntp_time; /* client disciplined time */
  44. double adj; /* remaining time correction */
  45. double slew; /* correction slew rate */
  46. double clk_time; /* server time */
  47. double ferr; /* frequency errort */
  48. double fnse; /* random walk noise */
  49. double ndly; /* network delay */
  50. double snse; /* phase noise */
  51. double pdly; /* processing delay */
  52. double bdly; /* beep interval */
  53. double last_time; /* last clock read time */
  54. Queue events; /* Node Event Queue */
  55. struct recvbuf *rbuflist; /* Node Receive Buffer */
  56. } Node;
  57. /*
  58. * Function prototypes
  59. */
  60. int ntpsim P((int argc, char *argv[]));
  61. Event event P((double, funcTkn));
  62. Queue queue P((Event, Queue ));
  63. Node node P((void));
  64. void push P((Event, Queue *));
  65. Event pop P((Queue *));
  66. void ndbeep P((Node *, Event));
  67. void ndeclk P((Node *, Event));
  68. void ntptmr P((Node *, Event));
  69. void netpkt P((Node *, Event));
  70. int srvr_rply P((Node *, struct sockaddr_storage *,
  71. struct interface *, struct pkt *));
  72. double gauss P((double, double));
  73. double poisson P((double, double));
  74. int node_clock P((Node *, double));
  75. void abortsim P((char *));
  76. /*
  77. * The global Node
  78. */
  79. Node ntp_node;
  80. #endif