405a8f3c8fb4efbbb910672a2ec8fcd2ba944301
[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 * features;
31         char * hwhandler;
32         char * selector;
33         char * checker_name;
34         char * prio_name;
35         char * prio_args;
36         char * alias_prefix;
37
38         int pgpolicy;
39         int pgfailback;
40         int rr_weight;
41         int no_path_retry;
42         int minio;
43         int minio_rq;
44         int pg_timeout;
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 * selector;
59         char * features;
60
61         char * prio_name;
62         char * prio_args;
63         unsigned char * reservation_key;
64         int pgpolicy;
65         int pgfailback;
66         int rr_weight;
67         int no_path_retry;
68         int minio;
69         int minio_rq;
70         int pg_timeout;
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 pg_timeout;
97         int max_fds;
98         int force_reload;
99         int queue_without_daemon;
100         int checker_timeout;
101         int daemon;
102         int flush_on_last_del;
103         int attribute_flags;
104         int fast_io_fail;
105         unsigned int dev_loss;
106         int log_checker_err;
107         int allow_queueing;
108         uid_t uid;
109         gid_t gid;
110         mode_t mode;
111         uint32_t cookie;
112         int reassign_maps;
113         int retain_hwhandler;
114         int detect_prio;
115         unsigned int version[3];
116
117         char * dev;
118         struct udev * udev;
119         char * multipath_dir;
120         char * selector;
121         char * uid_attribute;
122         char * features;
123         char * hwhandler;
124         char * bindings_file;
125         char * wwids_file;
126         char * prio_name;
127         char * prio_args;
128         char * checker_name;
129         char * alias_prefix;
130         unsigned char * reservation_key;
131
132         vector keywords;
133         vector mptable;
134         vector hwtable;
135
136         vector blist_devnode;
137         vector blist_wwid;
138         vector blist_device;
139         vector elist_devnode;
140         vector elist_wwid;
141         vector elist_device;
142 };
143
144 struct config * conf;
145
146 struct hwentry * find_hwe (vector hwtable, char * vendor, char * product, char *revision);
147 struct mpentry * find_mpe (char * wwid);
148 char * get_mpe_wwid (char * alias);
149
150 struct hwentry * alloc_hwe (void);
151 struct mpentry * alloc_mpe (void);
152
153 void free_hwe (struct hwentry * hwe);
154 void free_hwtable (vector hwtable);
155 void free_mpe (struct mpentry * mpe);
156 void free_mptable (vector mptable);
157
158 int store_hwe (vector hwtable, struct hwentry *);
159
160 int load_config (char * file, struct udev * udev);
161 struct config * alloc_config (void);
162 void free_config (struct config * conf);
163
164 #endif