9932d96dbdce007c8f8c8a757b7aaa36d84903e2
[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 };
25
26 #define LIST            (1 << __LIST)
27 #define ADD             (1 << __ADD)
28 #define DEL             (1 << __DEL)
29 #define SWITCH          (1 << __SWITCH)
30 #define SUSPEND         (1 << __SUSPEND)
31 #define RESUME          (1 << __RESUME)
32 #define REINSTATE       (1 << __REINSTATE)
33 #define FAIL            (1 << __FAIL)
34 #define PATHS           (1 << __PATHS)
35 #define MAPS            (1 << __MAPS)
36 #define PATH            (1 << __PATH)
37 #define MAP             (1 << __MAP)
38 #define GROUP           (1 << __GROUP)
39 #define RECONFIGURE     (1 << __RECONFIGURE)
40 #define STATUS          (1 << __STATUS)
41 #define STATS           (1 << __STATS)
42 #define TOPOLOGY        (1 << __TOPOLOGY)
43 #define CONFIG          (1 << __CONFIG)
44 #define BLACKLIST       (1 << __BLACKLIST)
45 #define DEVICES         (1 << __DEVICES)
46 #define FMT             (1 << __FMT)
47 #define WILDCARDS       (1 << __WILDCARDS)
48
49 #define INITIAL_REPLY_LEN 1000
50
51 struct key {
52         char * str;
53         char * param;
54         int code;
55         int has_param;
56 };
57
58 struct handler {
59         int fingerprint;
60         int (*fn)(void *, char **, int *, void *);
61 };
62
63 vector keys;
64 vector handlers;
65
66 int alloc_handlers (void);
67 int add_handler (int fp, int (*fn)(void *, char **, int *, void *));
68 int set_handler_callback (int fp, int (*fn)(void *, char **, int *, void *));
69 int parse_cmd (char * cmd, char ** reply, int * len, void *);
70 int load_keys (void);
71 char * get_keyparam (vector v, int code);
72 void free_keys (vector vec);
73 void free_handlers (vector vec);
74 int cli_init (void);
75 char * key_generator (const char * str, int state);