#include <sys/types.h>
#include <sys/socket.h>
+#include "sd-event.h"
#include "journal-file.h"
#include "hashmap.h"
#include "util.h"
} Storage;
typedef enum SplitMode {
- SPLIT_LOGIN,
SPLIT_UID,
+ SPLIT_LOGIN,
SPLIT_NONE,
_SPLIT_MAX,
_SPLIT_INVALID = -1
typedef struct StdoutStream StdoutStream;
typedef struct Server {
- int epoll_fd;
- int signal_fd;
int syslog_fd;
int native_fd;
int stdout_fd;
int dev_kmsg_fd;
+ int hostname_fd;
+
+ sd_event *event;
+
+ sd_event_source *syslog_event_source;
+ sd_event_source *native_event_source;
+ sd_event_source *stdout_event_source;
+ sd_event_source *dev_kmsg_event_source;
+ sd_event_source *sync_event_source;
+ sd_event_source *sigusr1_event_source;
+ sd_event_source *sigusr2_event_source;
+ sd_event_source *sigterm_event_source;
+ sd_event_source *sigint_event_source;
+ sd_event_source *hostname_event_source;
JournalFile *runtime_journal;
JournalFile *system_journal;
bool forward_to_kmsg;
bool forward_to_syslog;
bool forward_to_console;
+ bool forward_to_wall;
unsigned n_forward_syslog_missed;
usec_t last_warn_forward_syslog_missed;
int max_level_syslog;
int max_level_kmsg;
int max_level_console;
+ int max_level_wall;
Storage storage;
SplitMode split_mode;
struct udev *udev;
- int sync_timer_fd;
bool sync_scheduled;
+
+ char machine_id_field[sizeof("_MACHINE_ID=") + 32];
+ char boot_id_field[sizeof("_BOOT_ID=") + 32];
+ char *hostname_field;
+
+ /* Cached cgroup root, so that we don't have to query that all the time */
+ char *cgroup_root;
} Server;
#define N_IOVEC_META_FIELDS 20
void server_rotate(Server *s);
int server_schedule_sync(Server *s, int priority);
int server_flush_to_var(Server *s);
-int process_event(Server *s, struct epoll_event *ev);
void server_maybe_append_tags(Server *s);
+int process_datagram(sd_event_source *es, int fd, uint32_t revents, void *userdata);