multipath-tools: add alias_prefix to multipath.conf.5
[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 #include <urcu.h>
7
8 #define ORIGIN_DEFAULT 0
9 #define ORIGIN_CONFIG  1
10
11 /*
12  * In kernel, fast_io_fail == 0 means immediate failure on rport delete.
13  * OTOH '0' means not-configured in various places in multipath-tools.
14  */
15 #define MP_FAST_IO_FAIL_UNSET (0)
16 #define MP_FAST_IO_FAIL_OFF (-1)
17 #define MP_FAST_IO_FAIL_ZERO (-2)
18
19 enum devtypes {
20         DEV_NONE,
21         DEV_DEVT,
22         DEV_DEVNODE,
23         DEV_DEVMAP,
24         DEV_UEVENT
25 };
26
27 enum mpath_cmds {
28         CMD_NONE,
29         CMD_CREATE,
30         CMD_DRY_RUN,
31         CMD_LIST_SHORT,
32         CMD_LIST_LONG,
33         CMD_VALID_PATH,
34         CMD_REMOVE_WWID,
35         CMD_RESET_WWIDS,
36         CMD_ADD_WWID,
37 };
38
39 struct hwentry {
40         char * vendor;
41         char * product;
42         char * revision;
43         char * uid_attribute;
44         char * getuid;
45         char * features;
46         char * hwhandler;
47         char * selector;
48         char * checker_name;
49         char * prio_name;
50         char * prio_args;
51         char * alias_prefix;
52
53         int pgpolicy;
54         int pgfailback;
55         int rr_weight;
56         int no_path_retry;
57         int minio;
58         int minio_rq;
59         int flush_on_last_del;
60         int fast_io_fail;
61         unsigned int dev_loss;
62         int user_friendly_names;
63         int retain_hwhandler;
64         int detect_prio;
65         int deferred_remove;
66         int delay_watch_checks;
67         int delay_wait_checks;
68         char * bl_product;
69 };
70
71 struct mpentry {
72         char * wwid;
73         char * alias;
74         char * uid_attribute;
75         char * getuid;
76         char * selector;
77         char * features;
78
79         char * prio_name;
80         char * prio_args;
81         unsigned char * reservation_key;
82         int pgpolicy;
83         int pgfailback;
84         int rr_weight;
85         int no_path_retry;
86         int minio;
87         int minio_rq;
88         int flush_on_last_del;
89         int attribute_flags;
90         int user_friendly_names;
91         int deferred_remove;
92         int delay_watch_checks;
93         int delay_wait_checks;
94         uid_t uid;
95         gid_t gid;
96         mode_t mode;
97 };
98
99 struct config {
100         struct rcu_head rcu;
101         int verbosity;
102         int pgpolicy_flag;
103         int pgpolicy;
104         int minio;
105         int minio_rq;
106         int checkint;
107         int max_checkint;
108         int pgfailback;
109         int remove;
110         int rr_weight;
111         int no_path_retry;
112         int user_friendly_names;
113         int bindings_read_only;
114         int max_fds;
115         int force_reload;
116         int queue_without_daemon;
117         int ignore_wwids;
118         int checker_timeout;
119         int flush_on_last_del;
120         int attribute_flags;
121         int fast_io_fail;
122         unsigned int dev_loss;
123         int log_checker_err;
124         int allow_queueing;
125         int find_multipaths;
126         uid_t uid;
127         gid_t gid;
128         mode_t mode;
129         int reassign_maps;
130         int retain_hwhandler;
131         int detect_prio;
132         int force_sync;
133         int deferred_remove;
134         int processed_main_config;
135         int delay_watch_checks;
136         int delay_wait_checks;
137         int uxsock_timeout;
138         int strict_timing;
139         int retrigger_tries;
140         int retrigger_delay;
141         int ignore_new_devs;
142         int delayed_reconfig;
143         int uev_wait_timeout;
144         unsigned int version[3];
145
146         char * multipath_dir;
147         char * selector;
148         char * uid_attribute;
149         char * getuid;
150         char * features;
151         char * hwhandler;
152         char * bindings_file;
153         char * wwids_file;
154         char * prio_name;
155         char * prio_args;
156         char * checker_name;
157         char * alias_prefix;
158         char * partition_delim;
159         char * config_dir;
160         unsigned char * reservation_key;
161
162         vector keywords;
163         vector mptable;
164         vector hwtable;
165         struct hwentry *overrides;
166
167         vector blist_devnode;
168         vector blist_wwid;
169         vector blist_device;
170         vector blist_property;
171         vector elist_devnode;
172         vector elist_wwid;
173         vector elist_device;
174         vector elist_property;
175 };
176
177 extern struct udev * udev;
178
179 struct hwentry * find_hwe (vector hwtable, char * vendor, char * product, char *revision);
180 struct mpentry * find_mpe (vector mptable, char * wwid);
181 char * get_mpe_wwid (vector mptable, char * alias);
182
183 struct hwentry * alloc_hwe (void);
184 struct mpentry * alloc_mpe (void);
185
186 void free_hwe (struct hwentry * hwe);
187 void free_hwtable (vector hwtable);
188 void free_mpe (struct mpentry * mpe);
189 void free_mptable (vector mptable);
190
191 int store_hwe (vector hwtable, struct hwentry *);
192
193 struct config *load_config (char * file);
194 struct config * alloc_config (void);
195 void free_config (struct config * conf);
196 extern struct config *get_multipath_config(void);
197 extern void put_multipath_config(struct config *);
198
199 #endif