X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=lib%2Ftypes%2Ftypes.h;h=9d83d87dee748f4b3553759285424167e2e858af;hp=a1065eee62e24efe974dde1eaae11e0ba0dc5658;hb=78c3a044d2302bacf27ac2d9ef179bc35824af4c;hpb=aa530148044a7c6d7ec7b6a32672cc69d53979b2 diff --git a/lib/types/types.h b/lib/types/types.h index a1065ee..9d83d87 100644 --- a/lib/types/types.h +++ b/lib/types/types.h @@ -8,10 +8,27 @@ enum device_type { DEVICE_TYPE_NETWORK, DEVICE_TYPE_DISK, + DEVICE_TYPE_USB, DEVICE_TYPE_OPTICAL, + DEVICE_TYPE_ANY, 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; @@ -35,11 +52,33 @@ struct boot_option { 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 { @@ -48,16 +87,23 @@ 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 { @@ -65,6 +111,8 @@ struct interface_info { uint8_t *hwaddr; char *name; bool link; + char *address; + char *address_v6; }; struct blockdev_info { @@ -76,6 +124,15 @@ 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; @@ -97,8 +154,10 @@ struct interface_config { struct { char *address; char *gateway; + char *url; } static_config; }; + bool override; }; struct network_config { @@ -108,21 +167,46 @@ 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 { bool autoboot_enabled; unsigned int autoboot_timeout_sec; struct network_config network; - struct boot_priority *boot_priorities; - unsigned int n_boot_priorities; + + 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 */