Split out of #37344.
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <sys/file.h>
-#include <sys/mount.h>
+#include "sd-bus.h"
#include "alloc-util.h"
#include "bus-get-properties.h"
#include "bus-label.h"
+#include "bus-object.h"
#include "bus-polkit.h"
#include "bus-util.h"
-#include "copy.h"
#include "discover-image.h"
-#include "dissect-image.h"
#include "fd-util.h"
-#include "fileio.h"
-#include "fs-util.h"
+#include "hashmap.h"
#include "image-dbus.h"
+#include "image-policy.h"
#include "io-util.h"
-#include "loop-util.h"
#include "machined.h"
-#include "mount-util.h"
#include "operation.h"
#include "os-util.h"
#include "process-util.h"
-#include "raw-clone.h"
#include "strv.h"
-#include "user-util.h"
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_type, image_type, ImageType);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "bus-object.h"
+#include "machine-forward.h"
extern const BusObjectImplementation image_object;
#include "sd-json.h"
#include "sd-varlink.h"
-#include "btrfs-util.h"
#include "bus-polkit.h"
#include "discover-image.h"
+#include "errno-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "image.h"
#include "image-varlink.h"
#include "io-util.h"
#include "json-util.h"
-#include "machine.h"
#include "machine-pool.h"
#include "machined.h"
#include "operation.h"
#include "process-util.h"
-#include "string-util.h"
typedef struct ImageUpdateParameters {
const char *name;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-varlink.h"
+#include "machine-forward.h"
#define VARLINK_ERROR_MACHINE_IMAGE_NO_SUCH_IMAGE "io.systemd.MachineImage.NoSuchImage"
#define VARLINK_ERROR_MACHINE_IMAGE_TOO_MANY_OPERATIONS "io.systemd.MachineImage.TooManyOperations"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include "sd-json.h"
+#include "sd-bus.h"
#include "discover-image.h"
+#include "errno-util.h"
#include "fd-util.h"
#include "fileio.h"
+#include "hashmap.h"
#include "image.h"
#include "io-util.h"
+#include "log.h"
#include "machined.h"
#include "operation.h"
#include "process-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <errno.h>
-
-#include "sd-bus.h"
-
-#include "macro.h"
-
-typedef struct Manager Manager;
-typedef struct Operation Operation;
+#include "machine-forward.h"
typedef enum ImageCleanPoolMode {
IMAGE_CLEAN_POOL_REMOVE_ALL,
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
-#include <sys/mount.h>
-#include <sys/wait.h>
+#include "sd-bus.h"
#include "alloc-util.h"
#include "bus-common-errors.h"
#include "bus-get-properties.h"
-#include "bus-internal.h"
#include "bus-label.h"
-#include "bus-locator.h"
+#include "bus-object.h"
#include "bus-polkit.h"
#include "bus-util.h"
#include "copy.h"
-#include "env-file.h"
#include "env-util.h"
+#include "errno-util.h"
#include "fd-util.h"
-#include "fileio.h"
-#include "format-util.h"
-#include "fs-util.h"
+#include "hashmap.h"
#include "in-addr-util.h"
#include "local-addresses.h"
#include "machine.h"
#include "machine-dbus.h"
#include "machined.h"
-#include "mkdir.h"
#include "mount-util.h"
-#include "mountpoint-util.h"
-#include "namespace-util.h"
#include "operation.h"
-#include "os-util.h"
#include "path-util.h"
-#include "process-util.h"
#include "signal-util.h"
+#include "string-util.h"
#include "strv.h"
-#include "terminal-util.h"
-#include "user-util.h"
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_class, machine_class, MachineClass);
static BUS_DEFINE_PROPERTY_GET2(property_get_state, "s", Machine, machine_get_state, machine_state_to_string);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-bus.h"
-
-#include "bus-object.h"
-
-typedef struct Machine Machine;
+#include "machine-forward.h"
typedef enum {
MACHINE_COPY_REPLACE = 1 << 0, /* Public API via DBUS, do not change */
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include "forward.h" // IWYU pragma: export
+
+typedef struct Machine Machine;
+typedef struct Manager Manager;
+typedef struct Operation Operation;
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <limits.h>
-
-#include "sd-id128.h"
#include "sd-json.h"
#include "sd-varlink.h"
#include "bus-polkit.h"
#include "copy.h"
+#include "errno-util.h"
#include "fd-util.h"
+#include "format-util.h"
+#include "hashmap.h"
#include "hostname-util.h"
#include "json-util.h"
#include "machine.h"
#include "machined.h"
#include "mount-util.h"
#include "operation.h"
-#include "path-util.h"
#include "pidref.h"
-#include "process-util.h"
-#include "signal-util.h"
#include "socket-util.h"
#include "string-table.h"
#include "string-util.h"
#include "sd-varlink.h"
-#include "pidref.h"
-
-typedef struct Machine Machine;
-typedef struct Manager Manager;
+#include "machine-forward.h"
#define VARLINK_ERROR_MACHINE_NO_SUCH_MACHINE "io.systemd.Machine.NoSuchMachine"
#define VARLINK_ERROR_MACHINE_EXISTS "io.systemd.Machine.MachineExists"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
+#include <sched.h>
#include <sys/stat.h>
#include <unistd.h>
+#include "sd-bus.h"
+#include "sd-event.h"
#include "sd-messages.h"
#include "alloc-util.h"
#include "bus-internal.h"
#include "bus-locator.h"
#include "bus-unit-util.h"
-#include "bus-util.h"
#include "env-file.h"
#include "errno-util.h"
#include "escape.h"
#include "format-util.h"
#include "fs-util.h"
#include "hashmap.h"
+#include "log.h"
#include "machine.h"
#include "machine-dbus.h"
#include "machined.h"
#include "stdio-util.h"
#include "string-table.h"
#include "string-util.h"
+#include "strv.h"
#include "terminal-util.h"
#include "tmpfile-util.h"
#include "uid-range.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "sd-bus.h"
-#include "sd-event.h"
#include "sd-id128.h"
#include "copy.h"
#include "list.h"
+#include "machine-forward.h"
#include "pidref.h"
#include "time-util.h"
-typedef struct Machine Machine;
-typedef struct Manager Manager;
-typedef struct Operation Operation;
-
typedef enum MachineState {
MACHINE_OPENING, /* Machine is being registered */
MACHINE_RUNNING, /* Machine is running */
_KILL_WHOM_INVALID = -EINVAL,
} KillWhom;
-struct Machine {
+typedef struct Machine {
Manager *manager;
char *name;
LIST_HEAD(Operation, operations);
LIST_FIELDS(Machine, gc_queue);
-};
+} Machine;
int machine_new(MachineClass class, const char *name, Machine **ret);
int machine_link(Manager *manager, Machine *machine);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <arpa/inet.h>
-#include <errno.h>
-#include <fcntl.h>
#include <getopt.h>
-#include <math.h>
+#include <locale.h>
#include <net/if.h>
-#include <netinet/in.h>
-#include <sys/mount.h>
#include <sys/socket.h>
#include <unistd.h>
#include "sd-bus.h"
+#include "sd-event.h"
+#include "sd-journal.h"
#include "alloc-util.h"
#include "ask-password-agent.h"
#include "bus-wait-for-jobs.h"
#include "cgroup-show.h"
#include "cgroup-util.h"
-#include "constants.h"
-#include "copy.h"
#include "edit-util.h"
#include "env-util.h"
-#include "fd-util.h"
+#include "format-util.h"
#include "format-ifname.h"
#include "format-table.h"
#include "hostname-util.h"
#include "import-util.h"
#include "in-addr-util.h"
#include "label-util.h"
-#include "locale-util.h"
#include "log.h"
#include "logs-show.h"
#include "machine-dbus.h"
-#include "macro.h"
#include "main-func.h"
-#include "mkdir.h"
#include "nulstr-util.h"
#include "osc-context.h"
#include "pager.h"
#include "pretty-print.h"
#include "process-util.h"
#include "ptyfwd.h"
-#include "rlimit-util.h"
-#include "signal-util.h"
-#include "sort-util.h"
+#include "runtime-scope.h"
#include "stdio-util.h"
#include "string-table.h"
+#include "string-util.h"
#include "strv.h"
#include "terminal-util.h"
+#include "time-util.h"
#include "unit-name.h"
#include "verbs.h"
-#include "web-util.h"
typedef enum MachineRunner {
RUNNER_NSPAWN,
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "sd-event.h"
#include "cgroup-util.h"
#include "copy.h"
#include "discover-image.h"
#include "env-file.h"
#include "fd-util.h"
#include "fileio.h"
-#include "iovec-util.h"
+#include "hashmap.h"
+#include "local-addresses.h"
#include "log.h"
#include "machine.h"
#include "machined.h"
#include "namespace-util.h"
#include "os-util.h"
#include "process-util.h"
-#include "socket-util.h"
#include "strv.h"
#include "user-util.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <unistd.h>
+#include "sd-bus.h"
#include "sd-id128.h"
#include "alloc-util.h"
#include "bus-get-properties.h"
#include "bus-locator.h"
#include "bus-message-util.h"
+#include "bus-object.h"
#include "bus-polkit.h"
#include "bus-util.h"
#include "cgroup-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "format-util.h"
+#include "hashmap.h"
#include "hostname-util.h"
#include "image.h"
#include "image-dbus.h"
#include "operation.h"
#include "os-util.h"
#include "path-util.h"
-#include "process-util.h"
-#include "stdio-util.h"
+#include "string-util.h"
#include "strv.h"
-#include "unit-name.h"
+#include "unit-def.h"
#include "user-util.h"
static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_pool_path, "s", "/var/lib/machines");
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <linux/vm_sockets.h>
+
+#include "sd-event.h"
#include "sd-varlink.h"
#include "bus-polkit.h"
#include "discover-image.h"
+#include "errno-util.h"
#include "format-util.h"
-#include "hostname-util.h"
+#include "hashmap.h"
+#include "image-policy.h"
#include "image-varlink.h"
#include "json-util.h"
+#include "local-addresses.h"
#include "machine.h"
#include "machine-varlink.h"
#include "machined.h"
#include "machined-varlink.h"
-#include "mkdir.h"
-#include "process-util.h"
-#include "socket-util.h"
+#include "string-util.h"
+#include "strv.h"
#include "user-util.h"
#include "varlink-io.systemd.Machine.h"
#include "varlink-io.systemd.MachineImage.h"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-typedef struct Manager Manager;
+#include "machine-forward.h"
int manager_varlink_init(Manager *m);
void manager_varlink_done(Manager *m);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include <errno.h>
#include <string.h>
#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
+
+#include "sd-bus.h"
+#include "sd-event.h"
+#include "sd-varlink.h"
#include "alloc-util.h"
-#include "bus-error.h"
#include "bus-locator.h"
#include "bus-log-control-api.h"
-#include "bus-polkit.h"
+#include "bus-object.h"
#include "bus-util.h"
-#include "cgroup-util.h"
#include "common-signal.h"
+#include "constants.h"
#include "daemon-util.h"
#include "dirent-util.h"
-#include "discover-image.h"
+#include "errno-util.h"
#include "fd-util.h"
-#include "format-util.h"
+#include "hash-funcs.h"
+#include "hashmap.h"
#include "hostname-util.h"
#include "machine.h"
#include "machined.h"
#include "main-func.h"
#include "mkdir-label.h"
#include "operation.h"
-#include "process-util.h"
#include "service-util.h"
#include "signal-util.h"
#include "socket-util.h"
#include "special.h"
+#include "string-util.h"
static Manager* manager_unref(Manager *m);
DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_unref);
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <stdbool.h>
-
-#include "sd-bus.h"
-#include "sd-event.h"
-#include "sd-varlink.h"
-
-#include "bus-object.h"
-#include "hashmap.h"
#include "list.h"
-#include "local-addresses.h"
-#include "pidref.h"
+#include "machine-forward.h"
#include "runtime-scope.h"
-typedef struct Image Image;
-typedef struct Machine Machine;
-typedef struct Operation Operation;
-
typedef struct Manager {
sd_event *event;
sd_bus *bus;
#include <sys/wait.h>
#include <unistd.h>
+#include "sd-bus.h"
+#include "sd-event.h"
+#include "sd-varlink.h"
+
#include "alloc-util.h"
#include "fd-util.h"
+#include "format-util.h"
#include "log.h"
#include "machine.h"
#include "machined.h"
return mfree(o);
}
+
+void operation_attach_bus_reply(Operation *op, sd_bus_message *message) {
+ assert(op);
+ assert(!op->message);
+ assert(!op->link);
+ assert(message);
+
+ op->message = sd_bus_message_ref(message);
+}
+
+void operation_attach_varlink_reply(Operation *op, sd_varlink *link) {
+ assert(op);
+ assert(!op->message);
+ assert(!op->link);
+ assert(link);
+
+ op->link = sd_varlink_ref(link);
+}
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <sys/types.h>
-
-#include "sd-bus.h"
-#include "sd-event.h"
-#include "sd-varlink.h"
-
-#include "assert-util.h"
#include "list.h"
-
-typedef struct Machine Machine;
-typedef struct Manager Manager;
-typedef struct Operation Operation;
+#include "machine-forward.h"
#define OPERATIONS_MAX 64
-struct Operation {
+typedef struct Operation {
Manager *manager;
Machine *machine;
pid_t pid;
int (*done)(Operation *o, int ret, sd_bus_error *error);
LIST_FIELDS(Operation, operations);
LIST_FIELDS(Operation, operations_by_machine);
-};
+} Operation;
int operation_new(Manager *manager, Machine *machine, pid_t child, int errno_fd, Operation **ret);
Operation *operation_free(Operation *o);
-static inline void operation_attach_bus_reply(Operation *op, sd_bus_message *message) {
- assert(op);
- assert(!op->message);
- assert(!op->link);
- assert(message);
-
- op->message = sd_bus_message_ref(message);
-}
-
-static inline void operation_attach_varlink_reply(Operation *op, sd_varlink *link) {
- assert(op);
- assert(!op->message);
- assert(!op->link);
- assert(link);
-
- op->link = sd_varlink_ref(link);
-}
+void operation_attach_bus_reply(Operation *op, sd_bus_message *message);
+void operation_attach_varlink_reply(Operation *op, sd_varlink *link);
static inline int operation_new_with_bus_reply(
Manager *manager,