]> git.ozlabs.org Git - petitboot/blobdiff - discover/device-handler.c
discover/status: Be more specific about DHCP event status message
[petitboot] / discover / device-handler.c
index 281a3c4e7e3345c5edf4b20835a3ae37699794e8..d038c5b641e8c4e42420e615612542bde5cadaf3 100644 (file)
@@ -114,6 +114,12 @@ const struct discover_device *device_handler_get_device(
        return handler->devices[index];
 }
 
+struct network *device_handler_get_network(
+               const struct device_handler *handler)
+{
+       return handler->network;
+}
+
 struct discover_boot_option *discover_boot_option_create(
                struct discover_context *ctx,
                struct discover_device *device)
@@ -429,6 +435,38 @@ static void _device_handler_vstatus(struct device_handler *handler,
        talloc_free(status.message);
 }
 
+static void _device_handler_vdevstatus(struct device_handler *handler,
+               struct discover_device *device, enum status_type type,
+               const char *fmt, va_list ap)
+{
+       char *msg;
+
+       msg = talloc_asprintf(handler, "[%s] %s",
+                       device ? device->device->id : "unknown", fmt);
+       _device_handler_vstatus(handler, type, msg, ap);
+       talloc_free(msg);
+}
+
+void device_handler_status_dev_info(struct device_handler *handler,
+               struct discover_device *dev, const char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       _device_handler_vdevstatus(handler, dev, STATUS_INFO, fmt, ap);
+       va_end(ap);
+}
+
+void device_handler_status_dev_err(struct device_handler *handler,
+               struct discover_device *dev, const char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       _device_handler_vdevstatus(handler, dev, STATUS_ERROR, fmt, ap);
+       va_end(ap);
+}
+
 void device_handler_status_info(struct device_handler *handler,
                const char *fmt, ...)
 {
@@ -756,8 +794,8 @@ struct discover_context *device_handler_discover_context_create(
        struct discover_context *ctx;
 
        ctx = talloc_zero(handler, struct discover_context);
+       ctx->handler = handler;
        ctx->device = device;
-       ctx->network = handler->network;
        list_init(&ctx->boot_options);
 
        return ctx;
@@ -873,15 +911,14 @@ int device_handler_discover(struct device_handler *handler,
        struct discover_context *ctx;
        int rc;
 
-       /*
-        * TRANSLATORS: this string will be passed the type and identifier
-        * of the device. For example, the first parameter could be "Disk",
-        * (which will be translated accordingly) and the second a Linux device
-        * identifier like 'sda1' (which will not be translated)
-        */
-       device_handler_status_info(handler, _("Processing %s device %s"),
-                               device_type_display_name(dev->device->type),
-                               dev->device->id);
+       device_handler_status_dev_info(handler, dev,
+               /*
+                * TRANSLATORS: this string will be passed the type of the
+                * device (eg "disk" or "network"), which will be translated
+                * accordingly.
+                */
+               _("Processing new %s device"),
+               device_type_display_name(dev->device->type));
 
        process_boot_option_queue(handler);
 
@@ -903,13 +940,6 @@ int device_handler_discover(struct device_handler *handler,
        device_handler_discover_context_commit(handler, ctx);
 
 out:
-       /*
-        * TRANSLATORS: the format specifier in this string is a Linux
-        * device identifier, like 'sda1'
-        */
-       device_handler_status_info(handler, _("Processing %s complete"),
-                               dev->device->id);
-
        talloc_unlink(handler, ctx);
 
        return 0;
@@ -921,12 +951,9 @@ int device_handler_dhcp(struct device_handler *handler,
 {
        struct discover_context *ctx;
 
-       /*
-        * TRANSLATORS: this format specifier will be the name of a network
-        * device, like 'eth0'.
-        */
-       device_handler_status_info(handler, _("Processing dhcp event on %s"),
-                               dev->device->id);
+       device_handler_status_dev_info(handler, dev,
+                       _("Processing DHCP lease response (ip: %s)"),
+                       event_get_param(event, "ip"));
 
        /* create our context */
        ctx = device_handler_discover_context_create(handler, dev);
@@ -937,13 +964,6 @@ int device_handler_dhcp(struct device_handler *handler,
 
        device_handler_discover_context_commit(handler, ctx);
 
-       /*
-        * TRANSLATORS: this format specifier will be the name of a network
-        * device, like 'eth0'.
-        */
-       device_handler_status_info(handler, _("Processing %s complete"),
-                               dev->device->id);
-
        talloc_unlink(handler, ctx);
 
        return 0;