X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=lib%2Ftypes%2Ftypes.h;h=0333a02d9aa385b4eb121574813d85e862120bfd;hp=90b23c37a77446d0cda4b531869c6dee31eed343;hb=d2b12ddb905a74fa6b2e454142b0b9f71fd99398;hpb=ab4ca06537f10b768b2e81a178273e9509de0b07 diff --git a/lib/types/types.h b/lib/types/types.h index 90b23c3..0333a02 100644 --- a/lib/types/types.h +++ b/lib/types/types.h @@ -1,10 +1,21 @@ #ifndef _TYPES_H #define _TYPES_H +#include +#include #include +enum device_type { + DEVICE_TYPE_NETWORK, + DEVICE_TYPE_DISK, + DEVICE_TYPE_OPTICAL, + DEVICE_TYPE_ANY, + DEVICE_TYPE_UNKNOWN, +}; + struct device { char *id; + enum device_type type; char *name; char *description; char *icon_file; @@ -23,7 +34,9 @@ struct boot_option { char *icon_file; char *boot_image_file; char *initrd_file; + char *dtb_file; char *boot_args; + bool is_default; struct list_item list; @@ -34,6 +47,7 @@ struct boot_command { char *option_id; char *boot_image_file; char *initrd_file; + char *dtb_file; char *boot_args; }; @@ -47,4 +61,71 @@ struct boot_status { 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; +}; + #endif /* _TYPES_H */