From: Ramakrishnan Muthukrishnan <ram@rkrishnan.org>
Date: Thu, 5 Dec 2024 16:45:40 +0000 (+0530)
Subject: get rid of a few socket address/interface length fields
X-Git-Url: https://git.rkrishnan.org/%5B/%5D%20/uri/vdrive/components/com_hotproperty/css/%3C?a=commitdiff_plain;p=pihpsdr.git

get rid of a few socket address/interface length fields

These can be easily calculated at runtime with sizeof, so no need to
store them upfront.
---

diff --git a/Makefile b/Makefile
index adb079a..9c74803 100644
--- a/Makefile
+++ b/Makefile
@@ -195,7 +195,7 @@ $(PROGRAM):  $(OBJS) $(AUDIO_OBJS) $(REMOTE_OBJS) $(USBOZY_OBJS) \
 		$(MIDI_OBJS) $(SERVER_OBJS) $(LIBS)
 
 .PHONY:	all
-all:	$(PROGRAM) $(HEADERS) $(AUDIO_HEADERS) $(USBOZY_HEADERS) \
+all:	$(PROGRAM) hpsdrsim $(HEADERS) $(AUDIO_HEADERS) $(USBOZY_HEADERS) \
 	$(LOCALCW_HEADERS) \
 	$(PURESIGNAL_HEADERS) $(MIDI_HEADERS) $(SERVER_HEADERS) \
 	$(AUDIO_SOURCES) $(SRC) \
