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