+
+ 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 *option_id;
+ char *boot_image_file;
+ char *initrd_file;
+ char *dtb_file;
+ char *boot_args;
+ char *args_sig_file;
+ char *console;
+};
+
+struct status {
+ enum status_type {
+ STATUS_INFO,
+ STATUS_ERROR,
+ } type;
+ char *message;
+ bool backlog;
+};
+
+struct statuslog_entry {
+ struct status *status;
+ struct list_item list;
+};
+
+struct interface_info {
+ unsigned int hwaddr_size;
+ uint8_t *hwaddr;
+ char *name;
+ bool link;
+ char *address;
+};
+
+struct blockdev_info {
+ char *name;
+ char *uuid;
+ char *mountpoint;
+};
+
+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;
+ 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;
+ char *url;
+ } static_config;
+ };
+ bool override;
+};
+
+struct network_config {
+ struct interface_config **interfaces;
+ unsigned int n_interfaces;
+ const char **dns_servers;
+ unsigned int n_dns_servers;