summaryrefslogtreecommitdiff
path: root/src/libsystemd-bus/bus-objects.c
AgeCommit message (Collapse)Author
2013-12-23bus: make sure sd_bus_emit_properties_changed_strv() doesn't return ENOENT ↵Lennart Poettering
if no properties with a change flag are in the interface
2013-12-22shared: switch our hash table implementation over to SipHashLennart Poettering
SipHash appears to be the new gold standard for hashing smaller strings for hashtables these days, so let's make use of it.
2013-12-22bus: allow invocation of sd_bus_emit_properties_changed_strv() with NULL listLennart Poettering
When NULL is passed this shall indicate that a PropertiesChanged message for all properties marked as EMITS_CHANGE or EMITS_INVALIDATION should be generated.
2013-12-22bus: introduce concept of "const" propertiesLennart Poettering
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.
2013-12-21bus: when introspecting, turn unprivileged flag into inverse annoation of ↵Lennart Poettering
"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.
2013-12-15Fix segv introduced by 2fd069b18e525860514a70d3ea08410ca122d3e2Colin Walters
n->path is pointing to the value now, we set s = NULL above.
2013-12-15Fix a few resource leaks in error pathsZbigniew Jędrzejewski-Szmek
https://bugzilla.redhat.com/show_bug.cgi?id=1043304
2013-12-14bus: return negative errno on errorZbigniew Jędrzejewski-Szmek
https://bugs.freedesktop.org/show_bug.cgi?id=72688
2013-12-10bus: do not dispatch incoming method calls that are broacasted to vtablesLennart Poettering
2013-12-10bus: introduce new SD_BUS_VTABLE_HIDDEN flag for vtable membersLennart Poettering
When this flag is set then its member will not be shown in the introspection data. Also, properties with this flag set will not be included in GetAll() responses.
2013-12-10bus: introduce "trusted" bus concept and encode access control in object vtablesLennart Poettering
Introduces a new concept of "trusted" vs. "untrusted" busses. For the latter libsystemd-bus will automatically do per-method access control, for the former all access is automatically granted. Per-method access control is encoded in the vtables: by default all methods are only accessible to privileged clients. If the SD_BUS_VTABLE_UNPRIVILEGED flag is set for a method it is accessible to unprivileged clients too. By default whether a client is privileged is determined via checking for its CAP_SYS_ADMIN capability, but this can be altered via the SD_BUS_VTABLE_CAPABILITY() macro that can be ORed into the flags field of the method. Writable properties are also subject to SD_BUS_VTABLE_UNPRIVILEGED and SD_BUS_VTABLE_CAPABILITY() for controlling write access to them. Note however that read access is unrestricted, as PropertiesChanged messages might send out the values anyway as an unrestricted broadcast. By default the system bus is set to "untrusted" and the user bus is "trusted" since per-method access control on the latter is unnecessary. On dbus1 busses we check the UID of the caller rather than the configured capability since the capability cannot be determined without race. On kdbus the capability is checked if possible from the attached meta-data of a message and otherwise queried from the sending peer. This also decorates the vtables of the various daemons we ship with these flags.
2013-12-02bus: when replying to an incoming message and the vtable contains the ↵Lennart Poettering
expected return signature generate an error if the response message doesn't match it
2013-11-25bus: properly return errors to client if invalid parameters are passed to ↵Lennart Poettering
built-in methods
2013-11-22bus: deal with duplicate values from enumeratorsLennart Poettering
2013-11-22bus: also add error parameter to object find and enumerator callbacksLennart Poettering
Just in order to bring things inline with the method and property callbacks.
2013-11-21logind,machined,run: properly invoke StartTransientUnit() bus callLennart Poettering
2013-11-21bus: rework message handlers to always take an error argumentLennart Poettering
Message handler callbacks can be simplified drastically if the dispatcher automatically replies to method calls if errors are returned. Thus: add an sd_bus_error argument to all message handlers. When we dispatch a message handler and it returns negative or a set sd_bus_error we send this as message error back to the client. This means errors returned by handlers by default are given back to clients instead of rippling all the way up to the event loop, which is desirable to make things robust. As a side-effect we can now easily turn the SELinux checks into normal function calls, since the method call dispatcher will generate the right error replies automatically now. Also, make sure we always pass the error structure to all property and method handlers as last argument to follow the usual style of passing variables for return values as last argument.
2013-11-21bus: let's simplify things by getting rid of unnecessary bus parametersLennart Poettering
2013-11-20core: convert PID 1 to libsystemd-busLennart Poettering
This patch converts PID 1 to libsystemd-bus and thus drops the dependency on libdbus. The only remaining code using libdbus is a test case that validates our bus marshalling against libdbus' marshalling, and this dependency can be turned off. This patch also adds a couple of things to libsystem-bus, that are necessary to make the port work: - Synthesizing of "Disconnected" messages when bus connections are severed. - Support for attaching multiple vtables for the same interface on the same path. This patch also fixes the SetDefaultTarget() and GetDefaultTarget() bus calls which used an inappropriate signature. As a side effect we will now generate PropertiesChanged messages which carry property contents, rather than just invalidation information.
2013-11-06bus: export libsystemd-bus as a public libraryZbigniew Jędrzejewski-Szmek
Old static libsystemd-bus.la becomes libsystemd-bus-internal.la. memfd functions are also exported in the same library. (Best viewed with --color-words -U0).
2013-11-05bus: never report nodes as children that do not have the right prefixLennart Poettering
2013-11-05bus: support implicit serialization of strv string arrays within vtablesLennart Poettering
2013-10-30bus: fix buildLennart Poettering
2013-10-30bus: it is OK to have signals with multiple parametersLennart Poettering
2013-10-30bus: don't fail if GetAll() is used to get properties of the built-in interfacesLennart Poettering
2013-10-29strv: introduce new strv_from_stdarg_alloca() macro to generate a string ↵Lennart Poettering
array from stdarg function parameters This allows us to turn lists of strings passed in easily into string arrays without having to allocate memory.
2013-10-22bus: NULL signatures are OK tooLennart Poettering
2013-10-21bus: allow to specify NULL as an empty string to addKay Sievers
2013-10-16timedated: use libsystemd-bus instead of libdbus for bus communicationLennart Poettering
Among other things this also adds a few things necessary for the change: - Considerably more powerful error returning APIs in libsystemd-bus - Adapter for connecting an sd_bus to an sd_event - As I reworked the PolicyKit logic to the new library I also made it asynchronous, so that PolicyKit requests of one user cannot block out another user anymore. - We always use the macro names for common bus error. That way it is harder to mistype them since the compiler will notice
2013-10-14bus: properly handle if new objects are installed in the node tree while we ↵Lennart Poettering
are dispatching to one
2013-10-14bus: make sure that we always keep a ref to the bus when we dispatch callbacksLennart Poettering
Otherwise the callback might unref the bus we are processing and destroy the object while we are processing it.
2013-10-14list: make our list macros a bit easier to use by not requring type spec on ↵Lennart Poettering
each invocation We can determine the list entry type via the typeof() gcc construct, and so we should to make the macros much shorter to use.
2013-10-11bus: properly implement logic for generating ↵Lennart Poettering
InterfacesAdded/InterfacesRemoved signals of ObjectManager
2013-10-11bus: in GetManagedObjects() only return each object once.Lennart Poettering
2013-10-11bus: unify code to find parents of an object path withLennart Poettering
2013-10-11bus: properly generate GetAll replyLennart Poettering
2013-10-11bus: beef up parameter checking in vtable handlingLennart Poettering
2013-10-11bus: don't rely on gccisms/c11 in public header files.Lennart Poettering
One day sd-bus.h should become a public header file. We generally try to be conservative in language features we use in public headers (much unlike in private code), hence don't make use of anonymous unions in structs for the vtable definitions.
2013-10-11bus: split up overly long sd-bus.c into three filesLennart Poettering