X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournald-server.c;h=5befe93fd49ae46d3a96b0077e094d4366fc951a;hb=1238ee09b7babb175b9bf7ad1d0e8eb2a414ee6e;hp=96ef66db5fa95b1b14c08b9a6f938e98632259bb;hpb=28def94cc8fd4394b20e2155d7130166662343c4;p=elogind.git diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 96ef66db5..5befe93fd 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -70,7 +70,7 @@ #define RECHECK_AVAILABLE_SPACE_USEC (30*USEC_PER_SEC) -static const char* const storage_table[] = { +static const char* const storage_table[_STORAGE_MAX] = { [STORAGE_AUTO] = "auto", [STORAGE_VOLATILE] = "volatile", [STORAGE_PERSISTENT] = "persistent", @@ -80,10 +80,10 @@ static const char* const storage_table[] = { DEFINE_STRING_TABLE_LOOKUP(storage, Storage); DEFINE_CONFIG_PARSE_ENUM(config_parse_storage, storage, Storage, "Failed to parse storage setting"); -static const char* const split_mode_table[] = { - [SPLIT_NONE] = "none", +static const char* const split_mode_table[_SPLIT_MAX] = { + [SPLIT_LOGIN] = "login", [SPLIT_UID] = "uid", - [SPLIT_LOGIN] = "login" + [SPLIT_NONE] = "none", }; DEFINE_STRING_TABLE_LOOKUP(split_mode, SplitMode); @@ -686,7 +686,7 @@ static void dispatch_message_real( #ifdef HAVE_SELINUX if (use_selinux()) { if (label) { - x = alloca(sizeof("_SELINUX_CONTEXT=") + label_len); + x = alloca(strlen("_SELINUX_CONTEXT=") + label_len + 1); *((char*) mempcpy(stpcpy(x, "_SELINUX_CONTEXT="), label, label_len)) = 0; IOVEC_SET_STRING(iovec[n++], x); @@ -1131,15 +1131,13 @@ int process_datagram(sd_event_source *es, int fd, uint32_t revents, void *userda union { struct cmsghdr cmsghdr; - /* We use NAME_MAX space for the - * SELinux label here. The kernel - * currently enforces no limit, but - * according to suggestions from the - * SELinux people this will change and - * it will probably be identical to - * NAME_MAX. For now we use that, but - * this should be updated one day when - * the final limit is known.*/ + /* We use NAME_MAX space for the SELinux label + * here. The kernel currently enforces no + * limit, but according to suggestions from + * the SELinux people this will change and it + * will probably be identical to NAME_MAX. For + * now we use that, but this should be updated + * one day when the final limit is known.*/ uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) + CMSG_SPACE(sizeof(struct timeval)) + CMSG_SPACE(sizeof(int)) + /* fd */ @@ -1216,8 +1214,6 @@ int process_datagram(sd_event_source *es, int fd, uint32_t revents, void *userda close_many(fds, n_fds); } - - return 0; } static int dispatch_sigusr1(sd_event_source *es, const struct signalfd_siginfo *si, void *userdata) { @@ -1323,6 +1319,12 @@ static int server_parse_proc_cmdline(Server *s) { log_warning("Failed to parse forward to console switch %s. Ignoring.", word + 36); else s->forward_to_console = r; + } else if (startswith(word, "systemd.journald.forward_to_wall=")) { + r = parse_boolean(word + 33); + if (r < 0) + log_warning("Failed to parse forward to wall switch %s. Ignoring.", word + 33); + else + s->forward_to_wall = r; } else if (startswith(word, "systemd.journald")) log_warning("Invalid systemd.journald parameter. Ignoring."); } @@ -1470,11 +1472,13 @@ int server_init(Server *s) { s->rate_limit_burst = DEFAULT_RATE_LIMIT_BURST; s->forward_to_syslog = true; + s->forward_to_wall = true; s->max_level_store = LOG_DEBUG; s->max_level_syslog = LOG_DEBUG; s->max_level_kmsg = LOG_NOTICE; s->max_level_console = LOG_INFO; + s->max_level_wall = LOG_EMERG; memset(&s->system_metrics, 0xFF, sizeof(s->system_metrics)); memset(&s->runtime_metrics, 0xFF, sizeof(s->runtime_metrics));