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