LogDriver * afunix_dd_new(gchar *filename, guint flags) { AFUnixDestDriver *self = g_new0(AFUnixDestDriver, 1); afsocket_dd_init_instance(&self->super, &self->sock_options, flags); self->super.bind_addr = g_sockaddr_unix_new(NULL); self->super.dest_addr = g_sockaddr_unix_new(filename); return &self->super.super; }
static void test_open_socket_fails_properly_on_bind_failure(void) { GSockAddr *addr = g_sockaddr_unix_new("/foo/bar/no/such/dir"); transport_mapper_set_address_family(transport_mapper, AF_UNIX); assert_create_socket_fails_with_address(addr); g_sockaddr_unref(addr); }
static void test_unix_domain_sockaddr_results_in_the_local_hostname(void) { const gchar *local_host; host_resolve_options.use_fqdn = TRUE; local_host = get_local_hostname_fqdn(); assert_sockaddr_to_hostname(g_sockaddr_unix_new(NULL), local_host); assert_sockaddr_to_hostname(NULL, local_host); }
static gboolean afunix_sd_setup_addresses(AFSocketSourceDriver *s) { AFUnixSourceDriver *self = (AFUnixSourceDriver *) s; if (!afsocket_sd_setup_addresses_method(s)) return FALSE; if (!self->super.bind_addr) self->super.bind_addr = g_sockaddr_unix_new(self->filename); return TRUE; }
void control_server_start(ControlServer *s) { ControlServerUnix *self = (ControlServerUnix *)s; GSockAddr *saddr; saddr = g_sockaddr_unix_new(self->super.control_socket_name); self->control_socket = socket(PF_UNIX, SOCK_STREAM, 0); if (self->control_socket == -1) { msg_error("Error opening control socket, external controls will not be available", evt_tag_str("socket", self->super.control_socket_name), NULL); return; } if (g_bind(self->control_socket, saddr) != G_IO_STATUS_NORMAL) { msg_error("Error opening control socket, bind() failed", evt_tag_str("socket", self->super.control_socket_name), evt_tag_errno("error", errno), NULL); goto error; } if (listen(self->control_socket, 255) < 0) { msg_error("Error opening control socket, listen() failed", evt_tag_str("socket", self->super.control_socket_name), evt_tag_errno("error", errno), NULL); goto error; } self->control_listen.fd = self->control_socket; self->control_listen.cookie = self; iv_fd_register(&self->control_listen); iv_fd_set_handler_in(&self->control_listen, control_socket_accept); g_sockaddr_unref(saddr); return; error: if (self->control_socket != -1) { close(self->control_socket); self->control_socket = -1; } g_sockaddr_unref(saddr); return; }
LogDriver * afunix_sd_new(gchar *filename, guint32 flags) { AFUnixSourceDriver *self = g_new0(AFUnixSourceDriver, 1); afsocket_sd_init_instance(&self->super, &self->sock_options, flags); self->super.flags |= AFSOCKET_KEEP_ALIVE; self->super.bind_addr = g_sockaddr_unix_new(filename); self->super.super.super.init = afunix_sd_init; self->super.super.super.free_fn = afunix_sd_free; self->filename = g_strdup(filename); self->owner = -1; self->group = -1; self->perm = 0666; return &self->super.super; }
void control_init(const gchar *control_name) { GSockAddr *saddr; saddr = g_sockaddr_unix_new(control_name); control_socket = socket(PF_UNIX, SOCK_STREAM, 0); if (control_socket == -1) { msg_error("Error opening control socket, external controls will not be available", evt_tag_str("socket", control_name), NULL); return; } if (g_bind(control_socket, saddr) != G_IO_STATUS_NORMAL) { msg_error("Error opening control socket, bind() failed", evt_tag_str("socket", control_name), evt_tag_errno("error", errno), NULL); goto error; } if (listen(control_socket, 255) < 0) { msg_error("Error opening control socket, listen() failed", evt_tag_str("socket", control_name), evt_tag_errno("error", errno), NULL); goto error; } IV_FD_INIT(&control_listen); control_listen.fd = control_socket; control_listen.handler_in = control_socket_accept; iv_fd_register(&control_listen); g_sockaddr_unref(saddr); return; error: if (control_socket != -1) { close(control_socket); control_socket = -1; } g_sockaddr_unref(saddr); }
void control_init(const gchar *control_name, GMainContext *main_context) { GSockAddr *saddr; GSource *source; saddr = g_sockaddr_unix_new(control_name); control_socket = socket(PF_UNIX, SOCK_STREAM, 0); if (control_socket == -1) { msg_error("Error opening control socket, external controls will not be available", evt_tag_str("socket", control_name), NULL); return; } if (g_bind(control_socket, saddr) != G_IO_STATUS_NORMAL) { msg_error("Error opening control socket, bind() failed", evt_tag_str("socket", control_name), evt_tag_errno("error", errno), NULL); goto error; } if (listen(control_socket, 255) < 0) { msg_error("Error opening control socket, listen() failed", evt_tag_str("socket", control_name), evt_tag_errno("error", errno), NULL); goto error; } source = g_listen_source_new(control_socket); g_source_set_callback(source, control_socket_accept, NULL, NULL); g_source_attach(source, main_context); g_source_unref(source); g_sockaddr_unref(saddr); return; error: if (control_socket != -1) { close(control_socket); control_socket = -1; } g_sockaddr_unref(saddr); }
static gboolean afunix_sd_setup_addresses(AFSocketSourceDriver *s) { AFUnixSourceDriver *self = (AFUnixSourceDriver *) s; if (!afsocket_sd_setup_addresses_method(s)) return FALSE; if (self->create_dirs) { if (!file_perm_options_create_containing_directory(&self->file_perm_options, self->filename)) return FALSE; } if (!self->super.bind_addr) self->super.bind_addr = g_sockaddr_unix_new(self->filename); return TRUE; }
static gboolean slng_send_cmd(gchar *cmd) { GSockAddr *saddr = NULL; if (control_socket == -1) { saddr = g_sockaddr_unix_new(control_name); control_socket = socket(PF_UNIX, SOCK_STREAM, 0); if (control_socket == -1) { fprintf(stderr, "Error opening control socket, socket='%s', error='%s'\n", control_name, strerror(errno)); goto error; } if (g_connect(control_socket, saddr) != G_IO_STATUS_NORMAL) { fprintf(stderr, "Error connecting control socket, socket='%s', error='%s'\n", control_name, strerror(errno)); close(control_socket); control_socket = -1; goto error; } } if (write(control_socket, cmd, strlen(cmd)) < 0) { fprintf(stderr, "Error sending command on control sokcet, socket='%s', cmd='%s', error='%s'\n", control_name, cmd, strerror(errno)); goto error; } return TRUE; error: if (saddr) g_sockaddr_unref(saddr); return FALSE; }
SystemDSyslogSourceDriver* systemd_syslog_sd_new(GlobalConfig *cfg, gboolean fallback) { SystemDSyslogSourceDriver *self; TransportMapper *transport_mapper; self = g_new0(SystemDSyslogSourceDriver, 1); transport_mapper = transport_mapper_unix_dgram_new(); afsocket_sd_init_instance(&self->super, socket_options_new(), transport_mapper, cfg); self->super.super.super.super.init = systemd_syslog_sd_init_method; self->super.acquire_socket = systemd_syslog_sd_acquire_socket; self->super.max_connections = 256; self->super.recvd_messages_are_local = TRUE; if (!self->super.bind_addr) self->super.bind_addr = g_sockaddr_unix_new(NULL); return self; }
gboolean g_sockaddr_deserialize(SerializeArchive *sa, GSockAddr **addr) { guint16 family; gboolean result = TRUE; if (!serialize_read_uint16(sa, &family)) return FALSE; switch (family) { case 0: /* special case, no address was stored */ *addr = NULL; break; case AF_INET: { result = _deserialize_ipv4(sa, addr); break; } #if SYSLOG_NG_ENABLE_IPV6 case AF_INET6: { result = _deserialize_ipv6(sa, addr); break; } #endif case AF_UNIX: *addr = g_sockaddr_unix_new(NULL); break; default: result = FALSE; break; } return result; }