From b84d6759f99f5c0d84513a5b6e883ac261a1db98 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Wed, 17 Aug 2022 15:46:11 +0200 Subject: [PATCH] ntp: initialize remote address in ntpdata report Don't wait for the first response with setting the address. --- ntp_core.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ntp_core.c b/ntp_core.c index 141fe4f..ed06ba7 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -556,6 +556,16 @@ take_offline(NCR_Instance inst) /* ================================================== */ +static void +reset_report(NCR_Instance inst) +{ + memset(&inst->report, 0, sizeof (inst->report)); + inst->report.remote_addr = inst->remote_addr.ip_addr; + inst->report.remote_port = inst->remote_addr.port; +} + +/* ================================================== */ + NCR_Instance NCR_CreateInstance(NTP_Remote_Address *remote_addr, NTP_Source_Type type, SourceParameters *params, const char *name) @@ -672,12 +682,13 @@ NCR_CreateInstance(NTP_Remote_Address *remote_addr, NTP_Source_Type type, zero_local_timestamp(&result->local_tx); result->burst_good_samples_to_go = 0; result->burst_total_samples_to_go = 0; - memset(&result->report, 0, sizeof (result->report)); NCR_ResetInstance(result); set_connectivity(result, params->connectivity); + reset_report(result); + return result; } @@ -777,7 +788,6 @@ NCR_ResetPoll(NCR_Instance instance) void NCR_ChangeRemoteAddress(NCR_Instance inst, NTP_Remote_Address *remote_addr, int ntp_only) { - memset(&inst->report, 0, sizeof (inst->report)); NCR_ResetInstance(inst); if (!ntp_only) @@ -798,6 +808,8 @@ NCR_ChangeRemoteAddress(NCR_Instance inst, NTP_Remote_Address *remote_addr, int SRC_SetRefid(inst->source, UTI_IPToRefid(&remote_addr->ip_addr), &inst->remote_addr.ip_addr); SRC_ResetInstance(inst->source); + + reset_report(inst); } /* ================================================== */ @@ -2179,9 +2191,7 @@ process_response(NCR_Instance inst, NTP_Local_Address *local_addr, } /* Update the NTP report */ - inst->report.remote_addr = inst->remote_addr.ip_addr; inst->report.local_addr = inst->local_addr.ip_addr; - inst->report.remote_port = inst->remote_addr.port; inst->report.leap = pkt_leap; inst->report.version = pkt_version; inst->report.mode = NTP_LVM_TO_MODE(message->lvm);