~ubuntu-branches/debian/jessie/systemd/jessie

« back to all changes in this revision

Viewing changes to src/systemd/sd-login.h

  • Committer: Package Import Robot
  • Author(s): Tollef Fog Heen, Tollef Fog Heen, Michael Biebl
  • Date: 2012-04-03 19:59:17 UTC
  • mfrom: (1.1.10) (6.1.3 experimental)
  • Revision ID: package-import@ubuntu.com-20120403195917-l532urrbg4pkreas
Tags: 44-1
[ Tollef Fog Heen ]
* New upstream version.
  - Backport 3492207: journal: PAGE_SIZE is not known on ppc and other
    archs
  - Backport 5a2a2a1: journal: react with immediate rotation to a couple
    of more errors
  - Backport 693ce21: util: never follow symlinks in rm_rf_children()
    Fixes CVE-2012-1174, closes: #664364
* Drop output message from init-functions hook, it's pointless.
* Only rmdir /lib/init/rw if it exists.
* Explicitly order debian-fixup before sysinit.target to prevent a
  possible race condition with the creation of sockets.  Thanks to
  Michael Biebl for debugging this.
* Always restart the initctl socket on upgrades, to mask sysvinit
  removing it.

[ Michael Biebl ]
* Remove workaround for non-interactive sessions from pam config again.
* Create compat /dev/initctl symlink in case we are upgrading from a system
  running a newer version of sysvinit (using /run/initctl) and sysvinit is
  replaced with systemd-sysv during the upgrade. Closes: #663219
* Install new man pages.
* Build-Depend on valac (>= 0.12) instead of valac-0.12. Closes: #663323

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
 
2
 
 
3
#ifndef foosdloginhfoo
 
4
#define foosdloginhfoo
 
5
 
 
6
/***
 
7
  This file is part of systemd.
 
8
 
 
9
  Copyright 2011 Lennart Poettering
 
10
 
 
11
  systemd is free software; you can redistribute it and/or modify it
 
12
  under the terms of the GNU General Public License as published by
 
13
  the Free Software Foundation; either version 2 of the License, or
 
14
  (at your option) any later version.
 
15
 
 
16
  systemd is distributed in the hope that it will be useful, but
 
17
  WITHOUT ANY WARRANTY; without even the implied warranty of
 
18
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 
19
  General Public License for more details.
 
20
 
 
21
  You should have received a copy of the GNU General Public License
 
22
  along with systemd; If not, see <http://www.gnu.org/licenses/>.
 
23
***/
 
24
 
 
25
#include <sys/types.h>
 
26
 
 
27
#ifdef __cplusplus
 
