multipathd: fix reservation_key check
[multipath-tools/.git] / libmultipath / prio.h
1 #ifndef _PRIO_H
2 #define _PRIO_H
3
4 /*
5  * knowing about path struct gives flexibility to prioritizers
6  */
7 #include "checkers.h"
8 #include "vector.h"
9
10 /* forward declaration to avoid circular dependency */
11 struct path;
12
13 #include "list.h"
14 #include "memory.h"
15 #include "defaults.h"
16
17 /*
18  * Known prioritizers for use in hwtable.c
19  */
20 #define PRIO_ALUA               "alua"
21 #define PRIO_CONST              "const"
22 #define PRIO_DATACORE           "datacore"
23 #define PRIO_EMC                "emc"
24 #define PRIO_HDS                "hds"
25 #define PRIO_HP_SW              "hp_sw"
26 #define PRIO_IET                "iet"
27 #define PRIO_ONTAP              "ontap"
28 #define PRIO_RANDOM             "random"
29 #define PRIO_RDAC               "rdac"
30 #define PRIO_WEIGHTED_PATH      "weightedpath"
31 #define PRIO_SYSFS              "sysfs"
32 #define PRIO_PATH_LATENCY       "path_latency"
33
34 /*
35  * Value used to mark the fact prio was not defined
36  */
37 #define PRIO_UNDEF -1
38
39 /*
40  * strings lengths
41  */
42 #define LIB_PRIO_NAMELEN 255
43 #define PRIO_NAME_LEN 16
44 #define PRIO_ARGS_LEN 255
45
46 struct prio {
47         void *handle;
48         int refcount;
49         struct list_head node;
50         char name[PRIO_NAME_LEN];
51         char args[PRIO_ARGS_LEN];
52         int (*getprio)(struct path *, char *, unsigned int);
53 };
54
55 unsigned int get_prio_timeout(unsigned int checker_timeout,
56                               unsigned int default_timeout);
57 int init_prio (char *);
58 void cleanup_prio (void);
59 struct prio * add_prio (char *, char *);
60 int prio_getprio (struct prio *, struct path *, unsigned int);
61 void prio_get (char *, struct prio *, char *, char *);
62 void prio_put (struct prio *);
63 int prio_selected (struct prio *);
64 char * prio_name (struct prio *);
65 char * prio_args (struct prio *);
66 int prio_set_args (struct prio *, char *);
67
68 /* The only function exported by prioritizer dynamic libraries (.so) */
69 int getprio(struct path *, char *, unsigned int);
70
71 #endif /* _PRIO_H */