aboutsummaryrefslogtreecommitdiff
path: root/include/ntp_stdlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ntp_stdlib.h')
-rw-r--r--include/ntp_stdlib.h237
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 */