File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / include / ntp_stdlib.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 5 months ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    1: /*
    2:  * ntp_stdlib.h - Prototypes for NTP lib.
    3:  */
    4: #ifndef NTP_STDLIB_H
    5: #define NTP_STDLIB_H
    6: 
    7: #include <sys/types.h>
    8: #ifdef HAVE_SYS_SOCKET_H
    9: #include <sys/socket.h>
   10: #endif
   11: 
   12: #include "l_stdlib.h"
   13: #include "ntp_rfc2553.h"
   14: #include "ntp_types.h"
   15: #include "ntp_malloc.h"
   16: #include "ntp_string.h"
   17: #include "ntp_net.h"
   18: #include "ntp_syslog.h"
   19: 
   20: 
   21: /*
   22:  * Handle gcc __attribute__ if available.
   23:  */
   24: #ifndef __attribute__
   25: /* This feature is available in gcc versions 2.5 and later.  */
   26: # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || (defined(__STRICT_ANSI__))
   27: #  define __attribute__(Spec) /* empty */
   28: # endif
   29: /* The __-protected variants of `format' and `printf' attributes
   30:    are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
   31: # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
   32: #  define __format__ format
   33: #  define __printf__ printf
   34: # endif
   35: #endif
   36: 
   37: extern	int	mprintf(const char *, ...)
   38: 			__attribute__((__format__(__printf__, 1, 2)));
   39: extern	int	mfprintf(FILE *, const char *, ...)
   40: 			__attribute__((__format__(__printf__, 2, 3)));
   41: extern	int	mvfprintf(FILE *, const char *, va_list)
   42: 			__attribute__((__format__(__printf__, 2, 0)));
   43: extern	int	mvsnprintf(char *, size_t, const char *, va_list)
   44: 			__attribute__((__format__(__printf__, 3, 0)));
   45: extern	int	msnprintf(char *, size_t, const char *, ...)
   46: 			__attribute__((__format__(__printf__, 3, 4)));
   47: extern	void	msyslog(int, const char *, ...)
   48: 				__attribute__((__format__(__printf__, 2, 3)));
   49: 
   50: /*
   51:  * When building without OpenSSL, use a few macros of theirs to
   52:  * minimize source differences in NTP.
   53:  */
   54: #ifndef OPENSSL
   55: #define NID_md5	4	/* from openssl/objects.h */
   56: /* from openssl/evp.h */
   57: #define EVP_MAX_MD_SIZE	64	/* longest known is SHA512 */
   58: #endif
   59: 
   60: /* authkeys.c */
   61: extern	void	auth_delkeys	(void);
   62: extern	int	auth_havekey	(keyid_t);
   63: extern	int	authdecrypt	(keyid_t, u_int32 *, int, int);
   64: extern	int	authencrypt	(keyid_t, u_int32 *, int);
   65: extern	int	authhavekey	(keyid_t);
   66: extern	int	authistrusted	(keyid_t);
   67: extern	int	authreadkeys	(const char *);
   68: extern	void	authtrust	(keyid_t, u_long);
   69: extern	int	authusekey	(keyid_t, int, const u_char *);
   70: 
   71: extern	u_long	calyearstart	(u_long);
   72: extern	const char *clockname	(int);
   73: extern	int	clocktime	(int, int, int, int, int, u_long, u_long *, u_int32 *);
   74: extern	int	ntp_getopt	(int, char **, const char *);
   75: extern	void	init_auth	(void);
   76: extern	void	init_lib	(void);
   77: extern	struct savekey *auth_findkey (keyid_t);
   78: extern	int	auth_moremem	(void);
   79: extern	int	ymd2yd		(int, int, int);
   80: 
   81: /* a_md5encrypt.c */
   82: extern	int	MD5authdecrypt	(int, u_char *, u_int32 *, int, int);
   83: extern	int	MD5authencrypt	(int, u_char *, u_int32 *, int);
   84: extern	void	MD5auth_setkey	(keyid_t, int, const u_char *, const int);
   85: extern	u_int32	addr2refid	(sockaddr_u *);
   86: 
   87: /* emalloc.c */
   88: #ifndef EREALLOC_CALLSITE	/* ntp_malloc.h defines */
   89: extern	void *	ereallocz	(void *, size_t, size_t, int);
   90: #define	erealloczsite(p, n, o, z, f, l) ereallocz(p, n, o, (z))
   91: extern	void *	emalloc		(size_t);
   92: #define	emalloc_zero(c)		ereallocz(NULL, (c), 0, TRUE)
   93: #define	erealloc(p, c)		ereallocz(p, (c), 0, FALSE)
   94: #define erealloc_zero(p, n, o)	ereallocz(p, n, (o), TRUE)
   95: extern	char *	estrdup_impl	(const char *);
   96: #define	estrdup(s)		estrdup_impl(s)
   97: #else
   98: extern	void *	ereallocz	(void *, size_t, size_t, int,
   99: 				 const char *, int);
  100: #define erealloczsite		ereallocz
  101: #define	emalloc(c)		ereallocz(NULL, (c), 0, FALSE, \
  102: 					  __FILE__, __LINE__)
  103: #define	emalloc_zero(c)		ereallocz(NULL, (c), 0, TRUE, \
  104: 					  __FILE__, __LINE__)
  105: #define	erealloc(p, c)		ereallocz(p, (c), 0, FALSE, \
  106: 					  __FILE__, __LINE__)
  107: #define	erealloc_zero(p, n, o)	ereallocz(p, n, (o), TRUE, \
  108: 					  __FILE__, __LINE__)
  109: extern	char *	estrdup_impl	(const char *, const char *, int);
  110: #define	estrdup(s) estrdup_impl((s), __FILE__, __LINE__)
  111: #endif
  112: 
  113: 
  114: extern	int	atoint		(const char *, long *);
  115: extern	int	atouint		(const char *, u_long *);
  116: extern	int	hextoint	(const char *, u_long *);
  117: extern	char *	humanlogtime	(void);
  118: extern	char *	inttoa		(long);
  119: extern	char *	mfptoa		(u_long, u_long, short);
  120: extern	char *	mfptoms		(u_long, u_long, short);
  121: extern	const char * modetoa	(int);
  122: extern  const char * eventstr	(int);
  123: extern  const char * ceventstr	(int);
  124: extern	char *	statustoa	(int, int);
  125: extern  const char * sysstatstr (int);
  126: extern  const char * peerstatstr (int);
  127: extern  const char * clockstatstr (int);
  128: extern	sockaddr_u * netof	(sockaddr_u *);
  129: extern	char *	numtoa		(u_int32);
  130: extern	char *	numtohost	(u_int32);
  131: extern	char *	socktoa		(const sockaddr_u *);
  132: extern	char *	socktohost	(const sockaddr_u *);
  133: extern	int	octtoint	(const char *, u_long *);
  134: extern	u_long	ranp2		(int);
  135: extern	char *	refnumtoa	(sockaddr_u *);
  136: extern	int	tsftomsu	(u_long, int);
  137: extern	char *	uinttoa		(u_long);
  138: 
  139: extern	int	decodenetnum	(const char *, sockaddr_u *);
  140: 
  141: extern	const char * FindConfig	(const char *);
  142: 
  143: extern	void	signal_no_reset (int, RETSIGTYPE (*func)(int));
  144: 
  145: extern	void	getauthkeys 	(const char *);
  146: extern	void	auth_agekeys	(void);
  147: extern	void	rereadkeys	(void);
  148: 
  149: /*
  150:  * Variable declarations for libntp.
  151:  */
  152: 
  153: /*
  154:  * Defined by any program.
  155:  */
  156: extern volatile int debug;		/* debugging flag */
  157: 
  158: /* authkeys.c */
  159: extern u_long	authkeynotfound;	/* keys not found */
  160: extern u_long	authkeylookups;		/* calls to lookup keys */
  161: extern u_long	authnumkeys;		/* number of active keys */
  162: extern u_long	authkeyexpired;		/* key lifetime expirations */
  163: extern u_long	authkeyuncached;	/* cache misses */
  164: extern u_long	authencryptions;	/* calls to encrypt */
  165: extern u_long	authdecryptions;	/* calls to decrypt */
  166: 
  167: extern int	authnumfreekeys;
  168: 
  169: /*
  170:  * The key cache. We cache the last key we looked at here.
  171:  */
  172: extern keyid_t	cache_keyid;		/* key identifier */
  173: extern u_char *	cache_key;		/* key pointer */
  174: extern int	cache_type;		/* key type */
  175: extern u_int	cache_keylen;		/* key length */
  176: 
  177: /* getopt.c */
  178: extern char *	ntp_optarg;		/* global argument pointer */
  179: extern int	ntp_optind;		/* global argv index */
  180: 
  181: /* lib_strbuf.c */
  182: extern int	ipv4_works;
  183: extern int	ipv6_works;
  184: 
  185: /* machines.c */
  186: typedef void (*pset_tod_using)(const char *);
  187: extern pset_tod_using	set_tod_using;
  188: 
  189: /* ssl_init.c */
  190: #ifdef OPENSSL
  191: extern	void	ssl_init		(void);
  192: extern	void	ssl_check_version	(void);
  193: extern	int	ssl_init_done;
  194: #define	INIT_SSL()				\
  195: 	do {					\
  196: 		if (!ssl_init_done)		\
  197: 			ssl_init();		\
  198: 	} while (0)
  199: #else	/* !OPENSSL follows */
  200: #define	INIT_SSL()		do {} while (0)
  201: #endif
  202: extern	int	keytype_from_text	(const char *,	size_t *);
  203: extern	const char *keytype_name	(int);
  204: extern	char *	getpass_keytype		(int);
  205: 
  206: 
  207: /* lib/isc/win32/strerror.c
  208:  *
  209:  * To minimize Windows-specific changes to the rest of the NTP code,
  210:  * particularly reference clocks, we hijack calls to strerror() to deal
  211:  * with our mixture of error codes from the  C runtime (open, write)
  212:  * and Windows (sockets, serial ports).  This is an ugly hack because
  213:  * both use the lowest values differently, but particularly for ntpd,
  214:  * it's not a problem.
  215:  */
  216: #ifdef NTP_REDEFINE_STRERROR
  217: #define	strerror(e)	ntp_strerror(e)
  218: extern char *	ntp_strerror	(int e);
  219: #endif
  220: 
  221: /* systime.c */
  222: extern double	sys_tick;		/* adjtime() resolution */
  223: 
  224: /* version.c */
  225: extern const char *Version;		/* version declaration */
  226: 
  227: #endif	/* NTP_STDLIB_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>