xref: /netbsd-src/external/bsd/ntp/dist/ntpq/libntpq.h (revision cdfa2a7ef92791ba9db70a584a1d904730e6fb46)
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 */
59 struct ntpq_varlist {
60 	char *name;
61 	char *value;
62 };
63 
64 /* global variables used for holding snapshots of data */
65 #ifndef LIBNTPQ_C
66 extern char peervars[];
67 extern int peervarlen;
68 extern int peervar_assoc;
69 extern char clockvars[];
70 extern int clockvarlen;
71 extern int clockvar_assoc;
72 extern char sysvars[];
73 extern int sysvarlen;
74 extern char *ntpq_resultbuffer[];
75 extern struct ntpq_varlist ntpq_varlist[MAXLIST];
76 #endif
77 
78 
79 
80 /*
81  * Prototypes of exported libary functions
82  */
83 
84 /* from libntpq.c */
85 extern int ntpq_openhost(char *, int);
86 extern int ntpq_closehost(void);
87 extern int ntpq_queryhost(unsigned short VARSET, associd_t association,
88 			  char *resultbuf, int maxlen);
89 extern size_t ntpq_getvar(const char *resultbuf, size_t datalen,
90 			  const char *varname, char *varvalue,
91 			  size_t maxlen);
92 extern int ntpq_stripquotes ( char *resultbuf, char *srcbuf, int datalen, int maxlen );
93 extern int ntpq_queryhost_peervars(associd_t association, char *resultbuf, int maxlen);
94 extern int ntpq_get_peervar( const char *varname, char *varvalue, int maxlen);
95 extern size_t ntpq_read_sysvars(char *resultbuf, size_t maxsize);
96 extern int ntpq_get_sysvars( void );
97 extern int ntpq_read_associations ( unsigned short resultbuf[], int max_entries );
98 extern int ntpq_get_assocs ( void );
99 extern int ntpq_get_assoc_number ( associd_t associd );
100 extern int ntpq_get_assoc_peervars( associd_t associd );
101 extern int ntpq_get_assoc_clockvars( associd_t associd );
102 extern int ntpq_get_assoc_allvars( associd_t associd  );
103 extern int ntpq_get_assoc_clocktype(int assoc_index);
104 extern int ntpq_read_assoc_peervars( associd_t associd, char *resultbuf, int maxsize );
105 extern int ntpq_read_assoc_clockvars( associd_t associd, char *resultbuf, int maxsize );
106 
107 /* in libntpq_subs.c */
108 extern int ntpq_dogetassoc(void);
109 extern char ntpq_decodeaddrtype(sockaddr_u *sock);
110 extern int ntpq_doquerylist(struct ntpq_varlist *, int, associd_t, int,
111 			    u_short *, size_t *, const char **datap);
112