X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Ftypes%2Ftypes.h;h=702b6f5f82286605cc00303f11cb2f84d4610150;hb=0dae90626e54e46372c9feddc2f9ac82f046547d;hp=9bb800ca4d125daa5d57169c8256e3d898eb05ea;hpb=bc4114e2235163bd88456c25cc0a908d86151f93;p=petitboot diff --git a/lib/types/types.h b/lib/types/types.h index 9bb800c..702b6f5 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; @@ -64,14 +81,81 @@ 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; + 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; + } static_config; + }; +}; + +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; + + bool allow_writes; + + char *lang; + + /* not user-settable */ + bool disable_snapshots; + bool safe_mode; + bool debug; +}; #endif /* _TYPES_H */