X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fdevice-handler.c;h=d038c5b641e8c4e42420e615612542bde5cadaf3;hp=281a3c4e7e3345c5edf4b20835a3ae37699794e8;hb=789ba5f256f2b9f98d3eaad8c39c894c8e8c86f6;hpb=458e307dd5a19de5c530c9eebeffadfce1a48feb diff --git a/discover/device-handler.c b/discover/device-handler.c index 281a3c4..d038c5b 100644 --- a/discover/device-handler.c +++ b/discover/device-handler.c @@ -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;