logind-dbus.c revision b9c26b413497a0014ac2058a0ec04849a83df1ea
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering This file is part of systemd.
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering Copyright 2011 Lennart Poettering
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering systemd is free software; you can redistribute it and/or modify it
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering under the terms of the GNU Lesser General Public License as published by
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering (at your option) any later version.
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering systemd is distributed in the hope that it will be useful, but
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering Lesser General Public License for more details.
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering You should have received a copy of the GNU Lesser General Public License
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
9a5cb1371b6d8b0a04bd08665bcf9b06cb40c64cZbigniew Jędrzejewski-Szmek " <interface name=\"org.freedesktop.login1.Manager\">\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <method name=\"GetSession\">\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"session\" type=\"o\" direction=\"out\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " </method>\n" \
1b9e5b126359a2a2ec37de1f94f046093abc74b8Lennart Poettering " <method name=\"GetSessionByPID\">\n" \
f9ac15442e4132f00eca5495d53c17062aae13e0Lennart Poettering " <arg name=\"pid\" type=\"u\" direction=\"in\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <arg name=\"session\" type=\"o\" direction=\"out\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " </method>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <method name=\"GetUser\">\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <arg name=\"uid\" type=\"u\" direction=\"in\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <arg name=\"user\" type=\"o\" direction=\"out\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " </method>\n" \
cca1dfddd4ce4357113663532696488427cc54e4Lennart Poettering " <method name=\"GetSeat\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"seat\" type=\"o\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"ListSessions\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"sessions\" type=\"a(susso)\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"ListUsers\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"users\" type=\"a(uso)\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " <method name=\"ListSeats\">\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " <arg name=\"seats\" type=\"a(so)\" direction=\"out\"/>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"CreateSession\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"uid\" type=\"u\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"leader\" type=\"u\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"sevice\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"type\" type=\"s\" direction=\"in\"/>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " <arg name=\"class\" type=\"s\" direction=\"in\"/>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " <arg name=\"seat\" type=\"s\" direction=\"in\"/>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " <arg name=\"vtnr\" type=\"u\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"tty\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"display\" type=\"s\" direction=\"in\"/>\n" \
821b2e792159e237a1e5a1ea4bb6ae2e55d64be5Lukas Nykryn " <arg name=\"remote\" type=\"b\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"remote_user\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"remote_host\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"controllers\" type=\"as\" direction=\"in\"/>\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <arg name=\"reset_controllers\" type=\"as\" direction=\"in\"/>\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <arg name=\"kill_processes\" type=\"b\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"path\" type=\"o\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"runtime_path\" type=\"o\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"fd\" type=\"h\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"seat\" type=\"s\" direction=\"out\"/>\n" \
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering " <arg name=\"vtnr\" type=\"u\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"ReleaseSession\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"ActivateSession\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"ActivateSessionOnSeat\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"seat\" type=\"s\" direction=\"in\"/>\n" \
cca1dfddd4ce4357113663532696488427cc54e4Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"LockSession\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
cca1dfddd4ce4357113663532696488427cc54e4Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"UnlockSession\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
dacd6cee76a08331b8c8616c5f30f70ee49aa2f9Lennart Poettering " </method>\n" \
dacd6cee76a08331b8c8616c5f30f70ee49aa2f9Lennart Poettering " <method name=\"LockSessions\"/>\n" \
dacd6cee76a08331b8c8616c5f30f70ee49aa2f9Lennart Poettering " <method name=\"KillSession\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
63c372cb9df3bee01e3bf8cd7f96f336bddda846Lennart Poettering " <arg name=\"who\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"signal\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"KillUser\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"uid\" type=\"u\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"signal\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <method name=\"TerminateSession\">\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"TerminateUser\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"uid\" type=\"u\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"TerminateSeat\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <method name=\"SetUserLinger\">\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <arg name=\"uid\" type=\"u\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"b\" type=\"b\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"interactive\" type=\"b\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"AttachDevice\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"seat\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"sysfs\" type=\"s\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"interactive\" type=\"b\" direction=\"in\"/>\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " </method>\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <method name=\"FlushDevices\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"interactive\" type=\"b\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"PowerOff\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"interactive\" type=\"b\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"Reboot\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"interactive\" type=\"b\" direction=\"in\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"Suspend\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"interactive\" type=\"b\" direction=\"in\"/>\n" \
4c1fc3e404d648c70bd2f50ac50aeac6ece8872eDaniel Mack " </method>\n" \
4c1fc3e404d648c70bd2f50ac50aeac6ece8872eDaniel Mack " <method name=\"Hibernate\">\n" \
23bbb0de4e3f85d9704a5c12a5afa2dfa0159e41Michal Schmidt " <arg name=\"interactive\" type=\"b\" direction=\"in\"/>\n" \
23bbb0de4e3f85d9704a5c12a5afa2dfa0159e41Michal Schmidt " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"CanPowerOff\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"result\" type=\"s\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"CanReboot\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"result\" type=\"s\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"CanSuspend\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"result\" type=\"s\" direction=\"out\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </method>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <method name=\"CanHibernate\">\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <arg name=\"result\" type=\"s\" direction=\"out\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " </method>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <method name=\"Inhibit\">\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <arg name=\"what\" type=\"s\" direction=\"in\"/>\n" \
cca1dfddd4ce4357113663532696488427cc54e4Lennart Poettering " <arg name=\"who\" type=\"s\" direction=\"in\"/>\n" \
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers " <arg name=\"why\" type=\"s\" direction=\"in\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <arg name=\"fd\" type=\"h\" direction=\"out\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " </method>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <method name=\"ListInhibitors\">\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <arg name=\"inhibitors\" type=\"a(ssssuu)\" direction=\"out\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " </method>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <signal name=\"SessionNew\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"path\" type=\"o\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </signal>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <signal name=\"SessionRemoved\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <arg name=\"path\" type=\"o\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " </signal>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <signal name=\"UserNew\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"uid\" type=\"u\"/>\n" \
cca1dfddd4ce4357113663532696488427cc54e4Lennart Poettering " <arg name=\"path\" type=\"o\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </signal>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <signal name=\"UserRemoved\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"uid\" type=\"u\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"path\" type=\"o\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </signal>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <signal name=\"SeatNew\">\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " <arg name=\"id\" type=\"s\"/>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " <arg name=\"path\" type=\"o\"/>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " </signal>\n" \
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering " <signal name=\"SeatRemoved\">\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <arg name=\"id\" type=\"s\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <arg name=\"path\" type=\"o\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " </signal>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <signal name=\"PrepareForShutdown\">\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <arg name=\"active\" type=\"b\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " </signal>\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <signal name=\"PrepareForSleep\">\n" \
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt " <arg name=\"active\" type=\"b\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " </signal>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <property name=\"ControlGroupHierarchy\" type=\"s\" access=\"read\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <property name=\"Controllers\" type=\"as\" access=\"read\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <property name=\"ResetControllers\" type=\"as\" access=\"read\"/>\n" \
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering " <property name=\"NAutoVTs\" type=\"u\" access=\"read\"/>\n" \
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering " <property name=\"KillOnlyUsers\" type=\"as\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"KillExcludeUsers\" type=\"as\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"KillUserProcesses\" type=\"b\" access=\"read\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <property name=\"IdleHint\" type=\"b\" access=\"read\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <property name=\"IdleSinceHint\" type=\"t\" access=\"read\"/>\n" \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering " <property name=\"IdleSinceHintMonotonic\" type=\"t\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"BlockInhibited\" type=\"s\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"DelayInhibited\" type=\"s\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"InhibitDelayMaxUSec\" type=\"t\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"HandlePowerKey\" type=\"s\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"HandleSleepKey\" type=\"s\" access=\"read\"/>\n" \
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering " <property name=\"HandleLidSwitch\" type=\"s\" access=\"read\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <property name=\"PreparingForShutdown\" type=\"b\" access=\"read\"/>\n" \
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering " <property name=\"PreparingForSleep\" type=\"b\" access=\"read\"/>\n" \
1af7211984a8dba3c5ba40fae794c4c55f5e6bd3Lennart Poettering " </interface>\n"
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering "org.freedesktop.login1.Manager\0"
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poetteringstatic int bus_manager_append_idle_hint(DBusMessageIter *i, const char *property, void *data) {
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poettering if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &b))
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sieversstatic int bus_manager_append_idle_hint_since(DBusMessageIter *i, const char *property, void *data) {
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers u = streq(property, "IdleSinceHint") ? t.realtime : t.monotonic;
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers if (!dbus_message_iter_append_basic(i, DBUS_TYPE_UINT64, &u))
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sieversstatic int bus_manager_append_inhibited(DBusMessageIter *i, const char *property, void *data) {
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers const char *p;
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers w = manager_inhibit_what(m, streq(property, "BlockInhibited") ? INHIBIT_BLOCK : INHIBIT_DELAY);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &p))
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sieversstatic int bus_manager_append_preparing(DBusMessageIter *i, const char *property, void *data) {
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &b);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sieversstatic int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMessage **_reply) {
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers const char *type, *class, *seat, *tty, *display, *remote_user, *remote_host, *service;
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers char **controllers = NULL, **reset_controllers = NULL;
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_UINT32)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_UINT32)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
cca1dfddd4ce4357113663532696488427cc54e4Lennart Poettering dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering dbus_message_iter_get_basic(&iter, &class);
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering dbus_message_iter_get_basic(&iter, &seat);
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_UINT32)
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering dbus_message_iter_get_basic(&iter, &vtnr);
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering dbus_message_iter_get_basic(&iter, &tty);
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering return v < 0 ? v : -EINVAL;
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers else if (s != m->vtconsole)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers } else if (!isempty(tty) && s && seat_is_vtconsole(s))
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_BOOLEAN)
dacd6cee76a08331b8c8616c5f30f70ee49aa2f9Lennart Poettering dbus_message_iter_get_basic(&iter, &remote);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_basic(&iter, &remote_user);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_basic(&iter, &remote_host);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRING)
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRING) {
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers r = bus_parse_strv_iter(&iter, &reset_controllers);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers if (strv_contains(reset_controllers, "systemd") ||
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_BOOLEAN) {
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers dbus_message_iter_get_basic(&iter, &kill_processes);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers /* Session already exists, client is probably
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers * something like "su" which changes uid but
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers * is still the same audit session */
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers reply = dbus_message_new_method_return(message);
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering if (asprintf(&id, "c%lu", ++m->session_counter) < 0) {
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering r = manager_add_session(m, user, id, &session);
d2a623823f8d83c97c35fcd28f90e8cd59066f8aZbigniew Jędrzejewski-Szmek session->controllers = controllers;
d2a623823f8d83c97c35fcd28f90e8cd59066f8aZbigniew Jędrzejewski-Szmek session->reset_controllers = reset_controllers;
d2a623823f8d83c97c35fcd28f90e8cd59066f8aZbigniew Jędrzejewski-Szmek session->kill_processes = kill_processes;
d2a623823f8d83c97c35fcd28f90e8cd59066f8aZbigniew Jędrzejewski-Szmek controllers = reset_controllers = NULL;
d2a623823f8d83c97c35fcd28f90e8cd59066f8aZbigniew Jędrzejewski-Szmek session->display = strdup(display);
fa041593fe04b12ffd7e81d8b3598a7a6f313fb3Lennart Poettering session->remote_user = strdup(remote_user);
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering session->remote_host = strdup(remote_host);
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering reply = dbus_message_new_method_return(message);
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering DBUS_TYPE_STRING, &session->user->runtime_path,
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poetteringstatic int bus_manager_inhibit(Manager *m, DBusConnection *connection, DBusMessage *message, DBusError *error, DBusMessage **_reply) {
61331eab0a53cd9b8446eab6d1ebf1a046d8efc1Lennart Poettering unsigned long ul;
d2a623823f8d83c97c35fcd28f90e8cd59066f8aZbigniew Jędrzejewski-Szmek w = inhibit_what_from_string(what);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers "org.freedesktop.login1.inhibit-block" :
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers "org.freedesktop.login1.inhibit-delay", false, NULL, error);
59512f21d77d984cf1363fb0d1770218c5e17020Kay Sievers ul = dbus_bus_get_unix_user(connection, dbus_message_get_sender(message), error);
0238d4c660e732dd03ba0cdb54a29ec5870ee849Kay Sievers pid = bus_get_unix_process_id(connection, dbus_message_get_sender(message), error);
2fc09a9cdd1ad25bc7c53a23d5301eb952e1ce3dDaniel Mack if (asprintf(&id, "%lu", ++m->inhibit_counter) < 0) {
cca1dfddd4ce4357113663532696488427cc54e4Lennart Poettering reply = dbus_message_new_method_return(message);
1a14a53cfded6e78c6e8dfb73fdff0039971d642Lennart Poetteringstatic int trigger_device(Manager *m, struct udev_device *d) {
8086ffacdb1bfec5ec115d24626538bda6cc372eZbigniew Jędrzejewski-Szmek if (udev_enumerate_add_match_parent(e, d) < 0) {
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering if (udev_enumerate_scan_devices(e) < 0) {
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering first = udev_enumerate_get_list_entry(e);
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering const char *p;
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poetteringstatic int attach_device(Manager *m, const char *seat, const char *sysfs) {
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering d = udev_device_new_from_syspath(m->udev, sysfs);
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering id_for_seat = udev_device_get_property_value(d, "ID_FOR_SEAT");
eafe88e34a0698d2f4ebb747ab4911e35d0dfe4cTobias Hunger if (asprintf(&file, "/etc/udev/rules.d/72-seat-%s.rules", id_for_seat) < 0) {
eafe88e34a0698d2f4ebb747ab4911e35d0dfe4cTobias Hunger if (asprintf(&rule, "TAG==\"seat\", ENV{ID_FOR_SEAT}==\"%s\", ENV{ID_SEAT}=\"%s\"", id_for_seat, seat) < 0) {
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering mkdir_p_label("/etc/udev/rules.d", 0755);
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering r = write_one_line_file_atomic(file, rule);
da927ba997d68401563b927f92e6e40e021a8e5cMichal Schmidt log_warning("Failed to open /etc/udev/rules.d: %m");
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering if (unlinkat(dirfd(d), de->d_name, 0) < 0)
73b80ec2d999c45ce13f3e034704249d80829f7eLennart Poettering log_warning("Failed to unlink %s: %m", de->d_name);
static int have_multiple_sessions(
Manager *m,
Iterator i;
unsigned long ul;
assert(m);
return -EIO;
return bus_method_call_with_reply (
"org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
NULL,
NULL,
assert(m);
assert(w >= 0);
message = dbus_message_new_signal("/org/freedesktop/login1", "org.freedesktop.login1.Manager", signal_name[w]);
if (!message)
return -ENOMEM;
r = -ENOMEM;
assert(m);
assert(w >= 0);
send_prepare_for(m, w, true);
if (!m->delayed_unit)
m->delayed_what = w;
static int bus_manager_can_shutdown_or_sleep(
Manager *m,
InhibitWhat w,
const char *action,
const char *action_multiple_sessions,
const char *action_ignore_inhibit,
const char *sleep_type,
const char *result;
assert(m);
assert(w >= 0);
if (sleep_type) {
goto finish;
multiple_sessions = r > 0;
if (multiple_sessions) {
else if (challenge)
if (blocked) {
if (r > 0 && !result)
else if (challenge)
if (!reply)
return -ENOMEM;
return -ENOMEM;
Manager *m,
const char *unit_name,
InhibitWhat w,
bool delayed;
assert(m);
assert(w >= 0);
delayed =
m->inhibit_delay_max > 0 &&
if (delayed)
static int bus_manager_do_shutdown_or_sleep(
Manager *m,
const char *unit_name,
InhibitWhat w,
const char *action,
const char *action_multiple_sessions,
const char *action_ignore_inhibit,
const char *sleep_type,
assert(m);
assert(w >= 0);
if (!dbus_message_get_args(
return -EINVAL;
if (sleep_type) {
return -ENOTSUP;
multiple_sessions = r > 0;
if (multiple_sessions) {
if (blocked) {
if (!reply)
return -ENOMEM;
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_manager_append_handle_button, handle_button, HandleButton);
{ "KillExcludeUsers", bus_property_append_strv, "as", offsetof(Manager, kill_exclude_users), true },
{ NULL, }
void *userdata) {
assert(m);
const char *name;
if (!dbus_message_get_args(
&error,
if (!session)
if (!reply)
goto oom;
goto oom;
free(p);
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "GetSessionByPID")) {
if (!dbus_message_get_args(
&error,
if (!reply)
goto oom;
goto oom;
free(p);
goto oom;
if (!dbus_message_get_args(
&error,
if (!user)
if (!reply)
goto oom;
goto oom;
free(p);
goto oom;
const char *name;
if (!dbus_message_get_args(
&error,
if (!seat)
if (!reply)
goto oom;
goto oom;
free(p);
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "ListSessions")) {
Iterator i;
if (!reply)
goto oom;
goto oom;
goto oom;
goto oom;
!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, session->seat ? (const char**) &session->seat->id : &empty) ||
free(p);
goto oom;
free(p);
goto oom;
goto oom;
Iterator i;
if (!reply)
goto oom;
goto oom;
goto oom;
goto oom;
free(p);
goto oom;
free(p);
goto oom;
goto oom;
Iterator i;
if (!reply)
goto oom;
goto oom;
goto oom;
goto oom;
free(p);
goto oom;
free(p);
goto oom;
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "ListInhibitors")) {
Iterator i;
if (!reply)
goto oom;
goto oom;
goto oom;
goto oom;
goto oom;
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "CreateSession")) {
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "ReleaseSession")) {
const char *name;
if (!dbus_message_get_args(
&error,
if (!session)
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "ActivateSession")) {
const char *name;
if (!dbus_message_get_args(
&error,
if (!session)
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "ActivateSessionOnSeat")) {
if (!dbus_message_get_args(
&error,
if (!session)
if (!seat)
if (!reply)
goto oom;
const char *name;
if (!dbus_message_get_args(
&error,
if (!session)
goto oom;
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "LockSessions")) {
Iterator i;
goto oom;
if (!reply)
goto oom;
const char *swho;
const char *name;
if (!dbus_message_get_args(
&error,
if (who < 0)
if (!session)
if (!reply)
goto oom;
if (!dbus_message_get_args(
&error,
if (!user)
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "TerminateSession")) {
const char *name;
if (!dbus_message_get_args(
&error,
if (!session)
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "TerminateUser")) {
if (!dbus_message_get_args(
&error,
if (!user)
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "TerminateSeat")) {
const char *name;
if (!dbus_message_get_args(
&error,
if (!seat)
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "SetUserLinger")) {
char *path;
if (!dbus_message_get_args(
&error,
DBUS_TYPE_BOOLEAN, &b,
errno = 0;
if (!pw)
r = verify_polkit(connection, message, "org.freedesktop.login1.set-user-linger", interactive, NULL, &error);
if (!path)
goto oom;
User *u;
user_start(u);
User *u;
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "AttachDevice")) {
if (!dbus_message_get_args(
&error,
r = verify_polkit(connection, message, "org.freedesktop.login1.attach-device", interactive, NULL, &error);
if (!reply)
goto oom;
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "FlushDevices")) {
if (!dbus_message_get_args(
&error,
r = verify_polkit(connection, message, "org.freedesktop.login1.flush-devices", interactive, NULL, &error);
r = flush_devices(m);
if (!reply)
goto oom;
NULL,
NULL,
"org.freedesktop.login1.suspend",
"org.freedesktop.login1.suspend-multiple-sessions",
"org.freedesktop.login1.suspend-ignore-inhibit",
"org.freedesktop.login1.hibernate",
"org.freedesktop.login1.hibernate-multiple-sessions",
"org.freedesktop.login1.hibernate-ignore-inhibit",
NULL,
NULL,
"org.freedesktop.login1.suspend",
"org.freedesktop.login1.suspend-multiple-sessions",
"org.freedesktop.login1.suspend-ignore-inhibit",
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "CanHibernate")) {
"org.freedesktop.login1.hibernate",
"org.freedesktop.login1.hibernate-multiple-sessions",
"org.freedesktop.login1.hibernate-ignore-inhibit",
} else if (dbus_message_is_method_call(message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
FILE *f;
Iterator i;
goto oom;
goto oom;
free(p);
free(p);
if (ferror(f)) {
fclose(f);
goto oom;
fclose(f);
if (!introspection)
goto oom;
goto oom;
{ NULL, }
if (reply) {
goto oom;
return DBUS_HANDLER_RESULT_HANDLED;
oom:
if (reply)
return DBUS_HANDLER_RESULT_NEED_MEMORY;
void *userdata) {
assert(m);
const char *cgroup;
DBusMessage *m;
int r = -ENOMEM;
m = bus_properties_changed_new("/org/freedesktop/login1", "org.freedesktop.login1.Manager", properties);
goto finish;
goto finish;
const char *unit_name;
bool delayed;
delayed =
if (delayed)