xref: /freebsd/contrib/ntp/ntpdc/ntpdc.h (revision f39bffc62c1395bde25d152c7f68fdf7cbaab414)
1 /*
2  * ntpdc.h - definitions of interest to ntpdc
3  */
4 #include "ntp_fp.h"
5 #include "ntp.h"
6 #include "ntp_request.h"
7 #include "ntp_string.h"
8 #include "ntp_malloc.h"
9 
10 /*
11  * Maximum number of arguments
12  */
13 #define	MAXARGS	4
14 #define	MOREARGS 10
15 
16 /*
17  * Flags for forming descriptors.
18  */
19 #define	OPT		0x80	/* this argument is optional, or'd with type */
20 
21 #define	NO		0x0
22 #define	NTP_STR		0x1	/* string argument */
23 #define	NTP_UINT	0x2	/* unsigned integer */
24 #define	NTP_INT		0x3	/* signed integer */
25 #define	NTP_ADD		0x4	/* IP network address */
26 #define IP_VERSION	0x5	/* IP version */
27 
28 /*
29  * Arguments are returned in a struct - no
30  * union space saving is attempted.
31  */
32 typedef struct {
33 	u_char type;
34 	char *string;
35 	long ival;
36 	u_long uval;
37 	sockaddr_u netnum;
38 } arg_v;
39 
40 /*
41  * Structure for passing parsed command line
42  */
43 struct parse {
44 	char *keyword;
45 	arg_v argval[MAXARGS + MOREARGS];
46 	size_t nargs;
47 };
48 
49 /*
50  * ntpdc includes a command parser which could charitably be called
51  * crude.  The following structure is used to define the command
52  * syntax.
53  */
54 struct xcmd {
55   const char *keyword;		/* command key word */
56 	void (*handler)	(struct parse *, FILE *);	/* command handler */
57 	u_char arg[MAXARGS];	/* descriptors for arguments */
58   const char *desc[MAXARGS];	/* descriptions for arguments */
59   const char *comment;
60 };
61 
62 extern	int impl_ver;
63 extern	int showhostnames;
64 extern	int s_port;
65 
66 extern	int	doquery	(int, int, int, size_t, size_t, const char *, size_t *, size_t *, const char **, int, int);
67 extern	const char * nntohost	(sockaddr_u *);
68