From: Mike Brady <4265913+mikebrady@users.noreply.github.com> Date: Tue, 21 Dec 2021 12:21:41 +0000 (+0000) Subject: Further simplify nqptp to discard mastership history prior to being made a part of... X-Git-Tag: 1.2~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=811524bfe8d2efb0cd52eb7daf34951822badab6;p=thirdparty%2Fnqptp.git Further simplify nqptp to discard mastership history prior to being made a part of a new timing list. A bit hacky, to be sure. --- diff --git a/nqptp-message-handlers.c b/nqptp-message-handlers.c index 1f7b6d2..edb4fce 100644 --- a/nqptp-message-handlers.c +++ b/nqptp-message-handlers.c @@ -42,6 +42,10 @@ void handle_control_port_messages(char *buf, ssize_t recv_len, clock_private_info[i].flags &= ~(1 << clock_is_a_timing_peer); // turn off peer flag (but not the master flag!) clock_private_info[i].announcements_without_followups = 0; // to allow a possibly silent clocks to be revisited when added to a timing peer list + if ((clock_private_info[i].flags &= ~(1 << clock_is_master)) != 0) { + clock_private_info[i].mastership_start_time = get_time_now(); // mastership is reset to this time... + clock_private_info[i].previous_offset_time = 0; + } } while (ip_list != NULL) { diff --git a/nqptp.c b/nqptp.c index 4389dd8..062520b 100644 --- a/nqptp.c +++ b/nqptp.c @@ -96,18 +96,19 @@ void update_master_clock_info(uint64_t master_clock_id, const char *ip, uint64_t int rc = pthread_mutex_lock(&shared_memory->shm_mutex); if (rc != 0) warn("Can't acquire mutex to update master clock!"); - if (shared_memory->master_clock_id != master_clock_id) { - shared_memory->master_clock_id = master_clock_id; - shared_memory->master_clock_start_time = mastership_start_time; - } - if (ip != NULL) + shared_memory->master_clock_id = master_clock_id; + if (ip != NULL) { strncpy((char *)&shared_memory->master_clock_ip, ip, FIELD_SIZEOF(struct shm_structure, master_clock_ip) - 1); - else + shared_memory->master_clock_start_time = mastership_start_time; + shared_memory->local_time = local_time; + shared_memory->local_to_master_time_offset = local_to_master_offset; + } else { shared_memory->master_clock_ip[0] = '\0'; - shared_memory->master_clock_start_time = mastership_start_time; - shared_memory->local_time = local_time; - shared_memory->local_to_master_time_offset = local_to_master_offset; + shared_memory->master_clock_start_time = 0; + shared_memory->local_time = 0; + shared_memory->local_to_master_time_offset = 0; + } rc = pthread_mutex_unlock(&shared_memory->shm_mutex); if (rc != 0) warn("Can't release mutex after updating master clock!");