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