systemd-run: can launch units with SyslogLevel
authorEvgeny Vereshchagin <evvers@ya.ru>
Sun, 11 Oct 2015 03:37:50 +0000 (03:37 +0000)
committerEvgeny Vereshchagin <evvers@ya.ru>
Wed, 14 Oct 2015 14:48:45 +0000 (14:48 +0000)
src/core/dbus-execute.c
src/shared/bus-util.c

index 88db179..7329000 100644 (file)
@@ -881,6 +881,19 @@ int bus_exec_context_set_transient_property(
                 }
 
                 return 1;
+        } else if (streq(name, "SyslogLevel")) {
+                int level;
+
+                r = sd_bus_message_read(message, "i", &level);
+                if (r < 0)
+                        return r;
+
+                if (mode != UNIT_CHECK) {
+                        c->syslog_priority = (c->syslog_priority & LOG_FACMASK) | level;
+                        unit_write_drop_in_private_format(u, mode, name, "SyslogLevel=%i\n", level);
+                }
+
+                return 1;
         } else if (streq(name, "Nice")) {
                 int n;
 
index 65922dd..bf9320b 100644 (file)
@@ -1497,7 +1497,18 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
                               "RootDirectory", "SyslogIdentifier"))
                 r = sd_bus_message_append(m, "v", "s", eq);
 
-        else if (streq(field, "DeviceAllow")) {
+        else if (streq(field, "SyslogLevel")) {
+                int level;
+
+                level = log_level_from_string(eq);
+                if (level < 0) {
+                        log_error("Failed to parse %s value %s.", field, eq);
+                        return -EINVAL;
+                }
+
+                r = sd_bus_message_append(m, "v", "i", level);
+
+        } else if (streq(field, "DeviceAllow")) {
 
                 if (isempty(eq))
                         r = sd_bus_message_append(m, "v", "a(ss)", 0);