X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fdevice-handler.c;h=cfd0c7bf8b5effede8b706493301c44d7ffc5503;hp=43bcd9f760249444d86eae8587bfb8725d8987b6;hb=b8e53cb4b96eb17dc7fa0ffc505dfebae37e6cbf;hpb=089d0a6eb769d531129a7cd1061493a1a24b4bef diff --git a/discover/device-handler.c b/discover/device-handler.c index 43bcd9f..cfd0c7b 100644 --- a/discover/device-handler.c +++ b/discover/device-handler.c @@ -524,10 +524,8 @@ struct discover_context *device_handler_discover_context_create( { struct discover_context *ctx; - ctx = talloc(handler, struct discover_context); + ctx = talloc_zero(handler, struct discover_context); ctx->device = device; - ctx->conf_url = NULL; - ctx->test_data = NULL; list_init(&ctx->boot_options); return ctx; @@ -591,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; @@ -606,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); @@ -617,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); @@ -637,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) {