]> git.ozlabs.org Git - petitboot/blobdiff - discover/platform.h
discover: Recognise and open LUKS encrypted partitions
[petitboot] / discover / platform.h
index a01ac7108ae562ae9cea3ecc7ed03b69357af6a4..5a5c9907d04679ddeb5c98c1318423398d4d53f9 100644 (file)
@@ -2,12 +2,18 @@
 #define PLATFORM_H
 
 #include <types/types.h>
 #define PLATFORM_H
 
 #include <types/types.h>
+#include <param_list/param_list.h>
 
 struct platform {
        const char      *name;
        bool            (*probe)(struct platform *, void *);
        int             (*load_config)(struct platform *, struct config *);
        int             (*save_config)(struct platform *, struct config *);
 
 struct platform {
        const char      *name;
        bool            (*probe)(struct platform *, void *);
        int             (*load_config)(struct platform *, struct config *);
        int             (*save_config)(struct platform *, struct config *);
+       void            (*pre_boot)(struct platform *,
+                               const struct config *);
+       int             (*get_sysinfo)(struct platform *, struct system_info *);
+       bool            (*restrict_clients)(struct platform *);
+       int             (*set_password)(struct platform *, const char *hash);
        uint16_t        dhcp_arch_id;
        void            *platform_data;
 };
        uint16_t        dhcp_arch_id;
        void            *platform_data;
 };
@@ -15,14 +21,24 @@ struct platform {
 int platform_init(void *ctx);
 int platform_fini(void);
 const struct platform *platform_get(void);
 int platform_init(void *ctx);
 int platform_fini(void);
 const struct platform *platform_get(void);
+int platform_get_sysinfo(struct system_info *info);
+bool platform_restrict_clients(void);
+int platform_set_password(const char *hash);
+void platform_pre_boot(void);
 
 /* configuration interface */
 const struct config *config_get(void);
 int config_set(struct config *config);
 
 /* configuration interface */
 const struct config *config_get(void);
 int config_set(struct config *config);
-void config_set_autoboot(bool autoboot_enabled);
-
-/* for use by the platform-specific storage code */
 void config_set_defaults(struct config *config);
 void config_set_defaults(struct config *config);
+void config_set_autoboot(bool autoboot_enabled);
+void config_populate_bootdev(struct config *config,
+       const struct param_list *pl);
+void config_populate_all(struct config *config, const struct param_list *pl);
+
+void params_update_network_values(struct param_list *pl,
+       const char *param_name, const struct config *config);
+void params_update_bootdev_values(struct param_list *pl,
+       const char *param_name, const struct config *config);
 
 #define __platform_ptrname(_n) __platform_ ## _n
 #define  _platform_ptrname(_n) __platform_ptrname(_n)
 
 #define __platform_ptrname(_n) __platform_ ## _n
 #define  _platform_ptrname(_n) __platform_ptrname(_n)