* 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;
}
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;
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;
}
* - 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);
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;
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;
}
}
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;
}
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;
}
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;
}
}
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
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
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
*/
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;
}
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;
}
*/
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;
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);
* 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;
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;
}
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;
}
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;
}
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
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;
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;
}
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;
}
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
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;
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;
}
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;
}
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;
}
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;
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);
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;
* 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;
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;
}
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;
}
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;
}
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;
}
}
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
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;
}
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;
}
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;
}
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;
}
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;
}