summaryrefslogtreecommitdiff
path: root/src/journal/journald-native.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-11-25 15:00:38 +0100
committerLennart Poettering <lennart@poettering.net>2020-01-31 15:01:18 +0100
commitb1852c48c12754f7d0e7705150b7f9488f34f4a9 (patch)
treed670d7a30e6c5dbe1c56597523775b7c7ad6f676 /src/journal/journald-native.c
parentd6f46470f562a4a6f13a97df3b884969a1acf173 (diff)
downloadsystemd-b1852c48c12754f7d0e7705150b7f9488f34f4a9.tar.gz
journald: allow running multiple instances of journald
If we do, we operate on a separate set of logs and runtime objects The namespace is configured via argv[1]. Fixes: #12123 Fixes: #10230 #9519 (These latter two issues ask for slightly different stuff, but the usecases generally can be solved by running separate instances of journald now, hence also declaring that as "Fixes:")
Diffstat (limited to 'src/journal/journald-native.c')
-rw-r--r--src/journal/journald-native.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c
index 73a96da9f7..30d988544f 100644
--- a/src/journal/journald-native.c
+++ b/src/journal/journald-native.c
@@ -450,17 +450,21 @@ void server_process_native_file(
}
}
-int server_open_native_socket(Server *s) {
-
- static const union sockaddr_union sa = {
- .un.sun_family = AF_UNIX,
- .un.sun_path = "/run/systemd/journal/socket",
- };
+int server_open_native_socket(Server *s, const char *native_socket) {
int r;
assert(s);
+ assert(native_socket);
if (s->native_fd < 0) {
+ union sockaddr_union sa = {
+ .un.sun_family = AF_UNIX,
+ };
+
+ r = sockaddr_un_set_path(&sa.un, native_socket);
+ if (r < 0)
+ return log_error_errno(r, "Unable to use namespace path %s for AF_UNIX socket: %m", native_socket);
+
s->native_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (s->native_fd < 0)
return log_error_errno(errno, "socket() failed: %m");