diff --git a/discovered.h b/discovered.h
index 47623a7..fe2308e 100644
--- a/discovered.h
+++ b/discovered.h
@@ -71,9 +71,7 @@ struct _DISCOVERED {
     double frequency_max;
     struct network {
         unsigned char mac_address[6];
-        // int address_length;
         struct sockaddr_in address;
-        int interface_length;
         struct sockaddr_in interface_address;
         struct sockaddr_in interface_netmask;
         char interface_name[64];
diff --git a/new_protocol.c b/new_protocol.c
index d3018a2..a8d71c5 100644
--- a/new_protocol.c
+++ b/new_protocol.c
@@ -48,16 +48,13 @@
 #include "audio.h"
 #include "band.h"
 #include "new_protocol.h"
-#include "channel.h"
 #include "discovered.h"
 #include "mode.h"
-#include "filter.h"
 #include "radio.h"
 #include "receiver.h"
 #include "transmitter.h"
 #include "signal.h"
 #include "vfo.h"
-#include "toolbar.h"
 #include "vox.h"
 #include "ext.h"
 #include "iambic.h"
@@ -503,50 +500,50 @@ void new_protocol_init(int pixels) {
     setsockopt(data_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
 
     // bind to the interface
-    if(bind(data_socket,(struct sockaddr*)&radio->network.interface_address,radio->network.interface_length)<0) {
+    if(bind(data_socket,(struct sockaddr*)&radio->network.interface_address,sizeof(radio->network.interface_address))<0) {
         g_print("metis: bind socket failed for data_socket\n");
         exit(-1);
     }
 
-g_print("new_protocol_init: data_socket %d bound to interface %s:%d\n",data_socket,inet_ntoa(radio->network.interface_address.sin_addr),ntohs(radio->network.interface_address.sin_port));
+    g_print("new_protocol_init: data_socket %d bound to interface %s:%d\n",data_socket,inet_ntoa(radio->network.interface_address.sin_addr),ntohs(radio->network.interface_address.sin_port));
 
-    memcpy(&base_addr,&radio->network.address,radio->network.address_length);
-    base_addr_length=radio->network.address_length;
+    memcpy(&base_addr,&radio->network.address,sizeof(radio->network.address));
+    base_addr_length = sizeof(radio->network.address);
     base_addr.sin_port=htons(GENERAL_REGISTERS_FROM_HOST_PORT);
 
 //g_print("base_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&receiver_addr,&radio->network.address,radio->network.address_length);
-    receiver_addr_length=radio->network.address_length;
+    memcpy(&receiver_addr,&radio->network.address,sizeof(radio->network.address));
+    receiver_addr_length=sizeof(radio->network.address);
     receiver_addr.sin_port=htons(RECEIVER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
 //g_print("receive_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&transmitter_addr,&radio->network.address,radio->network.address_length);
-    transmitter_addr_length=radio->network.address_length;
+    memcpy(&transmitter_addr,&radio->network.address,sizeof(radio->network.address));
+    transmitter_addr_length=sizeof(radio->network.address);
     transmitter_addr.sin_port=htons(TRANSMITTER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
 //g_print("transmit_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&high_priority_addr,&radio->network.address,radio->network.address_length);
-    high_priority_addr_length=radio->network.address_length;
+    memcpy(&high_priority_addr,&radio->network.address,sizeof(radio->network.address));
+    high_priority_addr_length=sizeof(radio->network.address);
     high_priority_addr.sin_port=htons(HIGH_PRIORITY_FROM_HOST_PORT);
 //g_print("high_priority_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
 //g_print("new_protocol_thread: high_priority_addr setup for port %d\n",HIGH_PRIORITY_FROM_HOST_PORT);
 
-    memcpy(&audio_addr,&radio->network.address,radio->network.address_length);
-    audio_addr_length=radio->network.address_length;
+    memcpy(&audio_addr,&radio->network.address,sizeof(radio->network.address));
+    audio_addr_length=sizeof(radio->network.address);
     audio_addr.sin_port=htons(AUDIO_FROM_HOST_PORT);
 //g_print("audio_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&iq_addr,&radio->network.address,radio->network.address_length);
-    iq_addr_length=radio->network.address_length;
+    memcpy(&iq_addr,&radio->network.address,sizeof(radio->network.address));
+    iq_addr_length=sizeof(radio->network.address);
     iq_addr.sin_port=htons(TX_IQ_FROM_HOST_PORT);
 //g_print("iq_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
 
     for(i=0;i<MAX_DDC;i++) {
-        memcpy(&data_addr[i],&radio->network.address,radio->network.address_length);
-        data_addr_length[i]=radio->network.address_length;
+        memcpy(&data_addr[i],&radio->network.address,sizeof(radio->network.address));
+        data_addr_length[i]=sizeof(radio->network.address);
         data_addr[i].sin_port=htons(RX_IQ_TO_HOST_PORT_0+i);
     }
 
diff --git a/new_protocol_programmer.c b/new_protocol_programmer.c
index c898b85..6f7630e 100644
--- a/new_protocol_programmer.c
+++ b/new_protocol_programmer.c
@@ -66,8 +66,8 @@ void new_protocol_programmer(char *filename ) {
 
     DISCOVERED* d=&discovered[selected_device];
 
-    memcpy(&program_addr,&d->network.address,d->network.address_length);
-    program_addr_length=d->network.address_length;
+    memcpy(&program_addr,&d->network.address,sizeof(d->network.address));
+    program_addr_length=sizeof(d->network.address);
     program_addr.sin_port=htons(PROGRAMMING_FROM_HOST_PORT);
 
     FILE *fp;
diff --git a/old_protocol.c b/old_protocol.c
index 5de8d96..353527a 100644
--- a/old_protocol.c
+++ b/old_protocol.c
@@ -405,12 +405,12 @@ static void open_udp_socket() {
 
     // bind to the interface
     log_trace("binding UDP socket to %s:%d\n",inet_ntoa(radio->network.interface_address.sin_addr),ntohs(radio->network.interface_address.sin_port));
-    if(bind(tmp,(struct sockaddr*)&radio->network.interface_address,radio->network.interface_length)<0) {
+    if(bind(tmp,(struct sockaddr*)&radio->network.interface_address,sizeof(radio->network.interface_address))<0) {
 	log_error("old_protocol: bind socket failed for data_socket: %s", strerror(errno));
 	exit(-1);
     }
 
-    memcpy(&data_addr,&radio->network.address,radio->network.address_length);
+    memcpy(&data_addr,&radio->network.address,sizeof(radio->network.address));
     data_addr.sin_port=htons(DATA_PORT);
     data_socket=tmp;
     log_trace("%s: UDP socket established: %d for %s:%d",__FUNCTION__,data_socket,inet_ntoa(data_addr.sin_addr),ntohs(data_addr.sin_port));
@@ -425,7 +425,7 @@ static void open_tcp_socket() {
       usleep(100000);
       close(tmp);
     }
-    memcpy(&data_addr,&radio->network.address,radio->network.address_length);
+    memcpy(&data_addr,&radio->network.address,sizeof(radio->network.address));
     data_addr.sin_port=htons(DATA_PORT);
     data_addr.sin_family = AF_INET;
     log_trace("Trying to open TCP connection to %s", inet_ntoa(radio->network.address.sin_addr));
diff --git a/p1_discovery.c b/p1_discovery.c
index 933ad73..cc467ae 100644
--- a/p1_discovery.c
+++ b/p1_discovery.c
@@ -248,12 +248,10 @@ static void discover(struct ifaddrs *iface) {
             //
             memcpy((void *)&discovered[rc].network.address,
                    (void *)&to_addr, sizeof(to_addr));
-            // discovered[rc].network.address_length = sizeof(to_addr);
             memcpy((void *)&discovered[rc].network.interface_address,
                    (void *)&to_addr, sizeof(to_addr));
             memcpy((void *)&discovered[rc].network.interface_netmask,
                    (void *)&to_addr, sizeof(to_addr));
-            discovered[rc].network.interface_length = sizeof(to_addr);
             strcpy(discovered[rc].network.interface_name, "TCP");
             discovered[rc].use_tcp = 1;
         }
@@ -369,8 +367,6 @@ static gpointer discover_receive_thread(gpointer data) {
                     discovered[devices].status = status;
                     memcpy((void *)&discovered[devices].network.address,
                            (void *)&addr, sizeof(addr));
-                    //discovered[devices].network.address_length =
-                    //    sizeof(addr);
                     memcpy((void *)&discovered[devices]
                                .network.interface_address,
                            (void *)&interface_addr, sizeof(interface_addr));
@@ -378,8 +374,6 @@ static gpointer discover_receive_thread(gpointer data) {
                                .network.interface_netmask,
                            (void *)&interface_netmask,
                            sizeof(interface_netmask));
-                    discovered[devices].network.interface_length =
-                        sizeof(interface_addr);
                     strcpy(discovered[devices].network.interface_name,
                            interface_name);
                     discovered[devices].use_tcp = 0;
diff --git a/p2_discovery.c b/p2_discovery.c
index 8289be1..6d17efd 100644
--- a/p2_discovery.c
+++ b/p2_discovery.c
@@ -268,10 +268,8 @@ gpointer p2_discover_receive_thread(gpointer data) {
                         discovered[devices].network.mac_address[i]=buffer[i+5];
                     }
                     memcpy((void*)&discovered[devices].network.address,(void*)&addr,sizeof(addr));
-                    discovered[devices].network.address_length=sizeof(addr);
                     memcpy((void*)&discovered[devices].network.interface_address,(void*)&interface_addr,sizeof(interface_addr));
                     memcpy((void*)&discovered[devices].network.interface_netmask,(void*)&interface_netmask,sizeof(interface_netmask));
-                    discovered[devices].network.interface_length=sizeof(interface_addr);
                     strcpy(discovered[devices].network.interface_name,interface_name);
                     discovered[devices].supported_receivers=2;
                     fprintf(stderr,"p2_discover: found %d protocol=%d device=%d software_version=%d status=%d address=%s (%02X:%02X:%02X:%02X:%02X:%02X) on %s\n",