client->devices[client->n_devices - 1] = device;
talloc_steal(client, device);
+ list_init(&device->boot_options);
if (client->ops.device_add)
client->ops.device_add(device, client->ops.cb_arg);
assert(dev);
talloc_steal(dev, opt);
+ list_add(&dev->boot_options, &opt->list);
if (client->ops.boot_option_add)
client->ops.boot_option_add(dev, opt, client->ops.cb_arg);
talloc_free(device);
}
+void discover_client_enumerate(struct discover_client *client)
+{
+ struct boot_option *opt;
+ struct device *device;
+ int i;
+
+ for (i = 0; i < client->n_devices; i++) {
+ device = client->devices[i];
+ if (client->ops.device_add)
+ client->ops.device_add(device, client->ops.cb_arg);
+
+ list_for_each_entry(&device->boot_options, opt, list)
+ if (client->ops.boot_option_add)
+ client->ops.boot_option_add(device, opt,
+ client->ops.cb_arg);
+ }
+}
+
static void update_status(struct discover_client *client,
struct boot_status *status)
{