Age | Commit message (Collapse) | Author |
|
|
|
|
|
then read message
There's no EOF generated for AF_UNIX/SOCK_DGRAM sockets, hence let's
wait for the child first to see if it succeeded, only then read the socket.
|
|
useful as message creds
|
|
if no properties with a change flag are in the interface
|
|
|
|
|
|
|
|
|
|
|
|
Let's try to standardize on a single non-cryptographic hash algorithm,
and for that SipHash appears to be the best answer.
With this change there are two other hash functions left in systemd: an
older version of MurmurHash embedded into libudev for the bloom filters
in udev messages (which is hard to update, given that the we probably
should stay compatible with older versions of the library). And lookup3
in the journal files (which we could replace for new files, but which is
probably not worth the work).
|
|
Also, introduce a new environment variable named $WATCHDOG_PID which
cotnains the PID of the process that is supposed to send the keep-alive
events. This is similar how $LISTEN_FDS and $LISTEN_PID work together,
and protects against confusing processes further down the process tree
due to inherited environment.
|
|
SipHash appears to be the new gold standard for hashing smaller strings
for hashtables these days, so let's make use of it.
|
|
|
|
When NULL is passed this shall indicate that a PropertiesChanged message
for all properties marked as EMITS_CHANGE or EMITS_INVALIDATION should
be generated.
|
|
This way we have four kinds of properties:
a) those which are constant as long as an object exists
b) those which can change and PropertiesChange messages with contents are generated
c) those which can change and where the PropertesChange merely includes invalidation
d) those which can change but for which no events are generated
Clients (through code generators run on the introspection XML) can thus
aggressively cache a, b, c, with only d excluded.
|
|
activated, say we don't have anything.
|
|
"privileged"
Internally, it makes sense to have a default of "privileged" for
methods, and a flag to open it up. However, externally in the bus
introspection turn this around since negative options actually suck.
|
|
|
|
|
|
|
|
|
|
|
|
into account
|
|
Since for the kernel change of ownership of a name between starter and
real client is a change and for userspace thats addition/removal, we
need to unconditionally subscribe to these change events.
|
|
|
|
|
|
In particular, the match interface has seen a major overhaul.
|
|
That way we can distuingish timeouts from EINTR
|
|
|
|
|
|
|
|
|
|
|
|
Instead of calling it for each buffer append, increase allocation
exponentially and set the real value only at the end, when sealing off
the memfd.
This should drastically reduce the number of times we invoke the
ioctl().
|
|
activated
|
|
Add validity checks for all parameters passed in.
Implement ReleaseName and StartServiceByName().
Fix access control in vtable.
|
|
Given that the kernel does not validate bus names we have to when using
them.
|
|
Two new things here:
a) struct kdbus_notify_name_change now carries two struct
kdbus_notify_id_change
b) a new KDBUS_CMD_BYEBYE ioctl that has no user yet in systemd
|
|
Introduced in:
9f6eb1cd58f2ddf2eb6ba0e4de056e13d938af75
313333b403439360c0396a50d77d0a1ee2bca4df
|
|
Also make thread_local available w/o including <threads.h>.
(as the latter hasn't been implemented, but this part is trivial)
|
|
Due to this patch, message dump (for message which includes boolean
type) is more consistent with dbus-send (which display true/false
instead of yes/no for boolean). It's only simple 'cosmetics change'.
** For dbus-send **
dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply / org.freedesktop.DBus.NameHasOwner string:org.freedesktop.login1
method return sender=org.freedesktop.DBus -> dest=:1.97 reply_serial=2
boolean true
** For libsystemd-bus (without this patch) **
‣ Type=method_call Endian=l Flags=0 Version=2 Serial=8
Destination=org.freedesktop.DBus Path=/org/freedesktop/DBus Interface=org.freedesktop.DBus Member=NameHasOwner
MESSAGE "s" {
STRING "org.freedesktop.login1";
};
‣ Type=method_return Endian=l Flags=1 Version=2 Serial=51 ReplySerial=8
Sender=:1.59 Destination=:1.67
UniqueName=:1.59 WellKnownNames={org.freedesktop.DBus}
MESSAGE "b" {
BOOLEAN yes;
};
For me true/false seems to be better readable than yes/no for BOOLEAN.
|
|
|
|
|
|
kdbus_cmd_{ep,ns,bus}_make are now consolidated, and bloom_size has
become an item of the dynamically sized list.
|
|
|
|
|
|
|
|
the container's namespace
setns(CLONE_NEWPID) only applies to child processes, hence let's fork
once after joining the container's namespace.
|
|
bus also switch over PID namespace
This is necessary to ensure that kdbus can collect creds of the
destination namespace when connecting.
|