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