discover: parse boot message from incoming ACTION_BOOT messages
[petitboot] / lib / pb-protocol / pb-protocol.c
index 4e0af873b710ad8d72707c9fa60190076197e865..31637c611c19993a390bd6e1fe86ff917a96ba58 100644 (file)
@@ -404,3 +404,34 @@ out_err:
        talloc_free(dev);
        return NULL;
 }
+
+struct boot_command *pb_protocol_deserialise_boot_command(void *ctx,
+               const struct pb_protocol_message *message)
+{
+       struct boot_command *cmd;
+       const char *pos;
+       unsigned int len;
+
+       len = message->payload_len;
+       pos = message->payload;
+
+       cmd = talloc(ctx, struct boot_command);
+
+       if (read_string(cmd, &pos, &len, &cmd->option_id))
+               goto out_err;
+
+       if (read_string(cmd, &pos, &len, &cmd->boot_image_file))
+               goto out_err;
+
+       if (read_string(cmd, &pos, &len, &cmd->initrd_file))
+               goto out_err;
+
+       if (read_string(cmd, &pos, &len, &cmd->boot_args))
+               goto out_err;
+
+       return cmd;
+
+out_err:
+       talloc_free(cmd);
+       return NULL;
+}