summaryrefslogtreecommitdiffstats
path: root/discover/device-handler.c
diff options
context:
space:
mode:
authorNeelesh Gupta <neelegup@linux.vnet.ibm.com>2013-10-28 12:45:21 +0530
committerJeremy Kerr <jk@ozlabs.org>2013-11-06 16:34:26 +0800
commitb8e53cb4b96eb17dc7fa0ffc505dfebae37e6cbf (patch)
tree2049ee274a9a7872366da8b95dbecaffc215df3a /discover/device-handler.c
parentf385e8cacbc574e213b0805a8d383373f29a8058 (diff)
downloadtalos-petitboot-b8e53cb4b96eb17dc7fa0ffc505dfebae37e6cbf.tar.gz
talos-petitboot-b8e53cb4b96eb17dc7fa0ffc505dfebae37e6cbf.zip
discover: Change parsers to explicitly request configuration files
Add a new function parser_request_url() to read the data from configuration files present remotely. We deprecate iterate_parser_files() and download_config() functions along with the 'filenames' and 'method' members of the 'parser' structure so that individual parsers would now require to request the configuration files data from the parser code and doesn't necessarily export the list of configuration files. Add the support to handle incoming DHCP event, done by passing all the relevant environment variables of the udhcpc to the discover code. Also, update the pxe parser code to populate the list of configuration file names as per PXELINUX convention of fallback names using mac and ip addresses of the booting machine. Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/device-handler.c')
-rw-r--r--discover/device-handler.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/discover/device-handler.c b/discover/device-handler.c
index a497147..cfd0c7b 100644
--- a/discover/device-handler.c
+++ b/discover/device-handler.c
@@ -589,7 +589,7 @@ void device_handler_add_device(struct device_handler *handler,
* array, but has only just been initialised by the hotplug source.
*/
int device_handler_discover(struct device_handler *handler,
- struct discover_device *dev, enum conf_method method)
+ struct discover_device *dev)
{
struct discover_context *ctx;
int rc;
@@ -604,7 +604,7 @@ int device_handler_discover(struct device_handler *handler,
goto out;
/* run the parsers. This will populate the ctx's boot_option list. */
- iterate_parsers(ctx, method);
+ iterate_parsers(ctx);
/* add discovered stuff to the handler */
device_handler_discover_context_commit(handler, ctx);
@@ -615,18 +615,17 @@ out:
return 0;
}
-/* incoming conf event */
-int device_handler_conf(struct device_handler *handler,
- struct discover_device *dev, struct pb_url *url,
- enum conf_method method)
+/* Incoming dhcp event */
+int device_handler_dhcp(struct device_handler *handler,
+ struct discover_device *dev, struct event *event)
{
struct discover_context *ctx;
/* create our context */
ctx = device_handler_discover_context_create(handler, dev);
- ctx->conf_url = url;
+ ctx->event = event;
- iterate_parsers(ctx, method);
+ iterate_parsers(ctx);
device_handler_discover_context_commit(handler, ctx);
@@ -635,6 +634,25 @@ int device_handler_conf(struct device_handler *handler,
return 0;
}
+/* incoming conf event */
+int device_handler_conf(struct device_handler *handler,
+ struct discover_device *dev, struct pb_url *url)
+{
+ struct discover_context *ctx;
+
+ /* create our context */
+ ctx = device_handler_discover_context_create(handler, dev);
+ ctx->conf_url = url;
+
+ iterate_parsers(ctx);
+
+ device_handler_discover_context_commit(handler, ctx);
+
+ talloc_free(ctx);
+
+ return 0;
+}
+
static struct discover_boot_option *find_boot_option_by_id(
struct device_handler *handler, const char *id)
{
OpenPOWER on IntegriCloud