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 */ 25c0b746e5SOllivier Robert 26c0b746e5SOllivier Robert /* 27c0b746e5SOllivier Robert * Arguments are returned in a union 28c0b746e5SOllivier Robert */ 29c0b746e5SOllivier Robert typedef union { 30c0b746e5SOllivier Robert char *string; 31c0b746e5SOllivier Robert long ival; 32c0b746e5SOllivier Robert u_long uval; 33c0b746e5SOllivier Robert u_int32 netnum; 34c0b746e5SOllivier Robert } arg_v; 35c0b746e5SOllivier Robert 36c0b746e5SOllivier Robert /* 37c0b746e5SOllivier Robert * Structure for passing parsed command line 38c0b746e5SOllivier Robert */ 39c0b746e5SOllivier Robert struct parse { 40c0b746e5SOllivier Robert char *keyword; 41c0b746e5SOllivier Robert arg_v argval[MAXARGS]; 42c0b746e5SOllivier Robert int nargs; 43c0b746e5SOllivier Robert }; 44c0b746e5SOllivier Robert 45c0b746e5SOllivier Robert /* 46c0b746e5SOllivier Robert * ntpdc includes a command parser which could charitably be called 47c0b746e5SOllivier Robert * crude. The following structure is used to define the command 48c0b746e5SOllivier Robert * syntax. 49c0b746e5SOllivier Robert */ 50c0b746e5SOllivier Robert struct xcmd { 51c0b746e5SOllivier Robert const char *keyword; /* command key word */ 52c0b746e5SOllivier Robert void (*handler) P((struct parse *, FILE *)); /* command handler */ 53c0b746e5SOllivier Robert u_char arg[MAXARGS]; /* descriptors for arguments */ 54c0b746e5SOllivier Robert const char *desc[MAXARGS]; /* descriptions for arguments */ 55c0b746e5SOllivier Robert const char *comment; 56c0b746e5SOllivier Robert }; 57c0b746e5SOllivier Robert 58c0b746e5SOllivier Robert extern int doquery P((int, int, int, int, int, char *, int *, int *, char **, int)); 59c0b746e5SOllivier Robert extern char * nntohost P((u_int32)); 60