From: Alan T. DeKok Date: Sat, 7 Feb 2026 16:06:26 +0000 (-0500) Subject: use cf_log_err() instead of ERROR() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6a526783cf033332ff5c3d873175d9753550f81;p=thirdparty%2Ffreeradius-server.git use cf_log_err() instead of ERROR() which prints out more descriptive messages We should really look at moving to the BIOs. There is a lot of code duplication here. :( --- diff --git a/src/lib/io/master.c b/src/lib/io/master.c index d843d078191..d0e9743c212 100644 --- a/src/lib/io/master.c +++ b/src/lib/io/master.c @@ -3231,7 +3231,6 @@ int fr_master_io_listen(fr_io_instance_t *inst, fr_schedule_t *sc, * socket for us. */ if (inst->app_io->open(child) < 0) { - cf_log_err(inst->app_io_conf, "Failed opening %s interface", inst->app_io->common.name); talloc_free(li); return -1; } @@ -3253,10 +3252,8 @@ int fr_master_io_listen(fr_io_instance_t *inst, fr_schedule_t *sc, other = listen_find_any(thread->child); if (other) { - ERROR("Failed opening %s - that port is already in use by another listener in server %s { ... } - %s", - child->name, cf_section_name2(other->server_cs), other->name); - - ERROR("got socket %d %d\n", child->app_io_addr->inet.src_port, other->app_io_addr->inet.src_port); + cf_log_err(other->cs, "Already opened socket %s", other->name); + cf_log_err(li->cs, "Failed opening duplicate socket - cannot use the same configuration for two different listen sections"); talloc_free(li); return -1; diff --git a/src/lib/server/virtual_servers.c b/src/lib/server/virtual_servers.c index 12356b203f8..6226c79fd1c 100644 --- a/src/lib/server/virtual_servers.c +++ b/src/lib/server/virtual_servers.c @@ -1853,9 +1853,6 @@ int virtual_servers_open(fr_schedule_t *sc) listener->proto_mi->conf); module_instance_data_protect(listener->proto_mi); if (unlikely(ret < 0)) { - cf_log_err(listener->proto_mi->conf, - "Failed opening listener %s", - listener->proto_module->common.name); return -1; } diff --git a/src/listen/arp/proto_arp.c b/src/listen/arp/proto_arp.c index a1bd248f314..36e49b64a01 100644 --- a/src/listen/arp/proto_arp.c +++ b/src/listen/arp/proto_arp.c @@ -151,7 +151,7 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf * - 0 on success. * - -1 on failure. */ -static int mod_open(void *instance, fr_schedule_t *sc, UNUSED CONF_SECTION *conf) +static int mod_open(void *instance, fr_schedule_t *sc, CONF_SECTION *conf) { fr_listen_t *li; proto_arp_t *inst = talloc_get_type_abort(instance, proto_arp_t); @@ -164,6 +164,7 @@ static int mod_open(void *instance, fr_schedule_t *sc, UNUSED CONF_SECTION *conf li = talloc_zero(inst, fr_listen_t); talloc_set_destructor(li, fr_io_listen_free); + li->cs = conf; li->app = &proto_arp; li->app_instance = instance; li->server_cs = inst->server_cs; diff --git a/src/listen/arp/proto_arp_ethernet.c b/src/listen/arp/proto_arp_ethernet.c index 63b09eddaf4..b3c971591bf 100644 --- a/src/listen/arp/proto_arp_ethernet.c +++ b/src/listen/arp/proto_arp_ethernet.c @@ -175,12 +175,12 @@ static int mod_open(fr_listen_t *li) thread->pcap = fr_pcap_init(thread, inst->interface, PCAP_INTERFACE_IN); if (!thread->pcap) { - PERROR("Failed initializing pcap handle."); + cf_log_err(li->cs, "Failed initializing pcap - %s", fr_strerror()); return -1; } if (fr_pcap_open(thread->pcap) < 0) { - PERROR("Failed opening interface %s", inst->interface); + cf_log_err(li->cs, "Failed opening interface %s - %s", inst->interface, fr_strerror()); return -1; } @@ -194,7 +194,7 @@ static int mod_open(fr_listen_t *li) } if (fr_pcap_apply_filter(thread->pcap, filter) < 0) { - PERROR("Failed applying pcap filter '%s'", filter); + cf_log_err(li->cs, "Failed applying pcap filter '%s' - %s", filter, fr_strerror()); talloc_free(our_filter); return -1; } diff --git a/src/listen/bfd/proto_bfd_udp.c b/src/listen/bfd/proto_bfd_udp.c index 51183e7c192..b98bddb310f 100644 --- a/src/listen/bfd/proto_bfd_udp.c +++ b/src/listen/bfd/proto_bfd_udp.c @@ -253,7 +253,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_udp(&inst->ipaddr, &port, inst->port_name, true); if (sockfd < 0) { - PERROR("Failed opening UDP socket"); + cf_log_err(li->cs, "Failed opening UDP socket - %s", fr_strerror()); error: return -1; } @@ -268,7 +268,7 @@ static int mod_open(fr_listen_t *li) int on = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) { - ERROR("Failed to set socket 'reuseport': %s", fr_syserror(errno)); + cf_log_err(li->cs, "Failed to set socket 'reuseport' - %s", fr_syserror(errno)); return -1; } } @@ -279,7 +279,7 @@ static int mod_open(fr_listen_t *li) opt = inst->recv_buff; if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'recv_buf': %s", fr_syserror(errno)); + cf_log_warn(li->cs, "Failed setting 'recv_buf' - %s", fr_syserror(errno)); } } #endif @@ -290,7 +290,7 @@ static int mod_open(fr_listen_t *li) opt = inst->send_buff; if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'send_buf': %s", fr_syserror(errno)); + cf_log_warn(li->cs, "Failed setting 'send_buf' - %s", fr_syserror(errno)); } } #endif @@ -301,7 +301,7 @@ static int mod_open(fr_listen_t *li) opt = inst->ttl; if (setsockopt(sockfd, IPPROTO_IP, IP_TTL, &opt, sizeof(opt)) < 0) { - WARN("Failed setting 'ttl': %s", fr_syserror(errno)); + cf_log_warn(li->cs, "Failed setting 'ttl' - %s", fr_syserror(errno)); } } #endif @@ -311,7 +311,7 @@ static int mod_open(fr_listen_t *li) */ if (fr_socket_bind(sockfd, inst->interface, &ipaddr, &port) < 0) { close(sockfd); - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding socket - %s", fr_strerror()); goto error; } diff --git a/src/listen/control/proto_control_unix.c b/src/listen/control/proto_control_unix.c index 8a2c03c305a..276838891c8 100644 --- a/src/listen/control/proto_control_unix.c +++ b/src/listen/control/proto_control_unix.c @@ -423,7 +423,7 @@ static int mod_open(fr_listen_t *li) thread->fd_bio = fr_bio_fd_alloc(thread, &cfg, 0); if (!thread->fd_bio) { - PERROR("Failed allocating UNIX path %s", inst->filename); + cf_log_err(li->cs, "Failed opening UNIX path %s - ", inst->filename, fr_strerror()); return -1; } diff --git a/src/listen/cron/proto_cron_crontab.c b/src/listen/cron/proto_cron_crontab.c index ec59ec84564..e49301978b1 100644 --- a/src/listen/cron/proto_cron_crontab.c +++ b/src/listen/cron/proto_cron_crontab.c @@ -412,6 +412,9 @@ static int mod_open(fr_listen_t *li) */ if (inst->filename == NULL) return -1; li->fd = open(inst->filename, O_RDONLY); + if (li->fd < 0) { + cf_log_err(li->cs, "Failed opening %s - %s", inst->filename, fr_syserror(errno)); + } memset(&ipaddr, 0, sizeof(ipaddr)); ipaddr.af = AF_INET; diff --git a/src/listen/detail/proto_detail.c b/src/listen/detail/proto_detail.c index edfe309cf67..32f3ef88134 100644 --- a/src/listen/detail/proto_detail.c +++ b/src/listen/detail/proto_detail.c @@ -439,6 +439,7 @@ static int mod_open(void *instance, fr_schedule_t *sc, CONF_SECTION *conf) MEM(li = talloc_zero(inst, fr_listen_t)); /* Assigned thread steals the memory */ talloc_set_destructor(li, fr_io_listen_free); + li->cs = conf; li->app_io = inst->app_io; li->thread_instance = talloc_zero_array(li, uint8_t, li->app_io->common.thread_inst_size); talloc_set_name(li->thread_instance, "proto_%s_thread_t", inst->app_io->common.name); diff --git a/src/listen/detail/proto_detail_file.c b/src/listen/detail/proto_detail_file.c index 6dbe4113762..aeb23b0338e 100644 --- a/src/listen/detail/proto_detail_file.c +++ b/src/listen/detail/proto_detail_file.c @@ -323,6 +323,7 @@ static int work_exists(proto_detail_file_thread_t *thread, int fd) * This listener is parented from the worker. So that * when the worker goes away, so does the listener. */ + li->cs = inst->parent->work_io_conf; li->app_io = inst->parent->work_io; li->app = inst->parent->self; diff --git a/src/listen/detail/proto_detail_work.c b/src/listen/detail/proto_detail_work.c index 20b4696d7b1..96b88ae3225 100644 --- a/src/listen/detail/proto_detail_work.c +++ b/src/listen/detail/proto_detail_work.c @@ -703,7 +703,7 @@ static int mod_open(fr_listen_t *li) struct stat buf; if (fstat(thread->fd, &buf) < 0) { - cf_log_err(inst->cs, "Failed examining %s: %s", thread->filename_work, fr_syserror(errno)); + cf_log_err(inst->cs, "Failed checking %s: %s", thread->filename_work, fr_syserror(errno)); return -1; } diff --git a/src/listen/dhcpv4/proto_dhcpv4_udp.c b/src/listen/dhcpv4/proto_dhcpv4_udp.c index a30a5a1ed26..61c9cbec1fe 100644 --- a/src/listen/dhcpv4/proto_dhcpv4_udp.c +++ b/src/listen/dhcpv4/proto_dhcpv4_udp.c @@ -670,7 +670,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_udp(&inst->ipaddr, &port, inst->port_name, true); if (sockfd < 0) { - PERROR("Failed opening UDP socket"); + cf_log_err(li->cs, "Failed opening UDP socket - %s", fr_strerror()); error: return -1; } @@ -685,7 +685,7 @@ static int mod_open(fr_listen_t *li) int on = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) { - ERROR("Failed to set socket 'reuseport': %s", fr_syserror(errno)); + cf_log_err(li->cs, "Failed to set socket 'reuseport' - %s", fr_syserror(errno)); close(sockfd); return -1; } @@ -697,7 +697,7 @@ static int mod_open(fr_listen_t *li) opt = inst->recv_buff; if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'recv_buf': %s", fr_syserror(errno)); + cf_log_warn(li->cs, "Failed setting 'recv_buf' - %s", fr_syserror(errno)); } } #endif @@ -706,16 +706,18 @@ static int mod_open(fr_listen_t *li) int on = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) < 0) { - ERROR("Failed to set broadcast option: %s", fr_syserror(errno)); + cf_log_err(li->cs, "Failed to set 'broadcast' - %s", fr_syserror(errno)); close(sockfd); return -1; } } + rad_suid_up(); rcode = fr_socket_bind(sockfd, inst->interface, &ipaddr, &port); + rad_suid_down(); if (rcode < 0) { close(sockfd); - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding to socket - %s", fr_strerror()); goto error; } if (inst->interface) li->app_io_addr->inet.src_ipaddr.scope_id = ipaddr.scope_id; diff --git a/src/listen/dhcpv6/proto_dhcpv6_udp.c b/src/listen/dhcpv6/proto_dhcpv6_udp.c index 49302eed29d..d4df661a238 100644 --- a/src/listen/dhcpv6/proto_dhcpv6_udp.c +++ b/src/listen/dhcpv6/proto_dhcpv6_udp.c @@ -288,7 +288,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_udp(&inst->ipaddr, &port, inst->port_name, true); if (sockfd < 0) { - PERROR("Failed opening UDP socket"); + cf_log_err(li->cs, "Failed opening UDP socket - %s", fr_strerror()); error: return -1; } @@ -303,7 +303,7 @@ static int mod_open(fr_listen_t *li) int on = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) { - ERROR("Failed to set socket 'reuseport': %s", fr_syserror(errno)); + cf_log_err(li->cs, "Failed to set socket 'reuseport' - %s", fr_syserror(errno)); close(sockfd); return -1; } @@ -315,7 +315,7 @@ static int mod_open(fr_listen_t *li) opt = inst->recv_buff; if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'recv_buf': %s", fr_syserror(errno)); + cf_log_warn(li->cs, "Failed setting 'recv_buf' - %s", fr_syserror(errno)); } } #endif @@ -327,7 +327,7 @@ static int mod_open(fr_listen_t *li) rcode = fr_socket_bind(sockfd, inst->interface, &ipaddr, &port); rad_suid_down(); if (rcode < 0) { - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding to socket - %s", fr_strerror()); close_error: close(sockfd); goto error; diff --git a/src/listen/dns/proto_dns_udp.c b/src/listen/dns/proto_dns_udp.c index 75c0a069014..df8df2c1e69 100644 --- a/src/listen/dns/proto_dns_udp.c +++ b/src/listen/dns/proto_dns_udp.c @@ -266,7 +266,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_udp(&inst->ipaddr, &port, "domain", true); if (sockfd < 0) { - PERROR("Failed opening UDP socket"); + cf_log_err(li->cs, "Failed opening UDP socket - %s", fr_strerror()); error: return -1; } @@ -281,7 +281,7 @@ static int mod_open(fr_listen_t *li) int on = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) { - ERROR("Failed to set socket 'reuseport': %s", fr_syserror(errno)); + cf_log_err(li->cs, "Failed to set socket 'reuseport' - %s", fr_syserror(errno)); close(sockfd); return -1; } @@ -294,7 +294,7 @@ static int mod_open(fr_listen_t *li) rcode = fr_socket_bind(sockfd, inst->interface, &ipaddr, &port); rad_suid_down(); if (rcode < 0) { - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding to socket - %s", fr_strerror()); close(sockfd); goto error; } diff --git a/src/listen/ldap_sync/proto_ldap_sync.c b/src/listen/ldap_sync/proto_ldap_sync.c index b9658b95fad..d4c01b9b7ca 100644 --- a/src/listen/ldap_sync/proto_ldap_sync.c +++ b/src/listen/ldap_sync/proto_ldap_sync.c @@ -192,7 +192,7 @@ send: return fr_dbuff_used(&dbuff); } -static int mod_open(void *instance, fr_schedule_t *sc, UNUSED CONF_SECTION *conf) +static int mod_open(void *instance, fr_schedule_t *sc, CONF_SECTION *conf) { proto_ldap_sync_t *inst = talloc_get_type_abort(instance, proto_ldap_sync_t); fr_listen_t *li; @@ -203,6 +203,7 @@ static int mod_open(void *instance, fr_schedule_t *sc, UNUSED CONF_SECTION *conf MEM(li = talloc_zero(inst, fr_listen_t)); talloc_set_destructor(li, fr_io_listen_free); + li->cs = conf; li->app_io = inst->app_io; li->thread_instance = talloc_zero_array(NULL, uint8_t, li->app_io->common.thread_inst_size); talloc_set_name(li->thread_instance, "proto_%s_thread_t", inst->app_io->common.name); diff --git a/src/listen/ldap_sync/proto_ldap_sync_ldap.c b/src/listen/ldap_sync/proto_ldap_sync_ldap.c index 10db36e787c..2368a4651ed 100644 --- a/src/listen/ldap_sync/proto_ldap_sync_ldap.c +++ b/src/listen/ldap_sync/proto_ldap_sync_ldap.c @@ -1139,6 +1139,7 @@ static void _proto_ldap_socket_init(connection_t *conn, UNUSED connection_state_ thread->li = li; li->thread_instance = thread; + li->cs = thread->parent->cs; li->app_io = &proto_ldap_sync_child; li->name = li->app_io->common.name; li->default_message_size = li->app_io->default_message_size; diff --git a/src/listen/load/proto_load_step.c b/src/listen/load/proto_load_step.c index 1e1da566b9f..d839a3907b0 100644 --- a/src/listen/load/proto_load_step.c +++ b/src/listen/load/proto_load_step.c @@ -202,6 +202,10 @@ static int mod_open(fr_listen_t *li) * readable FD in order to bootstrap the process. */ li->fd = open(inst->filename, O_RDONLY); + if (li->fd < 0) { + cf_log_err(li->cs, "Failed opening %s - %s", inst->filename, fr_syserror(errno)); + return -1; + } memset(&ipaddr, 0, sizeof(ipaddr)); ipaddr.af = AF_INET; diff --git a/src/listen/radius/proto_radius_tcp.c b/src/listen/radius/proto_radius_tcp.c index 276097d37d4..4d976132069 100644 --- a/src/listen/radius/proto_radius_tcp.c +++ b/src/listen/radius/proto_radius_tcp.c @@ -340,7 +340,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_tcp(&inst->ipaddr, &port, inst->port_name, true); if (sockfd < 0) { - PERROR("Failed opening TCP socket"); + cf_log_err(li->cs, "Failed opening TCP socket - %s", fr_strerror()); error: return -1; } @@ -349,13 +349,13 @@ static int mod_open(fr_listen_t *li) if (fr_socket_bind(sockfd, inst->interface, &ipaddr, &port) < 0) { close(sockfd); - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding to socket - %s", fr_strerror()); goto error; } if (listen(sockfd, 8) < 0) { close(sockfd); - PERROR("Failed listening on socket"); + cf_log_err(li->cs, "Failed listening on socket - %s", fr_syserror(errno)); goto error; } diff --git a/src/listen/radius/proto_radius_udp.c b/src/listen/radius/proto_radius_udp.c index 69bf13412ad..246973b7542 100644 --- a/src/listen/radius/proto_radius_udp.c +++ b/src/listen/radius/proto_radius_udp.c @@ -310,7 +310,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_udp(&inst->ipaddr, &port, inst->port_name, true); if (sockfd < 0) { - PERROR("Failed opening UDP socket"); + cf_log_err(li->cs, "Failed opening UDP socket - %s", fr_strerror()); error: return -1; } @@ -325,7 +325,7 @@ static int mod_open(fr_listen_t *li) int on = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) { - ERROR("Failed to set socket 'reuseport': %s", fr_syserror(errno)); + cf_log_err(li->cs, "Failed to set socket 'reuseport': %s", fr_syserror(errno)); return -1; } } @@ -336,7 +336,7 @@ static int mod_open(fr_listen_t *li) opt = inst->recv_buff; if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'recv_buf': %s", fr_syserror(errno)); + cf_log_warn(li->cs, "Failed setting 'recv_buf': %s", fr_syserror(errno)); } } #endif @@ -347,14 +347,14 @@ static int mod_open(fr_listen_t *li) opt = inst->send_buff; if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'send_buf': %s", fr_syserror(errno)); + cf_log_warn(li->cs, "Failed setting 'send_buf': %s", fr_syserror(errno)); } } #endif if (fr_socket_bind(sockfd, inst->interface, &ipaddr, &port) < 0) { close(sockfd); - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding to socket - %s", fr_strerror()); goto error; } diff --git a/src/listen/tacacs/proto_tacacs_tcp.c b/src/listen/tacacs/proto_tacacs_tcp.c index ef1188cc295..3cc86af98ab 100644 --- a/src/listen/tacacs/proto_tacacs_tcp.c +++ b/src/listen/tacacs/proto_tacacs_tcp.c @@ -364,7 +364,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_tcp(&inst->ipaddr, &port, inst->port_name, true); if (sockfd < 0) { - PERROR("Failed opening TCP socket"); + cf_log_err(li->cs, "Failed opening TCP socket - %s", fr_strerror()); error: return -1; } @@ -373,13 +373,13 @@ static int mod_open(fr_listen_t *li) if (fr_socket_bind(sockfd, inst->interface, &ipaddr, &port) < 0) { close(sockfd); - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding to socket - %s", fr_strerror()); goto error; } if (listen(sockfd, 8) < 0) { close(sockfd); - PERROR("Failed listening on socket"); + cf_log_err(li->cs, "Failed listening on socket - %s", fr_syserror(errno)); goto error; } diff --git a/src/listen/vmps/proto_vmps_udp.c b/src/listen/vmps/proto_vmps_udp.c index f58fcb34942..1d3beda4256 100644 --- a/src/listen/vmps/proto_vmps_udp.c +++ b/src/listen/vmps/proto_vmps_udp.c @@ -290,7 +290,7 @@ static int mod_open(fr_listen_t *li) li->fd = sockfd = fr_socket_server_udp(&inst->ipaddr, &port, inst->port_name, true); if (sockfd < 0) { - PERROR("Failed opening UDP socket"); + cf_log_err(li->cs, "Failed opening UDP socket - %s", fr_strerror()); error: return -1; } @@ -305,14 +305,14 @@ static int mod_open(fr_listen_t *li) int on = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) { - ERROR("Failed to set socket 'reuseport': %s", fr_syserror(errno)); + cf_log_err(li->cs, "Failed to set socket 'reuseport' - %s", fr_syserror(errno)); return -1; } } if (fr_socket_bind(sockfd, inst->interface, &ipaddr, &port) < 0) { close(sockfd); - PERROR("Failed binding socket"); + cf_log_err(li->cs, "Failed binding to socket - %s", fr_strerror()); goto error; }