libntpq.h revision 293896
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_OUTLIER      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 LIBNTPQ_C
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 */
83extern int ntpq_openhost(char *, int);
84extern int ntpq_closehost(void);
85extern int ntpq_queryhost(unsigned short VARSET, associd_t association,
86			  char *resultbuf, int maxlen);
87extern size_t ntpq_getvar(const char *resultbuf, size_t datalen,
88			  const char *varname, char *varvalue,
89			  size_t maxlen);
90extern int ntpq_stripquotes ( char *resultbuf, char *srcbuf, int datalen, int maxlen );
91extern int ntpq_queryhost_peervars(associd_t association, char *resultbuf, int maxlen);
92extern int ntpq_get_peervar( const char *varname, char *varvalue, int maxlen);
93extern size_t ntpq_read_sysvars(char *resultbuf, size_t maxsize);
94extern int ntpq_get_sysvars( void );
95extern int ntpq_read_associations ( unsigned short resultbuf[], int max_entries );
96extern int ntpq_get_assocs ( void );
97extern int ntpq_get_assoc_number ( associd_t associd );
98extern int ntpq_get_assoc_peervars( associd_t associd );
99extern int ntpq_get_assoc_clockvars( associd_t associd );
100extern int ntpq_get_assoc_allvars( associd_t associd  );
101extern int ntpq_get_assoc_clocktype(int assoc_index);
102extern int ntpq_read_assoc_peervars( associd_t associd, char *resultbuf, int maxsize );
103extern int ntpq_read_assoc_clockvars( associd_t associd, char *resultbuf, int maxsize );
104
105/* in libntpq_subs.c */
106extern int ntpq_dogetassoc(void);
107extern char ntpq_decodeaddrtype(sockaddr_u *sock);
108extern int ntpq_doquerylist(struct ntpq_varlist *, int, associd_t, int,
109			    u_short *, size_t *, const char **datap);
110