]> git.ozlabs.org Git - petitboot/commitdiff
discover: add handler reference to struct discover_context
authorJeremy Kerr <jk@ozlabs.org>
Mon, 12 Dec 2016 11:58:32 +0000 (19:58 +0800)
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>
Tue, 20 Dec 2016 05:40:21 +0000 (16:40 +1100)
Since the device handler provides the status message functions, we need
a pointer to it for device discovery (which we use a struct
discover_context for).

This change adds a 'handler' member to struct discover_context, to allow
status reporting. Since we now have a handler, there's no need for the
network pointer, so provide an accessor function instead.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
discover/device-handler.c
discover/device-handler.h
discover/pxe-parser.c
test/parser/utils.c

index af7918b5114000f1c706564ebb0a8c9d05b116f3..f8b7bf5be94f9f87be9d4b588ff43a708ec42bfb 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)
@@ -788,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;
index fe8a3b07de9691c39e82cc6dff3b17dbcc4039c6..874133db16032adc28f7af27872f9b576f19d12c 100644 (file)
@@ -54,12 +54,12 @@ struct discover_boot_option {
 
 
 struct discover_context {
+       struct device_handler   *handler;
        struct parser           *parser;
        struct event            *event;
        struct discover_device  *device;
        struct list             boot_options;
        struct pb_url           *conf_url;
-       struct network          *network;
        void                    *test_data;
 };
 
@@ -79,6 +79,8 @@ void device_handler_destroy(struct device_handler *devices);
 int device_handler_get_device_count(const struct device_handler *handler);
 const struct discover_device *device_handler_get_device(
        const struct device_handler *handler, unsigned int index);
+struct network *device_handler_get_network(
+               const struct device_handler *handler);
 
 struct discover_device *discover_device_create(struct device_handler *handler,
                const char *uuid, const char *id);
index 8237c4b46b2b29b8417fa661b8afacb70777b130..cd5f1495343117cef6e6f207398384379ca5a1e5 100644 (file)
@@ -11,6 +11,7 @@
 #include <file/file.h>
 #include <i18n/i18n.h>
 
+#include "device-handler.h"
 #include "parser.h"
 #include "parser-conf.h"
 #include "parser-utils.h"
@@ -108,8 +109,9 @@ static void pxe_process_sysappend(struct discover_context *ctx,
                return;
 
        if (val & 0x2) {
-               uint8_t *mac = find_mac_by_name(ctx, ctx->network,
-                                       event->device);
+               uint8_t *mac = find_mac_by_name(ctx,
+                               device_handler_get_network(ctx->handler),
+                               event->device);
                str = pxe_sysappend_mac(ctx, mac);
                if (str) {
                        pxe_append_string(opt, str);
index f0796fd30f9beea75005df2bd93c00430e56d50e..6bc7cc5e021ff4ea8d421dbe6a4507c52d521eb0 100644 (file)
@@ -93,6 +93,7 @@ static struct discover_context *test_create_context(struct parser_test *test)
        list_init(&ctx->boot_options);
        ctx->device = test_create_device_simple(test);
        ctx->test_data = test;
+       ctx->handler = test->handler;
        device_handler_add_device(test->handler, ctx->device);
 
        return ctx;