]> git.ipfire.org Git - thirdparty/nqptp.git/commitdiff
Always create a new SHM interface for every new shm address provided. Remove redundan...
authorMike Brady <4265913+mikebrady@users.noreply.github.com>
Mon, 28 Feb 2022 06:42:25 +0000 (17:42 +1100)
committerMike Brady <4265913+mikebrady@users.noreply.github.com>
Mon, 28 Feb 2022 06:42:25 +0000 (17:42 +1100)
nqptp-clock-sources.c
nqptp-clock-sources.h
nqptp-message-handlers.c
nqptp.service.in

index ef417003dd51ebdd3cfa3cbe4f6470d41b5d8065..b35ba252a1d2044b1ab4643212c136faaa846404 100644 (file)
 clock_source_private_data clocks_private[MAX_CLOCKS];
 client_record clients[MAX_CLIENTS];
 
-int find_client_id(char *client_shared_memory_interface_name) {
-  int response = -1; // signify not found
-  if (client_shared_memory_interface_name != NULL) {
-    int i = 0;
-    // first, see if yu can find it anywhere
-    while ((response == -1) && (i < MAX_CLIENTS)) {
-      if (strcmp(clients[i].shm_interface_name, client_shared_memory_interface_name) == 0)
-        response = i;
-      else
-        i++;
-    }
-  }
-  return response;
-}
-
 const char *get_client_name(int client_id) {
   if ((client_id >= 0) && (client_id < MAX_CLIENTS)) {
     return clients[client_id].shm_interface_name;
@@ -80,7 +65,7 @@ int get_client_id(char *client_shared_memory_interface_name) {
       else
         i++;
     }
-
+    
     if (response == -1) { // no match, so create one
       i = 0;
       while ((response == -1) && (i < MAX_CLIENTS)) {
@@ -94,9 +79,10 @@ int get_client_id(char *client_shared_memory_interface_name) {
         int err;
         strncpy(clients[i].shm_interface_name, client_shared_memory_interface_name,
                 sizeof(clients[i].shm_interface_name));
-        // creat the named smi interface
+        // create the named smi interface
 
         // open a shared memory interface.
+        debug(2, "Create a shm interface named \"%s\"", clients[i].shm_interface_name);
         clients[i].shm_fd = -1;
 
         mode_t oldumask = umask(0);
@@ -163,6 +149,7 @@ int get_client_id(char *client_shared_memory_interface_name) {
   } else {
     debug(1, "no client_shared_memory_interface_name");
   }
+  debug(2, "get_client_id \"%s\" response %d", client_shared_memory_interface_name, response);
   return response;
 }
 
index 9e9badadc7aa351ad1105388121cecac015f5ecf..760a051c30661dd9de90f4a8e000a80bdba507e1 100644 (file)
@@ -84,7 +84,6 @@ void update_clock_self_identifications(clock_source_private_data *clocks_private
 
 void manage_clock_sources(uint64_t reception_time, clock_source_private_data *clocks_private_info);
 
-int find_client_id(char *client_shared_memory_interface_name);
 int get_client_id(char *client_shared_memory_interface_name);
 const char *get_client_name(int client_id);
 int delete_client(int client_id);
index a0f12b10263d30bf426050a35a233d7c06fefd5a..c37f5b43649fdb7672401a073498ab235d741ebd 100644 (file)
@@ -29,7 +29,7 @@ void handle_control_port_messages(char *buf, ssize_t recv_len,
                                   clock_source_private_data *clock_private_info) {
   if (recv_len != -1) {
     buf[recv_len - 1] = 0; // make sure there's a null in it!
-    debug(1, "New control port message: \"%s\".", buf);
+    debug(2, "New control port message: \"%s\".", buf);
     // we need to get the client shared memory interface name from the front
     char *ip_list = buf;
     char *smi_name = strsep(&ip_list, " ");
@@ -40,7 +40,7 @@ void handle_control_port_messages(char *buf, ssize_t recv_len,
         command = strsep(&ip_list, " ");
       if ((command == NULL) || ((strcmp(command, "T") == 0) && (ip_list == NULL))) {
         // clear all the flags, but only if the client exists
-        client_id = find_client_id(smi_name); // don't create a record
+        client_id = get_client_id(smi_name); // create the record if it doesn't exist
         if (client_id != -1) {
           // turn off all is_timing_peer flags
           int i;
@@ -70,6 +70,7 @@ void handle_control_port_messages(char *buf, ssize_t recv_len,
           }
         }
       } else {
+        debug(2,"get or create new record for \"%s\".",smi_name);
         client_id = get_client_id(smi_name); // create the record if it doesn't exist
         if (client_id != -1) {
           if (strcmp(command, "T") == 0) {
index a0f619ac2d8d8adb5f26eee7164a61c15eb81314..d166aff21d70def0ed1eb3686b2257bd8138febe 100644 (file)
@@ -1,4 +1,5 @@
 [Unit]
+Provides=nqptp.service
 Description=NQPTP -- Not Quite PTP
 Wants=network-online.target
 After=network.target network-online.target