Systemd/src/shared
Lennart Poettering d41bd96f54 shared: add minimal varlink implementation
This adds a minimal Varlink (https://varlink.org/) implementation to our
tree. Given that we already have a JSON logic it's an easy thing to add.

Why bother?

We currently have major problems with IPC before dbus-daemon is up, and
in all components that dbus-daemon itself makes use of (such as various
NSS modules to resolve users as well as the journal which dbus-daemon
logs to). Because of that we so far ended up creating various (usually
crappy) work-arounds either coming up with secondary IPC systems or
sharing data statelessly in /run or similar. Let's clean this up, and
instead use a clean, well-defined, broker-less IPC for cases like that.

This is a minimal implementation of Varlink, i.e. the most basic logic
only. Stuff that's missing is left out on purpose: there's no
introspection/validation and there's no name service. It might make
sense to add that later, but for now let's only do the minimum buy-in we
can get away with. In particular as I'd assume that at least initially
we only use this IPC for our internal communication avoiding
introspection and the name service should be fine.

Specifically, I'd expect that we add IPC interfaces to the following
concepts with this scheme:

1. nss-resolve (so that hostname lookups with resolved work before
   resolved is up)
2. journald (so that IPC calls to journald don't have to go through
   dbus-daemon thus creating a cyclic dependency between journald and
   dbus-daemon)
3. nss-systemd (so that dynamic user lookups via PID 1 work sanely even
   inside of dbus-daemon, because otherwise we'd want to use dbus to run
   dbus which causes deadlocks)
4. networkd (to make sure one can talk to it in the initrd already,
   long before dbus is around)

And there might be other cases similar to this.
2019-05-09 14:14:20 -04:00
..
linux codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
acl-util.c headers: remove unneeded includes from util.h 2019-03-27 11:53:12 +01:00
acl-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
acpi-fpdt.c tree-wide: drop copyright headers from frequent contributors 2018-06-20 11:58:53 +02:00
acpi-fpdt.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
apparmor-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
apparmor-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ask-password-api.c ask-password: add extra paranoid overflow check 2019-03-20 10:48:33 +01:00
ask-password-api.h ask-password: make ask_password_keyring() static 2018-12-30 21:09:41 +09:00
barrier.c tree-wide: use SWAP_TWO a bit more 2018-11-26 22:17:34 +01:00
barrier.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
base-filesystem.c shared: be friendly to EROFS images 2019-04-03 17:27:20 +02:00
base-filesystem.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
bitmap.c util: split out memcmp()/memset() related calls into memory-util.[ch] 2019-03-13 12:16:43 +01:00
bitmap.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
blkid-util.h shared/blkid-util: do not include util.h needlessly 2018-12-07 02:49:03 +01:00
boot-timestamps.c tree-wide: drop copyright headers from frequent contributors 2018-06-20 11:58:53 +02:00
boot-timestamps.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
bootspec.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
bootspec.h bootspec: fix build when EFI support is disabled 2019-04-17 11:20:04 +02:00
bpf-program.c util: split out memcmp()/memset() related calls into memory-util.[ch] 2019-03-13 12:16:43 +01:00
bpf-program.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
bus-unit-procs.c bus-unit-procs: use empty_or_root() where appropriate 2019-03-13 17:44:11 +01:00
bus-unit-procs.h bus-unit-util: split out code that shows a unit's process tree 2019-03-13 17:41:41 +01:00
bus-unit-util.c cgroup: Readd some plumbing for DefaultMemoryMin 2019-05-08 12:06:32 +01:00
bus-unit-util.h bus-unit-util: split out code that shows a unit's process tree 2019-03-13 17:41:41 +01:00
bus-util.c cgroup: Readd some plumbing for DefaultMemoryMin 2019-05-08 12:06:32 +01:00
bus-util.h headers: remove unneeded includes from util.h 2019-03-27 11:53:12 +01:00
bus-wait-for-jobs.c shared: add some minor comments 2019-04-02 05:34:53 +09:00
bus-wait-for-jobs.h shared: split out code to wait for jobs to complet into its own source file 2019-03-13 17:39:24 +01:00
calendarspec.c calendarspec: make return time value of calendar_spec_next_usec() optional 2019-04-25 13:21:54 +02:00
calendarspec.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
cgroup-show.c util: split out sorting related calls to new sort-util.[ch] 2019-03-13 12:16:43 +01:00
cgroup-show.h tree-wide: remove various unused functions 2018-12-02 13:35:34 +09:00
clean-ipc.c Move LONG_LINE_MAX definition to fileio.h 2018-11-14 16:25:32 +01:00
clean-ipc.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
clock-util.c util: split out errno related stuff 2019-03-14 13:25:51 +01:00
clock-util.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
condition.c Merge pull request #12030 from poettering/condition-memory 2019-04-02 08:01:42 +09:00
condition.h Merge pull request #12030 from poettering/condition-memory 2019-04-02 08:01:42 +09:00
conf-parser.c util: split out nulstr related stuff to nulstr-util.[ch] 2019-03-14 13:25:52 +01:00
conf-parser.h service: handle abort stops with dedicated timeout 2019-04-12 17:32:52 +02:00
cpu-set-util.c Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
cpu-set-util.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
crypt-util.c Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
crypt-util.h cryptsetup: add same-cpu-crypt and submit-from-crypt-cpus options 2019-03-13 09:48:50 +01:00
daemon-util.h sd-daemon: add notify_start() and notify_on_cleanup() helper function 2018-12-08 18:09:25 +09:00
dev-setup.c util: split out nulstr related stuff to nulstr-util.[ch] 2019-03-14 13:25:52 +01:00
dev-setup.h dev-setup: generalize logic we use to create "inaccessible" device nodes 2018-11-29 20:21:40 +01:00
dissect-image.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
dissect-image.h codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
dns-domain.c tree-wide: code improvements suggested by Coccinelle 2019-04-30 09:39:07 +02:00
dns-domain.h resolve: reject host names with leading or trailing dashes in /etc/hosts 2018-12-10 09:56:56 +01:00
dropin.c coccinelle: make use of SYNTHETIC_ERRNO 2018-11-22 10:54:38 +01:00
dropin.h Drop my copyright headers 2018-06-14 13:03:20 +02:00
efivars.c tree-wide: drop !! casts to booleans 2019-04-28 14:32:19 +02:00
efivars.h bootspec: fix build when EFI support is disabled 2019-04-17 11:20:04 +02:00
enable-mempool.c mempool: only enable mempool use when linked to libsystemd-shared.so 2018-10-11 11:10:37 +02:00
env-file-label.c util-lib: split out env file parsing code into env-file.c 2018-12-02 13:22:29 +01:00
env-file-label.h util-lib: split out env file parsing code into env-file.c 2018-12-02 13:22:29 +01:00
exec-util.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
exec-util.h core: Allow to configure execute_directories execution behavior 2019-02-18 16:16:02 +01:00
exit-status.c exit-status: introduce EXIT_EXCEPTION mapping to 255 2018-11-20 17:04:07 +01:00
exit-status.h exit-status: introduce EXIT_EXCEPTION mapping to 255 2018-11-20 17:04:07 +01:00
fdset.c nspawn: don't free "fds" twice 2019-03-22 18:11:27 +01:00
fdset.h nspawn: don't free "fds" twice 2019-03-22 18:11:27 +01:00
fileio-label.c util-lib: split out env file parsing code into env-file.c 2018-12-02 13:22:29 +01:00
fileio-label.h util-lib: split out env file parsing code into env-file.c 2018-12-02 13:22:29 +01:00
firewall-util.c firewall-util: add an assert that we're not overwriting a buffer 2018-10-12 14:51:35 +02:00
firewall-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
format-table.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
format-table.h format-table: correct prototype 2019-05-08 06:33:36 -04:00
fstab-util.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
fstab-util.h Remove variable only used for an assert 2019-03-28 09:03:06 +01:00
generate-ip-protocol-list.sh scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
generator.c Make fopen_temporary and fopen_temporary_label unlocked 2019-04-12 11:44:56 +02:00
generator.h Pull in systemd-remount-fs.service only when required 2019-01-03 15:30:28 +01:00
gpt.h gpt: add definition for boot loader spec partition 2019-03-01 12:41:32 +01:00
id128-print.c tree-wide: use SD_ID128_UUID_FORMAT_STR as appropriate 2019-04-05 13:48:38 +02:00
id128-print.h systemd-id128: a new tool to print machine/boot/invocation/app-specific ids 2018-10-02 15:15:10 +02:00
ima-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ima-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
import-util.c util: split out nulstr related stuff to nulstr-util.[ch] 2019-03-14 13:25:52 +01:00
import-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
initreq.h tree-wide: use '#pragma once' for header guard 2018-08-30 06:10:43 +03:00
install-printf.c Mark *data and *userdata params to specifier_printf() as const 2018-12-12 16:45:33 +01:00
install-printf.h Mark *data and *userdata params to specifier_printf() as const 2018-12-12 16:45:33 +01:00
install.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
install.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ip-protocol-list.c ip-protocol-list: sort headers 2018-12-04 09:18:21 +01:00
ip-protocol-list.h util: introduce parse_ip_protocol() 2018-12-02 06:13:41 +01:00
ip-protocol-to-name.awk util: rename socket_protocol_{from,to}_name() to ip_protocol_{from,to}_name() 2018-12-02 05:48:27 +01:00
journal-importer.c tree-wide: replace explicit NULL checks with their shorter variants 2019-04-28 14:28:49 +02:00
journal-importer.h journald: set a limit on the number of fields (1k) 2019-01-09 23:41:53 +01:00
journal-util.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
journal-util.h tree-wide: add multiple inclusion guard 2018-06-25 13:04:59 +09:00
json-internal.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
json.c json: let's not accept embedded NUL bytes when allocating JSON strings 2019-04-26 08:24:41 +02:00
json.h codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
libmount-util.h shared/mount-util: make sure utab is ignored in umount_recursive() 2019-04-23 23:52:15 +02:00
libshared.sym tree-wide: tabs suck (#8527) 2018-03-23 15:21:35 +01:00
lockfile-util.c lockfile-util.c: fix build without F_OFD_SETLK 2019-01-11 17:37:36 +01:00
lockfile-util.h lockfile: drop unnecessary headers from lockfile-util.h 2018-12-06 13:31:16 +01:00
log-link.h network: move log_link_debug() or friends to log-link.h 2019-03-13 14:29:03 +09:00
logs-show.c basic/log: use colors to highlight messages like journalctl 2019-05-08 09:45:38 +02:00
logs-show.h logs-show: make highlight parameter const (#10311) 2018-10-09 16:43:47 +09:00
loop-util.c loop-util: tweak codepath when a loopback file is "created" from an existing block device 2019-01-07 17:50:39 +01:00
loop-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
machine-image.c tree-wide: code improvements suggested by Coccinelle 2019-04-30 09:39:07 +02:00
machine-image.h machine-image: introduce image_hash_ops and use it 2018-12-02 12:18:54 +01:00
machine-pool.c import: drop logic of setting up /var/lib/machines as btrfs loopback mount 2018-11-26 18:09:01 +01:00
machine-pool.h import: drop logic of setting up /var/lib/machines as btrfs loopback mount 2018-11-26 18:09:01 +01:00
main-func.h codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
meson.build shared: add minimal varlink implementation 2019-05-09 14:14:20 -04:00
module-util.c shared/module-util: fix preexisting mixup with errno sign 2018-07-19 18:28:21 +02:00
module-util.h udev-builtin-kmod: use the generic module_load() function 2018-07-19 18:28:21 +02:00
mount-util.c Merge pull request #12218 from keszybz/use-libmount-more 2019-04-30 19:44:17 +02:00
mount-util.h mount-util: beef up bind_remount_recursive() to be able to toggle more than MS_RDONLY 2019-03-25 19:33:55 +01:00
nscd-flush.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
nscd-flush.h shared: add helper for flushing nscd caches 2018-12-15 12:10:19 +01:00
nsflags.c util: drop missing.h from socket-util.h 2018-12-06 13:31:16 +01:00
nsflags.h nsflsgs: drop missing.h and use missing_sched.h 2018-12-06 13:31:16 +01:00
os-util.c codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
os-util.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
output-mode.c output-mode: add generic helper to pick right JsonFormatFlags for given OutputMode 2018-12-03 22:42:38 +01:00
output-mode.h output-mode: add new helper OUTPUT_MODE_IS_JSON() 2018-12-03 22:42:38 +01:00
pager.c headers: remove unneeded includes from util.h 2019-03-27 11:53:12 +01:00
pager.h Split out pretty-print.c and move pager.c and main-func.h to shared/ 2018-11-20 18:40:02 +01:00
path-lookup.c util-lib: split out all temporary file related calls into tmpfiles-util.c 2018-12-02 13:22:29 +01:00
path-lookup.h path-lookup: define explicit unit file directory for attached unit files 2018-10-08 18:49:45 +02:00
pe-header.h bootspec: also look for boot loader spec type 2 entries (i.e. unified kernel images) 2019-03-01 12:41:32 +01:00
pretty-print.c systemd-analyze: support cat-config kernel/install.d 2019-03-07 16:34:35 +01:00
pretty-print.h terminal-util: split out file:// generation from terminal_urlify_path() 2018-11-30 16:46:10 +01:00
ptyfwd.c ptyfwd: optionally override terminal width/height 2018-11-29 20:21:39 +01:00
ptyfwd.h tree-wide: add whitespace between type and variable name 2018-12-04 09:29:54 +01:00
reboot-util.c logind: Add support for RebootParameter 2019-03-22 20:30:33 +02:00
reboot-util.h logind: Add support for RebootParameter 2019-03-22 20:30:33 +02:00
resolve-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
resolve-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
seccomp-util.c seccomp: check more error codes from seccomp_load() 2019-04-12 10:23:07 +02:00
seccomp-util.h seccomp: check more error codes from seccomp_load() 2019-04-12 10:23:07 +02:00
securebits-util.c missing: rename securebits.h to missing_securebits.h 2018-12-04 07:49:24 +01:00
securebits-util.h missing: rename securebits.h to missing_securebits.h 2018-12-04 07:49:24 +01:00
serialize.c util: drop missing.h from util.h 2018-12-04 10:00:34 +01:00
serialize.h headers: remove unneeded includes from util.h 2019-03-27 11:53:12 +01:00
sleep-config.c headers: remove unneeded includes from util.h 2019-03-27 11:53:12 +01:00
sleep-config.h shared/sleep-config: add switches to kill specific sleep modes 2018-10-08 18:21:00 +02:00
spawn-ask-password-agent.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
spawn-ask-password-agent.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
spawn-polkit-agent.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
spawn-polkit-agent.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
specifier.c headers: remove unneeded includes from util.h 2019-03-27 11:53:12 +01:00
specifier.h Mark *data and *userdata params to specifier_printf() as const 2018-12-12 16:45:33 +01:00
switch-root.c switch-root: modernize rm_rf_children() invocation a bit 2019-04-29 16:17:29 +02:00
switch-root.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
sysctl-util.c sysctl-util: add sysctl_read_ip_property() 2019-02-21 10:38:10 +09:00
sysctl-util.h sysctl-util: add sysctl_read_ip_property() 2019-02-21 10:38:10 +09:00
test-tables.h Drop my copyright headers 2018-06-14 13:03:20 +02:00
tests.c util-lib: split out env file parsing code into env-file.c 2018-12-02 13:22:29 +01:00
tests.h tests: add helper call have_namespaces() to test whether Linux namespaces are available 2018-10-24 19:40:24 +02:00
tmpfile-util-label.c util-lib: split out all temporary file related calls into tmpfiles-util.c 2018-12-02 13:22:29 +01:00
tmpfile-util-label.h util-lib: split out all temporary file related calls into tmpfiles-util.c 2018-12-02 13:22:29 +01:00
tomoyo-util.c tree-wide: drop copyright headers from frequent contributors 2018-06-20 11:58:53 +02:00
tomoyo-util.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
udev-util.c udev-util: allocate an event loop of our own for waiting 2019-04-04 02:15:14 +09:00
udev-util.h util: introduce device_for_action() 2019-03-12 03:49:53 +09:00
uid-range.c util: split out sorting related calls to new sort-util.[ch] 2019-03-13 12:16:43 +01:00
uid-range.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
utmp-wtmp.c shared/utmp-wtmp: silence gcc warning about strncpy truncation 2019-05-07 21:05:26 +02:00
utmp-wtmp.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
varlink.c shared: add minimal varlink implementation 2019-05-09 14:14:20 -04:00
varlink.h shared: add minimal varlink implementation 2019-05-09 14:14:20 -04:00
verbs.c coccinelle: make use of SYNTHETIC_ERRNO 2018-11-22 10:54:38 +01:00
verbs.h tree-wide: fix a few missing includes 2018-11-26 18:09:01 +01:00
vlan-util.c vlan-util: add assertions to parse_vlanid() 2018-11-04 00:31:46 +09:00
vlan-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
volatile-util.c volatile-util: tweak query_volatile_mode() a bit 2019-03-01 14:11:07 +01:00
volatile-util.h nspawn: add --volatile=overlay support 2019-03-01 14:11:06 +01:00
watchdog.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
watchdog.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
web-util.c tree-wide: port various places over to STARTSWITH_SET() 2018-11-26 14:08:46 +01:00
web-util.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00
xml.c tree-wide: use '"' instead of '\"' 2019-01-17 16:46:29 +00:00
xml.h Move various files that don't need to be in basic/ to shared/ 2018-11-20 07:27:37 +01:00