aboutsummaryrefslogtreecommitdiff
path: root/contrib/ntp/include/ntpsim.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/include/ntpsim.h')
-rw-r--r--contrib/ntp/include/ntpsim.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/contrib/ntp/include/ntpsim.h b/contrib/ntp/include/ntpsim.h
new file mode 100644
index 000000000000..c48dc59542be
--- /dev/null
+++ b/contrib/ntp/include/ntpsim.h
@@ -0,0 +1,93 @@
+/*
+ * ntpsim.h - Prototypes for ntpsim
+ */
+
+#ifndef __ntpsim_h
+#define __ntpsim_h
+
+#include <stdio.h>
+#include <math.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include "ntp_syslog.h"
+#include "ntp_fp.h"
+#include "ntp.h"
+#include "ntp_select.h"
+#include "ntp_malloc.h"
+#include "ntp_refclock.h"
+#include "recvbuff.h"
+#include "ntp_io.h"
+#include "ntp_stdlib.h"
+
+#define PI 3.1415926535
+
+/*
+ * ntpsim declarations
+ */
+typedef enum {
+ BEEP, CLOCK, TIMER, PACKET
+} funcTkn;
+
+typedef struct {
+ double time;
+ union {
+ struct pkt evnt_pkt;
+ struct recvbuf evnt_buf;
+ } buffer;
+#define ntp_pkt buffer.evnt_pkt
+#define rcv_buf buffer.evnt_buf
+ funcTkn function;
+} Event;
+
+typedef struct List {
+ Event event;
+ struct List *next;
+} *Queue;
+
+typedef struct nde {
+ double time; /* simulation time */
+ double sim_time; /* end simulation time */
+ double ntp_time; /* client disciplined time */
+ double adj; /* remaining time correction */
+ double slew; /* correction slew rate */
+
+ double clk_time; /* server time */
+ double ferr; /* frequency errort */
+ double fnse; /* random walk noise */
+ double ndly; /* network delay */
+ double snse; /* phase noise */
+ double pdly; /* processing delay */
+ double bdly; /* beep interval */
+
+ double last_time; /* last clock read time */
+ Queue events; /* Node Event Queue */
+ struct recvbuf *rbuflist; /* Node Receive Buffer */
+} Node;
+
+/*
+ * Function prototypes
+ */
+int ntpsim P((int argc, char *argv[]));
+Event event P((double, funcTkn));
+Queue queue P((Event, Queue ));
+Node node P((void));
+void push P((Event, Queue *));
+Event pop P((Queue *));
+void ndbeep P((Node *, Event));
+void ndeclk P((Node *, Event));
+void ntptmr P((Node *, Event));
+void netpkt P((Node *, Event));
+int srvr_rply P((Node *, struct sockaddr_storage *,
+ struct interface *, struct pkt *));
+double gauss P((double, double));
+double poisson P((double, double));
+int node_clock P((Node *, double));
+void abortsim P((char *));
+
+/*
+ * The global Node
+ */
+Node ntp_node;
+
+#endif
+