multipathd: Fix uxlsnr race condition on shutdown
[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         __RESIZE,
11         __DISABLEQ,
12         __RESTOREQ,
13         __PATHS,
14         __MAPS,
15         __PATH,
16         __MAP,
17         __GROUP,
18         __RECONFIGURE,
19         __STATUS,
20         __STATS,
21         __TOPOLOGY,
22         __CONFIG,
23         __BLACKLIST,
24         __DEVICES,
25         __FMT,
26         __WILDCARDS,
27         __QUIT,
28 };
29
30 #define LIST            (1 << __LIST)
31 #define ADD             (1 << __ADD)
32 #define DEL             (1 << __DEL)
33 #define SWITCH          (1 << __SWITCH)
34 #define SUSPEND         (1 << __SUSPEND)
35 #define RESUME          (1 << __RESUME)
36 #define REINSTATE       (1 << __REINSTATE)
37 #define FAIL            (1 << __FAIL)
38 #define RESIZE          (1 << __RESIZE)
39 #define DISABLEQ        (1 << __DISABLEQ)
40 #define RESTOREQ        (1 << __RESTOREQ)
41 #define PATHS           (1 << __PATHS)
42 #define MAPS            (1 << __MAPS)
43 #define PATH            (1 << __PATH)
44 #define MAP             (1 << __MAP)
45 #define GROUP           (1 << __GROUP)
46 #define RECONFIGURE     (1 << __RECONFIGURE)
47 #define STATUS          (1 << __STATUS)
48 #define STATS           (1 << __STATS)
49 #define TOPOLOGY        (1 << __TOPOLOGY)
50 #define CONFIG          (1 << __CONFIG)
51 #define BLACKLIST       (1 << __BLACKLIST)
52 #define DEVICES         (1 << __DEVICES)
53 #define FMT             (1 << __FMT)
54 #define COUNT           (1 << __COUNT)
55 #define WILDCARDS       (1 << __WILDCARDS)
56 #define QUIT            (1 << __QUIT)
57
58 #define INITIAL_REPLY_LEN 1000
59
60 struct key {
61         char * str;
62         char * param;
63         int code;
64         int has_param;
65 };
66
67 struct handler {
68         unsigned long fingerprint;
69         int (*fn)(void *, char **, int *, void *);
70 };
71
72 int alloc_handlers (void);
73 int add_handler (int fp, int (*fn)(void *, char **, int *, void *));
74 int set_handler_callback (int fp, int (*fn)(void *, char **, int *, void *));
75 int parse_cmd (char * cmd, char ** reply, int * len, void *);
76 int load_keys (void);
77 char * get_keyparam (vector v, int code);
78 void free_keys (vector vec);
79 void free_handlers (void);
80 int cli_init (void);
81 void cli_exit(void);
82 char * key_generator (const char * str, int state);