From 8cfc6d8ed7edd6c6610417f36b3e043aeba974a4 Mon Sep 17 00:00:00 2001 From: Ramakrishnan Muthukrishnan Date: Thu, 5 Dec 2024 22:15:40 +0530 Subject: [PATCH] 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. --- Makefile | 2 +- discovered.h | 2 -- new_protocol.c | 35 ++++++++++++++++------------------- new_protocol_programmer.c | 4 ++-- old_protocol.c | 6 +++--- p1_discovery.c | 6 ------ p2_discovery.c | 2 -- 7 files changed, 22 insertions(+), 35 deletions(-) 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;inetwork.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", -- 2.45.2