diff options
Diffstat (limited to 'include/ntp_stdlib.h')
-rw-r--r-- | include/ntp_stdlib.h | 237 |
1 files changed, 157 insertions, 80 deletions
diff --git a/include/ntp_stdlib.h b/include/ntp_stdlib.h index c389d1ecc98b..8fc237ae0351 100644 --- a/include/ntp_stdlib.h +++ b/include/ntp_stdlib.h @@ -1,13 +1,22 @@ /* * ntp_stdlib.h - Prototypes for NTP lib. */ +#ifndef NTP_STDLIB_H +#define NTP_STDLIB_H + #include <sys/types.h> +#ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> -#include "ntp_rfc2553.h" +#endif +#include "l_stdlib.h" +#include "ntp_rfc2553.h" #include "ntp_types.h" +#include "ntp_malloc.h" #include "ntp_string.h" -#include "l_stdlib.h" +#include "ntp_net.h" +#include "ntp_syslog.h" + /* * Handle gcc __attribute__ if available. @@ -25,84 +34,117 @@ # endif #endif -#if defined(__STDC__) || defined(HAVE_STDARG_H) -# include <stdarg.h> -extern void msyslog P((int, const char *, ...)) - __attribute__((__format__(__printf__, 2, 3))); -extern void netsyslog P((int, const char *, ...)) +extern int mprintf(const char *, ...) + __attribute__((__format__(__printf__, 1, 2))); +extern int mfprintf(FILE *, const char *, ...) + __attribute__((__format__(__printf__, 2, 3))); +extern int mvfprintf(FILE *, const char *, va_list) + __attribute__((__format__(__printf__, 2, 0))); +extern int mvsnprintf(char *, size_t, const char *, va_list) + __attribute__((__format__(__printf__, 3, 0))); +extern int msnprintf(char *, size_t, const char *, ...) + __attribute__((__format__(__printf__, 3, 4))); +extern void msyslog(int, const char *, ...) __attribute__((__format__(__printf__, 2, 3))); -#else -# include <varargs.h> -extern void msyslog P(()); -extern void netsyslog P(()); + +/* + * When building without OpenSSL, use a few macros of theirs to + * minimize source differences in NTP. + */ +#ifndef OPENSSL +#define NID_md5 4 /* from openssl/objects.h */ +/* from openssl/evp.h */ +#define EVP_MAX_MD_SIZE 64 /* longest known is SHA512 */ #endif -extern void auth_delkeys P((void)); -extern int auth_havekey P((keyid_t)); -extern int authdecrypt P((keyid_t, u_int32 *, int, int)); -extern int authencrypt P((keyid_t, u_int32 *, int)); -extern int authhavekey P((keyid_t)); -extern int authistrusted P((keyid_t)); -extern int authreadkeys P((const char *)); -extern void authtrust P((keyid_t, u_long)); -extern int authusekey P((keyid_t, int, const u_char *)); - -extern u_long calyearstart P((u_long)); -extern const char *clockname P((int)); -extern int clocktime P((int, int, int, int, int, u_long, u_long *, u_int32 *)); -#if defined SYS_WINNT && defined DEBUG -# define emalloc(_c) debug_emalloc(_c, __FILE__, __LINE__) -extern void * debug_emalloc P((u_int, char *, int)); +/* authkeys.c */ +extern void auth_delkeys (void); +extern int auth_havekey (keyid_t); +extern int authdecrypt (keyid_t, u_int32 *, int, int); +extern int authencrypt (keyid_t, u_int32 *, int); +extern int authhavekey (keyid_t); +extern int authistrusted (keyid_t); +extern int authreadkeys (const char *); +extern void authtrust (keyid_t, u_long); +extern int authusekey (keyid_t, int, const u_char *); + +extern u_long calyearstart (u_long); +extern const char *clockname (int); +extern int clocktime (int, int, int, int, int, u_long, u_long *, u_int32 *); +extern int ntp_getopt (int, char **, const char *); +extern void init_auth (void); +extern void init_lib (void); +extern struct savekey *auth_findkey (keyid_t); +extern int auth_moremem (void); +extern int ymd2yd (int, int, int); + +/* a_md5encrypt.c */ +extern int MD5authdecrypt (int, u_char *, u_int32 *, int, int); +extern int MD5authencrypt (int, u_char *, u_int32 *, int); +extern void MD5auth_setkey (keyid_t, int, const u_char *, const int); +extern u_int32 addr2refid (sockaddr_u *); + +/* emalloc.c */ +#ifndef EREALLOC_CALLSITE /* ntp_malloc.h defines */ +extern void * ereallocz (void *, size_t, size_t, int); +#define erealloczsite(p, n, o, z, f, l) ereallocz(p, n, o, (z)) +extern void * emalloc (size_t); +#define emalloc_zero(c) ereallocz(NULL, (c), 0, TRUE) +#define erealloc(p, c) ereallocz(p, (c), 0, FALSE) +#define erealloc_zero(p, n, o) ereallocz(p, n, (o), TRUE) +extern char * estrdup_impl (const char *); +#define estrdup(s) estrdup_impl(s) #else -extern void * emalloc P((u_int)); +extern void * ereallocz (void *, size_t, size_t, int, + const char *, int); +#define erealloczsite ereallocz +#define emalloc(c) ereallocz(NULL, (c), 0, FALSE, \ + __FILE__, __LINE__) +#define emalloc_zero(c) ereallocz(NULL, (c), 0, TRUE, \ + __FILE__, __LINE__) +#define erealloc(p, c) ereallocz(p, (c), 0, FALSE, \ + __FILE__, __LINE__) +#define erealloc_zero(p, n, o) ereallocz(p, n, (o), TRUE, \ + __FILE__, __LINE__) +extern char * estrdup_impl (const char *, const char *, int); +#define estrdup(s) estrdup_impl((s), __FILE__, __LINE__) #endif -extern int ntp_getopt P((int, char **, const char *)); -extern void init_auth P((void)); -extern void init_lib P((void)); -extern struct savekey *auth_findkey P((keyid_t)); -extern int auth_moremem P((void)); -extern int ymd2yd P((int, int, int)); - -extern int MD5authdecrypt P((u_char *, u_int32 *, int, int)); -extern int MD5authencrypt P((u_char *, u_int32 *, int)); -extern void MD5auth_setkey P((keyid_t, const u_char *, const int)); -extern u_int32 addr2refid P((struct sockaddr_storage *)); - -extern int atoint P((const char *, long *)); -extern int atouint P((const char *, u_long *)); -extern int hextoint P((const char *, u_long *)); -extern char * humandate P((u_long)); -extern char * humanlogtime P((void)); -extern char * inttoa P((long)); -extern char * mfptoa P((u_long, u_long, short)); -extern char * mfptoms P((u_long, u_long, short)); -extern const char * modetoa P((int)); -extern const char * eventstr P((int)); -extern const char * ceventstr P((int)); -extern char * statustoa P((int, int)); -extern const char * sysstatstr P((int)); -extern const char * peerstatstr P((int)); -extern const char * clockstatstr P((int)); -extern struct sockaddr_storage* netof P((struct sockaddr_storage*)); -extern char * numtoa P((u_int32)); -extern char * numtohost P((u_int32)); -extern char * socktoa P((struct sockaddr_storage *)); -extern char * socktohost P((struct sockaddr_storage *)); -extern int octtoint P((const char *, u_long *)); -extern u_long ranp2 P((int)); -extern char * refnumtoa P((struct sockaddr_storage *)); -extern int tsftomsu P((u_long, int)); -extern char * uinttoa P((u_long)); - -extern int decodenetnum P((const char *, struct sockaddr_storage *)); - -extern const char * FindConfig P((const char *)); - -extern void signal_no_reset P((int, RETSIGTYPE (*func)(int))); - -extern void getauthkeys P((const char *)); -extern void auth_agekeys P((void)); -extern void rereadkeys P((void)); + + +extern int atoint (const char *, long *); +extern int atouint (const char *, u_long *); +extern int hextoint (const char *, u_long *); +extern char * humanlogtime (void); +extern char * inttoa (long); +extern char * mfptoa (u_long, u_long, short); +extern char * mfptoms (u_long, u_long, short); +extern const char * modetoa (int); +extern const char * eventstr (int); +extern const char * ceventstr (int); +extern char * statustoa (int, int); +extern const char * sysstatstr (int); +extern const char * peerstatstr (int); +extern const char * clockstatstr (int); +extern sockaddr_u * netof (sockaddr_u *); +extern char * numtoa (u_int32); +extern char * numtohost (u_int32); +extern char * socktoa (const sockaddr_u *); +extern char * socktohost (const sockaddr_u *); +extern int octtoint (const char *, u_long *); +extern u_long ranp2 (int); +extern char * refnumtoa (sockaddr_u *); +extern int tsftomsu (u_long, int); +extern char * uinttoa (u_long); + +extern int decodenetnum (const char *, sockaddr_u *); + +extern const char * FindConfig (const char *); + +extern void signal_no_reset (int, RETSIGTYPE (*func)(int)); + +extern void getauthkeys (const char *); +extern void auth_agekeys (void); +extern void rereadkeys (void); /* * Variable declarations for libntp. @@ -129,18 +171,51 @@ extern int authnumfreekeys; */ extern keyid_t cache_keyid; /* key identifier */ extern u_char * cache_key; /* key pointer */ +extern int cache_type; /* key type */ extern u_int cache_keylen; /* key length */ /* getopt.c */ extern char * ntp_optarg; /* global argument pointer */ extern int ntp_optind; /* global argv index */ -/* machines.c */ -extern const char *set_tod_using; +/* lib_strbuf.c */ +extern int ipv4_works; +extern int ipv6_works; -/* mexit.c */ -#if defined SYS_WINNT || defined SYS_CYGWIN32 -extern HANDLE hServDoneEvent; +/* machines.c */ +typedef void (*pset_tod_using)(const char *); +extern pset_tod_using set_tod_using; + +/* ssl_init.c */ +#ifdef OPENSSL +extern void ssl_init (void); +extern void ssl_check_version (void); +extern int ssl_init_done; +#define INIT_SSL() \ + do { \ + if (!ssl_init_done) \ + ssl_init(); \ + } while (0) +#else /* !OPENSSL follows */ +#define INIT_SSL() do {} while (0) +#endif +extern int keytype_from_text (const char *, size_t *); +extern const char *keytype_name (int); +extern char * getpass_keytype (int); + + +/* lib/isc/win32/strerror.c + * + * To minimize Windows-specific changes to the rest of the NTP code, + * particularly reference clocks, we hijack calls to strerror() to deal + * with our mixture of error codes from the C runtime (open, write) + * and Windows (sockets, serial ports). This is an ugly hack because + * both use the lowest values differently, but particularly for ntpd, + * it's not a problem. + */ +#ifdef NTP_REDEFINE_STRERROR +#define strerror(e) ntp_strerror(e) +extern char * ntp_strerror (int e); #endif /* systime.c */ @@ -148,3 +223,5 @@ extern double sys_tick; /* adjtime() resolution */ /* version.c */ extern const char *Version; /* version declaration */ + +#endif /* NTP_STDLIB_H */ |