1 /* 2 * Copyright (c) 2005 The DragonFly Project. All rights reserved. 3 * 4 * This code is derived from software contributed to The DragonFly Project 5 * by Matthew Dillon <dillon@backplane.com> 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * 3. Neither the name of The DragonFly Project nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific, prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 29 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 31 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 * $DragonFly: src/usr.sbin/dntpd/defs.h,v 1.11 2007/06/26 02:40:20 dillon Exp $ 35 */ 36 37 #include <sys/types.h> 38 #include <sys/time.h> 39 #include <sys/socket.h> 40 #include <netinet/in.h> 41 #include <netinet/in_systm.h> 42 #include <netinet/ip.h> 43 #include <arpa/inet.h> 44 #include <netdb.h> 45 #include <stdio.h> 46 #include <stdlib.h> 47 #include <stdarg.h> 48 #include <string.h> 49 #include <signal.h> 50 #include <unistd.h> 51 #include <fcntl.h> 52 #include <limits.h> 53 #include <errno.h> 54 #include <assert.h> 55 #include <math.h> 56 #include <syslog.h> 57 58 #include "ntp.h" 59 #include "client.h" 60 61 #define DNTPD_VERSION "1.0" 62 63 #define logdebug(level, ctl, varargs...) \ 64 if (level <= debug_level) _logdebug(level, ctl, ##varargs); 65 #define logdebuginfo(info, level, ctl, varargs...) \ 66 if (level <= debug_level) _logdebuginfo(info, level, ctl, ##varargs); 67 68 extern int debug_opt; 69 extern int debug_level; 70 extern int quickset_opt; 71 extern int no_update_opt; 72 extern int min_sleep_opt; 73 extern int nom_sleep_opt; 74 extern int max_sleep_opt; 75 extern int log_stderr; 76 extern int family; 77 extern double insane_deviation; 78 79 typedef enum { LOG_DNS_ERROR, IGNORE_DNS_ERROR } dns_error_policy_t; 80 81 int udp_socket(const char *target, int port, struct sockaddr *sam, 82 dns_error_policy_t dns_error_policy); 83 int udp_ntptimereq(int fd, struct timeval *rtvp, 84 struct timeval *ltvp, struct timeval *lbtvp); 85 void reconnect_server(server_info_t info); 86 void disconnect_server(server_info_t info); 87 88 void l_fixedpt_to_tv(struct l_fixedpt *fixed, struct timeval *tvp); 89 void tv_subtract_micro(struct timeval *tvp, long usec); 90 void tv_add_micro(struct timeval *tvp, long usec); 91 void tv_add_offset(struct timeval *tvp, double offset); 92 double tv_delta_double(struct timeval *tv1, struct timeval *tv2); 93 void tv_to_ts(struct timeval *tv, struct timespec *ts); 94 void ts_to_tv(struct timespec *ts, struct timeval *tv); 95 96 void logerr(const char *ctl, ...) __printflike(1, 2); 97 void logerrstr(const char *ctl, ...) __printflike(1, 2); 98 void _logdebug(int level, const char *ctl, ...) __printflike(2, 3); 99 void _logdebuginfo(server_info_t info, int level, const char *ctl, ...) 100 __printflike(3, 4); 101 102 void sysntp_getbasetime(struct timeval *tvp); 103 int sysntp_offset_correction_is_running(void); 104 double sysntp_correct_offset(double offset); 105 double sysntp_correct_course_offset(double offset); 106 void sysntp_correct_freq(double freq); 107 void sysntp_clear_alternative_corrections(void); 108 109