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