xref: /freebsd/contrib/ntp/ntpd/refclock_conf.c (revision f5f40dd63bc7acbb5312b26ac1ea1103c12352a6)
1c0b746e5SOllivier Robert /*
2c0b746e5SOllivier Robert  * refclock_conf.c - reference clock configuration
3c0b746e5SOllivier Robert  */
4c0b746e5SOllivier Robert #ifdef HAVE_CONFIG_H
5c0b746e5SOllivier Robert #include <config.h>
6c0b746e5SOllivier Robert #endif
7c0b746e5SOllivier Robert 
8c0b746e5SOllivier Robert #include <stdio.h>
9c0b746e5SOllivier Robert #include <sys/types.h>
10c0b746e5SOllivier Robert 
11c0b746e5SOllivier Robert #include "ntpd.h"
12c0b746e5SOllivier Robert #include "ntp_refclock.h"
13c0b746e5SOllivier Robert #include "ntp_stdlib.h"
14c0b746e5SOllivier Robert 
15c0b746e5SOllivier Robert #ifdef REFCLOCK
16c0b746e5SOllivier Robert 
17c0b746e5SOllivier Robert static struct refclock refclock_none = {
18c0b746e5SOllivier Robert 	noentry, noentry, noentry, noentry, noentry, noentry, NOFLAGS
19c0b746e5SOllivier Robert };
20c0b746e5SOllivier Robert 
21c0b746e5SOllivier Robert #ifdef CLOCK_LOCAL
22c0b746e5SOllivier Robert extern	struct refclock	refclock_local;
23c0b746e5SOllivier Robert #else
24c0b746e5SOllivier Robert #define	refclock_local	refclock_none
25c0b746e5SOllivier Robert #endif
26c0b746e5SOllivier Robert 
27c0b746e5SOllivier Robert #ifdef CLOCK_PST
28c0b746e5SOllivier Robert extern	struct refclock	refclock_pst;
29c0b746e5SOllivier Robert #else
30c0b746e5SOllivier Robert #define	refclock_pst	refclock_none
31c0b746e5SOllivier Robert #endif
32c0b746e5SOllivier Robert 
33c0b746e5SOllivier Robert #ifdef CLOCK_CHU
34c0b746e5SOllivier Robert extern	struct refclock	refclock_chu;
35c0b746e5SOllivier Robert #else
36c0b746e5SOllivier Robert #define	refclock_chu	refclock_none
37c0b746e5SOllivier Robert #endif
38c0b746e5SOllivier Robert 
39a151a66cSOllivier Robert #ifdef CLOCK_WWV
40a151a66cSOllivier Robert extern  struct refclock refclock_wwv;
41a151a66cSOllivier Robert #else
42a151a66cSOllivier Robert #define refclock_wwv    refclock_none
43a151a66cSOllivier Robert #endif
44a151a66cSOllivier Robert 
45a151a66cSOllivier Robert #ifdef CLOCK_SPECTRACOM
46c0b746e5SOllivier Robert extern	struct refclock	refclock_wwvb;
47c0b746e5SOllivier Robert #else
48c0b746e5SOllivier Robert #define	refclock_wwvb	refclock_none
49c0b746e5SOllivier Robert #endif
50c0b746e5SOllivier Robert 
51c0b746e5SOllivier Robert #ifdef CLOCK_PARSE
52c0b746e5SOllivier Robert extern	struct refclock	refclock_parse;
53c0b746e5SOllivier Robert #else
54c0b746e5SOllivier Robert #define	refclock_parse	refclock_none
55c0b746e5SOllivier Robert #endif
56c0b746e5SOllivier Robert 
57224ba2bdSOllivier Robert #if defined(CLOCK_MX4200) && defined(HAVE_PPSAPI)
58c0b746e5SOllivier Robert extern	struct refclock	refclock_mx4200;
59c0b746e5SOllivier Robert #else
60c0b746e5SOllivier Robert #define	refclock_mx4200	refclock_none
61c0b746e5SOllivier Robert #endif
62c0b746e5SOllivier Robert 
63c0b746e5SOllivier Robert #ifdef CLOCK_AS2201
64c0b746e5SOllivier Robert extern	struct refclock	refclock_as2201;
65c0b746e5SOllivier Robert #else
66c0b746e5SOllivier Robert #define	refclock_as2201	refclock_none
67c0b746e5SOllivier Robert #endif
68c0b746e5SOllivier Robert 
69c0b746e5SOllivier Robert #ifdef CLOCK_ARBITER
70c0b746e5SOllivier Robert extern  struct refclock refclock_arbiter;
71c0b746e5SOllivier Robert #else
72c0b746e5SOllivier Robert #define refclock_arbiter refclock_none
73c0b746e5SOllivier Robert #endif
74c0b746e5SOllivier Robert 
75c0b746e5SOllivier Robert #ifdef CLOCK_TPRO
76c0b746e5SOllivier Robert extern	struct refclock	refclock_tpro;
77c0b746e5SOllivier Robert #else
78c0b746e5SOllivier Robert #define	refclock_tpro	refclock_none
79c0b746e5SOllivier Robert #endif
80c0b746e5SOllivier Robert 
81c0b746e5SOllivier Robert #ifdef CLOCK_LEITCH
82c0b746e5SOllivier Robert extern	struct refclock	refclock_leitch;
83c0b746e5SOllivier Robert #else
84c0b746e5SOllivier Robert #define	refclock_leitch	refclock_none
85c0b746e5SOllivier Robert #endif
86c0b746e5SOllivier Robert 
87c0b746e5SOllivier Robert #ifdef CLOCK_IRIG
88c0b746e5SOllivier Robert extern	struct refclock	refclock_irig;
89c0b746e5SOllivier Robert #else
90c0b746e5SOllivier Robert #define refclock_irig	refclock_none
91c0b746e5SOllivier Robert #endif
92c0b746e5SOllivier Robert 
93ea906c41SOllivier Robert #if 0 && defined(CLOCK_MSFEES) && defined(PPS)
94c0b746e5SOllivier Robert extern	struct refclock	refclock_msfees;
95c0b746e5SOllivier Robert #else
96c0b746e5SOllivier Robert #define refclock_msfees	refclock_none
97c0b746e5SOllivier Robert #endif
98c0b746e5SOllivier Robert 
99c0b746e5SOllivier Robert #ifdef CLOCK_BANC
100c0b746e5SOllivier Robert extern	struct refclock refclock_bancomm;
101c0b746e5SOllivier Robert #else
102c0b746e5SOllivier Robert #define refclock_bancomm refclock_none
103c0b746e5SOllivier Robert #endif
104c0b746e5SOllivier Robert 
105c0b746e5SOllivier Robert #ifdef CLOCK_TRUETIME
106c0b746e5SOllivier Robert extern	struct refclock	refclock_true;
107c0b746e5SOllivier Robert #else
108c0b746e5SOllivier Robert #define	refclock_true	refclock_none
109c0b746e5SOllivier Robert #endif
110c0b746e5SOllivier Robert 
111c0b746e5SOllivier Robert #ifdef CLOCK_DATUM
112c0b746e5SOllivier Robert extern	struct refclock	refclock_datum;
113c0b746e5SOllivier Robert #else
114c0b746e5SOllivier Robert #define refclock_datum	refclock_none
115c0b746e5SOllivier Robert #endif
116c0b746e5SOllivier Robert 
117c0b746e5SOllivier Robert #ifdef CLOCK_ACTS
118c0b746e5SOllivier Robert extern	struct refclock	refclock_acts;
119c0b746e5SOllivier Robert #else
120c0b746e5SOllivier Robert #define refclock_acts	refclock_none
121c0b746e5SOllivier Robert #endif
122c0b746e5SOllivier Robert 
123c0b746e5SOllivier Robert #ifdef CLOCK_HEATH
124c0b746e5SOllivier Robert extern	struct refclock	refclock_heath;
125c0b746e5SOllivier Robert #else
126c0b746e5SOllivier Robert #define refclock_heath	refclock_none
127c0b746e5SOllivier Robert #endif
128c0b746e5SOllivier Robert 
129c0b746e5SOllivier Robert #ifdef CLOCK_NMEA
130c0b746e5SOllivier Robert extern	struct refclock refclock_nmea;
131c0b746e5SOllivier Robert #else
132c0b746e5SOllivier Robert #define	refclock_nmea	refclock_none
133c0b746e5SOllivier Robert #endif
134c0b746e5SOllivier Robert 
1352b15cb3dSCy Schubert #if defined (CLOCK_ATOM) && defined(HAVE_PPSAPI)
136c0b746e5SOllivier Robert extern	struct refclock	refclock_atom;
137c0b746e5SOllivier Robert #else
138c0b746e5SOllivier Robert #define refclock_atom	refclock_none
139c0b746e5SOllivier Robert #endif
140c0b746e5SOllivier Robert 
141c0b746e5SOllivier Robert #ifdef CLOCK_HPGPS
142c0b746e5SOllivier Robert extern	struct refclock	refclock_hpgps;
143c0b746e5SOllivier Robert #else
144c0b746e5SOllivier Robert #define	refclock_hpgps	refclock_none
145c0b746e5SOllivier Robert #endif
146c0b746e5SOllivier Robert 
147c0b746e5SOllivier Robert #ifdef CLOCK_GPSVME
148c0b746e5SOllivier Robert extern	struct refclock refclock_gpsvme;
149c0b746e5SOllivier Robert #else
150c0b746e5SOllivier Robert #define refclock_gpsvme refclock_none
151c0b746e5SOllivier Robert #endif
152c0b746e5SOllivier Robert 
153c0b746e5SOllivier Robert #ifdef CLOCK_ARCRON_MSF
154c0b746e5SOllivier Robert extern	struct refclock refclock_arc;
155c0b746e5SOllivier Robert #else
156c0b746e5SOllivier Robert #define refclock_arc refclock_none
157c0b746e5SOllivier Robert #endif
158c0b746e5SOllivier Robert 
159a151a66cSOllivier Robert #ifdef CLOCK_SHM
160c0b746e5SOllivier Robert extern	struct refclock refclock_shm;
161c0b746e5SOllivier Robert #else
162c0b746e5SOllivier Robert #define refclock_shm refclock_none
163c0b746e5SOllivier Robert #endif
164c0b746e5SOllivier Robert 
165c0b746e5SOllivier Robert #ifdef CLOCK_PALISADE
166c0b746e5SOllivier Robert extern	struct refclock refclock_palisade;
167c0b746e5SOllivier Robert #else
168c0b746e5SOllivier Robert #define refclock_palisade refclock_none
169c0b746e5SOllivier Robert #endif
170c0b746e5SOllivier Robert 
171ea906c41SOllivier Robert #if defined(CLOCK_ONCORE)
172c0b746e5SOllivier Robert extern	struct refclock refclock_oncore;
173c0b746e5SOllivier Robert #else
174c0b746e5SOllivier Robert #define refclock_oncore refclock_none
175c0b746e5SOllivier Robert #endif
176c0b746e5SOllivier Robert 
1779c2daa00SOllivier Robert #if defined(CLOCK_JUPITER) && defined(HAVE_PPSAPI)
178c0b746e5SOllivier Robert extern	struct refclock refclock_jupiter;
179c0b746e5SOllivier Robert #else
180c0b746e5SOllivier Robert #define refclock_jupiter refclock_none
181c0b746e5SOllivier Robert #endif
182c0b746e5SOllivier Robert 
183c0b746e5SOllivier Robert #if defined(CLOCK_CHRONOLOG)
184c0b746e5SOllivier Robert extern struct refclock refclock_chronolog;
185c0b746e5SOllivier Robert #else
186c0b746e5SOllivier Robert #define refclock_chronolog refclock_none
187c0b746e5SOllivier Robert #endif
188c0b746e5SOllivier Robert 
189c0b746e5SOllivier Robert #if defined(CLOCK_DUMBCLOCK)
190c0b746e5SOllivier Robert extern struct refclock refclock_dumbclock;
191c0b746e5SOllivier Robert #else
192c0b746e5SOllivier Robert #define refclock_dumbclock refclock_none
193c0b746e5SOllivier Robert #endif
194c0b746e5SOllivier Robert 
195c0b746e5SOllivier Robert #ifdef CLOCK_ULINK
196c0b746e5SOllivier Robert extern	struct refclock	refclock_ulink;
197c0b746e5SOllivier Robert #else
198c0b746e5SOllivier Robert #define	refclock_ulink	refclock_none
199c0b746e5SOllivier Robert #endif
200c0b746e5SOllivier Robert 
201a151a66cSOllivier Robert #ifdef CLOCK_PCF
202a151a66cSOllivier Robert extern	struct refclock	refclock_pcf;
203a151a66cSOllivier Robert #else
204a151a66cSOllivier Robert #define	refclock_pcf	refclock_none
205a151a66cSOllivier Robert #endif
206a151a66cSOllivier Robert 
207a151a66cSOllivier Robert #ifdef CLOCK_FG
208a151a66cSOllivier Robert extern	struct refclock	refclock_fg;
209a151a66cSOllivier Robert #else
210a151a66cSOllivier Robert #define	refclock_fg	refclock_none
211a151a66cSOllivier Robert #endif
212a151a66cSOllivier Robert 
213224ba2bdSOllivier Robert #ifdef CLOCK_HOPF_SERIAL
214224ba2bdSOllivier Robert extern	struct refclock	refclock_hopfser;
215224ba2bdSOllivier Robert #else
216224ba2bdSOllivier Robert #define	refclock_hopfser refclock_none
217224ba2bdSOllivier Robert #endif
218224ba2bdSOllivier Robert 
219224ba2bdSOllivier Robert #ifdef CLOCK_HOPF_PCI
220224ba2bdSOllivier Robert extern	struct refclock	refclock_hopfpci;
221224ba2bdSOllivier Robert #else
222224ba2bdSOllivier Robert #define	refclock_hopfpci refclock_none
223224ba2bdSOllivier Robert #endif
224c0b746e5SOllivier Robert 
225ce265a54SOllivier Robert #ifdef CLOCK_JJY
226ce265a54SOllivier Robert extern	struct refclock	refclock_jjy;
227ce265a54SOllivier Robert #else
228ce265a54SOllivier Robert #define	refclock_jjy refclock_none
229ce265a54SOllivier Robert #endif
230ce265a54SOllivier Robert 
231ce265a54SOllivier Robert #ifdef CLOCK_TT560
232ce265a54SOllivier Robert extern	struct refclock	refclock_tt560;
233ce265a54SOllivier Robert #else
234ce265a54SOllivier Robert #define	refclock_tt560 refclock_none
235ce265a54SOllivier Robert #endif
236ce265a54SOllivier Robert 
237ce265a54SOllivier Robert #ifdef CLOCK_ZYFER
238ce265a54SOllivier Robert extern	struct refclock	refclock_zyfer;
239ce265a54SOllivier Robert #else
240ce265a54SOllivier Robert #define	refclock_zyfer refclock_none
241ce265a54SOllivier Robert #endif
242ce265a54SOllivier Robert 
243ba371819SOllivier Robert #ifdef CLOCK_RIPENCC
244ba371819SOllivier Robert extern struct refclock refclock_ripencc;
245ba371819SOllivier Robert #else
246ba371819SOllivier Robert #define refclock_ripencc refclock_none
247ba371819SOllivier Robert #endif
248ba371819SOllivier Robert 
249ba371819SOllivier Robert #ifdef CLOCK_NEOCLOCK4X
250ba371819SOllivier Robert extern	struct refclock	refclock_neoclock4x;
251ba371819SOllivier Robert #else
252ba371819SOllivier Robert #define	refclock_neoclock4x	refclock_none
253ba371819SOllivier Robert #endif
254ba371819SOllivier Robert 
2552b15cb3dSCy Schubert #ifdef CLOCK_TSYNCPCI
2562b15cb3dSCy Schubert extern struct refclock refclock_tsyncpci;
2572b15cb3dSCy Schubert #else
2582b15cb3dSCy Schubert #define refclock_tsyncpci refclock_none
2592b15cb3dSCy Schubert #endif
2602b15cb3dSCy Schubert 
2612b15cb3dSCy Schubert #if defined(CLOCK_GPSDJSON) && !defined(SYS_WINNT)
2622b15cb3dSCy Schubert extern struct refclock refclock_gpsdjson;
2632b15cb3dSCy Schubert #else
2642b15cb3dSCy Schubert #define refclock_gpsdjson refclock_none
2652b15cb3dSCy Schubert #endif
266c0b746e5SOllivier Robert /*
267c0b746e5SOllivier Robert  * Order is clock_start(), clock_shutdown(), clock_poll(),
268c0b746e5SOllivier Robert  * clock_control(), clock_init(), clock_buginfo, clock_flags;
269c0b746e5SOllivier Robert  *
270c0b746e5SOllivier Robert  * Types are defined in ntp.h.  The index must match this.
271c0b746e5SOllivier Robert  */
2722b15cb3dSCy Schubert struct refclock * const refclock_conf[] = {
273c0b746e5SOllivier Robert 	&refclock_none,		/* 0 REFCLK_NONE */
274c0b746e5SOllivier Robert 	&refclock_local,	/* 1 REFCLK_LOCAL */
275ea906c41SOllivier Robert 	&refclock_none,		/* 2 deprecated: REFCLK_GPS_TRAK */
276c0b746e5SOllivier Robert 	&refclock_pst,		/* 3 REFCLK_WWV_PST */
277a151a66cSOllivier Robert 	&refclock_wwvb, 	/* 4 REFCLK_SPECTRACOM */
278c0b746e5SOllivier Robert 	&refclock_true,		/* 5 REFCLK_TRUETIME */
279c0b746e5SOllivier Robert 	&refclock_irig,		/* 6 REFCLK_IRIG_AUDIO */
280a151a66cSOllivier Robert 	&refclock_chu,		/* 7 REFCLK_CHU_AUDIO */
281c0b746e5SOllivier Robert 	&refclock_parse,	/* 8 REFCLK_PARSE */
282c0b746e5SOllivier Robert 	&refclock_mx4200,	/* 9 REFCLK_GPS_MX4200 */
283c0b746e5SOllivier Robert 	&refclock_as2201,	/* 10 REFCLK_GPS_AS2201 */
284c0b746e5SOllivier Robert 	&refclock_arbiter,	/* 11 REFCLK_GPS_ARBITER */
285c0b746e5SOllivier Robert 	&refclock_tpro,		/* 12 REFCLK_IRIG_TPRO */
286c0b746e5SOllivier Robert 	&refclock_leitch,	/* 13 REFCLK_ATOM_LEITCH */
287ea906c41SOllivier Robert 	&refclock_none,		/* 14 deprecated: REFCLK_MSF_EES */
288ea906c41SOllivier Robert 	&refclock_none,		/* 15 not used */
289c0b746e5SOllivier Robert 	&refclock_bancomm,	/* 16 REFCLK_IRIG_BANCOMM */
290c0b746e5SOllivier Robert 	&refclock_datum,	/* 17 REFCLK_GPS_DATUM */
291ea906c41SOllivier Robert 	&refclock_acts,		/* 18 REFCLK_ACTS */
292c0b746e5SOllivier Robert 	&refclock_heath,	/* 19 REFCLK_WWV_HEATH */
293c0b746e5SOllivier Robert 	&refclock_nmea,		/* 20 REFCLK_GPS_NMEA */
294c0b746e5SOllivier Robert 	&refclock_gpsvme,	/* 21 REFCLK_GPS_VME */
295c0b746e5SOllivier Robert 	&refclock_atom,		/* 22 REFCLK_ATOM_PPS */
296ea906c41SOllivier Robert 	&refclock_none,		/* 23 not used */
297ea906c41SOllivier Robert 	&refclock_none,		/* 24 not used */
298ea906c41SOllivier Robert 	&refclock_none,		/* 25 not used */
299c0b746e5SOllivier Robert 	&refclock_hpgps,	/* 26 REFCLK_GPS_HP */
300c0b746e5SOllivier Robert 	&refclock_arc, 		/* 27 REFCLK_ARCRON_MSF */
301c0b746e5SOllivier Robert 	&refclock_shm,		/* 28 REFCLK_SHM */
302c0b746e5SOllivier Robert 	&refclock_palisade,	/* 29 REFCLK_PALISADE */
303c0b746e5SOllivier Robert 	&refclock_oncore,	/* 30 REFCLK_ONCORE */
304c0b746e5SOllivier Robert 	&refclock_jupiter,	/* 31 REFCLK_GPS_JUPITER */
305c0b746e5SOllivier Robert 	&refclock_chronolog,	/* 32 REFCLK_CHRONOLOG */
306c0b746e5SOllivier Robert 	&refclock_dumbclock,	/* 33 REFCLK_DUMBCLOCK */
307c0b746e5SOllivier Robert 	&refclock_ulink,	/* 34 REFCLOCK_ULINK */
308a151a66cSOllivier Robert 	&refclock_pcf,		/* 35 REFCLOCK_PCF */
309a151a66cSOllivier Robert 	&refclock_wwv,		/* 36 REFCLOCK_WWV_AUDIO */
310224ba2bdSOllivier Robert 	&refclock_fg,		/* 37 REFCLOCK_FG */
311224ba2bdSOllivier Robert 	&refclock_hopfser,	/* 38 REFCLK_HOPF_SERIAL */
312ce265a54SOllivier Robert 	&refclock_hopfpci,	/* 39 REFCLK_HOPF_PCI */
313ce265a54SOllivier Robert 	&refclock_jjy,		/* 40 REFCLK_JJY */
314ce265a54SOllivier Robert 	&refclock_tt560,	/* 41 REFCLK_TT560 */
315ba371819SOllivier Robert 	&refclock_zyfer,	/* 42 REFCLK_ZYFER */
316ba371819SOllivier Robert 	&refclock_ripencc,	/* 43 REFCLK_RIPENCC */
3172b15cb3dSCy Schubert 	&refclock_neoclock4x,	/* 44 REFCLK_NEOCLOCK4X */
3182b15cb3dSCy Schubert 	&refclock_tsyncpci,	/* 45 REFCLK_TSYNCPCI */
3192b15cb3dSCy Schubert 	&refclock_gpsdjson	/* 46 REFCLK_GPSDJSON */
320c0b746e5SOllivier Robert };
321c0b746e5SOllivier Robert 
322c0b746e5SOllivier Robert u_char num_refclock_conf = sizeof(refclock_conf)/sizeof(struct refclock *);
323c0b746e5SOllivier Robert 
324c0b746e5SOllivier Robert #else
325*f5f40dd6SCy Schubert NONEMPTY_TRANSLATION_UNIT
326c0b746e5SOllivier Robert #endif
327