summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2016-12-12 19:58:32 +0800
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>2016-12-20 16:40:21 +1100
commit4563c5d672f605c493996a652b9e3e588a8596dd (patch)
tree6d835e9278d4f2d4021113bfa4b1f32366865150
parentbdd5c29b008a4484ed141f934d97465d673a10b7 (diff)
downloadtalos-petitboot-4563c5d672f605c493996a652b9e3e588a8596dd.tar.gz
talos-petitboot-4563c5d672f605c493996a652b9e3e588a8596dd.zip
discover: add handler reference to struct discover_context
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>
-rw-r--r--discover/device-handler.c8
-rw-r--r--discover/device-handler.h4
-rw-r--r--discover/pxe-parser.c6
-rw-r--r--test/parser/utils.c1
4 files changed, 15 insertions, 4 deletions
diff --git a/discover/device-handler.c b/discover/device-handler.c
index af7918b..f8b7bf5 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)
@@ -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;
diff --git a/discover/device-handler.h b/discover/device-handler.h
index fe8a3b0..874133d 100644
--- a/discover/device-handler.h
+++ b/discover/device-handler.h
@@ -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);
diff --git a/discover/pxe-parser.c b/discover/pxe-parser.c
index 8237c4b..cd5f149 100644
--- a/discover/pxe-parser.c
+++ b/discover/pxe-parser.c
@@ -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);
diff --git a/test/parser/utils.c b/test/parser/utils.c
index f0796fd..6bc7cc5 100644
--- a/test/parser/utils.c
+++ b/test/parser/utils.c
@@ -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;
OpenPOWER on IntegriCloud