1/***************************************************************************** 2 * 3 * libntpq.h 4 * 5 * This is the wrapper library for ntpq, the NTP query utility. 6 * This library reuses the sourcecode from ntpq and exports a number 7 * of useful functions in a library that can be linked against applications 8 * that need to query the status of a running ntpd. The whole 9 * communcation is based on mode 6 packets. 10 * 11 * This header file can be used in applications that want to link against 12 * libntpq. 13 * 14 ****************************************************************************/ 15 16#include "ntp_net.h" 17 18/* general purpose buffer size */ 19#define NTPQ_BUFLEN 2048 20 21/* max. number of associations */ 22#ifndef MAXASSOC 23#define MAXASSOC 1024 24#endif 25 26/* general purpose max array size definition */ 27#ifndef MAXLIST 28#define MAXLIST 64 29#endif 30 31#ifndef LENHOSTNAME 32#define LENHOSTNAME 256 /* host name is max. 256 characters long */ 33#endif 34 35/* NTP Status codes */ 36#define NTP_STATUS_INVALID 0 37#define NTP_STATUS_FALSETICKER 1 38#define NTP_STATUS_EXCESS 2 39#define NTP_STATUS_OUTLYER 3 40#define NTP_STATUS_CANDIDATE 4 41#define NTP_STATUS_SELECTED 5 42#define NTP_STATUS_SYSPEER 6 43#define NTP_STATUS_PPSPEER 7 44 45/* NTP association type identifier */ 46#define NTP_CLOCKTYPE_UNKNOWN '-' 47#define NTP_CLOCKTYPE_BROADCAST 'b' 48#define NTP_CLOCKTYPE_LOCAL 'l' 49#define NTP_CLOCKTYPE_UNICAST 'u' 50#define NTP_CLOCKTYPE_MULTICAST 'm' 51 52/* Variable Sets */ 53#define PEERVARS CTL_OP_READVAR 54#define CLOCKVARS CTL_OP_CLOCKVAR 55 56/* Variable list struct */ 57struct ntpq_varlist { 58 char *name; 59 char *value; 60}; 61 62/* global variables used for holding snapshots of data */ 63#ifndef _LIBNTPQC 64extern char peervars[]; 65extern int peervarlen; 66extern int peervar_assoc; 67extern char clockvars[]; 68extern int clockvarlen; 69extern int clockvar_assoc; 70extern char sysvars[]; 71extern int sysvarlen; 72extern char *ntpq_resultbuffer[]; 73extern struct ntpq_varlist ntpq_varlist[MAXLIST]; 74#endif 75 76 77 78/* 79 * Prototypes of exported libary functions 80 */ 81 82/* from libntpq.c */ 83#ifndef _LIBNTPQC 84extern int ntpq_openhost(char *); 85extern int ntpq_closehost(void); 86extern int ntpq_queryhost(unsigned short VARSET, unsigned short association, char *resultbuf, int maxlen); 87extern int ntpq_getvar( char *resultbuf, int datalen, const char *varname, char *varvalue, int maxlen); 88extern int ntpq_stripquotes ( char *resultbuf, char *srcbuf, int datalen, int maxlen ); 89extern int ntpq_queryhost_peervars(unsigned short association, char *resultbuf, int maxlen); 90extern int ntpq_get_peervar( const char *varname, char *varvalue, int maxlen); 91extern int ntpq_read_sysvars( char *resultbuf, int maxsize ); 92extern int ntpq_get_sysvars( void ); 93extern int ntpq_read_associations ( unsigned short resultbuf[], int max_entries ); 94extern int ntpq_get_assocs ( void ); 95extern int ntpq_get_assoc_number ( int associd ); 96extern int ntpq_get_assoc_peervars( int associd ); 97extern int ntpq_get_assoc_clockvars( int associd ); 98extern int ntpq_get_assoc_allvars( int associd ); 99extern int ntpq_get_assoc_clocktype ( int assoc_number ); 100extern int ntpq_read_assoc_peervars( int associd, char *resultbuf, int maxsize ); 101extern int ntpq_read_assoc_clockvars( int associd, char *resultbuf, int maxsize ); 102 #endif 103 104/* in libntpq_subs.c */ 105#ifndef _LIBNTPQSUBSC 106extern int ntpq_dogetassoc(void); 107extern char ntpq_decodeaddrtype(sockaddr_u *sock); 108extern int ntpq_doquerylist(struct ntpq_varlist *, int , int , int , u_short *, int *, char **datap ); 109#endif 110 111