Make read-only guarantee user-settable
[petitboot] / lib / types / types.h
index b71f0dd5903027685d53dade24a3a03b551fd65d..f7e47522dcd818d6b2a226e469fd7ee48543f50e 100644 (file)
@@ -9,9 +9,25 @@ enum device_type {
        DEVICE_TYPE_NETWORK,
        DEVICE_TYPE_DISK,
        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,6 +80,13 @@ 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 {
@@ -71,6 +94,8 @@ struct system_info {
        char                    *identifier;
        struct interface_info   **interfaces;
        unsigned int            n_interfaces;
+       struct blockdev_info    **blockdevs;
+       unsigned int            n_blockdevs;
 };
 
 #define HWADDR_SIZE    6
@@ -94,21 +119,40 @@ struct interface_config {
 
 struct network_config {
        struct interface_config **interfaces;
-       int                     n_interfaces;
+       unsigned int            n_interfaces;
        const char              **dns_servers;
-       int                     n_dns_servers;
+       unsigned int            n_dns_servers;
 };
 
-struct boot_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;
-       int                     autoboot_timeout_sec;
+       unsigned int            autoboot_timeout_sec;
        struct network_config   network;
-       struct boot_priority    *boot_priorities;
-       int                     n_boot_priorities;
+
+       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                    safe_mode;
+       bool                    debug;
 };
 
 #endif /* _TYPES_H */