#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 *);
+ 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;
};
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);
-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_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)