***/
#include <inttypes.h>
-#include <sys/types.h>
#include <stdbool.h>
+#include <sys/types.h>
+#include <sys/socket.h>
#include "journal-file.h"
#include "hashmap.h"
#include "util.h"
#include "audit.h"
-#include "journal-rate-limit.h"
+#include "journald-rate-limit.h"
#include "list.h"
typedef enum Storage {
_STORAGE_INVALID = -1
} Storage;
+typedef enum SplitMode {
+ SPLIT_LOGIN,
+ SPLIT_UID,
+ SPLIT_NONE,
+ _SPLIT_MAX,
+ _SPLIT_INVALID = -1
+} SplitMode;
+
typedef struct StdoutStream StdoutStream;
typedef struct Server {
JournalMetrics system_metrics;
bool compress;
+ bool seal;
bool forward_to_kmsg;
bool forward_to_syslog;
bool forward_to_console;
+ unsigned n_forward_syslog_missed;
+ usec_t last_warn_forward_syslog_missed;
+
uint64_t cached_available_space;
usec_t cached_available_space_timestamp;
uint64_t var_available_timestamp;
+ usec_t max_retention_usec;
+ usec_t max_file_usec;
+ usec_t oldest_file_usec;
+
gid_t file_gid;
bool file_gid_valid;
int max_level_console;
Storage storage;
+ SplitMode split_mode;
+
+ MMapCache *mmap;
bool dev_kmsg_readable;
uint64_t *kernel_seqnum;
+
+ struct udev *udev;
} Server;
+#define N_IOVEC_META_FIELDS 17
+#define N_IOVEC_KERNEL_FIELDS 64
+#define N_IOVEC_UDEV_FIELDS 32
+
+void server_dispatch_message(Server *s, struct iovec *iovec, unsigned n, unsigned m, struct ucred *ucred, struct timeval *tv, const char *label, size_t label_len, const char *unit_id, int priority);
+void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...);
+
/* gperf lookup function */
const struct ConfigPerfItem* journald_gperf_lookup(const char *key, unsigned length);
const char *storage_to_string(Storage s);
Storage storage_from_string(const char *s);
+
+int config_parse_split_mode(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
+
+const char *split_mode_to_string(SplitMode s);
+SplitMode split_mode_from_string(const char *s);