mirror of
https://gitlab.com/chrony/chrony.git
synced 2026-01-20 21:00:20 -05:00
cmdmon: refactor handling of sources report
The NSR_ReportSource() and RCL_ReportSource() functions assume that the provided report already has some data prefilled by SRC_ReportSource() and it's assumed these functions cannot fail. Change them to accept the required data (refid and IP address) as a parameter, remove unneeded parameters, and return an error status (if the refid/address doesn't exist) to be handled in cmdmon handle_source_data(). Also, catch unexpected values of the source state and mode to make chronyc report an error instead of incorrect data.
This commit is contained in:
12
refclock.c
12
refclock.c
@@ -294,23 +294,21 @@ RCL_StartRefclocks(void)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RCL_ReportSource(RPT_SourceReport *report, struct timespec *now)
|
||||
int
|
||||
RCL_ReportSource(uint32_t ref_id, RPT_SourceReport *report)
|
||||
{
|
||||
unsigned int i;
|
||||
uint32_t ref_id;
|
||||
|
||||
assert(report->ip_addr.family == IPADDR_INET4);
|
||||
ref_id = report->ip_addr.addr.in4;
|
||||
|
||||
for (i = 0; i < ARR_GetSize(refclocks); i++) {
|
||||
RCL_Instance inst = get_refclock(i);
|
||||
if (inst->ref_id == ref_id) {
|
||||
report->poll = inst->poll;
|
||||
report->mode = RPT_LOCAL_REFERENCE;
|
||||
break;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
Reference in New Issue
Block a user