1// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef VBOOT_REFERENCE_CGPT_CGPT_PARAMS_H_
6#define VBOOT_REFERENCE_CGPT_CGPT_PARAMS_H_
7#include <stdint.h>
8
9#include "gpt.h"
10
11enum {
12  CGPT_OK = 0,
13  CGPT_FAILED,
14};
15
16typedef struct CgptCreateParams {
17  char *drive_name;
18  uint64_t drive_size;
19  int zap;
20  uint64_t padding;
21} CgptCreateParams;
22
23typedef struct CgptAddParams {
24  char *drive_name;
25  uint64_t drive_size;
26  uint32_t partition;
27  uint64_t begin;
28  uint64_t size;
29  Guid type_guid;
30  Guid unique_guid;
31  char *label;
32  int successful;
33  int tries;
34  int priority;
35  uint32_t raw_value;
36  int set_begin;
37  int set_size;
38  int set_type;
39  int set_unique;
40  int set_successful;
41  int set_tries;
42  int set_priority;
43  int set_raw;
44} CgptAddParams;
45
46typedef struct CgptShowParams {
47  char *drive_name;
48  uint64_t drive_size;
49  int numeric;
50  int verbose;
51  int quick;
52  uint32_t partition;
53  int single_item;
54  int debug;
55  int num_partitions;
56} CgptShowParams;
57
58typedef struct CgptRepairParams {
59  char *drive_name;
60  uint64_t drive_size;
61  int verbose;
62} CgptRepairParams;
63
64typedef struct CgptBootParams {
65  char *drive_name;
66  uint64_t drive_size;
67  uint32_t partition;
68  char *bootfile;
69  int create_pmbr;
70} CgptBootParams;
71
72typedef struct CgptPrioritizeParams {
73  char *drive_name;
74  uint64_t drive_size;
75  uint32_t set_partition;
76  int set_friends;
77  int max_priority;
78  int orig_priority;
79} CgptPrioritizeParams;
80
81struct CgptFindParams;
82typedef void (*CgptFindShowFn)(struct CgptFindParams *params, char *filename,
83                               int partnum, GptEntry *entry);
84typedef struct CgptFindParams {
85  char *drive_name;
86  uint64_t drive_size;
87  int verbose;
88  int set_unique;
89  int set_type;
90  int set_label;
91  int oneonly;
92  int numeric;
93  uint8_t *matchbuf;
94  uint64_t matchlen;
95  uint64_t matchoffset;
96  uint8_t *comparebuf;
97  Guid unique_guid;
98  Guid type_guid;
99  char *label;
100  int hits;
101  int match_partnum;           /* 1-based; 0 means no match */
102  /* when working with MTD, we actually work on a temp file, but we still need
103   * to print the device name. so this parameter is here to properly show the
104   * correct device name in that special case. */
105  CgptFindShowFn show_fn;
106} CgptFindParams;
107
108typedef struct CgptLegacyParams {
109  char *drive_name;
110  uint64_t drive_size;
111  int efipart;
112} CgptLegacyParams;
113
114#endif  // VBOOT_REFERENCE_CGPT_CGPT_PARAMS_H_
115