xref: /freebsd/contrib/ntp/ntpdc/ntpdc.h (revision 009e81b16465ea457c0e63fd49fe77f47cc27a5a)
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
14ea906c41SOllivier Robert #define	MOREARGS 10
15c0b746e5SOllivier Robert 
16c0b746e5SOllivier Robert /*
17c0b746e5SOllivier Robert  * Flags for forming descriptors.
18c0b746e5SOllivier Robert  */
19c0b746e5SOllivier Robert #define	OPT		0x80	/* this argument is optional, or'd with type */
20c0b746e5SOllivier Robert 
21c0b746e5SOllivier Robert #define	NO		0x0
22c0b746e5SOllivier Robert #define	NTP_STR		0x1	/* string argument */
23ea906c41SOllivier Robert #define	NTP_UINT	0x2	/* unsigned integer */
24ea906c41SOllivier Robert #define	NTP_INT		0x3	/* signed integer */
25ea906c41SOllivier Robert #define	NTP_ADD		0x4	/* IP network address */
269c2daa00SOllivier Robert #define IP_VERSION	0x5	/* IP version */
27c0b746e5SOllivier Robert 
28c0b746e5SOllivier Robert /*
29ea906c41SOllivier Robert  * Arguments are returned in a struct - no
30ea906c41SOllivier Robert  * union space saving is attempted.
31c0b746e5SOllivier Robert  */
32ea906c41SOllivier Robert typedef struct {
33ea906c41SOllivier Robert 	u_char type;
34c0b746e5SOllivier Robert 	char *string;
35c0b746e5SOllivier Robert 	long ival;
36c0b746e5SOllivier Robert 	u_long uval;
372b15cb3dSCy Schubert 	sockaddr_u netnum;
38c0b746e5SOllivier Robert } arg_v;
39c0b746e5SOllivier Robert 
40c0b746e5SOllivier Robert /*
41c0b746e5SOllivier Robert  * Structure for passing parsed command line
42c0b746e5SOllivier Robert  */
43c0b746e5SOllivier Robert struct parse {
44c0b746e5SOllivier Robert 	char *keyword;
45ea906c41SOllivier Robert 	arg_v argval[MAXARGS + MOREARGS];
462b15cb3dSCy Schubert 	size_t nargs;
47c0b746e5SOllivier Robert };
48c0b746e5SOllivier Robert 
49c0b746e5SOllivier Robert /*
50c0b746e5SOllivier Robert  * ntpdc includes a command parser which could charitably be called
51c0b746e5SOllivier Robert  * crude.  The following structure is used to define the command
52c0b746e5SOllivier Robert  * syntax.
53c0b746e5SOllivier Robert  */
54c0b746e5SOllivier Robert struct xcmd {
55c0b746e5SOllivier Robert   const char *keyword;		/* command key word */
562b15cb3dSCy Schubert 	void (*handler)	(struct parse *, FILE *);	/* command handler */
57c0b746e5SOllivier Robert 	u_char arg[MAXARGS];	/* descriptors for arguments */
58c0b746e5SOllivier Robert   const char *desc[MAXARGS];	/* descriptions for arguments */
59c0b746e5SOllivier Robert   const char *comment;
60c0b746e5SOllivier Robert };
61c0b746e5SOllivier Robert 
629c2daa00SOllivier Robert extern	int impl_ver;
639c2daa00SOllivier Robert extern	int showhostnames;
649c2daa00SOllivier Robert extern	int s_port;
659c2daa00SOllivier Robert 
66*3311ff84SXin LI extern	int	doquery	(int, int, int, size_t, size_t, const char *, size_t *, size_t *, const char **, int, int);
672b15cb3dSCy Schubert extern	const char * nntohost	(sockaddr_u *);
68