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