status = talloc_zero(handler, struct boot_status);
status->type = BOOT_STATUS_INFO;
+ /*
+ * 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)
+ */
status->message = talloc_asprintf(status, _("Processing %s device %s"),
device_type_display_name(dev->device->type),
dev->device->id);
device_handler_discover_context_commit(handler, ctx);
out:
- status->message = talloc_asprintf(status,_("Processing %s complete\n"),
+ /*
+ * TRANSLATORS: the format specifier in this string is a Linux
+ * device identifier, like 'sda1'
+ */
+ status->message = talloc_asprintf(status,_("Processing %s complete"),
dev->device->id);
boot_status(handler, status);
status = talloc_zero(handler, struct boot_status);
status->type = BOOT_STATUS_INFO;
+ /*
+ * TRANSLATORS: this format specifier will be the name of a network
+ * device, like 'eth0'.
+ */
status->message = talloc_asprintf(status, _("Processing dhcp event on %s"),
dev->device->id);
boot_status(handler, status);
device_handler_discover_context_commit(handler, ctx);
- status->message = talloc_asprintf(status,_("Processing %s complete\n"),
+ /*
+ * TRANSLATORS: this format specifier will be the name of a network
+ * device, like 'eth0'.
+ */
+ status->message = talloc_asprintf(status,_("Processing %s complete"),
dev->device->id);
boot_status(handler, status);
return dev;
}
-
void device_handler_process_url(struct device_handler *handler,
- const char *url)
+ const char *url, const char *mac, const char *ip)
{
struct discover_context *ctx;
struct discover_device *dev;
event->type = EVENT_TYPE_USER;
event->action = EVENT_ACTION_CONF;
- event->params = talloc_array(event, struct param, 1);
- param = &event->params[0];
- param->name = talloc_strdup(event, "pxeconffile");
- param->value = talloc_strdup(event, url);
- event->n_params = 1;
+ if (url[strlen(url) - 1] == '/') {
+ event->params = talloc_array(event, struct param, 3);
+ param = &event->params[0];
+ param->name = talloc_strdup(event, "pxepathprefix");
+ param->value = talloc_strdup(event, url);
+ param = &event->params[1];
+ param->name = talloc_strdup(event, "mac");
+ param->value = talloc_strdup(event, mac);
+ param = &event->params[2];
+ param->name = talloc_strdup(event, "ip");
+ param->value = talloc_strdup(event, ip);
+ event->n_params = 3;
+ } else {
+ event->params = talloc_array(event, struct param, 1);
+ param = &event->params[0];
+ param->name = talloc_strdup(event, "pxeconffile");
+ param->value = talloc_strdup(event, url);
+ event->n_params = 1;
+ }
pb_url = pb_url_parse(event, event->params->value);
if (!pb_url || !pb_url->host) {
void device_release_write(struct discover_device *dev, bool release)
{
const char *fstype, *device_path;
- int rc = 0;
if (!release)
return;
device_path = get_device_path(dev);
}
- mount(device_path, dev->mount_path, fstype,
+ if (mount(device_path, dev->mount_path, fstype,
MS_RDONLY | MS_SILENT,
- fs_parameters(dev, MS_RDONLY));
- if (rc)
+ fs_parameters(dev, MS_RDONLY)))
pb_log("Failed to remount %s read-only: %s\n",
device_path, strerror(errno));
else