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