enum device_type {
DEVICE_TYPE_NETWORK,
DEVICE_TYPE_DISK,
+ DEVICE_TYPE_USB,
DEVICE_TYPE_OPTICAL,
DEVICE_TYPE_ANY,
+ DEVICE_TYPE_LUKS,
DEVICE_TYPE_UNKNOWN,
};
+enum ipmi_bootdev {
+ IPMI_BOOTDEV_NONE = 0x00,
+ IPMI_BOOTDEV_NETWORK = 0x01,
+ IPMI_BOOTDEV_DISK = 0x2,
+ IPMI_BOOTDEV_SAFE = 0x3,
+ IPMI_BOOTDEV_CDROM = 0x5,
+ IPMI_BOOTDEV_SETUP = 0x6,
+ IPMI_BOOTDEV_INVALID = 0xff,
+};
+
+const char *ipmi_bootdev_display_name(enum ipmi_bootdev bootdev);
+const char *device_type_display_name(enum device_type type);
+const char *device_type_name(enum device_type type);
+enum device_type find_device_type(const char *str);
+
struct device {
char *id;
enum device_type type;
char *initrd_file;
char *dtb_file;
char *boot_args;
+ char *args_sig_file;
bool is_default;
+ bool is_autoboot_default;
struct list_item list;
void *ui_info;
+
+ enum {
+ DISCOVER_BOOT_OPTION,
+ DISCOVER_PLUGIN_OPTION,
+ } type;
+};
+
+struct plugin_option {
+ char *id;
+ char *name;
+ char *vendor;
+ char *vendor_id;
+ char *version;
+ char *date;
+ char *plugin_file;
+
+ unsigned int n_executables;
+ char **executables;
+
+ void *ui_info;
};
struct boot_command {
char *initrd_file;
char *dtb_file;
char *boot_args;
+ char *args_sig_file;
+ char *console;
};
-struct boot_status {
- enum {
- BOOT_STATUS_INFO,
- BOOT_STATUS_ERROR,
+struct status {
+ enum status_type {
+ STATUS_INFO,
+ STATUS_ERROR,
} type;
char *message;
- char *detail;
- int progress;
+ bool backlog;
+ bool boot_active;
+};
+
+struct statuslog_entry {
+ struct status *status;
+ struct list_item list;
};
struct interface_info {
uint8_t *hwaddr;
char *name;
bool link;
+ char *address;
+ char *address_v6;
};
struct blockdev_info {
struct system_info {
char *type;
char *identifier;
+ char **platform_primary;
+ char **platform_other;
+ unsigned int n_primary;
+ unsigned int n_other;
+ char **bmc_current;
+ char **bmc_golden;
+ unsigned int n_bmc_current;
+ unsigned int n_bmc_golden;
+ uint8_t *bmc_mac;
struct interface_info **interfaces;
unsigned int n_interfaces;
struct blockdev_info **blockdevs;
struct {
char *address;
char *gateway;
+ char *url;
} static_config;
};
+ bool override;
};
struct network_config {
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 autoboot_option {
+ enum {
+ BOOT_DEVICE_TYPE,
+ BOOT_DEVICE_UUID
+ } boot_type;
+ union {
+ enum device_type type;
+ char *uuid;
+ };
};
struct config {
unsigned int autoboot_timeout_sec;
struct network_config network;
- struct boot_priority *boot_priorities;
- unsigned int n_boot_priorities;
-
- char *boot_device;
+ struct autoboot_option *autoboot_opts;
+ unsigned int n_autoboot_opts;
unsigned int ipmi_bootdev;
bool ipmi_bootdev_persistent;
+ bool ipmi_bootdev_mailbox;
+ char *http_proxy;
+ char *https_proxy;
+
+ bool allow_writes;
+
+ char *boot_console;
+ bool manual_console;
char *lang;
/* not user-settable */
+ unsigned int n_consoles;
+ char **consoles;
+ bool disable_snapshots;
bool safe_mode;
bool debug;
};
+bool config_autoboot_active(const struct config *config);
+
#endif /* _TYPES_H */