X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=lib%2Ftypes%2Ftypes.h;h=7f4ae1fced1fa182055398d838dd441258680323;hp=acd9e3ef74c6fe12f3f98d992fecd5d148228656;hb=d0602ed25e3bff8298c19bece8cd8b3f80d86624;hpb=ee86a0bd989511319adf3467b41b5b2e1f486aa6 diff --git a/lib/types/types.h b/lib/types/types.h index acd9e3e..7f4ae1f 100644 --- a/lib/types/types.h +++ b/lib/types/types.h @@ -1,10 +1,37 @@ #ifndef _TYPES_H #define _TYPES_H +#include +#include #include +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; char *name; char *description; char *icon_file; @@ -16,17 +43,146 @@ struct device { }; struct boot_option { + char *device_id; char *id; char *name; char *description; char *icon_file; char *boot_image_file; char *initrd_file; + char *dtb_file; char *boot_args; + char *args_sig_file; + bool is_default; struct list_item list; 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; +}; + +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 autoboot_option *autoboot_opts; + unsigned int n_autoboot_opts; + + unsigned int ipmi_bootdev; + bool ipmi_bootdev_persistent; + + 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 */