[multipathd] add "quit" cli command
[platform/upstream/multipath-tools.git] / multipathd / cli.h
1 enum {
2         __LIST,
3         __ADD,
4         __DEL,
5         __SWITCH,
6         __SUSPEND,
7         __RESUME,
8         __REINSTATE,
9         __FAIL,
10         __PATHS,
11         __MAPS,
12         __PATH,
13         __MAP,
14         __GROUP,
15         __RECONFIGURE,
16         __STATUS,
17         __STATS,
18         __TOPOLOGY,
19         __CONFIG,
20         __BLACKLIST,
21         __DEVICES,
22         __FMT,
23         __WILDCARDS,
24         __QUIT,
25 };
26
27 #define LIST            (1 << __LIST)
28 #define ADD             (1 << __ADD)
29 #define DEL             (1 << __DEL)
30 #define SWITCH          (1 << __SWITCH)
31 #define SUSPEND         (1 << __SUSPEND)
32 #define RESUME          (1 << __RESUME)
33 #define REINSTATE       (1 << __REINSTATE)
34 #define FAIL            (1 << __FAIL)
35 #define PATHS           (1 << __PATHS)
36 #define MAPS            (1 << __MAPS)
37 #define PATH            (1 << __PATH)
38 #define MAP             (1 << __MAP)
39 #define GROUP           (1 << __GROUP)
40 #define RECONFIGURE     (1 << __RECONFIGURE)
41 #define STATUS          (1 << __STATUS)
42 #define STATS           (1 << __STATS)
43 #define TOPOLOGY        (1 << __TOPOLOGY)
44 #define CONFIG          (1 << __CONFIG)
45 #define BLACKLIST       (1 << __BLACKLIST)
46 #define DEVICES         (1 << __DEVICES)
47 #define FMT             (1 << __FMT)
48 #define WILDCARDS       (1 << __WILDCARDS)
49 #define QUIT            (1 << __QUIT)
50
51 #define INITIAL_REPLY_LEN 1000
52
53 struct key {
54         char * str;
55         char * param;
56         int code;
57         int has_param;
58 };
59
60 struct handler {
61         unsigned long fingerprint;
62         int (*fn)(void *, char **, int *, void *);
63 };
64
65 vector keys;
66 vector handlers;
67
68 int alloc_handlers (void);
69 int add_handler (int fp, int (*fn)(void *, char **, int *, void *));
70 int set_handler_callback (int fp, int (*fn)(void *, char **, int *, void *));
71 int parse_cmd (char * cmd, char ** reply, int * len, void *);
72 int load_keys (void);
73 char * get_keyparam (vector v, int code);
74 void free_keys (vector vec);
75 void free_handlers (vector vec);
76 int cli_init (void);
77 char * key_generator (const char * str, int state);