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