Changeset View
Changeset View
Standalone View
Standalone View
head/contrib/ntp/ntpdc/ntpdc_ops.c
Show All 25 Lines | |||||
#endif | #endif | ||||
#endif | #endif | ||||
#include <arpa/inet.h> | #include <arpa/inet.h> | ||||
/* | /* | ||||
* utility functions | * utility functions | ||||
*/ | */ | ||||
static int checkitems (int, FILE *); | static int checkitems (size_t, FILE *); | ||||
static int checkitemsize (int, int); | static int checkitemsize (size_t, size_t); | ||||
static int check1item (int, FILE *); | static int check1item (size_t, FILE *); | ||||
/* | /* | ||||
* Declarations for command handlers in here | * Declarations for command handlers in here | ||||
*/ | */ | ||||
static void peerlist (struct parse *, FILE *); | static void peerlist (struct parse *, FILE *); | ||||
static void peers (struct parse *, FILE *); | static void peers (struct parse *, FILE *); | ||||
static void doconfig (struct parse *pcmd, FILE *fp, int mode, int refc); | static void doconfig (struct parse *pcmd, FILE *fp, int mode, int refc); | ||||
static void dmpeers (struct parse *, FILE *); | static void dmpeers (struct parse *, FILE *); | ||||
▲ Show 20 Lines • Show All 238 Lines • ▼ Show 20 Lines | |||||
} while (0) | } while (0) | ||||
/* | /* | ||||
* checkitems - utility to print a message if no items were returned | * checkitems - utility to print a message if no items were returned | ||||
*/ | */ | ||||
static int | static int | ||||
checkitems( | checkitems( | ||||
int items, | size_t items, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
if (items == 0) { | if (items == 0) { | ||||
(void) fprintf(fp, "No data returned in response to query\n"); | (void) fprintf(fp, "No data returned in response to query\n"); | ||||
return 0; | return 0; | ||||
} | } | ||||
return 1; | return 1; | ||||
} | } | ||||
/* | /* | ||||
* checkitemsize - utility to print a message if the item size is wrong | * checkitemsize - utility to print a message if the item size is wrong | ||||
*/ | */ | ||||
static int | static int | ||||
checkitemsize( | checkitemsize( | ||||
int itemsize, | size_t itemsize, | ||||
int expected | size_t expected | ||||
) | ) | ||||
{ | { | ||||
if (itemsize != expected) { | if (itemsize != expected) { | ||||
(void) fprintf(stderr, | (void) fprintf(stderr, | ||||
"***Incorrect item size returned by remote host (%d should be %d)\n", | "***Incorrect item size returned by remote host (%lu should be %lu)\n", | ||||
itemsize, expected); | (u_long)itemsize, (u_long)expected); | ||||
return 0; | return 0; | ||||
} | } | ||||
return 1; | return 1; | ||||
} | } | ||||
/* | /* | ||||
* check1item - check to make sure we have exactly one item | * check1item - check to make sure we have exactly one item | ||||
*/ | */ | ||||
static int | static int | ||||
check1item( | check1item( | ||||
int items, | size_t items, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
if (items == 0) { | if (items == 0) { | ||||
(void) fprintf(fp, "No data returned in response to query\n"); | (void) fprintf(fp, "No data returned in response to query\n"); | ||||
return 0; | return 0; | ||||
} | } | ||||
if (items > 1) { | if (items > 1) { | ||||
(void) fprintf(fp, "Expected one item in response, got %d\n", | (void) fprintf(fp, "Expected one item in response, got %lu\n", | ||||
items); | (u_long)items); | ||||
return 0; | return 0; | ||||
} | } | ||||
return 1; | return 1; | ||||
} | } | ||||
/* | /* | ||||
* peerlist - get a short list of peers | * peerlist - get a short list of peers | ||||
*/ | */ | ||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
peerlist( | peerlist( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_peer_list *plist; | struct info_peer_list *plist; | ||||
sockaddr_u paddr; | sockaddr_u paddr; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_PEER_LIST, 0, 0, 0, (char *)NULL, &items, | res = doquery(impl_ver, REQ_PEER_LIST, 0, 0, 0, (char *)NULL, &items, | ||||
&itemsize, (void *)&plist, 0, | &itemsize, (void *)&plist, 0, | ||||
sizeof(struct info_peer_list)); | sizeof(struct info_peer_list)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | dopeers( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp, | FILE *fp, | ||||
int dmstyle | int dmstyle | ||||
) | ) | ||||
{ | { | ||||
struct info_peer_summary *plist; | struct info_peer_summary *plist; | ||||
sockaddr_u dstadr; | sockaddr_u dstadr; | ||||
sockaddr_u srcadr; | sockaddr_u srcadr; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int ntp_poll; | int ntp_poll; | ||||
int res; | int res; | ||||
int c; | int c; | ||||
l_fp tempts; | l_fp tempts; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_PEER_LIST_SUM, 0, 0, 0, (char *)NULL, | res = doquery(impl_ver, REQ_PEER_LIST_SUM, 0, 0, 0, (char *)NULL, | ||||
&items, &itemsize, (void *)&plist, 0, | &items, &itemsize, (void *)&plist, 0, | ||||
▲ Show 20 Lines • Show All 231 Lines • ▼ Show 20 Lines | |||||
showpeer( | showpeer( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_peer *pp; | struct info_peer *pp; | ||||
/* 4 is the maximum number of peers which will fit in a packet */ | /* 4 is the maximum number of peers which will fit in a packet */ | ||||
struct info_peer_list *pl, plist[min(MAXARGS, 4)]; | struct info_peer_list *pl, plist[min(MAXARGS, 4)]; | ||||
int qitemlim; | size_t qitemlim; | ||||
int qitems; | size_t qitems; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
int sendsize; | int sendsize; | ||||
again: | again: | ||||
if (impl_ver == IMPL_XNTPD) | if (impl_ver == IMPL_XNTPD) | ||||
sendsize = sizeof(struct info_peer_list); | sendsize = sizeof(struct info_peer_list); | ||||
else | else | ||||
sendsize = v4sizeof(struct info_peer_list); | sendsize = v4sizeof(struct info_peer_list); | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | peerstats( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_peer_stats *pp; | struct info_peer_stats *pp; | ||||
/* 4 is the maximum number of peers which will fit in a packet */ | /* 4 is the maximum number of peers which will fit in a packet */ | ||||
struct info_peer_list *pl, plist[min(MAXARGS, 4)]; | struct info_peer_list *pl, plist[min(MAXARGS, 4)]; | ||||
sockaddr_u src, dst; | sockaddr_u src, dst; | ||||
int qitemlim; | size_t qitemlim; | ||||
int qitems; | size_t qitems; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
int sendsize; | size_t sendsize; | ||||
again: | again: | ||||
if (impl_ver == IMPL_XNTPD) | if (impl_ver == IMPL_XNTPD) | ||||
sendsize = sizeof(struct info_peer_list); | sendsize = sizeof(struct info_peer_list); | ||||
else | else | ||||
sendsize = v4sizeof(struct info_peer_list); | sendsize = v4sizeof(struct info_peer_list); | ||||
ZERO(plist); | ZERO(plist); | ||||
▲ Show 20 Lines • Show All 96 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
static void | static void | ||||
loopinfo( | loopinfo( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_loop *il; | struct info_loop *il; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int oneline = 0; | int oneline = 0; | ||||
int res; | int res; | ||||
l_fp tempts; | l_fp tempts; | ||||
if (pcmd->nargs > 0) { | if (pcmd->nargs > 0) { | ||||
if (STREQ(pcmd->argval[0].string, "oneline")) | if (STREQ(pcmd->argval[0].string, "oneline")) | ||||
oneline = 1; | oneline = 1; | ||||
else if (STREQ(pcmd->argval[0].string, "multiline")) | else if (STREQ(pcmd->argval[0].string, "multiline")) | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
sysinfo( | sysinfo( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_sys *is; | struct info_sys *is; | ||||
sockaddr_u peeraddr; | sockaddr_u peeraddr; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
l_fp tempts; | l_fp tempts; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_SYS_INFO, 0, 0, 0, (char *)NULL, | res = doquery(impl_ver, REQ_SYS_INFO, 0, 0, 0, (char *)NULL, | ||||
&items, &itemsize, (void *)&is, 0, | &items, &itemsize, (void *)&is, 0, | ||||
sizeof(struct info_sys)); | sizeof(struct info_sys)); | ||||
▲ Show 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | |||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
sysstats( | sysstats( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_sys_stats *ss; | struct info_sys_stats *ss; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_SYS_STATS, 0, 0, 0, (char *)NULL, | res = doquery(impl_ver, REQ_SYS_STATS, 0, 0, 0, (char *)NULL, | ||||
&items, &itemsize, (void *)&ss, 0, | &items, &itemsize, (void *)&ss, 0, | ||||
sizeof(struct info_sys_stats)); | sizeof(struct info_sys_stats)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
iostats( | iostats( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_io_stats *io; | struct info_io_stats *io; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_IO_STATS, 0, 0, 0, NULL, &items, | res = doquery(impl_ver, REQ_IO_STATS, 0, 0, 0, NULL, &items, | ||||
&itemsize, (void *)&io, 0, sizeof(*io)); | &itemsize, (void *)&io, 0, sizeof(*io)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
impl_ver = IMPL_XNTPD_OLD; | impl_ver = IMPL_XNTPD_OLD; | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
memstats( | memstats( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_mem_stats *mem; | struct info_mem_stats *mem; | ||||
int i; | int i; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_MEM_STATS, 0, 0, 0, NULL, &items, | res = doquery(impl_ver, REQ_MEM_STATS, 0, 0, 0, NULL, &items, | ||||
&itemsize, (void *)&mem, 0, sizeof(*mem)); | &itemsize, (void *)&mem, 0, sizeof(*mem)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
impl_ver = IMPL_XNTPD_OLD; | impl_ver = IMPL_XNTPD_OLD; | ||||
Show All 39 Lines | |||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
timerstats( | timerstats( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_timer_stats *tim; | struct info_timer_stats *tim; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_TIMER_STATS, 0, 0, 0, NULL, &items, | res = doquery(impl_ver, REQ_TIMER_STATS, 0, 0, 0, NULL, &items, | ||||
&itemsize, (void *)&tim, 0, sizeof(*tim)); | &itemsize, (void *)&tim, 0, sizeof(*tim)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
impl_ver = IMPL_XNTPD_OLD; | impl_ver = IMPL_XNTPD_OLD; | ||||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | |||||
doconfig( | doconfig( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp, | FILE *fp, | ||||
int mode, | int mode, | ||||
int refc | int refc | ||||
) | ) | ||||
{ | { | ||||
struct conf_peer cpeer; | struct conf_peer cpeer; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
u_long keyid; | u_long keyid; | ||||
u_int version; | u_int version; | ||||
u_char minpoll; | u_char minpoll; | ||||
u_char maxpoll; | u_char maxpoll; | ||||
u_int flags; | u_int flags; | ||||
u_char cmode; | u_char cmode; | ||||
int res; | int res; | ||||
int sendsize; | int sendsize; | ||||
▲ Show 20 Lines • Show All 147 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
unconfig( | unconfig( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
/* 8 is the maximum number of peers which will fit in a packet */ | /* 8 is the maximum number of peers which will fit in a packet */ | ||||
struct conf_unpeer *pl, plist[min(MAXARGS, 8)]; | struct conf_unpeer *pl, plist[min(MAXARGS, 8)]; | ||||
int qitemlim; | size_t qitemlim; | ||||
int qitems; | size_t qitems; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int res; | int res; | ||||
int sendsize; | size_t sendsize; | ||||
again: | again: | ||||
if (impl_ver == IMPL_XNTPD) | if (impl_ver == IMPL_XNTPD) | ||||
sendsize = sizeof(struct conf_unpeer); | sendsize = sizeof(struct conf_unpeer); | ||||
else | else | ||||
sendsize = v4sizeof(struct conf_unpeer); | sendsize = v4sizeof(struct conf_unpeer); | ||||
qitemlim = min(pcmd->nargs, COUNTOF(plist)); | qitemlim = min(pcmd->nargs, COUNTOF(plist)); | ||||
▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
doset( | doset( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp, | FILE *fp, | ||||
int req | int req | ||||
) | ) | ||||
{ | { | ||||
struct conf_sys_flags sys; | struct conf_sys_flags sys; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int res; | int res; | ||||
sys.flags = 0; | sys.flags = 0; | ||||
res = 0; | res = 0; | ||||
for (items = 0; (size_t)items < pcmd->nargs; items++) { | for (items = 0; (size_t)items < pcmd->nargs; items++) { | ||||
if (STREQ(pcmd->argval[items].string, "auth")) | if (STREQ(pcmd->argval[items].string, "auth")) | ||||
sys.flags |= SYS_FLAG_AUTH; | sys.flags |= SYS_FLAG_AUTH; | ||||
else if (STREQ(pcmd->argval[items].string, "bclient")) | else if (STREQ(pcmd->argval[items].string, "bclient")) | ||||
▲ Show 20 Lines • Show All 92 Lines • ▼ Show 20 Lines | |||||
reslist( | reslist( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_restrict *rl; | struct info_restrict *rl; | ||||
sockaddr_u resaddr; | sockaddr_u resaddr; | ||||
sockaddr_u maskaddr; | sockaddr_u maskaddr; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
int skip; | int skip; | ||||
const char *addr; | const char *addr; | ||||
const char *mask; | const char *mask; | ||||
struct resflags *rf; | struct resflags *rf; | ||||
u_int32 count; | u_int32 count; | ||||
u_short flags; | u_short flags; | ||||
u_short mflags; | u_short mflags; | ||||
▲ Show 20 Lines • Show All 134 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
do_restrict( | do_restrict( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp, | FILE *fp, | ||||
int req_code | int req_code | ||||
) | ) | ||||
{ | { | ||||
struct conf_restrict cres; | struct conf_restrict cres; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
u_int32 num; | u_int32 num; | ||||
u_long bit; | u_long bit; | ||||
int i; | int i; | ||||
size_t res; | size_t res; | ||||
int err; | int err; | ||||
int sendsize; | int sendsize; | ||||
/* Initialize cres */ | /* Initialize cres */ | ||||
▲ Show 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
monlist( | monlist( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
char *struct_star; | const char *struct_star; | ||||
struct info_monitor *ml; | const struct info_monitor *ml; | ||||
struct info_monitor_1 *m1; | const struct info_monitor_1 *m1; | ||||
struct old_info_monitor *oml; | const struct old_info_monitor *oml; | ||||
sockaddr_u addr; | sockaddr_u addr; | ||||
sockaddr_u dstadr; | sockaddr_u dstadr; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
int version = -1; | int version = -1; | ||||
if (pcmd->nargs > 0) | if (pcmd->nargs > 0) | ||||
version = pcmd->argval[0].ival; | version = pcmd->argval[0].ival; | ||||
again: | again: | ||||
res = doquery(impl_ver, | res = doquery(impl_ver, | ||||
Show All 17 Lines | if (res != 0) | ||||
return; | return; | ||||
if (!checkitems(items, fp)) | if (!checkitems(items, fp)) | ||||
return; | return; | ||||
if (itemsize == sizeof(struct info_monitor_1) || | if (itemsize == sizeof(struct info_monitor_1) || | ||||
itemsize == v4sizeof(struct info_monitor_1)) { | itemsize == v4sizeof(struct info_monitor_1)) { | ||||
m1 = (void *)struct_star; | m1 = (const void*)struct_star; | ||||
fprintf(fp, | fprintf(fp, | ||||
"remote address port local address count m ver rstr avgint lstint\n"); | "remote address port local address count m ver rstr avgint lstint\n"); | ||||
fprintf(fp, | fprintf(fp, | ||||
"===============================================================================\n"); | "===============================================================================\n"); | ||||
while (items > 0) { | while (items > 0) { | ||||
SET_ADDRS(dstadr, addr, m1, daddr, addr); | SET_ADDRS(dstadr, addr, m1, daddr, addr); | ||||
if ((pcmd->nargs == 0) || | if ((pcmd->nargs == 0) || | ||||
((pcmd->argval->ival == 6) && (m1->v6_flag != 0)) || | ((pcmd->argval->ival == 6) && (m1->v6_flag != 0)) || | ||||
Show All 10 Lines | while (items > 0) { | ||||
(u_long)ntohl(m1->avg_int), | (u_long)ntohl(m1->avg_int), | ||||
(u_long)ntohl(m1->last_int)); | (u_long)ntohl(m1->last_int)); | ||||
m1++; | m1++; | ||||
items--; | items--; | ||||
} | } | ||||
} else if (itemsize == sizeof(struct info_monitor) || | } else if (itemsize == sizeof(struct info_monitor) || | ||||
itemsize == v4sizeof(struct info_monitor)) { | itemsize == v4sizeof(struct info_monitor)) { | ||||
ml = (void *) struct_star; | ml = (const void *)struct_star; | ||||
fprintf(fp, | fprintf(fp, | ||||
" address port count mode ver rstr avgint lstint\n"); | " address port count mode ver rstr avgint lstint\n"); | ||||
fprintf(fp, | fprintf(fp, | ||||
"===============================================================================\n"); | "===============================================================================\n"); | ||||
while (items > 0) { | while (items > 0) { | ||||
SET_ADDR(dstadr, ml->v6_flag, ml->addr, ml->addr6); | SET_ADDR(dstadr, ml->v6_flag, ml->addr, ml->addr6); | ||||
if ((pcmd->nargs == 0) || | if ((pcmd->nargs == 0) || | ||||
((pcmd->argval->ival == 6) && (ml->v6_flag != 0)) || | ((pcmd->argval->ival == 6) && (ml->v6_flag != 0)) || | ||||
((pcmd->argval->ival == 4) && (ml->v6_flag == 0))) | ((pcmd->argval->ival == 4) && (ml->v6_flag == 0))) | ||||
fprintf(fp, | fprintf(fp, | ||||
"%-25.25s %5u %9lu %4u %2u %9lx %9lu %9lu\n", | "%-25.25s %5u %9lu %4u %2u %9lx %9lu %9lu\n", | ||||
nntohost(&dstadr), | nntohost(&dstadr), | ||||
ntohs(ml->port), | ntohs(ml->port), | ||||
(u_long)ntohl(ml->count), | (u_long)ntohl(ml->count), | ||||
ml->mode, | ml->mode, | ||||
ml->version, | ml->version, | ||||
(u_long)ntohl(ml->restr), | (u_long)ntohl(ml->restr), | ||||
(u_long)ntohl(ml->avg_int), | (u_long)ntohl(ml->avg_int), | ||||
(u_long)ntohl(ml->last_int)); | (u_long)ntohl(ml->last_int)); | ||||
ml++; | ml++; | ||||
items--; | items--; | ||||
} | } | ||||
} else if (itemsize == sizeof(struct old_info_monitor)) { | } else if (itemsize == sizeof(struct old_info_monitor)) { | ||||
oml = (void *)struct_star; | oml = (const void *)struct_star; | ||||
fprintf(fp, | fprintf(fp, | ||||
" address port count mode version lasttime firsttime\n"); | " address port count mode version lasttime firsttime\n"); | ||||
fprintf(fp, | fprintf(fp, | ||||
"======================================================================\n"); | "======================================================================\n"); | ||||
while (items > 0) { | while (items > 0) { | ||||
SET_ADDR(dstadr, oml->v6_flag, oml->addr, oml->addr6); | SET_ADDR(dstadr, oml->v6_flag, oml->addr, oml->addr6); | ||||
fprintf(fp, "%-20.20s %5u %9lu %4u %3u %9lu %9lu\n", | fprintf(fp, "%-20.20s %5u %9lu %4u %3u %9lu %9lu\n", | ||||
nntohost(&dstadr), | nntohost(&dstadr), | ||||
Show All 35 Lines | |||||
*/ | */ | ||||
static void | static void | ||||
reset( | reset( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct reset_flags rflags; | struct reset_flags rflags; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int i; | int i; | ||||
size_t res; | size_t res; | ||||
int err; | int err; | ||||
err = 0; | err = 0; | ||||
rflags.flags = 0; | rflags.flags = 0; | ||||
for (res = 0; res < pcmd->nargs; res++) { | for (res = 0; res < pcmd->nargs; res++) { | ||||
for (i = 0; sreset[i].flag != 0; i++) { | for (i = 0; sreset[i].flag != 0; i++) { | ||||
Show All 38 Lines | |||||
static void | static void | ||||
preset( | preset( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
/* 8 is the maximum number of peers which will fit in a packet */ | /* 8 is the maximum number of peers which will fit in a packet */ | ||||
struct conf_unpeer *pl, plist[min(MAXARGS, 8)]; | struct conf_unpeer *pl, plist[min(MAXARGS, 8)]; | ||||
int qitemlim; | size_t qitemlim; | ||||
int qitems; | size_t qitems; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int res; | int res; | ||||
int sendsize; | size_t sendsize; | ||||
again: | again: | ||||
if (impl_ver == IMPL_XNTPD) | if (impl_ver == IMPL_XNTPD) | ||||
sendsize = sizeof(struct conf_unpeer); | sendsize = sizeof(struct conf_unpeer); | ||||
else | else | ||||
sendsize = v4sizeof(struct conf_unpeer); | sendsize = v4sizeof(struct conf_unpeer); | ||||
qitemlim = min(pcmd->nargs, COUNTOF(plist)); | qitemlim = min(pcmd->nargs, COUNTOF(plist)); | ||||
Show All 34 Lines | |||||
*/ | */ | ||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
readkeys( | readkeys( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_REREAD_KEYS, 1, 0, 0, (char *)0, | res = doquery(impl_ver, REQ_REREAD_KEYS, 1, 0, 0, (char *)0, | ||||
&items, &itemsize, &dummy, 0, sizeof(dummy)); | &items, &itemsize, &dummy, 0, sizeof(dummy)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
impl_ver = IMPL_XNTPD_OLD; | impl_ver = IMPL_XNTPD_OLD; | ||||
Show All 39 Lines | |||||
do_trustkey( | do_trustkey( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp, | FILE *fp, | ||||
int req | int req | ||||
) | ) | ||||
{ | { | ||||
u_long keyids[MAXARGS]; | u_long keyids[MAXARGS]; | ||||
size_t i; | size_t i; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int ritems; | int ritems; | ||||
int res; | int res; | ||||
ritems = 0; | ritems = 0; | ||||
for (i = 0; i < pcmd->nargs; i++) { | for (i = 0; i < pcmd->nargs; i++) { | ||||
keyids[ritems++] = pcmd->argval[i].uval; | keyids[ritems++] = pcmd->argval[i].uval; | ||||
} | } | ||||
Show All 20 Lines | |||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
authinfo( | authinfo( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_auth *ia; | struct info_auth *ia; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_AUTHINFO, 0, 0, 0, NULL, &items, | res = doquery(impl_ver, REQ_AUTHINFO, 0, 0, 0, NULL, &items, | ||||
&itemsize, (void *)&ia, 0, sizeof(*ia)); | &itemsize, (void *)&ia, 0, sizeof(*ia)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
impl_ver = IMPL_XNTPD_OLD; | impl_ver = IMPL_XNTPD_OLD; | ||||
Show All 36 Lines | |||||
*/ | */ | ||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
traps( | traps( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
int i; | size_t i; | ||||
struct info_trap *it; | struct info_trap *it; | ||||
sockaddr_u trap_addr, local_addr; | sockaddr_u trap_addr, local_addr; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_TRAPS, 0, 0, 0, NULL, &items, | res = doquery(impl_ver, REQ_TRAPS, 0, 0, 0, NULL, &items, | ||||
&itemsize, (void *)&it, 0, sizeof(*it)); | &itemsize, (void *)&it, 0, sizeof(*it)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
impl_ver = IMPL_XNTPD_OLD; | impl_ver = IMPL_XNTPD_OLD; | ||||
▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
do_addclr_trap( | do_addclr_trap( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp, | FILE *fp, | ||||
int req | int req | ||||
) | ) | ||||
{ | { | ||||
struct conf_trap ctrap; | struct conf_trap ctrap; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int res; | int res; | ||||
int sendsize; | int sendsize; | ||||
again: | again: | ||||
if (impl_ver == IMPL_XNTPD) | if (impl_ver == IMPL_XNTPD) | ||||
sendsize = sizeof(struct conf_trap); | sendsize = sizeof(struct conf_trap); | ||||
else | else | ||||
sendsize = v4sizeof(struct conf_trap); | sendsize = v4sizeof(struct conf_trap); | ||||
▲ Show 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
do_changekey( | do_changekey( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp, | FILE *fp, | ||||
int req | int req | ||||
) | ) | ||||
{ | { | ||||
u_long key; | u_long key; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
int res; | int res; | ||||
key = htonl((u_int32)pcmd->argval[0].uval); | key = htonl((u_int32)pcmd->argval[0].uval); | ||||
again: | again: | ||||
res = doquery(impl_ver, req, 1, 1, sizeof(u_int32), | res = doquery(impl_ver, req, 1, 1, sizeof(u_int32), | ||||
(char *)&key, &items, &itemsize, &dummy, 0, | (char *)&key, &items, &itemsize, &dummy, 0, | ||||
Show All 17 Lines | |||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
ctlstats( | ctlstats( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_control *ic; | struct info_control *ic; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_GET_CTLSTATS, 0, 0, 0, NULL, &items, | res = doquery(impl_ver, REQ_GET_CTLSTATS, 0, 0, 0, NULL, &items, | ||||
&itemsize, (void *)&ic, 0, sizeof(*ic)); | &itemsize, (void *)&ic, 0, sizeof(*ic)); | ||||
if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | if (res == INFO_ERR_IMPL && impl_ver == IMPL_XNTPD) { | ||||
impl_ver = IMPL_XNTPD_OLD; | impl_ver = IMPL_XNTPD_OLD; | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | |||||
clockstat( | clockstat( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_clock *cl; | struct info_clock *cl; | ||||
/* 8 is the maximum number of clocks which will fit in a packet */ | /* 8 is the maximum number of clocks which will fit in a packet */ | ||||
u_long clist[min(MAXARGS, 8)]; | u_long clist[min(MAXARGS, 8)]; | ||||
int qitemlim; | size_t qitemlim; | ||||
int qitems; | size_t qitems; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
l_fp ts; | l_fp ts; | ||||
struct clktype *clk; | struct clktype *clk; | ||||
qitemlim = min(pcmd->nargs, COUNTOF(clist)); | qitemlim = min(pcmd->nargs, COUNTOF(clist)); | ||||
for (qitems = 0; qitems < qitemlim; qitems++) | for (qitems = 0; qitems < qitemlim; qitems++) | ||||
clist[qitems] = NSRCADR(&pcmd->argval[qitems].netnum); | clist[qitems] = NSRCADR(&pcmd->argval[qitems].netnum); | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
static void | static void | ||||
fudge( | fudge( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct conf_fudge fudgedata; | struct conf_fudge fudgedata; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
char *dummy; | const char *dummy; | ||||
l_fp ts; | l_fp ts; | ||||
int res; | int res; | ||||
long val; | long val; | ||||
u_long u_val; | u_long u_val; | ||||
int err; | int err; | ||||
err = 0; | err = 0; | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
register int i; | register int i; | ||||
register int n; | register int n; | ||||
register u_int32 s; | register u_int32 s; | ||||
struct info_clkbug *cl; | struct info_clkbug *cl; | ||||
/* 8 is the maximum number of clocks which will fit in a packet */ | /* 8 is the maximum number of clocks which will fit in a packet */ | ||||
u_long clist[min(MAXARGS, 8)]; | u_long clist[min(MAXARGS, 8)]; | ||||
u_int32 ltemp; | u_int32 ltemp; | ||||
int qitemlim; | size_t qitemlim; | ||||
int qitems; | size_t qitems; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
int needsp; | int needsp; | ||||
l_fp ts; | l_fp ts; | ||||
qitemlim = min(pcmd->nargs, COUNTOF(clist)); | qitemlim = min(pcmd->nargs, COUNTOF(clist)); | ||||
for (qitems = 0; qitems < qitemlim; qitems++) | for (qitems = 0; qitems < qitemlim; qitems++) | ||||
clist[qitems] = NSRCADR(&pcmd->argval[qitems].netnum); | clist[qitems] = NSRCADR(&pcmd->argval[qitems].netnum); | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
static void | static void | ||||
kerninfo( | kerninfo( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_kernel *ik; | struct info_kernel *ik; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
unsigned status; | unsigned status; | ||||
double tscale = 1e-6; | double tscale = 1e-6; | ||||
again: | again: | ||||
res = doquery(impl_ver, REQ_GET_KERNEL, 0, 0, 0, (char *)NULL, | res = doquery(impl_ver, REQ_GET_KERNEL, 0, 0, 0, (char *)NULL, | ||||
&items, &itemsize, (void *)&ik, 0, | &items, &itemsize, (void *)&ik, 0, | ||||
sizeof(struct info_kernel)); | sizeof(struct info_kernel)); | ||||
▲ Show 20 Lines • Show All 116 Lines • ▼ Show 20 Lines | |||||
#define IF_LIST_AFMT_STR " %48s %c\n" | #define IF_LIST_AFMT_STR " %48s %c\n" | ||||
#define IF_LIST_LABELS "#", 'A', "Address/Mask/Broadcast", 'T', 'E', "IF name", "Flg", "TL", "#M", "recv", "sent", "drop", "S", "PC", "uptime" | #define IF_LIST_LABELS "#", 'A', "Address/Mask/Broadcast", 'T', 'E', "IF name", "Flg", "TL", "#M", "recv", "sent", "drop", "S", "PC", "uptime" | ||||
#define IF_LIST_LINE "==================================================================================================================\n" | #define IF_LIST_LINE "==================================================================================================================\n" | ||||
static void | static void | ||||
iflist( | iflist( | ||||
FILE *fp, | FILE *fp, | ||||
struct info_if_stats *ifs, | struct info_if_stats *ifs, | ||||
int items, | size_t items, | ||||
int itemsize, | size_t itemsize, | ||||
int res | int res | ||||
) | ) | ||||
{ | { | ||||
static const char *actions = "?.+-"; | static const char *actions = "?.+-"; | ||||
sockaddr_u saddr; | sockaddr_u saddr; | ||||
if (res != 0) | if (res != 0) | ||||
return; | return; | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | |||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
get_if_stats( | get_if_stats( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_if_stats *ifs; | struct info_if_stats *ifs; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
res = doquery(impl_ver, REQ_IF_STATS, 1, 0, 0, (char *)NULL, &items, | res = doquery(impl_ver, REQ_IF_STATS, 1, 0, 0, (char *)NULL, &items, | ||||
&itemsize, (void *)&ifs, 0, | &itemsize, (void *)&ifs, 0, | ||||
sizeof(struct info_if_stats)); | sizeof(struct info_if_stats)); | ||||
iflist(fp, ifs, items, itemsize, res); | iflist(fp, ifs, items, itemsize, res); | ||||
} | } | ||||
/*ARGSUSED*/ | /*ARGSUSED*/ | ||||
static void | static void | ||||
do_if_reload( | do_if_reload( | ||||
struct parse *pcmd, | struct parse *pcmd, | ||||
FILE *fp | FILE *fp | ||||
) | ) | ||||
{ | { | ||||
struct info_if_stats *ifs; | struct info_if_stats *ifs; | ||||
int items; | size_t items; | ||||
int itemsize; | size_t itemsize; | ||||
int res; | int res; | ||||
res = doquery(impl_ver, REQ_IF_RELOAD, 1, 0, 0, (char *)NULL, &items, | res = doquery(impl_ver, REQ_IF_RELOAD, 1, 0, 0, (char *)NULL, &items, | ||||
&itemsize, (void *)&ifs, 0, | &itemsize, (void *)&ifs, 0, | ||||
sizeof(struct info_if_stats)); | sizeof(struct info_if_stats)); | ||||
iflist(fp, ifs, items, itemsize, res); | iflist(fp, ifs, items, itemsize, res); | ||||
} | } |