+struct boot_status {
+ enum {
+ BOOT_STATUS_INFO,
+ BOOT_STATUS_ERROR,
+ } type;
+ char *message;
+ char *detail;
+ int progress;
+};
+
+struct interface_info {
+ unsigned int hwaddr_size;
+ uint8_t *hwaddr;
+ char *name;
+ bool link;
+};
+
+struct blockdev_info {
+ char *name;
+ char *uuid;
+ char *mountpoint;
+};
+
+struct system_info {
+ char *type;
+ char *identifier;
+ struct interface_info **interfaces;
+ unsigned int n_interfaces;
+ struct blockdev_info **blockdevs;
+ unsigned int n_blockdevs;
+};
+
+#define HWADDR_SIZE 6
+
+struct interface_config {
+ uint8_t hwaddr[HWADDR_SIZE];
+ bool ignore;
+ enum {
+ CONFIG_METHOD_DHCP,
+ CONFIG_METHOD_STATIC,
+ } method;
+ union {
+ struct {
+ } dhcp_config;
+ struct {
+ char *address;
+ char *gateway;
+ } static_config;
+ };
+};
+
+struct network_config {
+ struct interface_config **interfaces;
+ unsigned int n_interfaces;
+ const char **dns_servers;
+ unsigned int n_dns_servers;
+};
+
+struct boot_priority {
+ /* Boot options with higher priority values will take precedence over
+ * lower values. Negative priorities signify "don't boot this by
+ * default".
+ */
+ int priority;
+ enum device_type type;
+};
+
+struct config {
+ bool autoboot_enabled;
+ unsigned int autoboot_timeout_sec;
+ bool safe_mode;
+ struct network_config network;
+ struct boot_priority *boot_priorities;
+ unsigned int n_boot_priorities;
+ char *boot_device;
+};
+