xref: /freebsd/contrib/ntp/ntpdc/ntpdc.h (revision 1b6c76a2fe091c74f08427e6c870851025a9cf67)
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 
15 /*
16  * Flags for forming descriptors.
17  */
18 #define	OPT	0x80		/* this argument is optional, or'd with type */
19 
20 #define	NO	0x0
21 #define	NTP_STR	0x1		/* string argument */
22 #define	UINT	0x2		/* unsigned integer */
23 #define	INT	0x3		/* signed integer */
24 #define	ADD	0x4		/* IP network address */
25 
26 /*
27  * Arguments are returned in a union
28  */
29 typedef union {
30 	char *string;
31 	long ival;
32 	u_long uval;
33 	u_int32 netnum;
34 } arg_v;
35 
36 /*
37  * Structure for passing parsed command line
38  */
39 struct parse {
40 	char *keyword;
41 	arg_v argval[MAXARGS];
42 	int nargs;
43 };
44 
45 /*
46  * ntpdc includes a command parser which could charitably be called
47  * crude.  The following structure is used to define the command
48  * syntax.
49  */
50 struct xcmd {
51   const char *keyword;		/* command key word */
52 	void (*handler)	P((struct parse *, FILE *));	/* command handler */
53 	u_char arg[MAXARGS];	/* descriptors for arguments */
54   const char *desc[MAXARGS];	/* descriptions for arguments */
55   const char *comment;
56 };
57 
58 extern	int	doquery	P((int, int, int, int, int, char *, int *, int *, char **, int));
59 extern	char *	nntohost	P((u_int32));
60