multipath: Deprecate 'getuid' configuration variable
[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 pg_timeout;
46         int flush_on_last_del;
47         int fast_io_fail;
48         unsigned int dev_loss;
49         int user_friendly_names;
50         int retain_hwhandler;
51         int detect_prio;
52         char * bl_product;
53 };
54
55 struct mpentry {
56         char * wwid;
57         char * alias;
58         char * uid_attribute;
59         char * getuid;
60         char * selector;
61         char * features;
62
63         char * prio_name;
64         char * prio_args;
65         unsigned char * reservation_key;
66         int pgpolicy;
67         int pgfailback;
68         int rr_weight;
69         int no_path_retry;
70         int minio;
71         int minio_rq;
72         int pg_timeout;
73         int flush_on_last_del;
74         int attribute_flags;
75         int user_friendly_names;
76         uid_t uid;
77         gid_t gid;
78         mode_t mode;
79 };
80
81 struct config {
82         int verbosity;
83         int dry_run;
84         int list;
85         int pgpolicy_flag;
86         int pgpolicy;
87         enum devtypes dev_type;
88         int minio;
89         int minio_rq;
90         int checkint;
91         int max_checkint;
92         int pgfailback;
93         int remove;
94         int rr_weight;
95         int no_path_retry;
96         int user_friendly_names;
97         int bindings_read_only;
98         int pg_timeout;
99         int max_fds;
100         int force_reload;
101         int queue_without_daemon;
102         int checker_timeout;
103         int daemon;
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 elist_devnode;
143         vector elist_wwid;
144         vector elist_device;
145 };
146
147 struct config * conf;
148
149 struct hwentry * find_hwe (vector hwtable, char * vendor, char * product, char *revision);
150 struct mpentry * find_mpe (char * wwid);
151 char * get_mpe_wwid (char * alias);
152
153 struct hwentry * alloc_hwe (void);
154 struct mpentry * alloc_mpe (void);
155
156 void free_hwe (struct hwentry * hwe);
157 void free_hwtable (vector hwtable);
158 void free_mpe (struct mpentry * mpe);
159 void free_mptable (vector mptable);
160
161 int store_hwe (vector hwtable, struct hwentry *);
162
163 int load_config (char * file, struct udev * udev);
164 struct config * alloc_config (void);
165 void free_config (struct config * conf);
166
167 #endif