From 4563c5d672f605c493996a652b9e3e588a8596dd Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Mon, 12 Dec 2016 19:58:32 +0800 Subject: [PATCH] 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 Signed-off-by: Samuel Mendoza-Jonas --- discover/device-handler.c | 8 +++++++- discover/device-handler.h | 4 +++- discover/pxe-parser.c | 6 ++++-- test/parser/utils.c | 1 + 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 #include +#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; -- 2.39.2