28
extern "C" {
 
29
#endif
 
30
 
 
31
/*
 
32
 * A few points:
 
33
 *
 
34
 * Instead of returning an empty string array or empty uid array, we
 
35
 * may return NULL.
 
36
 *
 
37
 * Free the data we return with libc free().
 
38
 *
 
39
 * We return error codes as negative errno, kernel-style. 0 or
 
40
 * positive on success.
 
41
 *
 
42
 * These functions access data in /proc, /sys/fs/cgroup and /run. All
 
43
 * of these are virtual file systems, hence the accesses are
 
44
 * relatively cheap.
 
45
 */
 
46
 
 
47
/* Get session from PID. Note that 'shared' processes of a user are
 
48
 * not attached to a session, but only attached to a user. This will
 
49
 * return an error for system processes and 'shared' processes of a
 
50
 * user. */
 
51
int sd_pid_get_session(pid_t pid, char **session);
 
52
 
 
53
/* Get UID of the owner of the session of the PID (or in case the
 
54
 * process is a 'shared' user process the UID of that user is
 
55
 * returned). This will not return the UID of the process, but rather
 
56
 * the UID of the owner of the cgroup the process is in. This will
 
57
 * return an error for system processes. */
 
58
int sd_pid_get_owner_uid(pid_t pid, uid_t *uid);
 
59
 
 
60
/* Get systemd unit (i.e. service) name from PID. This will return an
 
61
 * error for non-service processes. */
 
62
int sd_pid_get_unit(pid_t, char **unit);
 
63
 
 
64
/* Get state from uid. Possible states: offline, lingering, online, active */
 
65
int sd_uid_get_state(uid_t uid, char**state);
 
66
 
 
67
/* Return 1 if uid has session on seat. If require_active is true will
 
68
 * look for active sessions only. */
 
69
int sd_uid_is_on_seat(uid_t uid, int require_active, const char *seat);
 
70
 
 
71
/* Return sessions of user. If require_active is true will look for
 
72
 * active sessions only. Returns number of sessions as return
 
73
 * value. If sessions is NULL will just return number of sessions. */
 
74
int sd_uid_get_sessions(uid_t uid, int require_active, char ***sessions);
 
75
 
 
76
/* Return seats of user is on. If require_active is true will look for
 
77
 * active seats only.  Returns number of seats. If seats is NULL will
 
78
 * just return number of seats.*/
 
79
int sd_uid_get_seats(uid_t uid, int require_active, char ***seats);
 
80
 
 
81
/* Return 1 if the session is a active */
 
82
int sd_session_is_active(const char *session);
 
83
 
 
84
/* Determine user id of session */
 
85
int sd_session_get_uid(const char *session, uid_t *uid);
 
86
 
 
87
/* Determine seat of session */
 
88
int sd_session_get_seat(const char *session, char **seat);
 
89
 
 
90
/* Determine the (PAM) service name this session was registered by. */
 
91
int sd_session_get_service(const char *session, char **service);
 
92
 
 
93
/* Determine the type of this session, i.e. one of "tty", "x11" or "unspecified". */
 
94
int sd_session_get_type(const char *session, char **type);
 
95
 
 
96
/* Determine the class of this session, i.e. one of "user", "greeter" or "lock-screen". */
 
97
int sd_session_get_class(const char *session, char **clazz);
 
98
 
 
99
/* Determine the X11 display of this session. */
 
100
int sd_session_get_display(const char *session, char **display);
 
101
 
 
102
/* Return active session and user of seat */
 
103
int sd_seat_get_active(const char *seat, char **session, uid_t *uid);
 
104
 
 
105
/* Return sessions and users on seat. Returns number of sessions as
 
106
 * return value. If sessions is NULL returns only the number of
 
107
 * sessions. */
 
108
int sd_seat_get_sessions(const char *seat, char ***sessions, uid_t **uid, unsigned *n_uids);
 
109
 
 
110
/* Return whether the seat is multi-session capable */
 
111
int sd_seat_can_multi_session(const char *seat);
 
112
 
 
113
/* Get all seats, store in *seats. Returns the number of seats. If
 
114
 * seats is NULL only returns number of seats. */
 
115
int sd_get_seats(char ***seats);
 
116
 
 
117
/* Get all sessions, store in *sessions. Returns the number of
 
118
 * sessions. If sessions is NULL only returns number of sessions. */
 
119
int sd_get_sessions(char ***sessions);
 
120
 
 
121
/* Get all logged in users, store in *users. Returns the number of
 
122
 * users. If users is NULL only returns the number of users. */
 
123
int sd_get_uids(uid_t **users);
 
124
 
 
125
/* Monitor object */
 
126
typedef struct sd_login_monitor sd_login_monitor;
 
127
 
 
128
/* Create a new monitor. Category must be NULL, "seat", "session",
 
129
 * "uid" to get monitor events for the specific category (or all). */
 
130
int sd_login_monitor_new(const char *category, sd_login_monitor** ret);
 
131
 
 
132
/* Destroys the passed monitor. Returns NULL. */
 
133
sd_login_monitor* sd_login_monitor_unref(sd_login_monitor *m);
 
134
 
 
135
/* Flushes the monitor */
 
136
int sd_login_monitor_flush(sd_login_monitor *m);
 
137
 
 
138
/* Get FD from monitor */
 
139
int sd_login_monitor_get_fd(sd_login_monitor *m);
 
140
 
 
141
#ifdef __cplusplus
 
142
}
 
143
#endif
 
144
 
 
145
#endif