]> git.ipfire.org Git - thirdparty/nqptp.git/commitdiff
Further simplify nqptp to discard mastership history prior to being made a part of...
authorMike Brady <4265913+mikebrady@users.noreply.github.com>
Tue, 21 Dec 2021 12:21:41 +0000 (12:21 +0000)
committerMike Brady <4265913+mikebrady@users.noreply.github.com>
Tue, 21 Dec 2021 12:21:41 +0000 (12:21 +0000)
nqptp-message-handlers.c
nqptp.c

index 1f7b6d20262c51189d2f6272aab3dbce13094858..edb4fce3a1e17b1dd553821b2f7abdfe2c4db2cc 100644 (file)
@@ -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 4389dd81556049dcee2ca390f19dd9a9a092c2cb..062520bb33d801635395b03bbca0c12112ba495a 100644 (file)
--- 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!");