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