]> git.ozlabs.org Git - petitboot/blobdiff - discover/platform.c
discover: add initialiser for config->safe_mode
[petitboot] / discover / platform.c
index 66e776edd530548f9815c91942520362f5205e59..0dced1697f6458c8c4dc3291758da593f1fa47aa 100644 (file)
@@ -11,6 +11,23 @@ void                 *platform_ctx;
 static struct platform *platform;
 static struct config   *config;
 
+static const char *device_type_name(enum device_type type)
+{
+       switch (type) {
+       case DEVICE_TYPE_DISK:
+               return "disk";
+       case DEVICE_TYPE_OPTICAL:
+               return "optical";
+       case DEVICE_TYPE_NETWORK:
+               return "network";
+       case DEVICE_TYPE_ANY:
+               return "any";
+       case DEVICE_TYPE_UNKNOWN:
+       default:
+               return "unknown";
+       }
+}
+
 static void dump_config(struct config *config)
 {
        unsigned int i;
@@ -26,6 +43,9 @@ static void dump_config(struct config *config)
        if (config->network.n_interfaces || config->network.n_dns_servers)
                pb_log(" network configuration:\n");
 
+       if (config->safe_mode)
+               pb_log(" safe mode: active\n");
+
        for (i = 0; i < config->network.n_interfaces; i++) {
                struct interface_config *ifconf =
                        config->network.interfaces[i];
@@ -52,23 +72,39 @@ static void dump_config(struct config *config)
        }
        for (i = 0; i < config->network.n_dns_servers; i++)
                pb_log("  dns server %s\n", config->network.dns_servers[i]);
+
+       if (config->n_boot_priorities)
+               pb_log(" boot priority order:\n");
+
+       for (i = 0; i < config->n_boot_priorities; i++) {
+               struct boot_priority *prio = &config->boot_priorities[i];
+               pb_log(" %10s: %d\n", device_type_name(prio->type),
+                                       prio->priority);
+       }
+
+       pb_log(" language: %s\n", config->lang ?: "");
 }
 
 void config_set_defaults(struct config *config)
 {
        config->autoboot_enabled = true;
        config->autoboot_timeout_sec = 10;
+       config->autoboot_enabled = true;
        config->network.interfaces = NULL;
        config->network.n_interfaces = 0;
        config->network.dns_servers = NULL;
        config->network.n_dns_servers = 0;
+       config->boot_device = NULL;
+       config->safe_mode = false;
+       config->lang = NULL;
 
        config->n_boot_priorities = 2;
        config->boot_priorities = talloc_array(config, struct boot_priority,
                                                config->n_boot_priorities);
        config->boot_priorities[0].type = DEVICE_TYPE_NETWORK;
+       config->boot_priorities[0].priority = 2;
        config->boot_priorities[1].type = DEVICE_TYPE_DISK;
-
+       config->boot_priorities[1].priority = 1;
 }
 
 int platform_init(void *ctx)
@@ -102,6 +138,11 @@ int platform_init(void *ctx)
        return 0;
 }
 
+const struct platform *platform_get(void)
+{
+       return platform;
+}
+
 int config_set(struct config *newconfig)
 {
        int rc;