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