summaryrefslogtreecommitdiff
path: root/src/journal/journald.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/journal/journald.c')
-rw-r--r--src/journal/journald.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/journal/journald.c b/src/journal/journald.c
index d6db9b1c55..b8a9fc3adf 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -33,6 +33,7 @@
#include "sd-daemon.h"
#include "socket-util.h"
#include "acl-util.h"
+#include "cgroup-util.h"
typedef struct Server {
int syslog_fd;
@@ -134,8 +135,8 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
*comm = NULL, *cmdline = NULL, *hostname = NULL,
*audit_session = NULL, *audit_loginuid = NULL,
*syslog_priority = NULL, *syslog_facility = NULL,
- *exe = NULL;
- struct iovec iovec[15];
+ *exe = NULL, *cgroup = NULL;
+ struct iovec iovec[16];
unsigned n = 0;
char idbuf[33];
sd_id128_t id;
@@ -160,6 +161,7 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
if (ucred) {
uint32_t session;
+ char *path;
if (asprintf(&pid, "PID=%lu", (unsigned long) ucred->pid) >= 0)
IOVEC_SET_STRING(iovec[n++], pid);
@@ -203,6 +205,14 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
if (r >= 0)
if (asprintf(&audit_loginuid, "AUDIT_LOGINUID=%lu", (unsigned long) loginuid) >= 0)
IOVEC_SET_STRING(iovec[n++], audit_loginuid);
+
+ r = cg_get_by_pid(SYSTEMD_CGROUP_CONTROLLER, ucred->pid, &path);
+ if (r >= 0) {
+ cgroup = strappend("SYSTEMD_CGROUP=", path);
+ if (cgroup)
+ IOVEC_SET_STRING(iovec[n++], cgroup);
+ free(path);
+ }
}
if (tv) {
@@ -247,6 +257,7 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
free(uid);
free(gid);
free(comm);
+ free(exe);
free(cmdline);
free(source_time);
free(boot_id);
@@ -256,6 +267,7 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
free(audit_loginuid);
free(syslog_facility);
free(syslog_priority);
+ free(cgroup);
}
static int process_event(Server *s, struct epoll_event *ev) {