summaryrefslogtreecommitdiffstats
path: root/discover/device-handler.c
diff options
context:
space:
mode:
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>2016-05-04 15:06:45 +1000
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>2016-05-24 11:08:15 +1000
commited8a3ad086e56fa40c72c531b3f563e35a7c0753 (patch)
tree1010710412f4fb46e0dd278e1d98f8dd358e1c13 /discover/device-handler.c
parent27863350496534c1bdd6a2d48661f8973aed0945 (diff)
downloadtalos-petitboot-ed8a3ad086e56fa40c72c531b3f563e35a7c0753.tar.gz
talos-petitboot-ed8a3ad086e56fa40c72c531b3f563e35a7c0753.zip
Extend the "add url" function to allow file:// URLs
This allows URLs of the form file:///path/to/local/file.conf to be used in nc-add-url, in order to access configuration files relative to the root directory. This is primarily a debugging tool aimed at developers rather than an expected use case. The DEVICE_TYPE_ANY enum is used in this case to represent that a resulting boot option is not associated with any device in the traditional sense, and in the UI is represented as a "Custom Local Option". Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Diffstat (limited to 'discover/device-handler.c')
-rw-r--r--discover/device-handler.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/discover/device-handler.c b/discover/device-handler.c
index 43b9541..cc48747 100644
--- a/discover/device-handler.c
+++ b/discover/device-handler.c
@@ -1177,13 +1177,17 @@ void device_handler_process_url(struct device_handler *handler,
}
pb_url = pb_url_parse(event, event->params->value);
- if (!pb_url || !pb_url->host) {
+ if (!pb_url || (pb_url->scheme != pb_url_file && !pb_url->host)) {
status->message = talloc_asprintf(handler,
_("Invalid config URL!"));
goto msg;
}
- event->device = device_from_addr(event, pb_url);
+ if (pb_url->scheme == pb_url_file)
+ event->device = talloc_asprintf(event, "local");
+ else
+ event->device = device_from_addr(event, pb_url);
+
if (!event->device) {
status->message = talloc_asprintf(status,
_("Unable to route to host %s"),
@@ -1192,6 +1196,8 @@ void device_handler_process_url(struct device_handler *handler,
}
dev = discover_device_create(handler, event->device);
+ if (pb_url->scheme == pb_url_file)
+ dev->device->type = DEVICE_TYPE_ANY;
ctx = device_handler_discover_context_create(handler, dev);
ctx->event = event;
OpenPOWER on IntegriCloud