]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/machine/machined.h
Merge pull request #3170 from poettering/v230-preparation-fixes
[thirdparty/systemd.git] / src / machine / machined.h
1 #pragma once
2
3 /***
4 This file is part of systemd.
5
6 Copyright 2013 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20 ***/
21
22 #include <stdbool.h>
23
24 #include "sd-bus.h"
25 #include "sd-event.h"
26
27 #include "hashmap.h"
28 #include "list.h"
29
30 typedef struct Manager Manager;
31
32 #include "image-dbus.h"
33 #include "machine-dbus.h"
34 #include "machine.h"
35 #include "operation.h"
36
37 struct Manager {
38 sd_event *event;
39 sd_bus *bus;
40
41 Hashmap *machines;
42 Hashmap *machine_units;
43 Hashmap *machine_leaders;
44
45 Hashmap *polkit_registry;
46
47 Hashmap *image_cache;
48 sd_event_source *image_cache_defer_event;
49
50 LIST_HEAD(Machine, machine_gc_queue);
51
52 Machine *host_machine;
53
54 LIST_HEAD(Operation, operations);
55 unsigned n_operations;
56 };
57
58 Manager *manager_new(void);
59 void manager_free(Manager *m);
60
61 int manager_add_machine(Manager *m, const char *name, Machine **_machine);
62 int manager_enumerate_machines(Manager *m);
63
64 int manager_startup(Manager *m);
65 int manager_run(Manager *m);
66
67 void manager_gc(Manager *m, bool drop_not_started);
68
69 int manager_get_machine_by_pid(Manager *m, pid_t pid, Machine **machine);
70
71 extern const sd_bus_vtable manager_vtable[];
72
73 int match_reloading(sd_bus_message *message, void *userdata, sd_bus_error *error);
74 int match_unit_removed(sd_bus_message *message, void *userdata, sd_bus_error *error);
75 int match_properties_changed(sd_bus_message *message, void *userdata, sd_bus_error *error);
76 int match_job_removed(sd_bus_message *message, void *userdata, sd_bus_error *error);
77
78 int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, sd_bus_message *more_properties, sd_bus_error *error, char **job);
79 int manager_stop_unit(Manager *manager, const char *unit, sd_bus_error *error, char **job);
80 int manager_kill_unit(Manager *manager, const char *unit, int signo, sd_bus_error *error);
81 int manager_unit_is_active(Manager *manager, const char *unit);
82 int manager_job_is_active(Manager *manager, const char *path);