590dde2799fade918cd871b52396dc9f3563dc96
[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 with_sysfs;
81         int pgpolicy;
82         enum devtypes dev_type;
83         int minio;
84         int minio_rq;
85         int checkint;
86         int max_checkint;
87         int pgfailback;
88         int remove;
89         int rr_weight;
90         int no_path_retry;
91         int user_friendly_names;
92         int bindings_read_only;
93         int pg_timeout;
94         int max_fds;
95         int force_reload;
96         int queue_without_daemon;
97         int checker_timeout;
98         int daemon;
99         int flush_on_last_del;
100         int attribute_flags;
101         int fast_io_fail;
102         unsigned int dev_loss;
103         int log_checker_err;
104         int allow_queueing;
105         uid_t uid;
106         gid_t gid;
107         mode_t mode;
108         uint32_t cookie;
109         int reassign_maps;
110
111         char * dev;
112         struct udev * udev;
113         char * sysfs_dir;
114         char * udev_dir;
115         char * multipath_dir;
116         char * selector;
117         char * uid_attribute;
118         char * features;
119         char * hwhandler;
120         char * bindings_file;
121         char * prio_name;
122         char * prio_args;
123         char * checker_name;
124         char * alias_prefix;
125         unsigned char * reservation_key;
126
127         vector keywords;
128         vector mptable;
129         vector hwtable;
130
131         vector blist_devnode;
132         vector blist_wwid;
133         vector blist_device;
134         vector elist_devnode;
135         vector elist_wwid;
136         vector elist_device;
137 };
138
139 struct config * conf;
140
141 struct hwentry * find_hwe (vector hwtable, char * vendor, char * product, char *revision);
142 struct mpentry * find_mpe (char * wwid);
143 char * get_mpe_wwid (char * alias);
144
145 struct hwentry * alloc_hwe (void);
146 struct mpentry * alloc_mpe (void);
147
148 void free_hwe (struct hwentry * hwe);
149 void free_hwtable (vector hwtable);
150 void free_mpe (struct mpentry * mpe);
151 void free_mptable (vector mptable);
152
153 int store_hwe (vector hwtable, struct hwentry *);
154
155 int load_config (char * file);
156 struct config * alloc_config (void);
157 void free_config (struct config * conf);
158
159 #endif