- dev->n_options = n_options;
-
- list_init(&dev->boot_options);
-
- for (i = 0; i < n_options; i++) {
- struct boot_option *opt;
-
- opt = talloc(dev, struct boot_option);
-
- if (read_string(opt, &pos, &len, &opt->id))
- goto out_err;
- if (read_string(opt, &pos, &len, &opt->name))
- goto out_err;
- if (read_string(opt, &pos, &len,
- &opt->description))
- goto out_err;
- if (read_string(opt, &pos, &len,
- &opt->icon_file))
- goto out_err;
- if (read_string(opt, &pos, &len,
- &opt->boot_image_file))
- goto out_err;
- if (read_string(opt, &pos, &len,
- &opt->initrd_file))
- goto out_err;
- if (read_string(opt, &pos, &len,
- &opt->boot_args))
- goto out_err;
-
- list_add(&dev->boot_options, &opt->list);
- }
+out:
+ return rc;
+}
+
+int pb_protocol_deserialise_boot_option(struct boot_option *opt,
+ const struct pb_protocol_message *message)
+{
+ unsigned int len;
+ const char *pos;
+ int rc = -1;
+
+ len = message->payload_len;
+ pos = message->payload;
+
+ if (read_string(opt, &pos, &len, &opt->device_id))
+ goto out;