+static void plugin_option_add(struct discover_client *client,
+ struct plugin_option *opt)
+{
+ talloc_steal(client, opt);
+
+ if (client->ops.plugin_option_add)
+ client->ops.plugin_option_add(opt, client->ops.cb_arg);
+}
+
+static void plugins_remove(struct discover_client *client)
+{
+ if (client->ops.plugins_remove)
+ client->ops.plugins_remove(client->ops.cb_arg);
+}
+
+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);
+ }
+}
+