Reassign existing device-mapper maps
[multipath-tools/.git] / libmultipath / config.h
1 #ifndef _CONFIG_H
2 #define _CONFIG_H
3
4 #include <sys/types.h>
5 #include <stdint.h>
6
7 #define ORIGIN_DEFAULT 0
8 #define ORIGIN_CONFIG  1
9
10 enum devtypes {
11         DEV_NONE,
12         DEV_DEVT,
13         DEV_DEVNODE,
14         DEV_DEVMAP
15 };
16
17 struct hwentry {
18         char * vendor;
19         char * product;
20         char * revision;
21         char * getuid;
22         char * features;
23         char * hwhandler;
24         char * selector;
25         char * checker_name;
26         char * prio_name;
27         char * prio_args;
28         char * alias_prefix;
29
30         int pgpolicy;
31         int pgfailback;
32         int rr_weight;
33         int no_path_retry;
34         int minio;
35         int minio_rq;
36         int pg_timeout;
37         int flush_on_last_del;
38         int fast_io_fail;
39         unsigned int dev_loss;
40         char * bl_product;
41 };
42
43 struct mpentry {
44         char * wwid;
45         char * alias;
46         char * getuid;
47         char * selector;
48         char * features;
49
50         char * prio_name;
51         char * prio_args;
52         int pgpolicy;
53         int pgfailback;
54         int rr_weight;
55         int no_path_retry;
56         int minio;
57         int minio_rq;
58         int pg_timeout;
59         int flush_on_last_del;
60         int attribute_flags;
61         uid_t uid;
62         gid_t gid;
63         mode_t mode;
64 };
65
66 struct config {
67         int dmrq;
68         int verbosity;
69         int dry_run;
70         int list;
71         int pgpolicy_flag;
72         int with_sysfs;
73         int pgpolicy;
74         enum devtypes dev_type;
75         int minio;
76         int minio_rq;
77         int checkint;
78         int max_checkint;
79         int pgfailback;
80         int remove;
81         int rr_weight;
82         int no_path_retry;
83         int user_friendly_names;
84         int bindings_read_only;
85         int pg_timeout;
86         int max_fds;
87         int force_reload;
88         int queue_without_daemon;
89         int checker_timeout;
90         int daemon;
91         int flush_on_last_del;
92         int attribute_flags;
93         int fast_io_fail;
94         unsigned int dev_loss;
95         uid_t uid;
96         gid_t gid;
97         mode_t mode;
98         uint32_t cookie;
99         int reassign_maps;
100
101         char * dev;
102         char * sysfs_dir;
103         char * udev_dir;
104         char * multipath_dir;
105         char * selector;
106         char * getuid;
107         char * features;
108         char * hwhandler;
109         char * bindings_file;
110         char * prio_name;
111         char * prio_args;
112         char * checker_name;
113         char * alias_prefix;
114
115         vector keywords;
116         vector mptable;
117         vector hwtable;
118
119         vector blist_devnode;
120         vector blist_wwid;
121         vector blist_device;
122         vector elist_devnode;
123         vector elist_wwid;
124         vector elist_device;
125 };
126
127 struct config * conf;
128
129 struct hwentry * find_hwe (vector hwtable, char * vendor, char * product, char *revision);
130 struct mpentry * find_mpe (char * wwid);
131 char * get_mpe_wwid (char * alias);
132
133 struct hwentry * alloc_hwe (void);
134 struct mpentry * alloc_mpe (void);
135
136 void free_hwe (struct hwentry * hwe);
137 void free_hwtable (vector hwtable);
138 void free_mpe (struct mpentry * mpe);
139 void free_mptable (vector mptable);
140
141 int store_hwe (vector hwtable, struct hwentry *);
142
143 int load_config (char * file);
144 struct config * alloc_config (void);
145 void free_config (struct config * conf);
146
147 #endif