libntpq.h revision 289997
1129473Spjd/***************************************************************************** 2142727Spjd * 3129473Spjd * libntpq.h 4129473Spjd * 5129473Spjd * This is the wrapper library for ntpq, the NTP query utility. 6129473Spjd * This library reuses the sourcecode from ntpq and exports a number 7129473Spjd * of useful functions in a library that can be linked against applications 8129473Spjd * that need to query the status of a running ntpd. The whole 9129473Spjd * communcation is based on mode 6 packets. 10129473Spjd * 11129473Spjd * This header file can be used in applications that want to link against 12129473Spjd * libntpq. 13155174Spjd * 14129473Spjd ****************************************************************************/ 15129473Spjd 16129473Spjd#include "ntp_net.h" 17129473Spjd 18129473Spjd/* general purpose buffer size */ 19129473Spjd#define NTPQ_BUFLEN 2048 20129473Spjd 21129473Spjd/* max. number of associations */ 22129473Spjd#ifndef MAXASSOC 23129473Spjd#define MAXASSOC 1024 24129473Spjd#endif 25129473Spjd 26129473Spjd/* general purpose max array size definition */ 27129473Spjd#ifndef MAXLIST 28129473Spjd#define MAXLIST 64 29129473Spjd#endif 30129473Spjd 31129473Spjd#ifndef LENHOSTNAME 32129473Spjd#define LENHOSTNAME 256 /* host name is max. 256 characters long */ 33129473Spjd#endif 34129473Spjd 35129473Spjd/* NTP Status codes */ 36129473Spjd#define NTP_STATUS_INVALID 0 37223921Sae#define NTP_STATUS_FALSETICKER 1 38129473Spjd#define NTP_STATUS_EXCESS 2 39129473Spjd#define NTP_STATUS_OUTLIER 3 40131878Spjd#define NTP_STATUS_CANDIDATE 4 41129473Spjd#define NTP_STATUS_SELECTED 5 42129473Spjd#define NTP_STATUS_SYSPEER 6 43129473Spjd#define NTP_STATUS_PPSPEER 7 44219029Snetchild 45129473Spjd/* NTP association type identifier */ 46151897Srwatson#define NTP_CLOCKTYPE_UNKNOWN '-' 47129473Spjd#define NTP_CLOCKTYPE_BROADCAST 'b' 48131878Spjd#define NTP_CLOCKTYPE_LOCAL 'l' 49129473Spjd#define NTP_CLOCKTYPE_UNICAST 'u' 50129473Spjd#define NTP_CLOCKTYPE_MULTICAST 'm' 51129473Spjd 52129473Spjd/* Variable Sets */ 53129473Spjd#define PEERVARS CTL_OP_READVAR 54129473Spjd#define CLOCKVARS CTL_OP_CLOCKVAR 55129473Spjd 56129473Spjd/* Variable list struct */ 57131878Spjdstruct ntpq_varlist { 58131878Spjd char *name; 59129473Spjd char *value; 60129473Spjd}; 61129473Spjd 62133318Sphk/* global variables used for holding snapshots of data */ 63129473Spjd#ifndef LIBNTPQ_C 64129473Spjdextern char peervars[]; 65131878Spjdextern int peervarlen; 66131878Spjdextern int peervar_assoc; 67131878Spjdextern char clockvars[]; 68129473Spjdextern int clockvarlen; 69129473Spjdextern int clockvar_assoc; 70131878Spjdextern char sysvars[]; 71227309Sedextern int sysvarlen; 72227309Sedextern char *ntpq_resultbuffer[]; 73131878Spjdextern struct ntpq_varlist ntpq_varlist[MAXLIST]; 74267992Shselasky#endif 75131878Spjd 76138623Spjd 77131878Spjd 78131878Spjd/* 79131878Spjd * Prototypes of exported libary functions 80131878Spjd */ 81129473Spjd 82131878Spjd/* from libntpq.c */ 83170289Sdwmaloneextern int ntpq_openhost(char *, int); 84131878Spjdextern int ntpq_closehost(void); 85131878Spjdextern int ntpq_queryhost(unsigned short VARSET, associd_t association, 86131878Spjd char *resultbuf, int maxlen); 87131878Spjdextern size_t ntpq_getvar(const char *resultbuf, size_t datalen, 88267992Shselasky const char *varname, char *varvalue, 89132095Spjd size_t maxlen); 90196837Smavextern int ntpq_stripquotes ( char *resultbuf, char *srcbuf, int datalen, int maxlen ); 91267992Shselaskyextern int ntpq_queryhost_peervars(associd_t association, char *resultbuf, int maxlen); 92132095Spjdextern int ntpq_get_peervar( const char *varname, char *varvalue, int maxlen); 93133205Spjdextern size_t ntpq_read_sysvars(char *resultbuf, size_t maxsize); 94133205Spjdextern int ntpq_get_sysvars( void ); 95133205Spjdextern int ntpq_read_associations ( unsigned short resultbuf[], int max_entries ); 96131878Spjdextern int ntpq_get_assocs ( void ); 97129473Spjdextern int ntpq_get_assoc_number ( associd_t associd ); 98129473Spjdextern int ntpq_get_assoc_peervars( associd_t associd ); 99129473Spjdextern int ntpq_get_assoc_clockvars( associd_t associd ); 100129473Spjdextern int ntpq_get_assoc_allvars( associd_t associd ); 101129473Spjdextern int ntpq_get_assoc_clocktype(int assoc_index); 102129473Spjdextern int ntpq_read_assoc_peervars( associd_t associd, char *resultbuf, int maxsize ); 103129473Spjdextern int ntpq_read_assoc_clockvars( associd_t associd, char *resultbuf, int maxsize ); 104129473Spjd 105129473Spjd/* in libntpq_subs.c */ 106129473Spjdextern int ntpq_dogetassoc(void); 107129473Spjdextern char ntpq_decodeaddrtype(sockaddr_u *sock); 108129473Spjdextern int ntpq_doquerylist(struct ntpq_varlist *, int, associd_t, int, 109129473Spjd u_short *, int *, const char **datap); 110129473Spjd