X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ui%2Fcommon%2Fdiscover-client.c;h=a124f8bee8d9ffd03eb008ca4bae26e801a53699;hb=1bbd230d618162ccd5ea97540a413c766a07c0cb;hp=b48d541050613af3b865c60fe4f684e0a2145852;hpb=a0d9a2ebdf8265d40d51f47aa55c627c0e6decd3;p=petitboot diff --git a/ui/common/discover-client.c b/ui/common/discover-client.c index b48d541..a124f8b 100644 --- a/ui/common/discover-client.c +++ b/ui/common/discover-client.c @@ -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); +}