multipathd: Implement systemd watchdog integration
[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 };
24
25 struct hwentry {
26         char * vendor;
27         char * product;
28         char * revision;
29         char * uid_attribute;
30         char * getuid;
31         char * features;
32         char * hwhandler;
33         char * selector;
34         char * checker_name;
35         char * prio_name;
36         char * prio_args;
37         char * alias_prefix;
38
39         int pgpolicy;
40         int pgfailback;
41         int rr_weight;
42         int no_path_retry;
43         int minio;
44         int minio_rq;
45         int flush_on_last_del;
46         int fast_io_fail;
47         unsigned int dev_loss;
48         int user_friendly_names;
49         int retain_hwhandler;
50         int detect_prio;
51         char * bl_product;
52 };
53
54 struct mpentry {
55         char * wwid;
56         char * alias;
57         char * uid_attribute;
58         char * getuid;
59         char * selector;
60         char * features;
61
62         char * prio_name;
63         char * prio_args;
64         unsigned char * reservation_key;
65         int pgpolicy;
66         int pgfailback;
67         int rr_weight;
68         int no_path_retry;
69         int minio;
70         int minio_rq;
71         int flush_on_last_del;
72         int attribute_flags;
73         int user_friendly_names;
74         uid_t uid;
75         gid_t gid;
76         mode_t mode;
77 };
78
79 struct config {
80         int verbosity;
81         int dry_run;
82         int list;
83         int pgpolicy_flag;
84         int pgpolicy;
85         enum devtypes dev_type;
86         int minio;
87         int minio_rq;
88         int checkint;
89         int max_checkint;
90         int pgfailback;
91         int remove;
92         int rr_weight;
93         int no_path_retry;
94         int user_friendly_names;
95         int bindings_read_only;
96         int max_fds;
97         int force_reload;
98         int queue_without_daemon;
99         int checker_timeout;
100         int daemon;
101 #ifdef USE_SYSTEMD
102         int watchdog;
103 #endif
104         int flush_on_last_del;
105         int attribute_flags;
106         int fast_io_fail;
107         unsigned int dev_loss;
108         int log_checker_err;
109         int allow_queueing;
110         uid_t uid;
111         gid_t gid;
112         mode_t mode;
113         uint32_t cookie;
114         int reassign_maps;
115         int retain_hwhandler;
116         int detect_prio;
117         unsigned int version[3];
118
119         char * dev;
120         struct udev * udev;
121         char * multipath_dir;
122         char * selector;
123         char * uid_attribute;
124         char * getuid;
125         char * features;
126         char * hwhandler;
127         char * bindings_file;
128         char * wwids_file;
129         char * prio_name;
130         char * prio_args;
131         char * checker_name;
132         char * alias_prefix;
133         unsigned char * reservation_key;
134
135         vector keywords;
136         vector mptable;
137         vector hwtable;
138
139         vector blist_devnode;
140         vector blist_wwid;
141         vector blist_device;
142         vector blist_property;
143         vector elist_devnode;
144         vector elist_wwid;
145         vector elist_device;
146         vector elist_property;
147 };
148
149 struct config * conf;
150
151 struct hwentry * find_hwe (vector hwtable, char * vendor, char * product, char *revision);
152 struct mpentry * find_mpe (char * wwid);
153 char * get_mpe_wwid (char * alias);
154
155 struct hwentry * alloc_hwe (void);
156 struct mpentry * alloc_mpe (void);
157
158 void free_hwe (struct hwentry * hwe);
159 void free_hwtable (vector hwtable);
160 void free_mpe (struct mpentry * mpe);
161 void free_mptable (vector mptable);
162
163 int store_hwe (vector hwtable, struct hwentry *);
164
165 int load_config (char * file, struct udev * udev);
166 struct config * alloc_config (void);
167 void free_config (struct config * conf);
168
169 #endif