]> git.ozlabs.org Git - petitboot/blobdiff - ui/common/discover-client.c
ui/ncurses: Use pmenu_item destrutor to free ncurses ITEMs
[petitboot] / ui / common / discover-client.c
index b48d541050613af3b865c60fe4f684e0a2145852..a124f8bee8d9ffd03eb008ca4bae26e801a53699 100644 (file)
@@ -60,6 +60,7 @@ static void device_add(struct discover_client *client, struct device *device)
 
        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);
@@ -77,6 +78,7 @@ static void boot_option_add(struct discover_client *client,
        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);
@@ -332,3 +334,34 @@ int discover_client_cancel_default(struct discover_client *client)
 
        return pb_protocol_write_message(client->fd, message);
 }
+
+int discover_client_send_reinit(struct discover_client *client)
+{
+       struct pb_protocol_message *message;
+
+       message = pb_protocol_create_message(client,
+                       PB_PROTOCOL_ACTION_REINIT, 0);
+
+       if (!message)
+               return -1;
+
+       return pb_protocol_write_message(client->fd, message);
+}
+
+int discover_client_send_config(struct discover_client *client,
+               struct config *config)
+{
+       struct pb_protocol_message *message;
+       int len;
+
+       len = pb_protocol_config_len(config);
+
+       message = pb_protocol_create_message(client,
+                               PB_PROTOCOL_ACTION_CONFIG, len);
+       if (!message)
+               return -1;
+
+       pb_protocol_serialise_config(config, message->payload, len);
+
+       return pb_protocol_write_message(client->fd, message);
+}