multipath-tools: add +x to doc-preclean.pl and split-man.pl
[multipath-tools/.git] / multipathd / cli.h
1 #ifndef _CLI_H_
2 #define _CLI_H_
3
4 #include <stdint.h>
5
6 enum {
7         __LIST,
8         __ADD,
9         __DEL,
10         __SWITCH,
11         __SUSPEND,
12         __RESUME,
13         __REINSTATE,
14         __FAIL,
15         __RESIZE,
16         __RESET,
17         __RELOAD,
18         __FORCEQ,
19         __DISABLEQ,
20         __RESTOREQ,
21         __PATHS,
22         __MAPS,
23         __PATH,
24         __MAP,
25         __GROUP,
26         __RECONFIGURE,
27         __DAEMON,
28         __STATUS,
29         __STATS,
30         __TOPOLOGY,
31         __CONFIG,
32         __BLACKLIST,
33         __DEVICES,
34         __RAW,
35         __WILDCARDS,
36         __QUIT,
37         __SHUTDOWN,
38         __GETPRSTATUS,
39         __SETPRSTATUS,
40         __UNSETPRSTATUS,
41         __FMT,
42         __JSON,
43         __GETPRKEY,
44         __SETPRKEY,
45         __UNSETPRKEY,
46         __KEY,
47 };
48
49 #define LIST            (1 << __LIST)
50 #define ADD             (1 << __ADD)
51 #define DEL             (1 << __DEL)
52 #define SWITCH          (1 << __SWITCH)
53 #define SUSPEND         (1 << __SUSPEND)
54 #define RESUME          (1 << __RESUME)
55 #define REINSTATE       (1 << __REINSTATE)
56 #define FAIL            (1 << __FAIL)
57 #define RESIZE          (1 << __RESIZE)
58 #define RESET           (1 << __RESET)
59 #define RELOAD          (1 << __RELOAD)
60 #define FORCEQ          (1 << __FORCEQ)
61 #define DISABLEQ        (1 << __DISABLEQ)
62 #define RESTOREQ        (1 << __RESTOREQ)
63 #define PATHS           (1 << __PATHS)
64 #define MAPS            (1 << __MAPS)
65 #define PATH            (1 << __PATH)
66 #define MAP             (1 << __MAP)
67 #define GROUP           (1 << __GROUP)
68 #define RECONFIGURE     (1 << __RECONFIGURE)
69 #define DAEMON          (1 << __DAEMON)
70 #define STATUS          (1 << __STATUS)
71 #define STATS           (1 << __STATS)
72 #define TOPOLOGY        (1 << __TOPOLOGY)
73 #define CONFIG          (1 << __CONFIG)
74 #define BLACKLIST       (1 << __BLACKLIST)
75 #define DEVICES         (1 << __DEVICES)
76 #define RAW             (1 << __RAW)
77 #define COUNT           (1 << __COUNT)
78 #define WILDCARDS       (1 << __WILDCARDS)
79 #define QUIT            (1 << __QUIT)
80 #define SHUTDOWN        (1 << __SHUTDOWN)
81 #define GETPRSTATUS     (1ULL << __GETPRSTATUS)
82 #define SETPRSTATUS     (1ULL << __SETPRSTATUS)
83 #define UNSETPRSTATUS   (1ULL << __UNSETPRSTATUS)
84 #define FMT             (1ULL << __FMT)
85 #define JSON            (1ULL << __JSON)
86 #define GETPRKEY        (1ULL << __GETPRKEY)
87 #define SETPRKEY        (1ULL << __SETPRKEY)
88 #define UNSETPRKEY      (1ULL << __UNSETPRKEY)
89 #define KEY             (1ULL << __KEY)
90
91 #define INITIAL_REPLY_LEN       1200
92
93 #define REALLOC_REPLY(r, a, m)                                  \
94         do {                                                    \
95                 if ((a)) {                                      \
96                         char *tmp = (r);                        \
97                         (r) = REALLOC((r), (m) * 2);            \
98                         if ((r)) {                              \
99                                 memset((r) + (m), 0, (m));      \
100                                 (m) *= 2;                       \
101                         }                                       \
102                         else                                    \
103                                 free(tmp);                      \
104                 }                                               \
105         } while (0)
106
107 struct key {
108         char * str;
109         char * param;
110         uint64_t code;
111         int has_param;
112 };
113
114 struct handler {
115         uint64_t fingerprint;
116         int locked;
117         int (*fn)(void *, char **, int *, void *);
118 };
119
120 int alloc_handlers (void);
121 int add_handler (uint64_t fp, int (*fn)(void *, char **, int *, void *));
122 int set_handler_callback (uint64_t fp, int (*fn)(void *, char **, int *, void *));
123 int set_unlocked_handler_callback (uint64_t fp, int (*fn)(void *, char **, int *, void *));
124 int parse_cmd (char * cmd, char ** reply, int * len, void *, int);
125 int load_keys (void);
126 char * get_keyparam (vector v, uint64_t code);
127 void free_keys (vector vec);
128 void free_handlers (void);
129 int cli_init (void);
130 void cli_exit(void);
131 char * key_generator (const char * str, int state);
132
133 #endif /* _CLI_H_ */